Imported Upstream version 58.2 10/141310/1 upstream/58.2
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 31 Jul 2017 02:57:23 +0000 (11:57 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 31 Jul 2017 02:57:44 +0000 (11:57 +0900)
Change-Id: Ic662e04c05b4e3c2b51ee67d1d76e076c351f439
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
4394 files changed:
APIChangeReport.html
LICENSE
as_is/bomlist.txt
license.html
packaging/rpm/icu.spec [new file with mode: 0644]
readme.html
source/Doxyfile.in
source/Makefile.in
source/allinone/allinone.sln
source/allinone/icucheck.bat
source/common/Makefile.in
source/common/appendable.cpp
source/common/bmpset.cpp
source/common/bmpset.h
source/common/brkeng.cpp
source/common/brkeng.h
source/common/brkiter.cpp
source/common/bytestream.cpp
source/common/bytestrie.cpp
source/common/bytestriebuilder.cpp
source/common/bytestrieiterator.cpp
source/common/caniter.cpp
source/common/chariter.cpp
source/common/charstr.cpp
source/common/charstr.h
source/common/cmemory.c [new file with mode: 0644]
source/common/cmemory.h
source/common/common.vcxproj
source/common/common.vcxproj.filters
source/common/cpputils.h
source/common/cstr.cpp
source/common/cstr.h
source/common/cstring.c [new file with mode: 0644]
source/common/cstring.h
source/common/cwchar.c [new file with mode: 0644]
source/common/cwchar.h
source/common/dictbe.cpp
source/common/dictbe.h
source/common/dictionarydata.cpp
source/common/dictionarydata.h
source/common/dtintrv.cpp
source/common/errorcode.cpp
source/common/filteredbrk.cpp
source/common/filterednormalizer2.cpp
source/common/hash.h
source/common/icudataver.c [new file with mode: 0644]
source/common/icuplug.cpp
source/common/icuplugimp.h
source/common/listformatter.cpp
source/common/loadednormalizer2impl.cpp
source/common/localsvc.h
source/common/locavailable.cpp
source/common/locbased.cpp
source/common/locbased.h
source/common/locdispnames.cpp
source/common/locdspnm.cpp
source/common/locid.cpp
source/common/loclikely.cpp
source/common/locmap.c [new file with mode: 0644]
source/common/locmap.h
source/common/locresdata.cpp
source/common/locutil.cpp
source/common/locutil.h
source/common/messageimpl.h
source/common/messagepattern.cpp
source/common/msvcres.h
source/common/mutex.h
source/common/norm2_nfc_data.h
source/common/norm2allmodes.h
source/common/normalizer2.cpp
source/common/normalizer2impl.cpp
source/common/normalizer2impl.h
source/common/normlzr.cpp
source/common/parsepos.cpp
source/common/patternprops.cpp
source/common/patternprops.h
source/common/pluralmap.cpp
source/common/pluralmap.h
source/common/propname.cpp
source/common/propname.h
source/common/propname_data.h
source/common/propsvec.c [new file with mode: 0644]
source/common/propsvec.h
source/common/punycode.cpp
source/common/punycode.h
source/common/putil.cpp
source/common/putilimp.h
source/common/rbbi.cpp
source/common/rbbidata.cpp
source/common/rbbidata.h
source/common/rbbinode.cpp
source/common/rbbinode.h
source/common/rbbirb.cpp
source/common/rbbirb.h
source/common/rbbirpt.h
source/common/rbbiscan.cpp
source/common/rbbiscan.h
source/common/rbbisetb.cpp
source/common/rbbisetb.h
source/common/rbbistbl.cpp
source/common/rbbitblb.cpp
source/common/rbbitblb.h
source/common/resbund.cpp
source/common/resbund_cnv.cpp
source/common/resource.cpp
source/common/resource.h
source/common/ruleiter.cpp
source/common/ruleiter.h
source/common/schriter.cpp
source/common/serv.cpp
source/common/serv.h
source/common/servlk.cpp
source/common/servlkf.cpp
source/common/servloc.h
source/common/servls.cpp
source/common/servnotf.cpp
source/common/servnotf.h
source/common/servrbf.cpp
source/common/servslkf.cpp
source/common/sharedobject.cpp
source/common/sharedobject.h
source/common/simpleformatter.cpp
source/common/sprpimpl.h
source/common/stringpiece.cpp
source/common/stringtriebuilder.cpp
source/common/uarrsort.c [new file with mode: 0644]
source/common/uarrsort.h
source/common/uassert.h
source/common/ubidi.c [new file with mode: 0644]
source/common/ubidi_props.c [new file with mode: 0644]
source/common/ubidi_props.h
source/common/ubidi_props_data.h
source/common/ubidiimp.h
source/common/ubidiln.c [new file with mode: 0644]
source/common/ubiditransform.c [new file with mode: 0644]
source/common/ubidiwrt.c [new file with mode: 0644]
source/common/ubrk.cpp
source/common/ubrkimpl.h
source/common/ucase.cpp
source/common/ucase.h
source/common/ucase_props_data.h
source/common/ucasemap.cpp
source/common/ucasemap_titlecase_brkiter.cpp
source/common/ucat.c [new file with mode: 0644]
source/common/uchar.c [new file with mode: 0644]
source/common/uchar_props_data.h
source/common/ucharstrie.cpp
source/common/ucharstriebuilder.cpp
source/common/ucharstrieiterator.cpp
source/common/uchriter.cpp
source/common/ucln.h
source/common/ucln_cmn.cpp
source/common/ucln_cmn.h
source/common/ucln_imp.h
source/common/ucmndata.c [new file with mode: 0644]
source/common/ucmndata.h
source/common/ucnv.c [new file with mode: 0644]
source/common/ucnv2022.cpp
source/common/ucnv_bld.cpp
source/common/ucnv_bld.h
source/common/ucnv_cb.c [new file with mode: 0644]
source/common/ucnv_cnv.c [new file with mode: 0644]
source/common/ucnv_cnv.h
source/common/ucnv_ct.c [new file with mode: 0644]
source/common/ucnv_err.c [new file with mode: 0644]
source/common/ucnv_ext.cpp
source/common/ucnv_ext.h
source/common/ucnv_imp.h
source/common/ucnv_io.cpp
source/common/ucnv_io.h
source/common/ucnv_lmb.c [new file with mode: 0644]
source/common/ucnv_set.c [new file with mode: 0644]
source/common/ucnv_u16.c [new file with mode: 0644]
source/common/ucnv_u32.c [new file with mode: 0644]
source/common/ucnv_u7.c [new file with mode: 0644]
source/common/ucnv_u8.c [new file with mode: 0644]
source/common/ucnvbocu.cpp
source/common/ucnvdisp.c [new file with mode: 0644]
source/common/ucnvhz.c [new file with mode: 0644]
source/common/ucnvisci.c [new file with mode: 0644]
source/common/ucnvlat1.c [new file with mode: 0644]
source/common/ucnvmbcs.cpp
source/common/ucnvmbcs.h
source/common/ucnvscsu.c [new file with mode: 0644]
source/common/ucnvsel.cpp
source/common/ucol_data.h
source/common/ucol_swp.cpp
source/common/ucol_swp.h
source/common/ucurr.cpp
source/common/ucurrimp.h
source/common/udata.cpp
source/common/udatamem.c [new file with mode: 0644]
source/common/udatamem.h
source/common/udataswp.c [new file with mode: 0644]
source/common/udataswp.h
source/common/uelement.h
source/common/uenum.c [new file with mode: 0644]
source/common/uenumimp.h
source/common/uhash.c [new file with mode: 0644]
source/common/uhash.h
source/common/uhash_us.cpp
source/common/uidna.cpp
source/common/uinit.cpp
source/common/uinvchar.c [new file with mode: 0644]
source/common/uinvchar.h
source/common/uiter.cpp
source/common/ulist.c [new file with mode: 0644]
source/common/ulist.h
source/common/ulistformatter.cpp
source/common/uloc.cpp
source/common/uloc_keytype.cpp
source/common/uloc_tag.c [new file with mode: 0644]
source/common/ulocimp.h
source/common/umapfile.c [new file with mode: 0644]
source/common/umapfile.h
source/common/umath.c [new file with mode: 0644]
source/common/umutex.cpp
source/common/umutex.h
source/common/unames.cpp
source/common/unicode/appendable.h
source/common/unicode/brkiter.h
source/common/unicode/bytestream.h
source/common/unicode/bytestrie.h
source/common/unicode/bytestriebuilder.h
source/common/unicode/caniter.h
source/common/unicode/chariter.h
source/common/unicode/dbbi.h
source/common/unicode/docmain.h
source/common/unicode/dtintrv.h
source/common/unicode/enumset.h
source/common/unicode/errorcode.h
source/common/unicode/filteredbrk.h
source/common/unicode/icudataver.h
source/common/unicode/icuplug.h
source/common/unicode/idna.h
source/common/unicode/listformatter.h
source/common/unicode/localpointer.h
source/common/unicode/locdspnm.h
source/common/unicode/locid.h
source/common/unicode/messagepattern.h
source/common/unicode/normalizer2.h
source/common/unicode/normlzr.h
source/common/unicode/parseerr.h
source/common/unicode/parsepos.h
source/common/unicode/platform.h
source/common/unicode/ptypes.h
source/common/unicode/putil.h
source/common/unicode/rbbi.h
source/common/unicode/rep.h
source/common/unicode/resbund.h
source/common/unicode/schriter.h
source/common/unicode/simpleformatter.h
source/common/unicode/std_string.h
source/common/unicode/strenum.h
source/common/unicode/stringpiece.h
source/common/unicode/stringtriebuilder.h
source/common/unicode/symtable.h
source/common/unicode/ubidi.h
source/common/unicode/ubiditransform.h
source/common/unicode/ubrk.h
source/common/unicode/ucasemap.h
source/common/unicode/ucat.h
source/common/unicode/uchar.h
source/common/unicode/ucharstrie.h
source/common/unicode/ucharstriebuilder.h
source/common/unicode/uchriter.h
source/common/unicode/uclean.h
source/common/unicode/ucnv.h
source/common/unicode/ucnv_cb.h
source/common/unicode/ucnv_err.h
source/common/unicode/ucnvsel.h
source/common/unicode/uconfig.h
source/common/unicode/ucurr.h
source/common/unicode/udata.h
source/common/unicode/udisplaycontext.h
source/common/unicode/uenum.h
source/common/unicode/uidna.h
source/common/unicode/uiter.h
source/common/unicode/uldnames.h
source/common/unicode/ulistformatter.h
source/common/unicode/uloc.h
source/common/unicode/umachine.h
source/common/unicode/umisc.h
source/common/unicode/unifilt.h
source/common/unicode/unifunct.h
source/common/unicode/unimatch.h
source/common/unicode/uniset.h
source/common/unicode/unistr.h
source/common/unicode/unorm.h
source/common/unicode/unorm2.h
source/common/unicode/uobject.h
source/common/unicode/urename.h
source/common/unicode/urep.h
source/common/unicode/ures.h
source/common/unicode/uscript.h
source/common/unicode/uset.h
source/common/unicode/usetiter.h
source/common/unicode/ushape.h
source/common/unicode/usprep.h
source/common/unicode/ustring.h
source/common/unicode/ustringtrie.h
source/common/unicode/utext.h
source/common/unicode/utf.h
source/common/unicode/utf16.h
source/common/unicode/utf32.h
source/common/unicode/utf8.h
source/common/unicode/utf_old.h
source/common/unicode/utrace.h
source/common/unicode/utypes.h
source/common/unicode/uvernum.h
source/common/unicode/uversion.h
source/common/unifiedcache.cpp
source/common/unifiedcache.h
source/common/unifilt.cpp
source/common/unifunct.cpp
source/common/uniset.cpp
source/common/uniset_closure.cpp
source/common/uniset_props.cpp
source/common/unisetspan.cpp
source/common/unisetspan.h
source/common/unistr.cpp
source/common/unistr_case.cpp
source/common/unistr_case_locale.cpp
source/common/unistr_cnv.cpp
source/common/unistr_props.cpp
source/common/unistr_titlecase_brkiter.cpp
source/common/unistrappender.h
source/common/unorm.cpp
source/common/unormcmp.cpp
source/common/unormimp.h
source/common/uobject.cpp
source/common/uposixdefs.h
source/common/uprops.cpp
source/common/uprops.h
source/common/ures_cnv.c [new file with mode: 0644]
source/common/uresbund.cpp
source/common/uresdata.cpp
source/common/uresdata.h
source/common/uresimp.h
source/common/ureslocs.h
source/common/usc_impl.c [new file with mode: 0644]
source/common/usc_impl.h
source/common/uscript.c [new file with mode: 0644]
source/common/uscript_props.cpp
source/common/uset.cpp
source/common/uset_imp.h
source/common/uset_props.cpp
source/common/usetiter.cpp
source/common/ushape.cpp
source/common/usprep.cpp
source/common/ustack.cpp
source/common/ustr_cnv.cpp
source/common/ustr_cnv.h
source/common/ustr_imp.h
source/common/ustr_titlecase_brkiter.cpp
source/common/ustr_wcs.cpp
source/common/ustrcase.cpp
source/common/ustrcase_locale.cpp
source/common/ustrenum.cpp
source/common/ustrenum.h
source/common/ustrfmt.c [new file with mode: 0644]
source/common/ustrfmt.h
source/common/ustring.cpp
source/common/ustrtrns.cpp
source/common/utext.cpp
source/common/utf_impl.c [new file with mode: 0644]
source/common/util.cpp
source/common/util.h
source/common/util_props.cpp
source/common/utrace.c [new file with mode: 0644]
source/common/utracimp.h
source/common/utrie.cpp
source/common/utrie.h
source/common/utrie2.cpp
source/common/utrie2.h
source/common/utrie2_builder.cpp
source/common/utrie2_impl.h
source/common/uts46.cpp
source/common/utypeinfo.h
source/common/utypes.c [new file with mode: 0644]
source/common/uvector.cpp
source/common/uvector.h
source/common/uvectr32.cpp
source/common/uvectr32.h
source/common/uvectr64.cpp
source/common/uvectr64.h
source/common/wintz.c [new file with mode: 0644]
source/common/wintz.h
source/config/dist.mk
source/config/make2sh.sed
source/config/mh-aix-va
source/config/mh-cygwin
source/config/mh-cygwin-msvc
source/config/mh-cygwin64
source/config/mh-msys-msvc
source/config/mh-os390
source/config/mh-solaris
source/configure
source/configure.ac
source/data/brkitr/brkfiles.mk
source/data/brkitr/root.txt
source/data/brkitr/rules/char.txt
source/data/brkitr/rules/line.txt
source/data/brkitr/rules/line_fi.txt
source/data/brkitr/rules/line_loose.txt
source/data/brkitr/rules/line_loose_cj.txt
source/data/brkitr/rules/line_loose_fi.txt
source/data/brkitr/rules/line_normal.txt
source/data/brkitr/rules/line_normal_cj.txt
source/data/brkitr/rules/line_normal_fi.txt
source/data/brkitr/rules/word.txt
source/data/brkitr/rules/word_POSIX.txt
source/data/cldr-icu-readme.txt
source/data/coll/af.txt
source/data/coll/am.txt
source/data/coll/ar.txt
source/data/coll/ars.txt [deleted file]
source/data/coll/as.txt
source/data/coll/az.txt
source/data/coll/be.txt
source/data/coll/bg.txt
source/data/coll/bn.txt
source/data/coll/bs.txt
source/data/coll/bs_Cyrl.txt
source/data/coll/ca.txt
source/data/coll/chr.txt
source/data/coll/colfiles.mk
source/data/coll/cs.txt
source/data/coll/cy.txt
source/data/coll/da.txt
source/data/coll/de.txt
source/data/coll/de_AT.txt
source/data/coll/dsb.txt
source/data/coll/ee.txt
source/data/coll/el.txt
source/data/coll/en_US_POSIX.txt
source/data/coll/eo.txt
source/data/coll/es.txt
source/data/coll/et.txt
source/data/coll/fa.txt
source/data/coll/fa_AF.txt
source/data/coll/fi.txt
source/data/coll/fil.txt
source/data/coll/fo.txt
source/data/coll/fr_CA.txt
source/data/coll/gl.txt
source/data/coll/gu.txt
source/data/coll/ha.txt
source/data/coll/haw.txt
source/data/coll/he.txt
source/data/coll/hi.txt
source/data/coll/hr.txt
source/data/coll/hsb.txt
source/data/coll/hu.txt
source/data/coll/hy.txt
source/data/coll/ig.txt
source/data/coll/is.txt
source/data/coll/ja.txt
source/data/coll/ka.txt
source/data/coll/kk.txt
source/data/coll/kl.txt
source/data/coll/km.txt
source/data/coll/kn.txt
source/data/coll/ko.txt
source/data/coll/kok.txt
source/data/coll/ky.txt
source/data/coll/lkt.txt
source/data/coll/ln.txt
source/data/coll/lo.txt
source/data/coll/lt.txt
source/data/coll/lv.txt
source/data/coll/mk.txt
source/data/coll/ml.txt
source/data/coll/mn.txt
source/data/coll/mr.txt
source/data/coll/mt.txt
source/data/coll/my.txt
source/data/coll/nb.txt
source/data/coll/ne.txt
source/data/coll/nn.txt
source/data/coll/om.txt
source/data/coll/or.txt
source/data/coll/pa.txt
source/data/coll/pl.txt
source/data/coll/ps.txt
source/data/coll/ro.txt
source/data/coll/root.txt
source/data/coll/ru.txt
source/data/coll/se.txt
source/data/coll/si.txt
source/data/coll/sk.txt
source/data/coll/sl.txt
source/data/coll/smn.txt
source/data/coll/sq.txt
source/data/coll/sr.txt
source/data/coll/sr_Latn.txt
source/data/coll/sv.txt
source/data/coll/ta.txt
source/data/coll/te.txt
source/data/coll/th.txt
source/data/coll/to.txt
source/data/coll/tr.txt
source/data/coll/ug.txt
source/data/coll/uk.txt
source/data/coll/ur.txt
source/data/coll/uz.txt
source/data/coll/vi.txt
source/data/coll/yi.txt
source/data/coll/yo.txt
source/data/coll/zh.txt
source/data/curr/af.txt
source/data/curr/af_NA.txt
source/data/curr/agq.txt
source/data/curr/ak.txt
source/data/curr/am.txt
source/data/curr/ar.txt
source/data/curr/ar_AE.txt
source/data/curr/ar_DJ.txt
source/data/curr/ar_ER.txt
source/data/curr/ar_LB.txt
source/data/curr/ar_SA.txt [deleted file]
source/data/curr/ar_SO.txt
source/data/curr/ar_SS.txt
source/data/curr/ars.txt [deleted file]
source/data/curr/as.txt
source/data/curr/asa.txt
source/data/curr/ast.txt
source/data/curr/az.txt
source/data/curr/az_Cyrl.txt
source/data/curr/az_Latn.txt
source/data/curr/bas.txt
source/data/curr/be.txt
source/data/curr/bem.txt
source/data/curr/bez.txt
source/data/curr/bg.txt
source/data/curr/bm.txt
source/data/curr/bn.txt
source/data/curr/bo.txt
source/data/curr/bo_IN.txt
source/data/curr/br.txt
source/data/curr/brx.txt
source/data/curr/bs.txt
source/data/curr/bs_Cyrl.txt
source/data/curr/bs_Latn.txt
source/data/curr/ca.txt
source/data/curr/ca_FR.txt
source/data/curr/ce.txt
source/data/curr/cgg.txt
source/data/curr/chr.txt
source/data/curr/ckb.txt
source/data/curr/cs.txt
source/data/curr/cy.txt
source/data/curr/da.txt
source/data/curr/dav.txt
source/data/curr/de.txt
source/data/curr/de_CH.txt
source/data/curr/de_LI.txt
source/data/curr/de_LU.txt
source/data/curr/dje.txt
source/data/curr/dsb.txt
source/data/curr/dua.txt
source/data/curr/dyo.txt
source/data/curr/dz.txt
source/data/curr/ebu.txt
source/data/curr/ee.txt
source/data/curr/el.txt
source/data/curr/en.txt
source/data/curr/en_001.txt
source/data/curr/en_150.txt
source/data/curr/en_AG.txt
source/data/curr/en_AI.txt
source/data/curr/en_AT.txt
source/data/curr/en_AU.txt
source/data/curr/en_BB.txt
source/data/curr/en_BE.txt
source/data/curr/en_BI.txt
source/data/curr/en_BM.txt
source/data/curr/en_BS.txt
source/data/curr/en_BW.txt
source/data/curr/en_BZ.txt
source/data/curr/en_CA.txt
source/data/curr/en_CC.txt
source/data/curr/en_CH.txt
source/data/curr/en_CK.txt
source/data/curr/en_CM.txt
source/data/curr/en_CX.txt
source/data/curr/en_CY.txt
source/data/curr/en_DE.txt
source/data/curr/en_DG.txt
source/data/curr/en_DK.txt
source/data/curr/en_DM.txt
source/data/curr/en_ER.txt
source/data/curr/en_FI.txt
source/data/curr/en_FJ.txt
source/data/curr/en_FK.txt
source/data/curr/en_FM.txt
source/data/curr/en_GB.txt
source/data/curr/en_GD.txt
source/data/curr/en_GG.txt
source/data/curr/en_GH.txt
source/data/curr/en_GI.txt
source/data/curr/en_GM.txt
source/data/curr/en_GY.txt
source/data/curr/en_HK.txt
source/data/curr/en_IE.txt
source/data/curr/en_IL.txt
source/data/curr/en_IM.txt
source/data/curr/en_IN.txt
source/data/curr/en_IO.txt
source/data/curr/en_JE.txt
source/data/curr/en_JM.txt
source/data/curr/en_KE.txt
source/data/curr/en_KI.txt
source/data/curr/en_KN.txt
source/data/curr/en_KY.txt
source/data/curr/en_LC.txt
source/data/curr/en_LR.txt
source/data/curr/en_LS.txt
source/data/curr/en_MG.txt
source/data/curr/en_MO.txt
source/data/curr/en_MS.txt
source/data/curr/en_MT.txt
source/data/curr/en_MU.txt
source/data/curr/en_MW.txt
source/data/curr/en_MY.txt
source/data/curr/en_NA.txt
source/data/curr/en_NF.txt
source/data/curr/en_NG.txt
source/data/curr/en_NL.txt
source/data/curr/en_NR.txt
source/data/curr/en_NU.txt
source/data/curr/en_NZ.txt
source/data/curr/en_PG.txt
source/data/curr/en_PH.txt
source/data/curr/en_PK.txt
source/data/curr/en_PN.txt
source/data/curr/en_PW.txt
source/data/curr/en_RW.txt
source/data/curr/en_SB.txt
source/data/curr/en_SC.txt
source/data/curr/en_SD.txt
source/data/curr/en_SE.txt
source/data/curr/en_SG.txt
source/data/curr/en_SH.txt
source/data/curr/en_SI.txt
source/data/curr/en_SL.txt
source/data/curr/en_SS.txt
source/data/curr/en_SX.txt
source/data/curr/en_SZ.txt
source/data/curr/en_TC.txt
source/data/curr/en_TK.txt
source/data/curr/en_TO.txt
source/data/curr/en_TT.txt
source/data/curr/en_TV.txt
source/data/curr/en_TZ.txt
source/data/curr/en_UG.txt
source/data/curr/en_VC.txt
source/data/curr/en_VG.txt
source/data/curr/en_VU.txt
source/data/curr/en_WS.txt
source/data/curr/en_ZA.txt
source/data/curr/en_ZM.txt
source/data/curr/en_ZW.txt
source/data/curr/eo.txt
source/data/curr/es.txt
source/data/curr/es_419.txt
source/data/curr/es_AR.txt
source/data/curr/es_BO.txt
source/data/curr/es_BR.txt
source/data/curr/es_BZ.txt [deleted file]
source/data/curr/es_CL.txt
source/data/curr/es_CO.txt
source/data/curr/es_CR.txt
source/data/curr/es_CU.txt
source/data/curr/es_DO.txt
source/data/curr/es_EC.txt
source/data/curr/es_GQ.txt
source/data/curr/es_GT.txt
source/data/curr/es_HN.txt
source/data/curr/es_MX.txt
source/data/curr/es_NI.txt
source/data/curr/es_PA.txt
source/data/curr/es_PE.txt
source/data/curr/es_PH.txt
source/data/curr/es_PR.txt
source/data/curr/es_PY.txt
source/data/curr/es_SV.txt
source/data/curr/es_US.txt
source/data/curr/es_UY.txt
source/data/curr/es_VE.txt
source/data/curr/et.txt
source/data/curr/eu.txt
source/data/curr/ewo.txt
source/data/curr/fa.txt
source/data/curr/fa_AF.txt
source/data/curr/ff.txt
source/data/curr/ff_GN.txt
source/data/curr/ff_MR.txt
source/data/curr/fi.txt
source/data/curr/fil.txt
source/data/curr/fo.txt
source/data/curr/fo_DK.txt
source/data/curr/fr.txt
source/data/curr/fr_BI.txt
source/data/curr/fr_CA.txt
source/data/curr/fr_CD.txt
source/data/curr/fr_DJ.txt
source/data/curr/fr_DZ.txt
source/data/curr/fr_GN.txt
source/data/curr/fr_HT.txt
source/data/curr/fr_KM.txt
source/data/curr/fr_LU.txt
source/data/curr/fr_MG.txt
source/data/curr/fr_MR.txt
source/data/curr/fr_MU.txt
source/data/curr/fr_RW.txt
source/data/curr/fr_SC.txt
source/data/curr/fr_SY.txt
source/data/curr/fr_TN.txt
source/data/curr/fr_VU.txt
source/data/curr/fur.txt
source/data/curr/fy.txt
source/data/curr/ga.txt
source/data/curr/gd.txt
source/data/curr/gl.txt
source/data/curr/gsw.txt
source/data/curr/gu.txt
source/data/curr/guz.txt
source/data/curr/gv.txt
source/data/curr/ha.txt
source/data/curr/ha_GH.txt
source/data/curr/haw.txt
source/data/curr/he.txt
source/data/curr/hi.txt
source/data/curr/hr.txt
source/data/curr/hr_BA.txt
source/data/curr/hsb.txt
source/data/curr/hu.txt
source/data/curr/hy.txt
source/data/curr/id.txt
source/data/curr/ig.txt
source/data/curr/ii.txt
source/data/curr/is.txt
source/data/curr/it.txt
source/data/curr/ja.txt
source/data/curr/jgo.txt
source/data/curr/jmc.txt
source/data/curr/ka.txt
source/data/curr/kab.txt
source/data/curr/kam.txt
source/data/curr/kde.txt
source/data/curr/kea.txt
source/data/curr/khq.txt
source/data/curr/ki.txt
source/data/curr/kk.txt
source/data/curr/kkj.txt
source/data/curr/kl.txt
source/data/curr/kln.txt
source/data/curr/km.txt
source/data/curr/kn.txt
source/data/curr/ko.txt
source/data/curr/kok.txt
source/data/curr/ks.txt
source/data/curr/ksb.txt
source/data/curr/ksf.txt
source/data/curr/ksh.txt
source/data/curr/kw.txt
source/data/curr/ky.txt
source/data/curr/lag.txt
source/data/curr/lb.txt
source/data/curr/lg.txt
source/data/curr/lkt.txt
source/data/curr/ln.txt
source/data/curr/ln_AO.txt
source/data/curr/lo.txt
source/data/curr/lrc.txt
source/data/curr/lt.txt
source/data/curr/lu.txt
source/data/curr/luo.txt
source/data/curr/luy.txt
source/data/curr/lv.txt
source/data/curr/mas.txt
source/data/curr/mas_TZ.txt
source/data/curr/mer.txt
source/data/curr/mfe.txt
source/data/curr/mg.txt
source/data/curr/mgh.txt
source/data/curr/mgo.txt
source/data/curr/mk.txt
source/data/curr/ml.txt
source/data/curr/mn.txt
source/data/curr/mr.txt
source/data/curr/ms.txt
source/data/curr/ms_BN.txt
source/data/curr/ms_SG.txt
source/data/curr/mt.txt
source/data/curr/mua.txt
source/data/curr/my.txt
source/data/curr/mzn.txt
source/data/curr/naq.txt
source/data/curr/nb.txt
source/data/curr/nd.txt
source/data/curr/nds.txt
source/data/curr/ne.txt
source/data/curr/nl.txt
source/data/curr/nl_AW.txt
source/data/curr/nl_BQ.txt
source/data/curr/nl_CW.txt
source/data/curr/nl_SR.txt
source/data/curr/nl_SX.txt
source/data/curr/nmg.txt
source/data/curr/nn.txt
source/data/curr/nnh.txt
source/data/curr/nus.txt
source/data/curr/nyn.txt
source/data/curr/om.txt
source/data/curr/om_KE.txt
source/data/curr/or.txt
source/data/curr/os.txt
source/data/curr/os_RU.txt
source/data/curr/pa.txt
source/data/curr/pa_Arab.txt
source/data/curr/pa_Guru.txt
source/data/curr/pl.txt
source/data/curr/pool.res
source/data/curr/ps.txt
source/data/curr/pt.txt
source/data/curr/pt_AO.txt
source/data/curr/pt_CH.txt
source/data/curr/pt_CV.txt
source/data/curr/pt_GQ.txt
source/data/curr/pt_GW.txt
source/data/curr/pt_LU.txt
source/data/curr/pt_MO.txt
source/data/curr/pt_MZ.txt
source/data/curr/pt_PT.txt
source/data/curr/pt_ST.txt
source/data/curr/pt_TL.txt
source/data/curr/qu.txt
source/data/curr/qu_BO.txt
source/data/curr/qu_EC.txt
source/data/curr/resfiles.mk
source/data/curr/rm.txt
source/data/curr/rn.txt
source/data/curr/ro.txt
source/data/curr/ro_MD.txt
source/data/curr/rof.txt
source/data/curr/root.txt
source/data/curr/ru.txt
source/data/curr/ru_BY.txt
source/data/curr/ru_KG.txt
source/data/curr/ru_KZ.txt
source/data/curr/ru_MD.txt
source/data/curr/rw.txt
source/data/curr/rwk.txt
source/data/curr/sah.txt
source/data/curr/saq.txt
source/data/curr/sbp.txt
source/data/curr/se.txt
source/data/curr/se_SE.txt
source/data/curr/seh.txt
source/data/curr/ses.txt
source/data/curr/sg.txt
source/data/curr/shi.txt
source/data/curr/shi_Latn.txt
source/data/curr/shi_Tfng.txt
source/data/curr/si.txt
source/data/curr/sk.txt
source/data/curr/sl.txt
source/data/curr/smn.txt
source/data/curr/sn.txt
source/data/curr/so.txt
source/data/curr/so_DJ.txt
source/data/curr/so_ET.txt
source/data/curr/so_KE.txt
source/data/curr/sq.txt
source/data/curr/sq_MK.txt
source/data/curr/sr.txt
source/data/curr/sr_Cyrl.txt
source/data/curr/sr_Latn.txt
source/data/curr/sv.txt
source/data/curr/sw.txt
source/data/curr/sw_CD.txt
source/data/curr/sw_UG.txt
source/data/curr/ta.txt
source/data/curr/ta_LK.txt
source/data/curr/ta_MY.txt
source/data/curr/ta_SG.txt
source/data/curr/te.txt
source/data/curr/teo.txt
source/data/curr/teo_KE.txt
source/data/curr/th.txt
source/data/curr/ti.txt
source/data/curr/ti_ER.txt
source/data/curr/to.txt
source/data/curr/tr.txt
source/data/curr/twq.txt
source/data/curr/tzm.txt
source/data/curr/ug.txt
source/data/curr/uk.txt
source/data/curr/ur.txt
source/data/curr/ur_IN.txt
source/data/curr/uz.txt
source/data/curr/uz_Arab.txt
source/data/curr/uz_Cyrl.txt
source/data/curr/uz_Latn.txt
source/data/curr/vai.txt
source/data/curr/vai_Latn.txt
source/data/curr/vai_Vaii.txt
source/data/curr/vi.txt
source/data/curr/vun.txt
source/data/curr/wae.txt
source/data/curr/xog.txt
source/data/curr/yav.txt
source/data/curr/yi.txt
source/data/curr/yo.txt
source/data/curr/yo_BJ.txt
source/data/curr/yue.txt
source/data/curr/zgh.txt
source/data/curr/zh.txt
source/data/curr/zh_Hans.txt
source/data/curr/zh_Hans_HK.txt
source/data/curr/zh_Hans_MO.txt
source/data/curr/zh_Hans_SG.txt
source/data/curr/zh_Hant.txt
source/data/curr/zh_Hant_HK.txt
source/data/curr/zh_Hant_MO.txt
source/data/curr/zu.txt
source/data/icu-coll-deprecates.xml
source/data/icu-config.xml
source/data/icu-locale-deprecates.xml
source/data/icu-rbnf-deprecates.xml
source/data/in/ubidi.icu
source/data/in/uprops.icu
source/data/lang/af.txt
source/data/lang/agq.txt
source/data/lang/ak.txt
source/data/lang/am.txt
source/data/lang/ar.txt
source/data/lang/ar_EG.txt
source/data/lang/ar_LY.txt
source/data/lang/ar_SA.txt
source/data/lang/ars.txt [deleted file]
source/data/lang/as.txt
source/data/lang/asa.txt
source/data/lang/ast.txt
source/data/lang/az.txt
source/data/lang/az_Cyrl.txt
source/data/lang/az_Latn.txt
source/data/lang/bas.txt
source/data/lang/be.txt
source/data/lang/bem.txt
source/data/lang/bez.txt
source/data/lang/bg.txt
source/data/lang/bm.txt
source/data/lang/bn.txt
source/data/lang/bn_IN.txt
source/data/lang/bo.txt
source/data/lang/br.txt
source/data/lang/brx.txt
source/data/lang/bs.txt
source/data/lang/bs_Cyrl.txt
source/data/lang/bs_Latn.txt
source/data/lang/ca.txt
source/data/lang/ce.txt
source/data/lang/cgg.txt
source/data/lang/chr.txt
source/data/lang/ckb.txt
source/data/lang/cs.txt
source/data/lang/cy.txt
source/data/lang/da.txt
source/data/lang/dav.txt
source/data/lang/de.txt
source/data/lang/de_AT.txt
source/data/lang/de_CH.txt
source/data/lang/de_LU.txt
source/data/lang/dje.txt
source/data/lang/dsb.txt
source/data/lang/dua.txt
source/data/lang/dyo.txt
source/data/lang/dz.txt
source/data/lang/ebu.txt
source/data/lang/ee.txt
source/data/lang/el.txt
source/data/lang/en.txt
source/data/lang/en_001.txt
source/data/lang/en_150.txt
source/data/lang/en_AG.txt
source/data/lang/en_AI.txt
source/data/lang/en_AT.txt
source/data/lang/en_AU.txt
source/data/lang/en_BB.txt
source/data/lang/en_BE.txt
source/data/lang/en_BM.txt
source/data/lang/en_BS.txt
source/data/lang/en_BW.txt
source/data/lang/en_BZ.txt
source/data/lang/en_CA.txt
source/data/lang/en_CC.txt
source/data/lang/en_CH.txt
source/data/lang/en_CK.txt
source/data/lang/en_CM.txt
source/data/lang/en_CX.txt
source/data/lang/en_CY.txt
source/data/lang/en_DE.txt
source/data/lang/en_DG.txt
source/data/lang/en_DK.txt
source/data/lang/en_DM.txt
source/data/lang/en_ER.txt
source/data/lang/en_FI.txt
source/data/lang/en_FJ.txt
source/data/lang/en_FK.txt
source/data/lang/en_FM.txt
source/data/lang/en_GB.txt
source/data/lang/en_GD.txt
source/data/lang/en_GG.txt
source/data/lang/en_GH.txt
source/data/lang/en_GI.txt
source/data/lang/en_GM.txt
source/data/lang/en_GY.txt
source/data/lang/en_HK.txt
source/data/lang/en_IE.txt
source/data/lang/en_IL.txt
source/data/lang/en_IM.txt
source/data/lang/en_IN.txt
source/data/lang/en_IO.txt
source/data/lang/en_JE.txt
source/data/lang/en_JM.txt
source/data/lang/en_KE.txt
source/data/lang/en_KI.txt
source/data/lang/en_KN.txt
source/data/lang/en_KY.txt
source/data/lang/en_LC.txt
source/data/lang/en_LR.txt
source/data/lang/en_LS.txt
source/data/lang/en_MG.txt
source/data/lang/en_MO.txt
source/data/lang/en_MS.txt
source/data/lang/en_MT.txt
source/data/lang/en_MU.txt
source/data/lang/en_MW.txt
source/data/lang/en_MY.txt
source/data/lang/en_NA.txt
source/data/lang/en_NF.txt
source/data/lang/en_NG.txt
source/data/lang/en_NL.txt
source/data/lang/en_NR.txt
source/data/lang/en_NU.txt
source/data/lang/en_NZ.txt
source/data/lang/en_PG.txt
source/data/lang/en_PH.txt
source/data/lang/en_PK.txt
source/data/lang/en_PN.txt
source/data/lang/en_PW.txt
source/data/lang/en_RW.txt
source/data/lang/en_SB.txt
source/data/lang/en_SC.txt
source/data/lang/en_SD.txt
source/data/lang/en_SE.txt
source/data/lang/en_SG.txt
source/data/lang/en_SH.txt
source/data/lang/en_SI.txt
source/data/lang/en_SL.txt
source/data/lang/en_SS.txt
source/data/lang/en_SX.txt
source/data/lang/en_SZ.txt
source/data/lang/en_TC.txt
source/data/lang/en_TK.txt
source/data/lang/en_TO.txt
source/data/lang/en_TT.txt
source/data/lang/en_TV.txt
source/data/lang/en_TZ.txt
source/data/lang/en_UG.txt
source/data/lang/en_VC.txt
source/data/lang/en_VG.txt
source/data/lang/en_VU.txt
source/data/lang/en_WS.txt
source/data/lang/en_ZA.txt
source/data/lang/en_ZM.txt
source/data/lang/en_ZW.txt
source/data/lang/eo.txt
source/data/lang/es.txt
source/data/lang/es_419.txt
source/data/lang/es_AR.txt
source/data/lang/es_BO.txt
source/data/lang/es_BR.txt
source/data/lang/es_BZ.txt [deleted file]
source/data/lang/es_CL.txt
source/data/lang/es_CO.txt
source/data/lang/es_CR.txt
source/data/lang/es_CU.txt
source/data/lang/es_DO.txt
source/data/lang/es_EC.txt
source/data/lang/es_GT.txt
source/data/lang/es_HN.txt
source/data/lang/es_MX.txt
source/data/lang/es_NI.txt
source/data/lang/es_PA.txt
source/data/lang/es_PE.txt
source/data/lang/es_PR.txt
source/data/lang/es_PY.txt
source/data/lang/es_SV.txt
source/data/lang/es_US.txt
source/data/lang/es_UY.txt
source/data/lang/es_VE.txt
source/data/lang/et.txt
source/data/lang/eu.txt
source/data/lang/ewo.txt
source/data/lang/fa.txt
source/data/lang/fa_AF.txt
source/data/lang/ff.txt
source/data/lang/fi.txt
source/data/lang/fil.txt
source/data/lang/fo.txt
source/data/lang/fr.txt
source/data/lang/fr_BE.txt
source/data/lang/fr_CA.txt
source/data/lang/fr_CH.txt
source/data/lang/fur.txt
source/data/lang/fy.txt
source/data/lang/ga.txt
source/data/lang/gd.txt
source/data/lang/gl.txt
source/data/lang/gsw.txt
source/data/lang/gu.txt
source/data/lang/guz.txt
source/data/lang/gv.txt
source/data/lang/ha.txt
source/data/lang/haw.txt
source/data/lang/he.txt
source/data/lang/hi.txt
source/data/lang/hr.txt
source/data/lang/hsb.txt
source/data/lang/hu.txt
source/data/lang/hy.txt
source/data/lang/id.txt
source/data/lang/ig.txt
source/data/lang/ii.txt
source/data/lang/is.txt
source/data/lang/it.txt
source/data/lang/ja.txt
source/data/lang/jgo.txt
source/data/lang/jmc.txt
source/data/lang/ka.txt
source/data/lang/kab.txt
source/data/lang/kam.txt
source/data/lang/kde.txt
source/data/lang/kea.txt
source/data/lang/khq.txt
source/data/lang/ki.txt
source/data/lang/kk.txt
source/data/lang/kkj.txt
source/data/lang/kl.txt
source/data/lang/kln.txt
source/data/lang/km.txt
source/data/lang/kn.txt
source/data/lang/ko.txt
source/data/lang/kok.txt
source/data/lang/ks.txt
source/data/lang/ksb.txt
source/data/lang/ksf.txt
source/data/lang/ksh.txt
source/data/lang/kw.txt
source/data/lang/ky.txt
source/data/lang/lag.txt
source/data/lang/lb.txt
source/data/lang/lg.txt
source/data/lang/lkt.txt
source/data/lang/ln.txt
source/data/lang/lo.txt
source/data/lang/lrc.txt
source/data/lang/lt.txt
source/data/lang/lu.txt
source/data/lang/luo.txt
source/data/lang/luy.txt
source/data/lang/lv.txt
source/data/lang/mas.txt
source/data/lang/mer.txt
source/data/lang/mfe.txt
source/data/lang/mg.txt
source/data/lang/mgh.txt
source/data/lang/mgo.txt
source/data/lang/mk.txt
source/data/lang/ml.txt
source/data/lang/mn.txt
source/data/lang/mr.txt
source/data/lang/ms.txt
source/data/lang/mt.txt
source/data/lang/mua.txt
source/data/lang/my.txt
source/data/lang/mzn.txt
source/data/lang/naq.txt
source/data/lang/nb.txt
source/data/lang/nd.txt
source/data/lang/nds.txt
source/data/lang/ne.txt
source/data/lang/nl.txt
source/data/lang/nmg.txt
source/data/lang/nn.txt
source/data/lang/nnh.txt
source/data/lang/nus.txt
source/data/lang/nyn.txt
source/data/lang/om.txt
source/data/lang/or.txt
source/data/lang/os.txt
source/data/lang/pa.txt
source/data/lang/pa_Arab.txt
source/data/lang/pa_Guru.txt
source/data/lang/pl.txt
source/data/lang/pool.res
source/data/lang/ps.txt
source/data/lang/pt.txt
source/data/lang/pt_AO.txt
source/data/lang/pt_CH.txt
source/data/lang/pt_CV.txt
source/data/lang/pt_GQ.txt
source/data/lang/pt_GW.txt
source/data/lang/pt_LU.txt
source/data/lang/pt_MO.txt
source/data/lang/pt_MZ.txt
source/data/lang/pt_PT.txt
source/data/lang/pt_ST.txt
source/data/lang/pt_TL.txt
source/data/lang/qu.txt
source/data/lang/resfiles.mk
source/data/lang/rm.txt
source/data/lang/rn.txt
source/data/lang/ro.txt
source/data/lang/ro_MD.txt
source/data/lang/rof.txt
source/data/lang/root.txt
source/data/lang/ru.txt
source/data/lang/rw.txt
source/data/lang/rwk.txt
source/data/lang/sah.txt
source/data/lang/saq.txt
source/data/lang/sbp.txt
source/data/lang/se.txt
source/data/lang/se_FI.txt
source/data/lang/seh.txt
source/data/lang/ses.txt
source/data/lang/sg.txt
source/data/lang/shi.txt
source/data/lang/shi_Latn.txt
source/data/lang/shi_Tfng.txt
source/data/lang/si.txt
source/data/lang/sk.txt
source/data/lang/sl.txt
source/data/lang/smn.txt
source/data/lang/sn.txt
source/data/lang/so.txt
source/data/lang/sq.txt
source/data/lang/sr.txt
source/data/lang/sr_Cyrl.txt
source/data/lang/sr_Cyrl_BA.txt
source/data/lang/sr_Cyrl_ME.txt
source/data/lang/sr_Cyrl_XK.txt
source/data/lang/sr_Latn.txt
source/data/lang/sr_Latn_BA.txt
source/data/lang/sr_Latn_ME.txt
source/data/lang/sr_Latn_XK.txt
source/data/lang/sv.txt
source/data/lang/sv_FI.txt
source/data/lang/sw.txt
source/data/lang/sw_CD.txt
source/data/lang/sw_KE.txt
source/data/lang/ta.txt
source/data/lang/te.txt
source/data/lang/teo.txt
source/data/lang/th.txt
source/data/lang/ti.txt
source/data/lang/to.txt
source/data/lang/tr.txt
source/data/lang/twq.txt
source/data/lang/tzm.txt
source/data/lang/ug.txt
source/data/lang/uk.txt
source/data/lang/ur.txt
source/data/lang/ur_IN.txt
source/data/lang/uz.txt
source/data/lang/uz_Arab.txt
source/data/lang/uz_Cyrl.txt
source/data/lang/uz_Latn.txt
source/data/lang/vai.txt
source/data/lang/vai_Latn.txt
source/data/lang/vai_Vaii.txt
source/data/lang/vi.txt
source/data/lang/vun.txt
source/data/lang/wae.txt
source/data/lang/xog.txt
source/data/lang/yav.txt
source/data/lang/yi.txt
source/data/lang/yo.txt
source/data/lang/yo_BJ.txt
source/data/lang/yue.txt
source/data/lang/zgh.txt
source/data/lang/zh.txt
source/data/lang/zh_Hans.txt
source/data/lang/zh_Hant.txt
source/data/lang/zh_Hant_HK.txt
source/data/lang/zh_Hant_MO.txt
source/data/lang/zu.txt
source/data/locales/af.txt
source/data/locales/af_NA.txt
source/data/locales/af_ZA.txt
source/data/locales/agq.txt
source/data/locales/agq_CM.txt
source/data/locales/ak.txt
source/data/locales/ak_GH.txt
source/data/locales/am.txt
source/data/locales/am_ET.txt
source/data/locales/ar.txt
source/data/locales/ar_001.txt
source/data/locales/ar_AE.txt
source/data/locales/ar_BH.txt
source/data/locales/ar_DJ.txt
source/data/locales/ar_DZ.txt
source/data/locales/ar_EG.txt
source/data/locales/ar_EH.txt
source/data/locales/ar_ER.txt
source/data/locales/ar_IL.txt
source/data/locales/ar_IQ.txt
source/data/locales/ar_JO.txt
source/data/locales/ar_KM.txt
source/data/locales/ar_KW.txt
source/data/locales/ar_LB.txt
source/data/locales/ar_LY.txt
source/data/locales/ar_MA.txt
source/data/locales/ar_MR.txt
source/data/locales/ar_OM.txt
source/data/locales/ar_PS.txt
source/data/locales/ar_QA.txt
source/data/locales/ar_SA.txt
source/data/locales/ar_SD.txt
source/data/locales/ar_SO.txt
source/data/locales/ar_SS.txt
source/data/locales/ar_SY.txt
source/data/locales/ar_TD.txt
source/data/locales/ar_TN.txt
source/data/locales/ar_YE.txt
source/data/locales/ars.txt [deleted file]
source/data/locales/as.txt
source/data/locales/as_IN.txt
source/data/locales/asa.txt
source/data/locales/asa_TZ.txt
source/data/locales/ast.txt
source/data/locales/ast_ES.txt
source/data/locales/az.txt
source/data/locales/az_Cyrl.txt
source/data/locales/az_Cyrl_AZ.txt
source/data/locales/az_Latn.txt
source/data/locales/az_Latn_AZ.txt
source/data/locales/bas.txt
source/data/locales/bas_CM.txt
source/data/locales/be.txt
source/data/locales/be_BY.txt
source/data/locales/bem.txt
source/data/locales/bem_ZM.txt
source/data/locales/bez.txt
source/data/locales/bez_TZ.txt
source/data/locales/bg.txt
source/data/locales/bg_BG.txt
source/data/locales/bm.txt
source/data/locales/bm_ML.txt
source/data/locales/bn.txt
source/data/locales/bn_BD.txt
source/data/locales/bn_IN.txt
source/data/locales/bo.txt
source/data/locales/bo_CN.txt
source/data/locales/bo_IN.txt
source/data/locales/br.txt
source/data/locales/br_FR.txt
source/data/locales/brx.txt
source/data/locales/brx_IN.txt
source/data/locales/bs.txt
source/data/locales/bs_Cyrl.txt
source/data/locales/bs_Cyrl_BA.txt
source/data/locales/bs_Latn.txt
source/data/locales/bs_Latn_BA.txt
source/data/locales/ca.txt
source/data/locales/ca_AD.txt
source/data/locales/ca_ES.txt
source/data/locales/ca_FR.txt
source/data/locales/ca_IT.txt
source/data/locales/ce.txt
source/data/locales/ce_RU.txt
source/data/locales/cgg.txt
source/data/locales/cgg_UG.txt
source/data/locales/chr.txt
source/data/locales/chr_US.txt
source/data/locales/ckb.txt
source/data/locales/ckb_IQ.txt
source/data/locales/ckb_IR.txt
source/data/locales/cs.txt
source/data/locales/cs_CZ.txt
source/data/locales/cy.txt
source/data/locales/cy_GB.txt
source/data/locales/da.txt
source/data/locales/da_DK.txt
source/data/locales/da_GL.txt
source/data/locales/dav.txt
source/data/locales/dav_KE.txt
source/data/locales/de.txt
source/data/locales/de_AT.txt
source/data/locales/de_BE.txt
source/data/locales/de_CH.txt
source/data/locales/de_DE.txt
source/data/locales/de_IT.txt
source/data/locales/de_LI.txt
source/data/locales/de_LU.txt
source/data/locales/dje.txt
source/data/locales/dje_NE.txt
source/data/locales/dsb.txt
source/data/locales/dsb_DE.txt
source/data/locales/dua.txt
source/data/locales/dua_CM.txt
source/data/locales/dyo.txt
source/data/locales/dyo_SN.txt
source/data/locales/dz.txt
source/data/locales/dz_BT.txt
source/data/locales/ebu.txt
source/data/locales/ebu_KE.txt
source/data/locales/ee.txt
source/data/locales/ee_GH.txt
source/data/locales/ee_TG.txt
source/data/locales/el.txt
source/data/locales/el_CY.txt
source/data/locales/el_GR.txt
source/data/locales/en.txt
source/data/locales/en_001.txt
source/data/locales/en_150.txt
source/data/locales/en_AG.txt
source/data/locales/en_AI.txt
source/data/locales/en_AS.txt
source/data/locales/en_AT.txt
source/data/locales/en_AU.txt
source/data/locales/en_BB.txt
source/data/locales/en_BE.txt
source/data/locales/en_BI.txt
source/data/locales/en_BM.txt
source/data/locales/en_BS.txt
source/data/locales/en_BW.txt
source/data/locales/en_BZ.txt
source/data/locales/en_CA.txt
source/data/locales/en_CC.txt
source/data/locales/en_CH.txt
source/data/locales/en_CK.txt
source/data/locales/en_CM.txt
source/data/locales/en_CX.txt
source/data/locales/en_CY.txt
source/data/locales/en_DE.txt
source/data/locales/en_DG.txt
source/data/locales/en_DK.txt
source/data/locales/en_DM.txt
source/data/locales/en_ER.txt
source/data/locales/en_FI.txt
source/data/locales/en_FJ.txt
source/data/locales/en_FK.txt
source/data/locales/en_FM.txt
source/data/locales/en_GB.txt
source/data/locales/en_GD.txt
source/data/locales/en_GG.txt
source/data/locales/en_GH.txt
source/data/locales/en_GI.txt
source/data/locales/en_GM.txt
source/data/locales/en_GU.txt
source/data/locales/en_GY.txt
source/data/locales/en_HK.txt
source/data/locales/en_IE.txt
source/data/locales/en_IL.txt
source/data/locales/en_IM.txt
source/data/locales/en_IN.txt
source/data/locales/en_IO.txt
source/data/locales/en_JE.txt
source/data/locales/en_JM.txt
source/data/locales/en_KE.txt
source/data/locales/en_KI.txt
source/data/locales/en_KN.txt
source/data/locales/en_KY.txt
source/data/locales/en_LC.txt
source/data/locales/en_LR.txt
source/data/locales/en_LS.txt
source/data/locales/en_MG.txt
source/data/locales/en_MH.txt
source/data/locales/en_MO.txt
source/data/locales/en_MP.txt
source/data/locales/en_MS.txt
source/data/locales/en_MT.txt
source/data/locales/en_MU.txt
source/data/locales/en_MW.txt
source/data/locales/en_MY.txt
source/data/locales/en_NA.txt
source/data/locales/en_NF.txt
source/data/locales/en_NG.txt
source/data/locales/en_NL.txt
source/data/locales/en_NR.txt
source/data/locales/en_NU.txt
source/data/locales/en_NZ.txt
source/data/locales/en_PG.txt
source/data/locales/en_PH.txt
source/data/locales/en_PK.txt
source/data/locales/en_PN.txt
source/data/locales/en_PR.txt
source/data/locales/en_PW.txt
source/data/locales/en_RW.txt
source/data/locales/en_SB.txt
source/data/locales/en_SC.txt
source/data/locales/en_SD.txt
source/data/locales/en_SE.txt
source/data/locales/en_SG.txt
source/data/locales/en_SH.txt
source/data/locales/en_SI.txt
source/data/locales/en_SL.txt
source/data/locales/en_SS.txt
source/data/locales/en_SX.txt
source/data/locales/en_SZ.txt
source/data/locales/en_TC.txt
source/data/locales/en_TK.txt
source/data/locales/en_TO.txt
source/data/locales/en_TT.txt
source/data/locales/en_TV.txt
source/data/locales/en_TZ.txt
source/data/locales/en_UG.txt
source/data/locales/en_UM.txt
source/data/locales/en_US.txt
source/data/locales/en_US_POSIX.txt
source/data/locales/en_VC.txt
source/data/locales/en_VG.txt
source/data/locales/en_VI.txt
source/data/locales/en_VU.txt
source/data/locales/en_WS.txt
source/data/locales/en_ZA.txt
source/data/locales/en_ZM.txt
source/data/locales/en_ZW.txt
source/data/locales/eo.txt
source/data/locales/es.txt
source/data/locales/es_419.txt
source/data/locales/es_AR.txt
source/data/locales/es_BO.txt
source/data/locales/es_BR.txt
source/data/locales/es_BZ.txt [deleted file]
source/data/locales/es_CL.txt
source/data/locales/es_CO.txt
source/data/locales/es_CR.txt
source/data/locales/es_CU.txt
source/data/locales/es_DO.txt
source/data/locales/es_EA.txt
source/data/locales/es_EC.txt
source/data/locales/es_ES.txt
source/data/locales/es_GQ.txt
source/data/locales/es_GT.txt
source/data/locales/es_HN.txt
source/data/locales/es_IC.txt
source/data/locales/es_MX.txt
source/data/locales/es_NI.txt
source/data/locales/es_PA.txt
source/data/locales/es_PE.txt
source/data/locales/es_PH.txt
source/data/locales/es_PR.txt
source/data/locales/es_PY.txt
source/data/locales/es_SV.txt
source/data/locales/es_US.txt
source/data/locales/es_UY.txt
source/data/locales/es_VE.txt
source/data/locales/et.txt
source/data/locales/et_EE.txt
source/data/locales/eu.txt
source/data/locales/eu_ES.txt
source/data/locales/ewo.txt
source/data/locales/ewo_CM.txt
source/data/locales/fa.txt
source/data/locales/fa_AF.txt
source/data/locales/fa_IR.txt
source/data/locales/ff.txt
source/data/locales/ff_CM.txt
source/data/locales/ff_GN.txt
source/data/locales/ff_MR.txt
source/data/locales/ff_SN.txt
source/data/locales/fi.txt
source/data/locales/fi_FI.txt
source/data/locales/fil.txt
source/data/locales/fil_PH.txt
source/data/locales/fo.txt
source/data/locales/fo_DK.txt
source/data/locales/fo_FO.txt
source/data/locales/fr.txt
source/data/locales/fr_BE.txt
source/data/locales/fr_BF.txt
source/data/locales/fr_BI.txt
source/data/locales/fr_BJ.txt
source/data/locales/fr_BL.txt
source/data/locales/fr_CA.txt
source/data/locales/fr_CD.txt
source/data/locales/fr_CF.txt
source/data/locales/fr_CG.txt
source/data/locales/fr_CH.txt
source/data/locales/fr_CI.txt
source/data/locales/fr_CM.txt
source/data/locales/fr_DJ.txt
source/data/locales/fr_DZ.txt
source/data/locales/fr_FR.txt
source/data/locales/fr_GA.txt
source/data/locales/fr_GF.txt
source/data/locales/fr_GN.txt
source/data/locales/fr_GP.txt
source/data/locales/fr_GQ.txt
source/data/locales/fr_HT.txt
source/data/locales/fr_KM.txt
source/data/locales/fr_LU.txt
source/data/locales/fr_MA.txt
source/data/locales/fr_MC.txt
source/data/locales/fr_MF.txt
source/data/locales/fr_MG.txt
source/data/locales/fr_ML.txt
source/data/locales/fr_MQ.txt
source/data/locales/fr_MR.txt
source/data/locales/fr_MU.txt
source/data/locales/fr_NC.txt
source/data/locales/fr_NE.txt
source/data/locales/fr_PF.txt
source/data/locales/fr_PM.txt
source/data/locales/fr_RE.txt
source/data/locales/fr_RW.txt
source/data/locales/fr_SC.txt
source/data/locales/fr_SN.txt
source/data/locales/fr_SY.txt
source/data/locales/fr_TD.txt
source/data/locales/fr_TG.txt
source/data/locales/fr_TN.txt
source/data/locales/fr_VU.txt
source/data/locales/fr_WF.txt
source/data/locales/fr_YT.txt
source/data/locales/fur.txt
source/data/locales/fur_IT.txt
source/data/locales/fy.txt
source/data/locales/fy_NL.txt
source/data/locales/ga.txt
source/data/locales/ga_IE.txt
source/data/locales/gd.txt
source/data/locales/gd_GB.txt
source/data/locales/gl.txt
source/data/locales/gl_ES.txt
source/data/locales/gsw.txt
source/data/locales/gsw_CH.txt
source/data/locales/gsw_FR.txt
source/data/locales/gsw_LI.txt
source/data/locales/gu.txt
source/data/locales/gu_IN.txt
source/data/locales/guz.txt
source/data/locales/guz_KE.txt
source/data/locales/gv.txt
source/data/locales/gv_IM.txt
source/data/locales/ha.txt
source/data/locales/ha_GH.txt
source/data/locales/ha_NE.txt
source/data/locales/ha_NG.txt
source/data/locales/haw.txt
source/data/locales/haw_US.txt
source/data/locales/he.txt
source/data/locales/he_IL.txt
source/data/locales/hi.txt
source/data/locales/hi_IN.txt
source/data/locales/hr.txt
source/data/locales/hr_BA.txt
source/data/locales/hr_HR.txt
source/data/locales/hsb.txt
source/data/locales/hsb_DE.txt
source/data/locales/hu.txt
source/data/locales/hu_HU.txt
source/data/locales/hy.txt
source/data/locales/hy_AM.txt
source/data/locales/id.txt
source/data/locales/id_ID.txt
source/data/locales/ig.txt
source/data/locales/ig_NG.txt
source/data/locales/ii.txt
source/data/locales/ii_CN.txt
source/data/locales/is.txt
source/data/locales/is_IS.txt
source/data/locales/it.txt
source/data/locales/it_CH.txt
source/data/locales/it_IT.txt
source/data/locales/it_SM.txt
source/data/locales/it_VA.txt [deleted file]
source/data/locales/ja.txt
source/data/locales/ja_JP.txt
source/data/locales/jgo.txt
source/data/locales/jgo_CM.txt
source/data/locales/jmc.txt
source/data/locales/jmc_TZ.txt
source/data/locales/ka.txt
source/data/locales/ka_GE.txt
source/data/locales/kab.txt
source/data/locales/kab_DZ.txt
source/data/locales/kam.txt
source/data/locales/kam_KE.txt
source/data/locales/kde.txt
source/data/locales/kde_TZ.txt
source/data/locales/kea.txt
source/data/locales/kea_CV.txt
source/data/locales/khq.txt
source/data/locales/khq_ML.txt
source/data/locales/ki.txt
source/data/locales/ki_KE.txt
source/data/locales/kk.txt
source/data/locales/kk_KZ.txt
source/data/locales/kkj.txt
source/data/locales/kkj_CM.txt
source/data/locales/kl.txt
source/data/locales/kl_GL.txt
source/data/locales/kln.txt
source/data/locales/kln_KE.txt
source/data/locales/km.txt
source/data/locales/km_KH.txt
source/data/locales/kn.txt
source/data/locales/kn_IN.txt
source/data/locales/ko.txt
source/data/locales/ko_KP.txt
source/data/locales/ko_KR.txt
source/data/locales/kok.txt
source/data/locales/kok_IN.txt
source/data/locales/ks.txt
source/data/locales/ks_IN.txt
source/data/locales/ksb.txt
source/data/locales/ksb_TZ.txt
source/data/locales/ksf.txt
source/data/locales/ksf_CM.txt
source/data/locales/ksh.txt
source/data/locales/ksh_DE.txt
source/data/locales/kw.txt
source/data/locales/kw_GB.txt
source/data/locales/ky.txt
source/data/locales/ky_KG.txt
source/data/locales/lag.txt
source/data/locales/lag_TZ.txt
source/data/locales/lb.txt
source/data/locales/lb_LU.txt
source/data/locales/lg.txt
source/data/locales/lg_UG.txt
source/data/locales/lkt.txt
source/data/locales/lkt_US.txt
source/data/locales/ln.txt
source/data/locales/ln_AO.txt
source/data/locales/ln_CD.txt
source/data/locales/ln_CF.txt
source/data/locales/ln_CG.txt
source/data/locales/lo.txt
source/data/locales/lo_LA.txt
source/data/locales/lrc.txt
source/data/locales/lrc_IQ.txt
source/data/locales/lrc_IR.txt
source/data/locales/lt.txt
source/data/locales/lt_LT.txt
source/data/locales/lu.txt
source/data/locales/lu_CD.txt
source/data/locales/luo.txt
source/data/locales/luo_KE.txt
source/data/locales/luy.txt
source/data/locales/luy_KE.txt
source/data/locales/lv.txt
source/data/locales/lv_LV.txt
source/data/locales/mas.txt
source/data/locales/mas_KE.txt
source/data/locales/mas_TZ.txt
source/data/locales/mer.txt
source/data/locales/mer_KE.txt
source/data/locales/mfe.txt
source/data/locales/mfe_MU.txt
source/data/locales/mg.txt
source/data/locales/mg_MG.txt
source/data/locales/mgh.txt
source/data/locales/mgh_MZ.txt
source/data/locales/mgo.txt
source/data/locales/mgo_CM.txt
source/data/locales/mk.txt
source/data/locales/mk_MK.txt
source/data/locales/ml.txt
source/data/locales/ml_IN.txt
source/data/locales/mn.txt
source/data/locales/mn_MN.txt
source/data/locales/mr.txt
source/data/locales/mr_IN.txt
source/data/locales/ms.txt
source/data/locales/ms_BN.txt
source/data/locales/ms_MY.txt
source/data/locales/ms_SG.txt
source/data/locales/mt.txt
source/data/locales/mt_MT.txt
source/data/locales/mua.txt
source/data/locales/mua_CM.txt
source/data/locales/my.txt
source/data/locales/my_MM.txt
source/data/locales/mzn.txt
source/data/locales/mzn_IR.txt
source/data/locales/naq.txt
source/data/locales/naq_NA.txt
source/data/locales/nb.txt
source/data/locales/nb_NO.txt
source/data/locales/nb_SJ.txt
source/data/locales/nd.txt
source/data/locales/nd_ZW.txt
source/data/locales/nds.txt
source/data/locales/nds_DE.txt
source/data/locales/nds_NL.txt
source/data/locales/ne.txt
source/data/locales/ne_IN.txt
source/data/locales/ne_NP.txt
source/data/locales/nl.txt
source/data/locales/nl_AW.txt
source/data/locales/nl_BE.txt
source/data/locales/nl_BQ.txt
source/data/locales/nl_CW.txt
source/data/locales/nl_NL.txt
source/data/locales/nl_SR.txt
source/data/locales/nl_SX.txt
source/data/locales/nmg.txt
source/data/locales/nmg_CM.txt
source/data/locales/nn.txt
source/data/locales/nn_NO.txt
source/data/locales/nnh.txt
source/data/locales/nnh_CM.txt
source/data/locales/nus.txt
source/data/locales/nus_SS.txt
source/data/locales/nyn.txt
source/data/locales/nyn_UG.txt
source/data/locales/om.txt
source/data/locales/om_ET.txt
source/data/locales/om_KE.txt
source/data/locales/or.txt
source/data/locales/or_IN.txt
source/data/locales/os.txt
source/data/locales/os_GE.txt
source/data/locales/os_RU.txt
source/data/locales/pa.txt
source/data/locales/pa_Arab.txt
source/data/locales/pa_Arab_PK.txt
source/data/locales/pa_Guru.txt
source/data/locales/pa_Guru_IN.txt
source/data/locales/pl.txt
source/data/locales/pl_PL.txt
source/data/locales/pool.res
source/data/locales/ps.txt
source/data/locales/ps_AF.txt
source/data/locales/pt.txt
source/data/locales/pt_AO.txt
source/data/locales/pt_BR.txt
source/data/locales/pt_CH.txt
source/data/locales/pt_CV.txt
source/data/locales/pt_GQ.txt
source/data/locales/pt_GW.txt
source/data/locales/pt_LU.txt
source/data/locales/pt_MO.txt
source/data/locales/pt_MZ.txt
source/data/locales/pt_PT.txt
source/data/locales/pt_ST.txt
source/data/locales/pt_TL.txt
source/data/locales/qu.txt
source/data/locales/qu_BO.txt
source/data/locales/qu_EC.txt
source/data/locales/qu_PE.txt
source/data/locales/resfiles.mk
source/data/locales/rm.txt
source/data/locales/rm_CH.txt
source/data/locales/rn.txt
source/data/locales/rn_BI.txt
source/data/locales/ro.txt
source/data/locales/ro_MD.txt
source/data/locales/ro_RO.txt
source/data/locales/rof.txt
source/data/locales/rof_TZ.txt
source/data/locales/root.txt
source/data/locales/ru.txt
source/data/locales/ru_BY.txt
source/data/locales/ru_KG.txt
source/data/locales/ru_KZ.txt
source/data/locales/ru_MD.txt
source/data/locales/ru_RU.txt
source/data/locales/ru_UA.txt
source/data/locales/rw.txt
source/data/locales/rw_RW.txt
source/data/locales/rwk.txt
source/data/locales/rwk_TZ.txt
source/data/locales/sah.txt
source/data/locales/sah_RU.txt
source/data/locales/saq.txt
source/data/locales/saq_KE.txt
source/data/locales/sbp.txt
source/data/locales/sbp_TZ.txt
source/data/locales/se.txt
source/data/locales/se_FI.txt
source/data/locales/se_NO.txt
source/data/locales/se_SE.txt
source/data/locales/seh.txt
source/data/locales/seh_MZ.txt
source/data/locales/ses.txt
source/data/locales/ses_ML.txt
source/data/locales/sg.txt
source/data/locales/sg_CF.txt
source/data/locales/shi.txt
source/data/locales/shi_Latn.txt
source/data/locales/shi_Latn_MA.txt
source/data/locales/shi_Tfng.txt
source/data/locales/shi_Tfng_MA.txt
source/data/locales/si.txt
source/data/locales/si_LK.txt
source/data/locales/sk.txt
source/data/locales/sk_SK.txt
source/data/locales/sl.txt
source/data/locales/sl_SI.txt
source/data/locales/smn.txt
source/data/locales/smn_FI.txt
source/data/locales/sn.txt
source/data/locales/sn_ZW.txt
source/data/locales/so.txt
source/data/locales/so_DJ.txt
source/data/locales/so_ET.txt
source/data/locales/so_KE.txt
source/data/locales/so_SO.txt
source/data/locales/sq.txt
source/data/locales/sq_AL.txt
source/data/locales/sq_MK.txt
source/data/locales/sq_XK.txt
source/data/locales/sr.txt
source/data/locales/sr_Cyrl.txt
source/data/locales/sr_Cyrl_BA.txt
source/data/locales/sr_Cyrl_ME.txt
source/data/locales/sr_Cyrl_RS.txt
source/data/locales/sr_Cyrl_XK.txt
source/data/locales/sr_Latn.txt
source/data/locales/sr_Latn_BA.txt
source/data/locales/sr_Latn_ME.txt
source/data/locales/sr_Latn_RS.txt
source/data/locales/sr_Latn_XK.txt
source/data/locales/sv.txt
source/data/locales/sv_AX.txt
source/data/locales/sv_FI.txt
source/data/locales/sv_SE.txt
source/data/locales/sw.txt
source/data/locales/sw_CD.txt
source/data/locales/sw_KE.txt
source/data/locales/sw_TZ.txt
source/data/locales/sw_UG.txt
source/data/locales/ta.txt
source/data/locales/ta_IN.txt
source/data/locales/ta_LK.txt
source/data/locales/ta_MY.txt
source/data/locales/ta_SG.txt
source/data/locales/te.txt
source/data/locales/te_IN.txt
source/data/locales/teo.txt
source/data/locales/teo_KE.txt
source/data/locales/teo_UG.txt
source/data/locales/th.txt
source/data/locales/th_TH.txt
source/data/locales/ti.txt
source/data/locales/ti_ER.txt
source/data/locales/ti_ET.txt
source/data/locales/to.txt
source/data/locales/to_TO.txt
source/data/locales/tr.txt
source/data/locales/tr_CY.txt
source/data/locales/tr_TR.txt
source/data/locales/twq.txt
source/data/locales/twq_NE.txt
source/data/locales/tzm.txt
source/data/locales/tzm_MA.txt
source/data/locales/ug.txt
source/data/locales/ug_CN.txt
source/data/locales/uk.txt
source/data/locales/uk_UA.txt
source/data/locales/ur.txt
source/data/locales/ur_IN.txt
source/data/locales/ur_PK.txt
source/data/locales/uz.txt
source/data/locales/uz_Arab.txt
source/data/locales/uz_Arab_AF.txt
source/data/locales/uz_Cyrl.txt
source/data/locales/uz_Cyrl_UZ.txt
source/data/locales/uz_Latn.txt
source/data/locales/uz_Latn_UZ.txt
source/data/locales/vai.txt
source/data/locales/vai_Latn.txt
source/data/locales/vai_Latn_LR.txt
source/data/locales/vai_Vaii.txt
source/data/locales/vai_Vaii_LR.txt
source/data/locales/vi.txt
source/data/locales/vi_VN.txt
source/data/locales/vun.txt
source/data/locales/vun_TZ.txt
source/data/locales/wae.txt
source/data/locales/wae_CH.txt
source/data/locales/xog.txt
source/data/locales/xog_UG.txt
source/data/locales/yav.txt
source/data/locales/yav_CM.txt
source/data/locales/yi.txt
source/data/locales/yi_001.txt
source/data/locales/yo.txt
source/data/locales/yo_BJ.txt
source/data/locales/yo_NG.txt
source/data/locales/yue.txt
source/data/locales/yue_HK.txt
source/data/locales/zgh.txt
source/data/locales/zgh_MA.txt
source/data/locales/zh.txt
source/data/locales/zh_Hans.txt
source/data/locales/zh_Hans_CN.txt
source/data/locales/zh_Hans_HK.txt
source/data/locales/zh_Hans_MO.txt
source/data/locales/zh_Hans_SG.txt
source/data/locales/zh_Hant.txt
source/data/locales/zh_Hant_HK.txt
source/data/locales/zh_Hant_MO.txt
source/data/locales/zh_Hant_TW.txt
source/data/locales/zu.txt
source/data/locales/zu_ZA.txt
source/data/makedata.mak
source/data/makedata.vcxproj
source/data/makedata_uwp.vcxproj [deleted file]
source/data/mappings/convrtrs.txt
source/data/mappings/gsm-03.38-2009.ucm [deleted file]
source/data/mappings/ucmfiles.mk
source/data/misc/dayPeriods.txt
source/data/misc/icuver.txt
source/data/misc/keyTypeData.txt
source/data/misc/likelySubtags.txt
source/data/misc/metaZones.txt
source/data/misc/metadata.txt
source/data/misc/plurals.txt
source/data/misc/supplementalData.txt
source/data/misc/timezoneTypes.txt
source/data/misc/windowsZones.txt
source/data/misc/zoneinfo64.txt
source/data/rbnf/ars.txt [deleted file]
source/data/rbnf/id.txt
source/data/rbnf/ms.txt
source/data/rbnf/rbnffiles.mk
source/data/rbnf/uk.txt
source/data/region/af.txt
source/data/region/agq.txt
source/data/region/ak.txt
source/data/region/am.txt
source/data/region/ar.txt
source/data/region/ar_AE.txt
source/data/region/ar_LY.txt
source/data/region/ar_SA.txt
source/data/region/ars.txt [deleted file]
source/data/region/as.txt
source/data/region/asa.txt
source/data/region/ast.txt
source/data/region/az.txt
source/data/region/az_Cyrl.txt
source/data/region/az_Latn.txt
source/data/region/bas.txt
source/data/region/be.txt
source/data/region/bem.txt
source/data/region/bez.txt
source/data/region/bg.txt
source/data/region/bm.txt
source/data/region/bn.txt
source/data/region/bn_IN.txt
source/data/region/bo.txt
source/data/region/bo_IN.txt
source/data/region/br.txt
source/data/region/brx.txt
source/data/region/bs.txt
source/data/region/bs_Cyrl.txt
source/data/region/bs_Latn.txt
source/data/region/ca.txt
source/data/region/ce.txt
source/data/region/cgg.txt
source/data/region/chr.txt
source/data/region/ckb.txt
source/data/region/cs.txt
source/data/region/cy.txt
source/data/region/da.txt
source/data/region/dav.txt
source/data/region/de.txt
source/data/region/de_AT.txt
source/data/region/de_CH.txt
source/data/region/dje.txt
source/data/region/dsb.txt
source/data/region/dua.txt
source/data/region/dyo.txt
source/data/region/dz.txt
source/data/region/ebu.txt
source/data/region/ee.txt
source/data/region/el.txt
source/data/region/en.txt
source/data/region/en_150.txt
source/data/region/en_AG.txt
source/data/region/en_AI.txt
source/data/region/en_AT.txt
source/data/region/en_AU.txt
source/data/region/en_BB.txt
source/data/region/en_BE.txt
source/data/region/en_BM.txt
source/data/region/en_BS.txt
source/data/region/en_BW.txt
source/data/region/en_BZ.txt
source/data/region/en_CA.txt
source/data/region/en_CC.txt
source/data/region/en_CH.txt
source/data/region/en_CK.txt
source/data/region/en_CM.txt
source/data/region/en_CX.txt
source/data/region/en_CY.txt
source/data/region/en_DE.txt
source/data/region/en_DG.txt
source/data/region/en_DK.txt
source/data/region/en_DM.txt
source/data/region/en_ER.txt
source/data/region/en_FI.txt
source/data/region/en_FJ.txt
source/data/region/en_FK.txt
source/data/region/en_FM.txt
source/data/region/en_GB.txt
source/data/region/en_GD.txt
source/data/region/en_GG.txt
source/data/region/en_GH.txt
source/data/region/en_GI.txt
source/data/region/en_GM.txt
source/data/region/en_GY.txt
source/data/region/en_HK.txt
source/data/region/en_IE.txt
source/data/region/en_IL.txt
source/data/region/en_IM.txt
source/data/region/en_IN.txt
source/data/region/en_IO.txt
source/data/region/en_JE.txt
source/data/region/en_JM.txt
source/data/region/en_KE.txt
source/data/region/en_KI.txt
source/data/region/en_KN.txt
source/data/region/en_KY.txt
source/data/region/en_LC.txt
source/data/region/en_LR.txt
source/data/region/en_LS.txt
source/data/region/en_MG.txt
source/data/region/en_MO.txt
source/data/region/en_MS.txt
source/data/region/en_MT.txt
source/data/region/en_MU.txt
source/data/region/en_MW.txt
source/data/region/en_MY.txt
source/data/region/en_NA.txt
source/data/region/en_NF.txt
source/data/region/en_NG.txt
source/data/region/en_NL.txt
source/data/region/en_NR.txt
source/data/region/en_NU.txt
source/data/region/en_NZ.txt
source/data/region/en_PG.txt
source/data/region/en_PH.txt
source/data/region/en_PK.txt
source/data/region/en_PN.txt
source/data/region/en_PW.txt
source/data/region/en_RW.txt
source/data/region/en_SB.txt
source/data/region/en_SC.txt
source/data/region/en_SD.txt
source/data/region/en_SE.txt
source/data/region/en_SG.txt
source/data/region/en_SH.txt
source/data/region/en_SI.txt
source/data/region/en_SL.txt
source/data/region/en_SS.txt
source/data/region/en_SX.txt
source/data/region/en_SZ.txt
source/data/region/en_TC.txt
source/data/region/en_TK.txt
source/data/region/en_TO.txt
source/data/region/en_TT.txt
source/data/region/en_TV.txt
source/data/region/en_TZ.txt
source/data/region/en_UG.txt
source/data/region/en_VC.txt
source/data/region/en_VG.txt
source/data/region/en_VU.txt
source/data/region/en_WS.txt
source/data/region/en_ZA.txt
source/data/region/en_ZM.txt
source/data/region/en_ZW.txt
source/data/region/eo.txt
source/data/region/es.txt
source/data/region/es_419.txt
source/data/region/es_AR.txt
source/data/region/es_BO.txt
source/data/region/es_BR.txt
source/data/region/es_BZ.txt [deleted file]
source/data/region/es_CL.txt
source/data/region/es_CO.txt
source/data/region/es_CR.txt
source/data/region/es_CU.txt
source/data/region/es_DO.txt
source/data/region/es_EC.txt
source/data/region/es_GT.txt
source/data/region/es_HN.txt
source/data/region/es_MX.txt
source/data/region/es_NI.txt
source/data/region/es_PA.txt
source/data/region/es_PE.txt
source/data/region/es_PR.txt
source/data/region/es_PY.txt
source/data/region/es_SV.txt
source/data/region/es_US.txt
source/data/region/es_UY.txt
source/data/region/es_VE.txt
source/data/region/et.txt
source/data/region/eu.txt
source/data/region/ewo.txt
source/data/region/fa.txt
source/data/region/fa_AF.txt
source/data/region/ff.txt
source/data/region/fi.txt
source/data/region/fil.txt
source/data/region/fo.txt
source/data/region/fr.txt
source/data/region/fr_BE.txt
source/data/region/fr_CA.txt
source/data/region/fur.txt
source/data/region/fy.txt
source/data/region/ga.txt
source/data/region/gd.txt
source/data/region/gl.txt
source/data/region/gsw.txt
source/data/region/gu.txt
source/data/region/guz.txt
source/data/region/gv.txt
source/data/region/ha.txt
source/data/region/haw.txt
source/data/region/he.txt
source/data/region/hi.txt
source/data/region/hr.txt
source/data/region/hsb.txt
source/data/region/hu.txt
source/data/region/hy.txt
source/data/region/id.txt
source/data/region/ig.txt
source/data/region/ii.txt
source/data/region/is.txt
source/data/region/it.txt
source/data/region/ja.txt
source/data/region/jgo.txt
source/data/region/jmc.txt
source/data/region/ka.txt
source/data/region/kab.txt
source/data/region/kam.txt
source/data/region/kde.txt
source/data/region/kea.txt
source/data/region/khq.txt
source/data/region/ki.txt
source/data/region/kk.txt
source/data/region/kkj.txt
source/data/region/kl.txt
source/data/region/kln.txt
source/data/region/km.txt
source/data/region/kn.txt
source/data/region/ko.txt
source/data/region/ko_KP.txt
source/data/region/kok.txt
source/data/region/ks.txt
source/data/region/ksb.txt
source/data/region/ksf.txt
source/data/region/ksh.txt
source/data/region/kw.txt
source/data/region/ky.txt
source/data/region/lag.txt
source/data/region/lb.txt
source/data/region/lg.txt
source/data/region/lkt.txt
source/data/region/ln.txt
source/data/region/lo.txt
source/data/region/lrc.txt
source/data/region/lt.txt
source/data/region/lu.txt
source/data/region/luo.txt
source/data/region/luy.txt
source/data/region/lv.txt
source/data/region/mas.txt
source/data/region/mer.txt
source/data/region/mfe.txt
source/data/region/mg.txt
source/data/region/mgh.txt
source/data/region/mgo.txt
source/data/region/mk.txt
source/data/region/ml.txt
source/data/region/mn.txt
source/data/region/mr.txt
source/data/region/ms.txt
source/data/region/mt.txt
source/data/region/mua.txt
source/data/region/my.txt
source/data/region/mzn.txt
source/data/region/naq.txt
source/data/region/nb.txt
source/data/region/nd.txt
source/data/region/nds.txt
source/data/region/ne.txt
source/data/region/nl.txt
source/data/region/nmg.txt
source/data/region/nn.txt
source/data/region/nnh.txt
source/data/region/nus.txt
source/data/region/nyn.txt
source/data/region/om.txt
source/data/region/or.txt
source/data/region/os.txt
source/data/region/pa.txt
source/data/region/pa_Arab.txt
source/data/region/pa_Guru.txt
source/data/region/pl.txt
source/data/region/pool.res
source/data/region/ps.txt
source/data/region/pt.txt
source/data/region/pt_AO.txt
source/data/region/pt_CH.txt
source/data/region/pt_CV.txt
source/data/region/pt_GQ.txt
source/data/region/pt_GW.txt
source/data/region/pt_LU.txt
source/data/region/pt_MO.txt
source/data/region/pt_MZ.txt
source/data/region/pt_PT.txt
source/data/region/pt_ST.txt
source/data/region/pt_TL.txt
source/data/region/qu.txt
source/data/region/resfiles.mk
source/data/region/rm.txt
source/data/region/rn.txt
source/data/region/ro.txt
source/data/region/ro_MD.txt
source/data/region/rof.txt
source/data/region/root.txt
source/data/region/ru.txt
source/data/region/ru_UA.txt
source/data/region/rw.txt
source/data/region/rwk.txt
source/data/region/sah.txt
source/data/region/saq.txt
source/data/region/sbp.txt
source/data/region/se.txt
source/data/region/se_FI.txt
source/data/region/seh.txt
source/data/region/ses.txt
source/data/region/sg.txt
source/data/region/shi.txt
source/data/region/shi_Latn.txt
source/data/region/shi_Tfng.txt
source/data/region/si.txt
source/data/region/sk.txt
source/data/region/sl.txt
source/data/region/smn.txt
source/data/region/sn.txt
source/data/region/so.txt
source/data/region/sq.txt
source/data/region/sr.txt
source/data/region/sr_Cyrl.txt
source/data/region/sr_Cyrl_BA.txt
source/data/region/sr_Cyrl_ME.txt
source/data/region/sr_Cyrl_XK.txt
source/data/region/sr_Latn.txt
source/data/region/sr_Latn_BA.txt
source/data/region/sr_Latn_ME.txt
source/data/region/sr_Latn_XK.txt
source/data/region/sv.txt
source/data/region/sw.txt
source/data/region/sw_CD.txt
source/data/region/sw_KE.txt
source/data/region/ta.txt
source/data/region/te.txt
source/data/region/teo.txt
source/data/region/th.txt
source/data/region/ti.txt
source/data/region/to.txt
source/data/region/tr.txt
source/data/region/twq.txt
source/data/region/tzm.txt
source/data/region/ug.txt
source/data/region/uk.txt
source/data/region/ur.txt
source/data/region/ur_IN.txt
source/data/region/uz.txt
source/data/region/uz_Arab.txt
source/data/region/uz_Cyrl.txt
source/data/region/uz_Latn.txt
source/data/region/vai.txt
source/data/region/vai_Latn.txt
source/data/region/vai_Vaii.txt
source/data/region/vi.txt
source/data/region/vun.txt
source/data/region/wae.txt
source/data/region/xog.txt
source/data/region/yav.txt
source/data/region/yi.txt
source/data/region/yo.txt
source/data/region/yo_BJ.txt
source/data/region/yue.txt
source/data/region/zgh.txt
source/data/region/zh.txt
source/data/region/zh_Hans.txt
source/data/region/zh_Hant.txt
source/data/region/zh_Hant_HK.txt
source/data/region/zh_Hant_MO.txt
source/data/region/zu.txt
source/data/translit/InterIndic_Arabic.txt
source/data/translit/Zawgyi_my.txt
source/data/translit/root.txt
source/data/translit/ta_ta_FONIPA.txt [deleted file]
source/data/unidata/changes.txt
source/data/unidata/confusables.txt
source/data/unidata/norm2/nfc.txt
source/data/unidata/norm2/nfkc.txt
source/data/unidata/norm2/nfkc_cf.txt
source/data/unidata/ppucd.txt
source/data/unit/af.txt
source/data/unit/agq.txt
source/data/unit/ak.txt
source/data/unit/am.txt
source/data/unit/ar.txt
source/data/unit/ar_SA.txt [deleted file]
source/data/unit/ars.txt [deleted file]
source/data/unit/as.txt
source/data/unit/asa.txt
source/data/unit/ast.txt
source/data/unit/az.txt
source/data/unit/az_Cyrl.txt
source/data/unit/az_Latn.txt
source/data/unit/bas.txt
source/data/unit/be.txt
source/data/unit/bem.txt
source/data/unit/bez.txt
source/data/unit/bg.txt
source/data/unit/bm.txt
source/data/unit/bn.txt
source/data/unit/bo.txt
source/data/unit/br.txt
source/data/unit/brx.txt
source/data/unit/bs.txt
source/data/unit/bs_Cyrl.txt
source/data/unit/bs_Latn.txt
source/data/unit/ca.txt
source/data/unit/ce.txt
source/data/unit/cgg.txt
source/data/unit/chr.txt
source/data/unit/ckb.txt
source/data/unit/cs.txt
source/data/unit/cy.txt
source/data/unit/da.txt
source/data/unit/dav.txt
source/data/unit/de.txt
source/data/unit/de_CH.txt
source/data/unit/dje.txt
source/data/unit/dsb.txt
source/data/unit/dua.txt
source/data/unit/dyo.txt
source/data/unit/dz.txt
source/data/unit/ebu.txt
source/data/unit/ee.txt
source/data/unit/el.txt
source/data/unit/en.txt
source/data/unit/en_001.txt
source/data/unit/en_150.txt
source/data/unit/en_AG.txt
source/data/unit/en_AI.txt
source/data/unit/en_AT.txt
source/data/unit/en_AU.txt
source/data/unit/en_BB.txt
source/data/unit/en_BE.txt
source/data/unit/en_BM.txt
source/data/unit/en_BS.txt
source/data/unit/en_BW.txt
source/data/unit/en_BZ.txt
source/data/unit/en_CA.txt
source/data/unit/en_CC.txt
source/data/unit/en_CH.txt
source/data/unit/en_CK.txt
source/data/unit/en_CM.txt
source/data/unit/en_CX.txt
source/data/unit/en_CY.txt
source/data/unit/en_DE.txt
source/data/unit/en_DG.txt
source/data/unit/en_DK.txt
source/data/unit/en_DM.txt
source/data/unit/en_ER.txt
source/data/unit/en_FI.txt
source/data/unit/en_FJ.txt
source/data/unit/en_FK.txt
source/data/unit/en_FM.txt
source/data/unit/en_GB.txt
source/data/unit/en_GD.txt
source/data/unit/en_GG.txt
source/data/unit/en_GH.txt
source/data/unit/en_GI.txt
source/data/unit/en_GM.txt
source/data/unit/en_GY.txt
source/data/unit/en_HK.txt
source/data/unit/en_IE.txt
source/data/unit/en_IL.txt
source/data/unit/en_IM.txt
source/data/unit/en_IN.txt
source/data/unit/en_IO.txt
source/data/unit/en_JE.txt
source/data/unit/en_JM.txt
source/data/unit/en_KE.txt
source/data/unit/en_KI.txt
source/data/unit/en_KN.txt
source/data/unit/en_KY.txt
source/data/unit/en_LC.txt
source/data/unit/en_LR.txt
source/data/unit/en_LS.txt
source/data/unit/en_MG.txt
source/data/unit/en_MO.txt
source/data/unit/en_MS.txt
source/data/unit/en_MT.txt
source/data/unit/en_MU.txt
source/data/unit/en_MW.txt
source/data/unit/en_MY.txt
source/data/unit/en_NA.txt
source/data/unit/en_NF.txt
source/data/unit/en_NG.txt
source/data/unit/en_NL.txt
source/data/unit/en_NR.txt
source/data/unit/en_NU.txt
source/data/unit/en_NZ.txt
source/data/unit/en_PG.txt
source/data/unit/en_PH.txt
source/data/unit/en_PK.txt
source/data/unit/en_PN.txt
source/data/unit/en_PW.txt
source/data/unit/en_RW.txt
source/data/unit/en_SB.txt
source/data/unit/en_SC.txt
source/data/unit/en_SD.txt
source/data/unit/en_SE.txt
source/data/unit/en_SG.txt
source/data/unit/en_SH.txt
source/data/unit/en_SI.txt
source/data/unit/en_SL.txt
source/data/unit/en_SS.txt
source/data/unit/en_SX.txt
source/data/unit/en_SZ.txt
source/data/unit/en_TC.txt
source/data/unit/en_TK.txt
source/data/unit/en_TO.txt
source/data/unit/en_TT.txt
source/data/unit/en_TV.txt
source/data/unit/en_TZ.txt
source/data/unit/en_UG.txt
source/data/unit/en_VC.txt
source/data/unit/en_VG.txt
source/data/unit/en_VU.txt
source/data/unit/en_WS.txt
source/data/unit/en_ZA.txt
source/data/unit/en_ZM.txt
source/data/unit/en_ZW.txt
source/data/unit/eo.txt
source/data/unit/es.txt
source/data/unit/es_419.txt
source/data/unit/es_AR.txt
source/data/unit/es_BO.txt
source/data/unit/es_BR.txt
source/data/unit/es_BZ.txt [deleted file]
source/data/unit/es_CL.txt
source/data/unit/es_CO.txt
source/data/unit/es_CR.txt
source/data/unit/es_CU.txt
source/data/unit/es_DO.txt
source/data/unit/es_EC.txt
source/data/unit/es_GT.txt
source/data/unit/es_HN.txt
source/data/unit/es_MX.txt
source/data/unit/es_NI.txt
source/data/unit/es_PA.txt
source/data/unit/es_PE.txt
source/data/unit/es_PR.txt
source/data/unit/es_PY.txt
source/data/unit/es_SV.txt
source/data/unit/es_US.txt
source/data/unit/es_UY.txt
source/data/unit/es_VE.txt
source/data/unit/et.txt
source/data/unit/eu.txt
source/data/unit/ewo.txt
source/data/unit/fa.txt
source/data/unit/ff.txt
source/data/unit/fi.txt
source/data/unit/fil.txt
source/data/unit/fo.txt
source/data/unit/fr.txt
source/data/unit/fr_CA.txt
source/data/unit/fr_HT.txt
source/data/unit/fur.txt
source/data/unit/fy.txt
source/data/unit/ga.txt
source/data/unit/gd.txt
source/data/unit/gl.txt
source/data/unit/gsw.txt
source/data/unit/gu.txt
source/data/unit/guz.txt
source/data/unit/gv.txt
source/data/unit/ha.txt
source/data/unit/haw.txt
source/data/unit/he.txt
source/data/unit/hi.txt
source/data/unit/hr.txt
source/data/unit/hsb.txt
source/data/unit/hu.txt
source/data/unit/hy.txt
source/data/unit/id.txt
source/data/unit/ig.txt
source/data/unit/ii.txt
source/data/unit/is.txt
source/data/unit/it.txt
source/data/unit/ja.txt
source/data/unit/jgo.txt
source/data/unit/jmc.txt
source/data/unit/ka.txt
source/data/unit/kab.txt
source/data/unit/kam.txt
source/data/unit/kde.txt
source/data/unit/kea.txt
source/data/unit/khq.txt
source/data/unit/ki.txt
source/data/unit/kk.txt
source/data/unit/kkj.txt
source/data/unit/kl.txt
source/data/unit/kln.txt
source/data/unit/km.txt
source/data/unit/kn.txt
source/data/unit/ko.txt
source/data/unit/kok.txt
source/data/unit/ks.txt
source/data/unit/ksb.txt
source/data/unit/ksf.txt
source/data/unit/ksh.txt
source/data/unit/kw.txt
source/data/unit/ky.txt
source/data/unit/lag.txt
source/data/unit/lb.txt
source/data/unit/lg.txt
source/data/unit/lkt.txt
source/data/unit/ln.txt
source/data/unit/lo.txt
source/data/unit/lrc.txt
source/data/unit/lt.txt
source/data/unit/lu.txt
source/data/unit/luo.txt
source/data/unit/luy.txt
source/data/unit/lv.txt
source/data/unit/mas.txt
source/data/unit/mer.txt
source/data/unit/mfe.txt
source/data/unit/mg.txt
source/data/unit/mgh.txt
source/data/unit/mgo.txt
source/data/unit/mk.txt
source/data/unit/ml.txt
source/data/unit/mn.txt
source/data/unit/mr.txt
source/data/unit/ms.txt
source/data/unit/mt.txt
source/data/unit/mua.txt
source/data/unit/my.txt
source/data/unit/mzn.txt
source/data/unit/naq.txt
source/data/unit/nb.txt
source/data/unit/nd.txt
source/data/unit/nds.txt
source/data/unit/ne.txt
source/data/unit/nl.txt
source/data/unit/nmg.txt
source/data/unit/nn.txt
source/data/unit/nnh.txt
source/data/unit/nus.txt
source/data/unit/nyn.txt
source/data/unit/om.txt
source/data/unit/or.txt
source/data/unit/os.txt
source/data/unit/pa.txt
source/data/unit/pa_Arab.txt
source/data/unit/pa_Guru.txt
source/data/unit/pl.txt
source/data/unit/pool.res
source/data/unit/ps.txt
source/data/unit/pt.txt
source/data/unit/pt_AO.txt
source/data/unit/pt_CH.txt
source/data/unit/pt_CV.txt
source/data/unit/pt_GQ.txt
source/data/unit/pt_GW.txt
source/data/unit/pt_LU.txt
source/data/unit/pt_MO.txt
source/data/unit/pt_MZ.txt
source/data/unit/pt_PT.txt
source/data/unit/pt_ST.txt
source/data/unit/pt_TL.txt
source/data/unit/qu.txt
source/data/unit/resfiles.mk
source/data/unit/rm.txt
source/data/unit/rn.txt
source/data/unit/ro.txt
source/data/unit/ro_MD.txt
source/data/unit/rof.txt
source/data/unit/root.txt
source/data/unit/ru.txt
source/data/unit/rw.txt
source/data/unit/rwk.txt
source/data/unit/sah.txt
source/data/unit/saq.txt
source/data/unit/sbp.txt
source/data/unit/se.txt
source/data/unit/seh.txt
source/data/unit/ses.txt
source/data/unit/sg.txt
source/data/unit/shi.txt
source/data/unit/shi_Latn.txt
source/data/unit/shi_Tfng.txt
source/data/unit/si.txt
source/data/unit/sk.txt
source/data/unit/sl.txt
source/data/unit/smn.txt
source/data/unit/sn.txt
source/data/unit/so.txt
source/data/unit/sq.txt
source/data/unit/sr.txt
source/data/unit/sr_Cyrl.txt
source/data/unit/sr_Latn.txt
source/data/unit/sv.txt
source/data/unit/sv_FI.txt
source/data/unit/sw.txt
source/data/unit/ta.txt
source/data/unit/te.txt
source/data/unit/teo.txt
source/data/unit/th.txt
source/data/unit/ti.txt
source/data/unit/to.txt
source/data/unit/tr.txt
source/data/unit/twq.txt
source/data/unit/tzm.txt
source/data/unit/ug.txt
source/data/unit/uk.txt
source/data/unit/ur.txt
source/data/unit/ur_IN.txt
source/data/unit/uz.txt
source/data/unit/uz_Arab.txt
source/data/unit/uz_Cyrl.txt
source/data/unit/uz_Latn.txt
source/data/unit/vai.txt
source/data/unit/vai_Latn.txt
source/data/unit/vai_Vaii.txt
source/data/unit/vi.txt
source/data/unit/vun.txt
source/data/unit/wae.txt
source/data/unit/xog.txt
source/data/unit/yav.txt
source/data/unit/yi.txt
source/data/unit/yo.txt
source/data/unit/yue.txt
source/data/unit/zgh.txt
source/data/unit/zh.txt
source/data/unit/zh_Hans.txt
source/data/unit/zh_Hans_HK.txt
source/data/unit/zh_Hans_MO.txt
source/data/unit/zh_Hans_SG.txt
source/data/unit/zh_Hant.txt
source/data/unit/zh_Hant_HK.txt
source/data/unit/zh_Hant_MO.txt
source/data/unit/zu.txt
source/data/zone/af.txt
source/data/zone/agq.txt
source/data/zone/ak.txt
source/data/zone/am.txt
source/data/zone/ar.txt
source/data/zone/ar_SA.txt [deleted file]
source/data/zone/ars.txt [deleted file]
source/data/zone/as.txt
source/data/zone/asa.txt
source/data/zone/ast.txt
source/data/zone/az.txt
source/data/zone/az_Cyrl.txt
source/data/zone/az_Latn.txt
source/data/zone/bas.txt
source/data/zone/be.txt
source/data/zone/bem.txt
source/data/zone/bez.txt
source/data/zone/bg.txt
source/data/zone/bm.txt
source/data/zone/bn.txt
source/data/zone/bo.txt
source/data/zone/br.txt
source/data/zone/brx.txt
source/data/zone/bs.txt
source/data/zone/bs_Cyrl.txt
source/data/zone/bs_Latn.txt
source/data/zone/ca.txt
source/data/zone/ce.txt
source/data/zone/cgg.txt
source/data/zone/chr.txt
source/data/zone/ckb.txt
source/data/zone/cs.txt
source/data/zone/cy.txt
source/data/zone/da.txt
source/data/zone/dav.txt
source/data/zone/de.txt
source/data/zone/dje.txt
source/data/zone/dsb.txt
source/data/zone/dua.txt
source/data/zone/dyo.txt
source/data/zone/dz.txt
source/data/zone/ebu.txt
source/data/zone/ee.txt
source/data/zone/el.txt
source/data/zone/en.txt
source/data/zone/en_001.txt
source/data/zone/en_150.txt
source/data/zone/en_AG.txt
source/data/zone/en_AI.txt
source/data/zone/en_AT.txt
source/data/zone/en_AU.txt
source/data/zone/en_BB.txt
source/data/zone/en_BE.txt
source/data/zone/en_BM.txt
source/data/zone/en_BS.txt
source/data/zone/en_BW.txt
source/data/zone/en_BZ.txt
source/data/zone/en_CA.txt
source/data/zone/en_CC.txt
source/data/zone/en_CH.txt
source/data/zone/en_CK.txt
source/data/zone/en_CM.txt
source/data/zone/en_CX.txt
source/data/zone/en_CY.txt
source/data/zone/en_DE.txt
source/data/zone/en_DG.txt
source/data/zone/en_DK.txt
source/data/zone/en_DM.txt
source/data/zone/en_ER.txt
source/data/zone/en_FI.txt
source/data/zone/en_FJ.txt
source/data/zone/en_FK.txt
source/data/zone/en_FM.txt
source/data/zone/en_GB.txt
source/data/zone/en_GD.txt
source/data/zone/en_GG.txt
source/data/zone/en_GH.txt
source/data/zone/en_GI.txt
source/data/zone/en_GM.txt
source/data/zone/en_GU.txt
source/data/zone/en_GY.txt
source/data/zone/en_HK.txt
source/data/zone/en_IE.txt
source/data/zone/en_IL.txt
source/data/zone/en_IM.txt
source/data/zone/en_IN.txt
source/data/zone/en_IO.txt
source/data/zone/en_JE.txt
source/data/zone/en_JM.txt
source/data/zone/en_KE.txt
source/data/zone/en_KI.txt
source/data/zone/en_KN.txt
source/data/zone/en_KY.txt
source/data/zone/en_LC.txt
source/data/zone/en_LR.txt
source/data/zone/en_LS.txt
source/data/zone/en_MG.txt
source/data/zone/en_MH.txt
source/data/zone/en_MO.txt
source/data/zone/en_MP.txt
source/data/zone/en_MS.txt
source/data/zone/en_MT.txt
source/data/zone/en_MU.txt
source/data/zone/en_MW.txt
source/data/zone/en_MY.txt
source/data/zone/en_NA.txt
source/data/zone/en_NF.txt
source/data/zone/en_NG.txt
source/data/zone/en_NL.txt
source/data/zone/en_NR.txt
source/data/zone/en_NU.txt
source/data/zone/en_NZ.txt
source/data/zone/en_PG.txt
source/data/zone/en_PH.txt
source/data/zone/en_PK.txt
source/data/zone/en_PN.txt
source/data/zone/en_PW.txt
source/data/zone/en_RW.txt
source/data/zone/en_SB.txt
source/data/zone/en_SC.txt
source/data/zone/en_SD.txt
source/data/zone/en_SE.txt
source/data/zone/en_SG.txt
source/data/zone/en_SH.txt
source/data/zone/en_SI.txt
source/data/zone/en_SL.txt
source/data/zone/en_SS.txt
source/data/zone/en_SX.txt
source/data/zone/en_SZ.txt
source/data/zone/en_TC.txt
source/data/zone/en_TK.txt
source/data/zone/en_TO.txt
source/data/zone/en_TT.txt
source/data/zone/en_TV.txt
source/data/zone/en_TZ.txt
source/data/zone/en_UG.txt
source/data/zone/en_VC.txt
source/data/zone/en_VG.txt
source/data/zone/en_VU.txt
source/data/zone/en_WS.txt
source/data/zone/en_ZA.txt
source/data/zone/en_ZM.txt
source/data/zone/en_ZW.txt
source/data/zone/eo.txt
source/data/zone/es.txt
source/data/zone/es_419.txt
source/data/zone/es_AR.txt
source/data/zone/es_BO.txt
source/data/zone/es_BR.txt
source/data/zone/es_BZ.txt [deleted file]
source/data/zone/es_CL.txt
source/data/zone/es_CO.txt
source/data/zone/es_CR.txt
source/data/zone/es_CU.txt
source/data/zone/es_DO.txt
source/data/zone/es_EC.txt
source/data/zone/es_GT.txt
source/data/zone/es_HN.txt
source/data/zone/es_MX.txt
source/data/zone/es_NI.txt
source/data/zone/es_PA.txt
source/data/zone/es_PE.txt
source/data/zone/es_PR.txt
source/data/zone/es_PY.txt
source/data/zone/es_SV.txt
source/data/zone/es_US.txt
source/data/zone/es_UY.txt
source/data/zone/es_VE.txt
source/data/zone/et.txt
source/data/zone/eu.txt
source/data/zone/ewo.txt
source/data/zone/fa.txt
source/data/zone/ff.txt
source/data/zone/fi.txt
source/data/zone/fil.txt
source/data/zone/fo.txt
source/data/zone/fr.txt
source/data/zone/fr_CA.txt
source/data/zone/fr_GF.txt
source/data/zone/fur.txt
source/data/zone/fy.txt
source/data/zone/ga.txt
source/data/zone/gd.txt
source/data/zone/gl.txt
source/data/zone/gsw.txt
source/data/zone/gu.txt
source/data/zone/guz.txt
source/data/zone/gv.txt
source/data/zone/ha.txt
source/data/zone/haw.txt
source/data/zone/he.txt
source/data/zone/hi.txt
source/data/zone/hr.txt
source/data/zone/hsb.txt
source/data/zone/hu.txt
source/data/zone/hy.txt
source/data/zone/id.txt
source/data/zone/ig.txt
source/data/zone/ii.txt
source/data/zone/is.txt
source/data/zone/it.txt
source/data/zone/ja.txt
source/data/zone/jgo.txt
source/data/zone/jmc.txt
source/data/zone/ka.txt
source/data/zone/kab.txt
source/data/zone/kam.txt
source/data/zone/kde.txt
source/data/zone/kea.txt
source/data/zone/khq.txt
source/data/zone/ki.txt
source/data/zone/kk.txt
source/data/zone/kkj.txt
source/data/zone/kl.txt
source/data/zone/kln.txt
source/data/zone/km.txt
source/data/zone/kn.txt
source/data/zone/ko.txt
source/data/zone/ko_KP.txt
source/data/zone/kok.txt
source/data/zone/ks.txt
source/data/zone/ksb.txt
source/data/zone/ksf.txt
source/data/zone/ksh.txt
source/data/zone/kw.txt
source/data/zone/ky.txt
source/data/zone/lag.txt
source/data/zone/lb.txt
source/data/zone/lg.txt
source/data/zone/lkt.txt
source/data/zone/ln.txt
source/data/zone/lo.txt
source/data/zone/lrc.txt
source/data/zone/lt.txt
source/data/zone/lu.txt
source/data/zone/luo.txt
source/data/zone/luy.txt
source/data/zone/lv.txt
source/data/zone/mas.txt
source/data/zone/mer.txt
source/data/zone/mfe.txt
source/data/zone/mg.txt
source/data/zone/mgh.txt
source/data/zone/mgo.txt
source/data/zone/mk.txt
source/data/zone/ml.txt
source/data/zone/mn.txt
source/data/zone/mr.txt
source/data/zone/ms.txt
source/data/zone/mt.txt
source/data/zone/mua.txt
source/data/zone/my.txt
source/data/zone/mzn.txt
source/data/zone/naq.txt
source/data/zone/nb.txt
source/data/zone/nd.txt
source/data/zone/nds.txt
source/data/zone/ne.txt
source/data/zone/ne_IN.txt
source/data/zone/nl.txt
source/data/zone/nl_SR.txt
source/data/zone/nmg.txt
source/data/zone/nn.txt
source/data/zone/nnh.txt
source/data/zone/nus.txt
source/data/zone/nyn.txt
source/data/zone/om.txt
source/data/zone/or.txt
source/data/zone/os.txt
source/data/zone/pa.txt
source/data/zone/pa_Arab.txt
source/data/zone/pa_Guru.txt
source/data/zone/pl.txt
source/data/zone/pool.res
source/data/zone/ps.txt
source/data/zone/pt.txt
source/data/zone/pt_AO.txt
source/data/zone/pt_CH.txt
source/data/zone/pt_CV.txt
source/data/zone/pt_GQ.txt
source/data/zone/pt_GW.txt
source/data/zone/pt_LU.txt
source/data/zone/pt_MO.txt
source/data/zone/pt_MZ.txt
source/data/zone/pt_PT.txt
source/data/zone/pt_ST.txt
source/data/zone/pt_TL.txt
source/data/zone/qu.txt
source/data/zone/qu_BO.txt
source/data/zone/qu_EC.txt
source/data/zone/resfiles.mk
source/data/zone/rm.txt
source/data/zone/rn.txt
source/data/zone/ro.txt
source/data/zone/rof.txt
source/data/zone/root.txt
source/data/zone/ru.txt
source/data/zone/rw.txt
source/data/zone/rwk.txt
source/data/zone/sah.txt
source/data/zone/saq.txt
source/data/zone/sbp.txt
source/data/zone/se.txt
source/data/zone/seh.txt
source/data/zone/ses.txt
source/data/zone/sg.txt
source/data/zone/shi.txt
source/data/zone/shi_Latn.txt
source/data/zone/shi_Tfng.txt
source/data/zone/si.txt
source/data/zone/sk.txt
source/data/zone/sl.txt
source/data/zone/smn.txt
source/data/zone/sn.txt
source/data/zone/so.txt
source/data/zone/sq.txt
source/data/zone/sr.txt
source/data/zone/sr_Cyrl.txt
source/data/zone/sr_Latn.txt
source/data/zone/sv.txt
source/data/zone/sw.txt
source/data/zone/ta.txt
source/data/zone/ta_MY.txt
source/data/zone/ta_SG.txt
source/data/zone/te.txt
source/data/zone/teo.txt
source/data/zone/th.txt
source/data/zone/ti.txt
source/data/zone/to.txt
source/data/zone/tr.txt
source/data/zone/twq.txt
source/data/zone/tzm.txt
source/data/zone/ug.txt
source/data/zone/uk.txt
source/data/zone/ur.txt
source/data/zone/ur_IN.txt
source/data/zone/uz.txt
source/data/zone/uz_Arab.txt
source/data/zone/uz_Cyrl.txt
source/data/zone/uz_Latn.txt
source/data/zone/vai.txt
source/data/zone/vai_Latn.txt
source/data/zone/vai_Vaii.txt
source/data/zone/vi.txt
source/data/zone/vun.txt
source/data/zone/wae.txt
source/data/zone/xog.txt
source/data/zone/yav.txt
source/data/zone/yi.txt
source/data/zone/yo.txt
source/data/zone/yue.txt
source/data/zone/zgh.txt
source/data/zone/zh.txt
source/data/zone/zh_Hans.txt
source/data/zone/zh_Hans_SG.txt
source/data/zone/zh_Hant.txt
source/data/zone/zh_Hant_HK.txt
source/data/zone/zh_Hant_MO.txt
source/data/zone/zu.txt
source/extra/scrptrun/scrptrun.cpp
source/extra/scrptrun/scrptrun.h
source/extra/scrptrun/srtest.cpp
source/extra/uconv/Makefile.in
source/extra/uconv/uconv.cpp
source/extra/uconv/uconv.vcxproj
source/extra/uconv/unicode/uwmsg.h
source/extra/uconv/uwmsg.c
source/i18n/affixpatternparser.cpp
source/i18n/affixpatternparser.h
source/i18n/alphaindex.cpp
source/i18n/anytrans.cpp
source/i18n/anytrans.h
source/i18n/astro.cpp
source/i18n/astro.h
source/i18n/basictz.cpp
source/i18n/bocsu.cpp
source/i18n/bocsu.h
source/i18n/brktrans.cpp
source/i18n/brktrans.h
source/i18n/buddhcal.cpp
source/i18n/buddhcal.h
source/i18n/calendar.cpp
source/i18n/casetrn.cpp
source/i18n/casetrn.h
source/i18n/cecal.cpp
source/i18n/cecal.h
source/i18n/chnsecal.cpp
source/i18n/chnsecal.h
source/i18n/choicfmt.cpp
source/i18n/coleitr.cpp
source/i18n/coll.cpp
source/i18n/collation.cpp
source/i18n/collation.h
source/i18n/collationbuilder.cpp
source/i18n/collationbuilder.h
source/i18n/collationcompare.cpp
source/i18n/collationcompare.h
source/i18n/collationdata.cpp
source/i18n/collationdata.h
source/i18n/collationdatabuilder.cpp
source/i18n/collationdatabuilder.h
source/i18n/collationdatareader.cpp
source/i18n/collationdatareader.h
source/i18n/collationdatawriter.cpp
source/i18n/collationdatawriter.h
source/i18n/collationfastlatin.cpp
source/i18n/collationfastlatin.h
source/i18n/collationfastlatinbuilder.cpp
source/i18n/collationfastlatinbuilder.h
source/i18n/collationfcd.cpp
source/i18n/collationfcd.h
source/i18n/collationiterator.cpp
source/i18n/collationiterator.h
source/i18n/collationkeys.cpp
source/i18n/collationkeys.h
source/i18n/collationroot.cpp
source/i18n/collationroot.h
source/i18n/collationrootelements.cpp
source/i18n/collationrootelements.h
source/i18n/collationruleparser.cpp
source/i18n/collationruleparser.h
source/i18n/collationsets.cpp
source/i18n/collationsets.h
source/i18n/collationsettings.cpp
source/i18n/collationsettings.h
source/i18n/collationtailoring.cpp
source/i18n/collationtailoring.h
source/i18n/collationweights.cpp
source/i18n/collationweights.h
source/i18n/collunsafe.h
source/i18n/compactdecimalformat.cpp
source/i18n/coptccal.cpp
source/i18n/coptccal.h
source/i18n/cpdtrans.cpp
source/i18n/cpdtrans.h
source/i18n/csdetect.cpp
source/i18n/csdetect.h
source/i18n/csmatch.cpp
source/i18n/csmatch.h
source/i18n/csr2022.cpp
source/i18n/csr2022.h
source/i18n/csrecog.cpp
source/i18n/csrecog.h
source/i18n/csrmbcs.cpp
source/i18n/csrmbcs.h
source/i18n/csrsbcs.cpp
source/i18n/csrsbcs.h
source/i18n/csrucode.cpp
source/i18n/csrucode.h
source/i18n/csrutf8.cpp
source/i18n/csrutf8.h
source/i18n/curramt.cpp
source/i18n/currfmt.cpp
source/i18n/currfmt.h
source/i18n/currpinf.cpp
source/i18n/currunit.cpp
source/i18n/dangical.cpp
source/i18n/dangical.h
source/i18n/datefmt.cpp
source/i18n/dayperiodrules.cpp
source/i18n/dayperiodrules.h
source/i18n/dcfmtimp.h
source/i18n/dcfmtsym.cpp
source/i18n/decContext.c [new file with mode: 0644]
source/i18n/decContext.h
source/i18n/decNumber.c [new file with mode: 0644]
source/i18n/decNumber.h
source/i18n/decNumberLocal.h
source/i18n/decfmtst.cpp
source/i18n/decfmtst.h
source/i18n/decimalformatpattern.cpp
source/i18n/decimalformatpattern.h
source/i18n/decimalformatpatternimpl.h
source/i18n/decimfmt.cpp
source/i18n/decimfmtimpl.cpp
source/i18n/decimfmtimpl.h
source/i18n/digitaffix.cpp
source/i18n/digitaffix.h
source/i18n/digitaffixesandpadding.cpp
source/i18n/digitaffixesandpadding.h
source/i18n/digitformatter.cpp
source/i18n/digitformatter.h
source/i18n/digitgrouping.cpp
source/i18n/digitgrouping.h
source/i18n/digitinterval.cpp
source/i18n/digitinterval.h
source/i18n/digitlst.cpp
source/i18n/digitlst.h
source/i18n/dt_impl.h
source/i18n/dtfmtsym.cpp
source/i18n/dtitv_impl.h
source/i18n/dtitvfmt.cpp
source/i18n/dtitvinf.cpp
source/i18n/dtptngen.cpp
source/i18n/dtptngen_impl.h
source/i18n/dtrule.cpp
source/i18n/esctrn.cpp
source/i18n/esctrn.h
source/i18n/ethpccal.cpp
source/i18n/ethpccal.h
source/i18n/fmtable.cpp
source/i18n/fmtable_cnv.cpp
source/i18n/fmtableimp.h
source/i18n/format.cpp
source/i18n/fphdlimp.cpp
source/i18n/fphdlimp.h
source/i18n/fpositer.cpp
source/i18n/funcrepl.cpp
source/i18n/funcrepl.h
source/i18n/gender.cpp
source/i18n/gregocal.cpp
source/i18n/gregoimp.cpp
source/i18n/gregoimp.h
source/i18n/hebrwcal.cpp
source/i18n/hebrwcal.h
source/i18n/i18n.vcxproj
source/i18n/i18n.vcxproj.filters
source/i18n/indiancal.cpp
source/i18n/indiancal.h
source/i18n/inputext.cpp
source/i18n/inputext.h
source/i18n/islamcal.cpp
source/i18n/islamcal.h
source/i18n/japancal.cpp
source/i18n/japancal.h
source/i18n/measfmt.cpp
source/i18n/measunit.cpp
source/i18n/measure.cpp
source/i18n/msgfmt.cpp
source/i18n/msgfmt_impl.h
source/i18n/name2uni.cpp
source/i18n/name2uni.h
source/i18n/nfrlist.h
source/i18n/nfrs.cpp
source/i18n/nfrs.h
source/i18n/nfrule.cpp
source/i18n/nfrule.h
source/i18n/nfsubs.cpp
source/i18n/nfsubs.h
source/i18n/nortrans.cpp
source/i18n/nortrans.h
source/i18n/nultrans.cpp
source/i18n/nultrans.h
source/i18n/numfmt.cpp
source/i18n/numsys.cpp
source/i18n/numsys_impl.h
source/i18n/olsontz.cpp
source/i18n/olsontz.h
source/i18n/persncal.cpp
source/i18n/persncal.h
source/i18n/pluralaffix.cpp
source/i18n/pluralaffix.h
source/i18n/plurfmt.cpp
source/i18n/plurrule.cpp
source/i18n/plurrule_impl.h
source/i18n/precision.cpp
source/i18n/precision.h
source/i18n/quant.cpp
source/i18n/quant.h
source/i18n/quantityformatter.cpp
source/i18n/quantityformatter.h
source/i18n/rbnf.cpp
source/i18n/rbt.cpp
source/i18n/rbt.h
source/i18n/rbt_data.cpp
source/i18n/rbt_data.h
source/i18n/rbt_pars.cpp
source/i18n/rbt_pars.h
source/i18n/rbt_rule.cpp
source/i18n/rbt_rule.h
source/i18n/rbt_set.cpp
source/i18n/rbt_set.h
source/i18n/rbtz.cpp
source/i18n/regexcmp.cpp
source/i18n/regexcmp.h
source/i18n/regexcst.h
source/i18n/regeximp.cpp
source/i18n/regeximp.h
source/i18n/regexst.cpp
source/i18n/regexst.h
source/i18n/regextxt.cpp
source/i18n/regextxt.h
source/i18n/region.cpp
source/i18n/region_impl.h
source/i18n/reldatefmt.cpp
source/i18n/reldtfmt.cpp
source/i18n/reldtfmt.h
source/i18n/rematch.cpp
source/i18n/remtrans.cpp
source/i18n/remtrans.h
source/i18n/repattrn.cpp
source/i18n/rulebasedcollator.cpp
source/i18n/scientificnumberformatter.cpp
source/i18n/scriptset.cpp
source/i18n/scriptset.h
source/i18n/search.cpp
source/i18n/selfmt.cpp
source/i18n/selfmtimpl.h
source/i18n/sharedbreakiterator.cpp
source/i18n/sharedbreakiterator.h
source/i18n/sharedcalendar.h
source/i18n/shareddateformatsymbols.h
source/i18n/sharednumberformat.h
source/i18n/sharedpluralrules.h
source/i18n/significantdigitinterval.h
source/i18n/simpletz.cpp
source/i18n/smallintformatter.cpp
source/i18n/smallintformatter.h
source/i18n/smpdtfmt.cpp
source/i18n/smpdtfst.cpp
source/i18n/smpdtfst.h
source/i18n/sortkey.cpp
source/i18n/standardplural.cpp
source/i18n/standardplural.h
source/i18n/strmatch.cpp
source/i18n/strmatch.h
source/i18n/strrepl.cpp
source/i18n/strrepl.h
source/i18n/stsearch.cpp
source/i18n/taiwncal.cpp
source/i18n/taiwncal.h
source/i18n/timezone.cpp
source/i18n/titletrn.cpp
source/i18n/titletrn.h
source/i18n/tmunit.cpp
source/i18n/tmutamt.cpp
source/i18n/tmutfmt.cpp
source/i18n/tolowtrn.cpp
source/i18n/tolowtrn.h
source/i18n/toupptrn.cpp
source/i18n/toupptrn.h
source/i18n/translit.cpp
source/i18n/transreg.cpp
source/i18n/transreg.h
source/i18n/tridpars.cpp
source/i18n/tridpars.h
source/i18n/tzfmt.cpp
source/i18n/tzgnames.cpp
source/i18n/tzgnames.h
source/i18n/tznames.cpp
source/i18n/tznames_impl.cpp
source/i18n/tznames_impl.h
source/i18n/tzrule.cpp
source/i18n/tztrans.cpp
source/i18n/ucal.cpp
source/i18n/ucln_in.cpp
source/i18n/ucln_in.h
source/i18n/ucol.cpp
source/i18n/ucol_imp.h
source/i18n/ucol_res.cpp
source/i18n/ucol_sit.cpp
source/i18n/ucoleitr.cpp
source/i18n/ucsdet.cpp
source/i18n/udat.cpp
source/i18n/udateintervalformat.cpp
source/i18n/udatpg.cpp
source/i18n/ufieldpositer.cpp
source/i18n/uitercollationiterator.cpp
source/i18n/uitercollationiterator.h
source/i18n/ulocdata.c [new file with mode: 0644]
source/i18n/umsg.cpp
source/i18n/umsg_imp.h
source/i18n/unesctrn.cpp
source/i18n/unesctrn.h
source/i18n/uni2name.cpp
source/i18n/uni2name.h
source/i18n/unicode/alphaindex.h
source/i18n/unicode/basictz.h
source/i18n/unicode/calendar.h
source/i18n/unicode/choicfmt.h
source/i18n/unicode/coleitr.h
source/i18n/unicode/coll.h
source/i18n/unicode/compactdecimalformat.h
source/i18n/unicode/curramt.h
source/i18n/unicode/currpinf.h
source/i18n/unicode/currunit.h
source/i18n/unicode/datefmt.h
source/i18n/unicode/dcfmtsym.h
source/i18n/unicode/decimfmt.h
source/i18n/unicode/dtfmtsym.h
source/i18n/unicode/dtitvfmt.h
source/i18n/unicode/dtitvinf.h
source/i18n/unicode/dtptngen.h
source/i18n/unicode/dtrule.h
source/i18n/unicode/fieldpos.h
source/i18n/unicode/fmtable.h
source/i18n/unicode/format.h
source/i18n/unicode/fpositer.h
source/i18n/unicode/gender.h
source/i18n/unicode/gregocal.h
source/i18n/unicode/measfmt.h
source/i18n/unicode/measunit.h
source/i18n/unicode/measure.h
source/i18n/unicode/msgfmt.h
source/i18n/unicode/numfmt.h
source/i18n/unicode/numsys.h
source/i18n/unicode/plurfmt.h
source/i18n/unicode/plurrule.h
source/i18n/unicode/rbnf.h
source/i18n/unicode/rbtz.h
source/i18n/unicode/regex.h
source/i18n/unicode/region.h
source/i18n/unicode/reldatefmt.h
source/i18n/unicode/scientificnumberformatter.h
source/i18n/unicode/search.h
source/i18n/unicode/selfmt.h
source/i18n/unicode/simpletz.h
source/i18n/unicode/smpdtfmt.h
source/i18n/unicode/sortkey.h
source/i18n/unicode/stsearch.h
source/i18n/unicode/tblcoll.h
source/i18n/unicode/timezone.h
source/i18n/unicode/tmunit.h
source/i18n/unicode/tmutamt.h
source/i18n/unicode/tmutfmt.h
source/i18n/unicode/translit.h
source/i18n/unicode/tzfmt.h
source/i18n/unicode/tznames.h
source/i18n/unicode/tzrule.h
source/i18n/unicode/tztrans.h
source/i18n/unicode/ucal.h
source/i18n/unicode/ucol.h
source/i18n/unicode/ucoleitr.h
source/i18n/unicode/ucsdet.h
source/i18n/unicode/udat.h
source/i18n/unicode/udateintervalformat.h
source/i18n/unicode/udatpg.h
source/i18n/unicode/ufieldpositer.h
source/i18n/unicode/uformattable.h
source/i18n/unicode/ugender.h
source/i18n/unicode/ulocdata.h
source/i18n/unicode/umsg.h
source/i18n/unicode/unirepl.h
source/i18n/unicode/unum.h
source/i18n/unicode/unumsys.h
source/i18n/unicode/upluralrules.h
source/i18n/unicode/uregex.h
source/i18n/unicode/uregion.h
source/i18n/unicode/ureldatefmt.h
source/i18n/unicode/usearch.h
source/i18n/unicode/uspoof.h
source/i18n/unicode/utmscale.h
source/i18n/unicode/utrans.h
source/i18n/unicode/vtzone.h
source/i18n/unum.cpp
source/i18n/unumsys.cpp
source/i18n/upluralrules.cpp
source/i18n/uregex.cpp
source/i18n/uregexc.cpp
source/i18n/uregion.cpp
source/i18n/usearch.cpp
source/i18n/uspoof.cpp
source/i18n/uspoof_build.cpp
source/i18n/uspoof_conf.cpp
source/i18n/uspoof_conf.h
source/i18n/uspoof_impl.cpp
source/i18n/uspoof_impl.h
source/i18n/usrchimp.h
source/i18n/utf16collationiterator.cpp
source/i18n/utf16collationiterator.h
source/i18n/utf8collationiterator.cpp
source/i18n/utf8collationiterator.h
source/i18n/utmscale.c [new file with mode: 0644]
source/i18n/utrans.cpp
source/i18n/valueformatter.cpp
source/i18n/valueformatter.h
source/i18n/visibledigits.cpp
source/i18n/visibledigits.h
source/i18n/vtzone.cpp
source/i18n/vzone.cpp
source/i18n/vzone.h
source/i18n/windtfmt.cpp
source/i18n/windtfmt.h
source/i18n/winnmfmt.cpp
source/i18n/winnmfmt.h
source/i18n/wintzimpl.cpp
source/i18n/wintzimpl.h
source/i18n/zonemeta.cpp
source/i18n/zonemeta.h
source/i18n/zrule.cpp
source/i18n/zrule.h
source/i18n/ztrans.cpp
source/i18n/ztrans.h
source/icudefs.mk.in
source/io/Makefile.in
source/io/io.vcxproj
source/io/io.vcxproj.filters
source/io/locbund.cpp
source/io/locbund.h
source/io/sprintf.c [new file with mode: 0644]
source/io/sscanf.c [new file with mode: 0644]
source/io/ucln_io.cpp
source/io/ucln_io.h
source/io/ufile.c [new file with mode: 0644]
source/io/ufile.h
source/io/ufmt_cmn.c [new file with mode: 0644]
source/io/ufmt_cmn.h
source/io/unicode/ustdio.h
source/io/unicode/ustream.h
source/io/uprintf.cpp
source/io/uprintf.h
source/io/uprntf_p.c [new file with mode: 0644]
source/io/uscanf.c [new file with mode: 0644]
source/io/uscanf.h
source/io/uscanf_p.c [new file with mode: 0644]
source/io/ustdio.c [new file with mode: 0644]
source/io/ustream.cpp
source/layoutex/LXUtilities.cpp
source/layoutex/LXUtilities.h
source/layoutex/ParagraphLayout.cpp
source/layoutex/RunArrays.cpp
source/layoutex/layout/ParagraphLayout.h
source/layoutex/layout/RunArrays.h
source/layoutex/layout/playout.h
source/layoutex/layout/plruns.h
source/layoutex/layoutex.vcxproj
source/layoutex/playout.cpp
source/layoutex/plruns.cpp
source/runConfigureICU
source/samples/break/break.cpp
source/samples/break/break.vcxproj
source/samples/break/ubreak.c
source/samples/cal/cal.c
source/samples/cal/cal.vcxproj
source/samples/cal/uprint.c
source/samples/cal/uprint.h
source/samples/case/case.cpp
source/samples/case/case.vcxproj
source/samples/case/ucase.c
source/samples/citer/citer.cpp
source/samples/citer/citer.vcxproj
source/samples/coll/coll.cpp
source/samples/coll/coll.vcxproj
source/samples/csdet/csdet.c
source/samples/csdet/csdet.vcxproj
source/samples/date/date.c
source/samples/date/date.vcxproj
source/samples/date/uprint.c
source/samples/date/uprint.h
source/samples/datecal/cal.cpp
source/samples/datecal/ccal.c
source/samples/datefmt/answers/main_0.cpp
source/samples/datefmt/answers/main_1.cpp
source/samples/datefmt/answers/main_2.cpp
source/samples/datefmt/answers/main_3.cpp
source/samples/datefmt/datefmt.vcxproj
source/samples/datefmt/main.cpp
source/samples/datefmt/util.cpp
source/samples/datefmt/util.h
source/samples/dtitvfmtsample/dtitvfmtsample.cpp
source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj
source/samples/dtptngsample/dtptngsample.cpp
source/samples/dtptngsample/dtptngsample.vcxproj
source/samples/layout/FontMap.cpp
source/samples/layout/FontMap.h
source/samples/layout/FontTableCache.cpp
source/samples/layout/FontTableCache.h
source/samples/layout/GDIFontInstance.cpp
source/samples/layout/GDIFontInstance.h
source/samples/layout/GDIFontMap.cpp
source/samples/layout/GDIFontMap.h
source/samples/layout/GDIGUISupport.cpp
source/samples/layout/GDIGUISupport.h
source/samples/layout/GUISupport.h
source/samples/layout/GnomeFontInstance.cpp
source/samples/layout/GnomeFontInstance.h
source/samples/layout/GnomeFontMap.cpp
source/samples/layout/GnomeFontMap.h
source/samples/layout/GnomeGUISupport.cpp
source/samples/layout/GnomeGUISupport.h
source/samples/layout/RenderingSurface.h
source/samples/layout/ScriptCompositeFontInstance.cpp
source/samples/layout/ScriptCompositeFontInstance.h
source/samples/layout/Surface.cpp
source/samples/layout/Surface.h
source/samples/layout/UnicodeReader.cpp
source/samples/layout/UnicodeReader.h
source/samples/layout/arraymem.h
source/samples/layout/cgnomelayout.c
source/samples/layout/clayout.c
source/samples/layout/cmaps.cpp
source/samples/layout/cmaps.h
source/samples/layout/gdiglue.cpp
source/samples/layout/gdiglue.h
source/samples/layout/gnomeglue.cpp
source/samples/layout/gnomeglue.h
source/samples/layout/gnomelayout.cpp
source/samples/layout/gsupport.h
source/samples/layout/layout.cpp
source/samples/layout/layout.vcxproj
source/samples/layout/paragraph.cpp
source/samples/layout/paragraph.h
source/samples/layout/pflow.c
source/samples/layout/pflow.h
source/samples/layout/resource.h
source/samples/layout/rsurface.cpp
source/samples/layout/rsurface.h
source/samples/layout/sfnt.h
source/samples/layout/ucreader.cpp
source/samples/layout/ucreader.h
source/samples/legacy/legacy.cpp
source/samples/legacy/legacy.vcxproj
source/samples/legacy/newcol.cpp
source/samples/legacy/oldcol.cpp
source/samples/msgfmt/answers/main_0.cpp
source/samples/msgfmt/answers/main_1.cpp
source/samples/msgfmt/answers/main_2.cpp
source/samples/msgfmt/answers/main_3.cpp
source/samples/msgfmt/main.cpp
source/samples/msgfmt/msgfmt.vcxproj
source/samples/msgfmt/util.cpp
source/samples/msgfmt/util.h
source/samples/numfmt/capi.c
source/samples/numfmt/main.cpp
source/samples/numfmt/numfmt.vcxproj
source/samples/numfmt/util.cpp
source/samples/numfmt/util.h
source/samples/plurfmtsample/plurfmtsample.cpp
source/samples/plurfmtsample/plurfmtsample.vcxproj
source/samples/props/props.cpp
source/samples/props/props.vcxproj
source/samples/strsrch/strsrch.cpp
source/samples/strsrch/strsrch.vcxproj
source/samples/translit/answers/main_1.cpp
source/samples/translit/answers/main_2.cpp
source/samples/translit/answers/main_3.cpp
source/samples/translit/answers/main_4.cpp
source/samples/translit/answers/unaccent.cpp
source/samples/translit/answers/unaccent.h
source/samples/translit/main.cpp
source/samples/translit/translit.vcxproj
source/samples/translit/unaccent.cpp
source/samples/translit/unaccent.h
source/samples/translit/util.cpp
source/samples/translit/util.h
source/samples/uciter8/uciter8.c
source/samples/uciter8/uciter8.vcxproj
source/samples/uciter8/uit_len8.c
source/samples/uciter8/uit_len8.h
source/samples/ucnv/convsamp.cpp
source/samples/ucnv/flagcb.c
source/samples/ucnv/flagcb.h
source/samples/ucnv/ucnv.vcxproj
source/samples/udata/reader.c
source/samples/udata/reader.vcxproj
source/samples/udata/writer.c
source/samples/udata/writer.vcxproj
source/samples/ufortune/ufortune.c
source/samples/ufortune/ufortune.vcxproj
source/samples/ugrep/ugrep.cpp
source/samples/ugrep/ugrep.vcxproj
source/samples/uresb/Makefile
source/samples/uresb/uresb.c
source/samples/uresb/uresb.vcxproj
source/samples/ustring/ustring.cpp
source/samples/ustring/ustring.vcxproj
source/stubdata/stubdata.c [new file with mode: 0644]
source/stubdata/stubdata.vcxproj
source/stubdata/stubdata.vcxproj.filters
source/test/cintltst/bocu1tst.c
source/test/cintltst/callcoll.c
source/test/cintltst/callcoll.h
source/test/cintltst/calldata.h
source/test/cintltst/calltest.c
source/test/cintltst/capitst.c
source/test/cintltst/capitst.h
source/test/cintltst/cbiapts.c
source/test/cintltst/cbiapts.h
source/test/cintltst/cbididat.c
source/test/cintltst/cbiditransformtst.c
source/test/cintltst/cbiditst.c
source/test/cintltst/cbiditst.h
source/test/cintltst/cbkittst.c
source/test/cintltst/ccaltst.c
source/test/cintltst/ccaltst.h
source/test/cintltst/ccapitst.c
source/test/cintltst/ccapitst.h
source/test/cintltst/ccolltst.c
source/test/cintltst/ccolltst.h
source/test/cintltst/cconvtst.c
source/test/cintltst/cctest.c
source/test/cintltst/ccurrtst.c
source/test/cintltst/ccurrtst.h
source/test/cintltst/cdateintervalformattest.c
source/test/cintltst/cdattst.c
source/test/cintltst/cdattst.h
source/test/cintltst/cdetst.c
source/test/cintltst/cdetst.h
source/test/cintltst/cdtdptst.c
source/test/cintltst/cdtdptst.h
source/test/cintltst/cdtrgtst.c
source/test/cintltst/cdtrgtst.h
source/test/cintltst/cestst.c
source/test/cintltst/cestst.h
source/test/cintltst/cfintst.c
source/test/cintltst/cfintst.h
source/test/cintltst/cformtst.c
source/test/cintltst/cformtst.h
source/test/cintltst/cfrtst.c
source/test/cintltst/cfrtst.h
source/test/cintltst/cg7coll.c
source/test/cintltst/cg7coll.h
source/test/cintltst/cgendtst.c
source/test/cintltst/chashtst.c
source/test/cintltst/cintltst.c
source/test/cintltst/cintltst.h
source/test/cintltst/cintltst.vcxproj
source/test/cintltst/citertst.c
source/test/cintltst/citertst.h
source/test/cintltst/cjaptst.c
source/test/cintltst/cjaptst.h
source/test/cintltst/cldrtest.c
source/test/cintltst/cloctst.c
source/test/cintltst/cloctst.h
source/test/cintltst/cmsccoll.c
source/test/cintltst/cmsgtst.c
source/test/cintltst/cmsgtst.h
source/test/cintltst/cnmdptst.c
source/test/cintltst/cnmdptst.h
source/test/cintltst/cnormtst.c
source/test/cintltst/cnormtst.h
source/test/cintltst/cnumtst.c
source/test/cintltst/cnumtst.h
source/test/cintltst/cpluralrulestest.c
source/test/cintltst/cposxtst.c
source/test/cintltst/crelativedateformattest.c
source/test/cintltst/crestst.c
source/test/cintltst/crestst.h
source/test/cintltst/creststn.c
source/test/cintltst/creststn.h
source/test/cintltst/cstrcase.c
source/test/cintltst/cstrtest.c
source/test/cintltst/cturtst.c
source/test/cintltst/cturtst.h
source/test/cintltst/cucdapi.c
source/test/cintltst/cucdapi.h
source/test/cintltst/cucdtst.c
source/test/cintltst/currtest.c
source/test/cintltst/custrtrn.c
source/test/cintltst/custrtst.c
source/test/cintltst/cutiltst.c
source/test/cintltst/encoll.c
source/test/cintltst/encoll.h
source/test/cintltst/eurocreg.c
source/test/cintltst/hpmufn.c
source/test/cintltst/idnatest.c
source/test/cintltst/nccbtst.c
source/test/cintltst/nccbtst.h
source/test/cintltst/ncnvfbts.c
source/test/cintltst/ncnvfbts.h
source/test/cintltst/ncnvtst.c
source/test/cintltst/nfsprep.c
source/test/cintltst/nfsprep.h
source/test/cintltst/nucnvtst.c
source/test/cintltst/nucnvtst.h
source/test/cintltst/putiltst.c
source/test/cintltst/reapits.c
source/test/cintltst/sorttest.c
source/test/cintltst/spooftest.c
source/test/cintltst/spreptst.c
source/test/cintltst/sprpdata.c
source/test/cintltst/stdnmtst.c
source/test/cintltst/tracetst.c
source/test/cintltst/trie2test.c
source/test/cintltst/trietest.c
source/test/cintltst/ucnvseltst.c
source/test/cintltst/ucnvseltst.h
source/test/cintltst/ucsdetst.c
source/test/cintltst/udatatst.c
source/test/cintltst/udatpg_test.c
source/test/cintltst/uenumtst.c
source/test/cintltst/ulistfmttest.c
source/test/cintltst/uregiontest.c
source/test/cintltst/usettest.c
source/test/cintltst/usrchdat.c
source/test/cintltst/usrchtst.c
source/test/cintltst/utexttst.c
source/test/cintltst/utf16tst.c
source/test/cintltst/utf8tst.c
source/test/cintltst/utmstest.c
source/test/cintltst/utransts.c
source/test/compat/tzdate.c
source/test/depstest/dependencies.txt
source/test/hdrtst/Makefile.in
source/test/hdrtst/cxxfiles.txt
source/test/hdrtst/testinternalheaders.sh
source/test/intltest/Makefile.in
source/test/intltest/aliastst.cpp
source/test/intltest/aliastst.h
source/test/intltest/allcoll.cpp
source/test/intltest/allcoll.h
source/test/intltest/alphaindextst.cpp
source/test/intltest/alphaindextst.h
source/test/intltest/apicoll.cpp
source/test/intltest/apicoll.h
source/test/intltest/astrotst.cpp
source/test/intltest/astrotst.h
source/test/intltest/bidiconf.cpp
source/test/intltest/bytestrietest.cpp
source/test/intltest/calcasts.cpp
source/test/intltest/calcasts.h
source/test/intltest/callimts.cpp
source/test/intltest/callimts.h
source/test/intltest/calregts.cpp
source/test/intltest/calregts.h
source/test/intltest/caltest.cpp
source/test/intltest/caltest.h
source/test/intltest/caltestdata.h
source/test/intltest/caltztst.cpp
source/test/intltest/caltztst.h
source/test/intltest/canittst.cpp
source/test/intltest/canittst.h
source/test/intltest/citrtest.cpp
source/test/intltest/citrtest.h
source/test/intltest/collationtest.cpp
source/test/intltest/colldata.cpp
source/test/intltest/colldata.h
source/test/intltest/compactdecimalformattest.cpp
source/test/intltest/convtest.cpp
source/test/intltest/convtest.h
source/test/intltest/cpdtrtst.cpp
source/test/intltest/cpdtrtst.h
source/test/intltest/csdetest.cpp
source/test/intltest/csdetest.h
source/test/intltest/currcoll.cpp
source/test/intltest/currcoll.h
source/test/intltest/dadrcal.cpp
source/test/intltest/dadrcal.h
source/test/intltest/dadrfmt.cpp
source/test/intltest/dadrfmt.h
source/test/intltest/datadrivennumberformattestsuite.cpp
source/test/intltest/datadrivennumberformattestsuite.h
source/test/intltest/dcfmapts.cpp
source/test/intltest/dcfmapts.h
source/test/intltest/dcfmtest.cpp
source/test/intltest/dcfmtest.h
source/test/intltest/decoll.cpp
source/test/intltest/decoll.h
source/test/intltest/dtfmapts.cpp
source/test/intltest/dtfmapts.h
source/test/intltest/dtfmrgts.cpp
source/test/intltest/dtfmrgts.h
source/test/intltest/dtfmtrtts.cpp
source/test/intltest/dtfmtrtts.h
source/test/intltest/dtfmttst.cpp
source/test/intltest/dtfmttst.h
source/test/intltest/dtifmtts.cpp
source/test/intltest/dtifmtts.h
source/test/intltest/dtptngts.cpp
source/test/intltest/dtptngts.h
source/test/intltest/encoll.cpp
source/test/intltest/encoll.h
source/test/intltest/escoll.cpp
source/test/intltest/escoll.h
source/test/intltest/ficoll.cpp
source/test/intltest/ficoll.h
source/test/intltest/fldset.cpp
source/test/intltest/fldset.h
source/test/intltest/frcoll.cpp
source/test/intltest/frcoll.h
source/test/intltest/g7coll.cpp
source/test/intltest/g7coll.h
source/test/intltest/genderinfotest.cpp
source/test/intltest/icusvtst.cpp
source/test/intltest/icusvtst.h
source/test/intltest/idnaconf.cpp
source/test/intltest/idnaconf.h
source/test/intltest/idnaref.cpp
source/test/intltest/idnaref.h
source/test/intltest/incaltst.cpp
source/test/intltest/incaltst.h
source/test/intltest/intltest.cpp
source/test/intltest/intltest.h
source/test/intltest/intltest.vcxproj
source/test/intltest/intltest.vcxproj.filters
source/test/intltest/itercoll.cpp
source/test/intltest/itercoll.h
source/test/intltest/itformat.cpp
source/test/intltest/itformat.h
source/test/intltest/itmajor.cpp
source/test/intltest/itmajor.h
source/test/intltest/itrbbi.cpp
source/test/intltest/itrbbi.h
source/test/intltest/itrbnf.cpp
source/test/intltest/itrbnf.h
source/test/intltest/itrbnfp.cpp
source/test/intltest/itrbnfp.h
source/test/intltest/itrbnfrt.cpp
source/test/intltest/itrbnfrt.h
source/test/intltest/itspoof.cpp
source/test/intltest/itspoof.h
source/test/intltest/ittrans.cpp
source/test/intltest/ittrans.h
source/test/intltest/itutil.cpp
source/test/intltest/itutil.h
source/test/intltest/jacoll.cpp
source/test/intltest/jacoll.h
source/test/intltest/jamotest.cpp
source/test/intltest/jamotest.h
source/test/intltest/lcukocol.cpp
source/test/intltest/lcukocol.h
source/test/intltest/listformattertest.cpp
source/test/intltest/listformattertest.h
source/test/intltest/locnmtst.cpp
source/test/intltest/locnmtst.h
source/test/intltest/loctest.cpp
source/test/intltest/loctest.h
source/test/intltest/measfmttest.cpp
source/test/intltest/miscdtfm.cpp
source/test/intltest/miscdtfm.h
source/test/intltest/mnkytst.cpp
source/test/intltest/mnkytst.h
source/test/intltest/msfmrgts.cpp
source/test/intltest/msfmrgts.h
source/test/intltest/nmfmapts.cpp
source/test/intltest/nmfmapts.h
source/test/intltest/nmfmtrt.cpp
source/test/intltest/nmfmtrt.h
source/test/intltest/normconf.cpp
source/test/intltest/normconf.h
source/test/intltest/nptrans.cpp
source/test/intltest/nptrans.h
source/test/intltest/numberformat2test.cpp
source/test/intltest/numberformattesttuple.cpp
source/test/intltest/numberformattesttuple.h
source/test/intltest/numfmtspectest.cpp
source/test/intltest/numfmtst.cpp
source/test/intltest/numfmtst.h
source/test/intltest/numrgts.cpp
source/test/intltest/numrgts.h
source/test/intltest/pluralmaptest.cpp
source/test/intltest/plurfmts.cpp
source/test/intltest/plurfmts.h
source/test/intltest/plurults.cpp
source/test/intltest/plurults.h
source/test/intltest/pptest.cpp
source/test/intltest/pptest.h
source/test/intltest/punyref.c [new file with mode: 0644]
source/test/intltest/punyref.h
source/test/intltest/quantityformattertest.cpp
source/test/intltest/rbbiapts.cpp
source/test/intltest/rbbiapts.h
source/test/intltest/rbbimonkeytest.cpp
source/test/intltest/rbbimonkeytest.h
source/test/intltest/rbbitst.cpp
source/test/intltest/rbbitst.h
source/test/intltest/regcoll.cpp
source/test/intltest/regcoll.h
source/test/intltest/regextst.cpp
source/test/intltest/regextst.h
source/test/intltest/regiontst.cpp
source/test/intltest/regiontst.h
source/test/intltest/reldatefmttest.cpp
source/test/intltest/reptest.cpp
source/test/intltest/reptest.h
source/test/intltest/restest.cpp
source/test/intltest/restest.h
source/test/intltest/restsnew.cpp
source/test/intltest/restsnew.h
source/test/intltest/scientificnumberformattertest.cpp
source/test/intltest/sdtfmtts.cpp
source/test/intltest/sdtfmtts.h
source/test/intltest/selfmts.cpp
source/test/intltest/selfmts.h
source/test/intltest/sfwdchit.cpp
source/test/intltest/sfwdchit.h
source/test/intltest/simpleformattertest.cpp
source/test/intltest/simplethread.cpp
source/test/intltest/simplethread.h
source/test/intltest/srchtest.cpp
source/test/intltest/srchtest.h
source/test/intltest/ssearch.cpp
source/test/intltest/ssearch.h
source/test/intltest/strcase.cpp
source/test/intltest/strtest.cpp
source/test/intltest/strtest.h
source/test/intltest/svccoll.cpp
source/test/intltest/svccoll.h
source/test/intltest/tchcfmt.cpp
source/test/intltest/tchcfmt.h
source/test/intltest/testidn.cpp
source/test/intltest/testidna.cpp
source/test/intltest/testidna.h
source/test/intltest/testutil.cpp
source/test/intltest/testutil.h
source/test/intltest/textfile.cpp
source/test/intltest/textfile.h
source/test/intltest/tfsmalls.cpp
source/test/intltest/tfsmalls.h
source/test/intltest/thcoll.cpp
source/test/intltest/thcoll.h
source/test/intltest/tmsgfmt.cpp
source/test/intltest/tmsgfmt.h
source/test/intltest/tokiter.cpp
source/test/intltest/tokiter.h
source/test/intltest/transapi.cpp
source/test/intltest/transapi.h
source/test/intltest/transrt.cpp
source/test/intltest/transrt.h
source/test/intltest/transtst.cpp
source/test/intltest/transtst.h
source/test/intltest/trcoll.cpp
source/test/intltest/trcoll.h
source/test/intltest/trnserr.cpp
source/test/intltest/trnserr.h
source/test/intltest/tscoll.cpp
source/test/intltest/tscoll.h
source/test/intltest/tsdate.cpp
source/test/intltest/tsdate.h
source/test/intltest/tsdcfmsy.cpp
source/test/intltest/tsdcfmsy.h
source/test/intltest/tsdtfmsy.cpp
source/test/intltest/tsdtfmsy.h
source/test/intltest/tsmthred.cpp
source/test/intltest/tsmthred.h
source/test/intltest/tsnmfmt.cpp
source/test/intltest/tsnmfmt.h
source/test/intltest/tsputil.cpp
source/test/intltest/tsputil.h
source/test/intltest/tstnorm.cpp
source/test/intltest/tstnorm.h
source/test/intltest/tstnrapi.cpp
source/test/intltest/tufmtts.cpp
source/test/intltest/tzbdtest.cpp
source/test/intltest/tzbdtest.h
source/test/intltest/tzfmttst.cpp
source/test/intltest/tzfmttst.h
source/test/intltest/tzoffloc.cpp
source/test/intltest/tzoffloc.h
source/test/intltest/tzregts.cpp
source/test/intltest/tzregts.h
source/test/intltest/tzrulets.cpp
source/test/intltest/tzrulets.h
source/test/intltest/tztest.cpp
source/test/intltest/tztest.h
source/test/intltest/ucaconf.cpp
source/test/intltest/ucaconf.h
source/test/intltest/ucdtest.cpp
source/test/intltest/ucdtest.h
source/test/intltest/ucharstrietest.cpp
source/test/intltest/unifiedcachetest.cpp
source/test/intltest/uobjtest.cpp
source/test/intltest/uobjtest.h
source/test/intltest/usettest.cpp
source/test/intltest/usettest.h
source/test/intltest/ustrtest.cpp
source/test/intltest/ustrtest.h
source/test/intltest/uts46test.cpp
source/test/intltest/utxttest.cpp
source/test/intltest/utxttest.h
source/test/intltest/uvectest.cpp
source/test/intltest/uvectest.h
source/test/intltest/v32test.cpp
source/test/intltest/v32test.h
source/test/intltest/windttst.cpp
source/test/intltest/windttst.h
source/test/intltest/winnmtst.cpp
source/test/intltest/winnmtst.h
source/test/intltest/winutil.cpp
source/test/intltest/winutil.h
source/test/iotest/Makefile.in
source/test/iotest/filetst.c
source/test/iotest/iotest.cpp
source/test/iotest/iotest.h
source/test/iotest/iotest.vcxproj
source/test/iotest/stream.cpp
source/test/iotest/strtst.c
source/test/iotest/trnstst.c
source/test/letest/FontObject.cpp
source/test/letest/FontObject.h
source/test/letest/FontTableCache.cpp
source/test/letest/FontTableCache.h
source/test/letest/PortableFontInstance.cpp
source/test/letest/PortableFontInstance.h
source/test/letest/SimpleFontInstance.cpp
source/test/letest/SimpleFontInstance.h
source/test/letest/cfonts.cpp
source/test/letest/cfonts.h
source/test/letest/cletest.c
source/test/letest/cletest.vcxproj
source/test/letest/cmaps.cpp
source/test/letest/cmaps.h
source/test/letest/gendata.cpp
source/test/letest/gendata.vcxproj
source/test/letest/letest.cpp
source/test/letest/letest.h
source/test/letest/letest.vcxproj
source/test/letest/letsutil.cpp
source/test/letest/letsutil.h
source/test/letest/sfnt.h
source/test/letest/testdata.cpp
source/test/letest/xmlreader.cpp
source/test/letest/xmlreader.h
source/test/perf/DateFmtPerf/DateFmtPerf.cpp
source/test/perf/DateFmtPerf/DateFmtPerf.h
source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj
source/test/perf/DateFmtPerf/breakdata.h
source/test/perf/DateFmtPerf/collationdata.h
source/test/perf/DateFmtPerf/datedata.h
source/test/perf/charperf/charperf.cpp
source/test/perf/charperf/charperf.h
source/test/perf/charperf/charperf.vcxproj
source/test/perf/collationperf/collperf.cpp
source/test/perf/collperf/collperf.cpp
source/test/perf/collperf/collperf.vcxproj
source/test/perf/collperf2/collperf2.cpp
source/test/perf/collperf2/collperf2.vcxproj
source/test/perf/convperf/convperf.cpp
source/test/perf/convperf/convperf.h
source/test/perf/convperf/convperf.vcxproj
source/test/perf/convperf/data.h
source/test/perf/dicttrieperf/dicttrieperf.cpp
source/test/perf/howExpensiveIs/Makefile.in
source/test/perf/howExpensiveIs/howExpensiveIs.cpp
source/test/perf/howExpensiveIs/sieve.cpp
source/test/perf/howExpensiveIs/sieve.h
source/test/perf/leperf/FontObject.cpp
source/test/perf/leperf/FontObject.h
source/test/perf/leperf/FontTableCache.cpp
source/test/perf/leperf/FontTableCache.h
source/test/perf/leperf/PortableFontInstance.cpp
source/test/perf/leperf/PortableFontInstance.h
source/test/perf/leperf/SimpleFontInstance.cpp
source/test/perf/leperf/SimpleFontInstance.h
source/test/perf/leperf/cfonts.cpp
source/test/perf/leperf/cfonts.h
source/test/perf/leperf/cmaps.cpp
source/test/perf/leperf/cmaps.h
source/test/perf/leperf/leperf.cpp
source/test/perf/leperf/letrperf.cpp
source/test/perf/leperf/sfnt.h
source/test/perf/leperf/xmlreader.cpp
source/test/perf/leperf/xmlreader.h
source/test/perf/normperf/dtfmtrtperf.cpp
source/test/perf/normperf/dtfmtrtperf.h
source/test/perf/normperf/dtfmtrtperf.vcxproj
source/test/perf/normperf/normperf.cpp
source/test/perf/normperf/normperf.h
source/test/perf/normperf/normperf.vcxproj
source/test/perf/strsrchperf/strsrchperf.cpp
source/test/perf/strsrchperf/strsrchperf.h
source/test/perf/strsrchperf/strsrchperf.vcxproj
source/test/perf/ubrkperf/ubrkperf.cpp
source/test/perf/ubrkperf/ubrkperf.h
source/test/perf/ubrkperf/ubrkperf.vcxproj
source/test/perf/ubrkperf/ubrkperfold.cpp
source/test/perf/ucnvavailperf/ucnvavailperf.cpp
source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj
source/test/perf/unisetperf/draft/bitset.cpp
source/test/perf/unisetperf/draft/trieset.cpp
source/test/perf/unisetperf/draft/unicont.h
source/test/perf/unisetperf/unisetperf.cpp
source/test/perf/unisetperf/unisetperf.vcxproj
source/test/perf/usetperf/bitset.cpp
source/test/perf/usetperf/bitset.h
source/test/perf/usetperf/usetperf.cpp
source/test/perf/usetperf/usetperf.vcxproj
source/test/perf/ustrperf/stringperf.cpp
source/test/perf/ustrperf/stringperf.h
source/test/perf/ustrperf/stringperf.vcxproj
source/test/perf/utfperf/utfperf.cpp
source/test/perf/utfperf/utfperf.vcxproj
source/test/perf/utrie2perf/utrie2perf.cpp
source/test/perf/utrie2perf/utrie2perf.vcxproj
source/test/testdata/BidiTest.txt
source/test/testdata/GraphemeBreakTest.txt
source/test/testdata/LineBreakTest.txt
source/test/testdata/SentenceBreakTest.txt
source/test/testdata/WordBreakTest.txt
source/test/testdata/break_rules/grapheme.txt
source/test/testdata/break_rules/line.txt
source/test/testdata/break_rules/line_loose.txt
source/test/testdata/break_rules/line_loose_cj.txt
source/test/testdata/break_rules/line_normal.txt
source/test/testdata/break_rules/line_normal_cj.txt
source/test/testdata/break_rules/word.txt
source/test/testdata/break_rules/word_POSIX.txt
source/test/testdata/rbbitst.txt
source/test/testdata/regextst.txt
source/test/testdata/root.txt
source/test/testdata/structLocale.txt
source/test/testmap/testmap.c
source/test/thaitest/thaitest.cpp
source/tools/Makefile.in
source/tools/ctestfw/ctest.c
source/tools/ctestfw/ctestfw.vcxproj
source/tools/ctestfw/datamap.cpp
source/tools/ctestfw/testdata.cpp
source/tools/ctestfw/tstdtmod.cpp
source/tools/ctestfw/ucln_ct.c
source/tools/ctestfw/unicode/ctest.h
source/tools/ctestfw/unicode/datamap.h
source/tools/ctestfw/unicode/testdata.h
source/tools/ctestfw/unicode/testlog.h
source/tools/ctestfw/unicode/testtype.h
source/tools/ctestfw/unicode/tstdtmod.h
source/tools/ctestfw/unicode/uperf.h
source/tools/ctestfw/unicode/utimer.h
source/tools/ctestfw/uperf.cpp
source/tools/genbrk/genbrk.cpp
source/tools/genbrk/genbrk.vcxproj
source/tools/genccode/genccode.c
source/tools/genccode/genccode.vcxproj
source/tools/gencfu/gencfu.cpp
source/tools/gencfu/gencfu.vcxproj
source/tools/gencmn/gencmn.c
source/tools/gencmn/gencmn.vcxproj
source/tools/gencnval/gencnval.c
source/tools/gencnval/gencnval.vcxproj
source/tools/gencolusb/extract_unsafe_backwards.cpp
source/tools/gencolusb/verify_uset.cpp
source/tools/gendict/gendict.cpp
source/tools/gendict/gendict.vcxproj
source/tools/gennorm2/Makefile.in
source/tools/gennorm2/gennorm2.cpp
source/tools/gennorm2/gennorm2.vcxproj
source/tools/gennorm2/n2builder.cpp
source/tools/gennorm2/n2builder.h
source/tools/genrb/Makefile.in
source/tools/genrb/derb.cpp
source/tools/genrb/derb.vcxproj
source/tools/genrb/errmsg.c
source/tools/genrb/errmsg.h
source/tools/genrb/genrb.cpp
source/tools/genrb/genrb.h
source/tools/genrb/genrb.vcxproj
source/tools/genrb/parse.cpp
source/tools/genrb/parse.h
source/tools/genrb/prscmnts.cpp
source/tools/genrb/prscmnts.h
source/tools/genrb/rbutil.c
source/tools/genrb/rbutil.h
source/tools/genrb/read.c
source/tools/genrb/read.h
source/tools/genrb/reslist.cpp
source/tools/genrb/reslist.h
source/tools/genrb/rle.c
source/tools/genrb/rle.h
source/tools/genrb/ustr.c
source/tools/genrb/ustr.h
source/tools/genrb/wrtjava.cpp
source/tools/genrb/wrtxml.cpp
source/tools/genren/genren.pl
source/tools/gensprep/gensprep.c
source/tools/gensprep/gensprep.h
source/tools/gensprep/gensprep.vcxproj
source/tools/gensprep/store.c
source/tools/gentest/genres32.c
source/tools/gentest/gentest.c
source/tools/gentest/gentest.h
source/tools/gentest/gentest.vcxproj
source/tools/icu-svnprops-check.py
source/tools/icuinfo/icuinfo.cpp
source/tools/icuinfo/icuinfo.vcxproj
source/tools/icuinfo/testplug.c
source/tools/icuinfo/testplug.vcxproj
source/tools/icupkg/icupkg.cpp
source/tools/icupkg/icupkg.vcxproj
source/tools/icuswap/icuswap.cpp
source/tools/makeconv/Makefile.in
source/tools/makeconv/gencnvex.c
source/tools/makeconv/genmbcs.cpp
source/tools/makeconv/genmbcs.h
source/tools/makeconv/makeconv.cpp
source/tools/makeconv/makeconv.h
source/tools/makeconv/makeconv.vcxproj
source/tools/makeconv/ucnvstat.c
source/tools/pkgdata/Makefile.in
source/tools/pkgdata/pkgdata.cpp
source/tools/pkgdata/pkgdata.vcxproj
source/tools/pkgdata/pkgtypes.c
source/tools/pkgdata/pkgtypes.h
source/tools/toolutil/Makefile.in
source/tools/toolutil/collationinfo.cpp
source/tools/toolutil/collationinfo.h
source/tools/toolutil/dbgutil.cpp
source/tools/toolutil/dbgutil.h
source/tools/toolutil/denseranges.cpp
source/tools/toolutil/denseranges.h
source/tools/toolutil/filestrm.c [new file with mode: 0644]
source/tools/toolutil/filestrm.h
source/tools/toolutil/filetools.cpp
source/tools/toolutil/filetools.h
source/tools/toolutil/flagparser.c [new file with mode: 0644]
source/tools/toolutil/flagparser.h
source/tools/toolutil/package.cpp
source/tools/toolutil/package.h
source/tools/toolutil/pkg_genc.c [new file with mode: 0644]
source/tools/toolutil/pkg_genc.h
source/tools/toolutil/pkg_gencmn.c [new file with mode: 0644]
source/tools/toolutil/pkg_gencmn.h
source/tools/toolutil/pkg_icu.cpp
source/tools/toolutil/pkg_icu.h
source/tools/toolutil/pkg_imp.h
source/tools/toolutil/pkgitems.cpp
source/tools/toolutil/ppucd.cpp
source/tools/toolutil/ppucd.h
source/tools/toolutil/swapimpl.cpp
source/tools/toolutil/swapimpl.h
source/tools/toolutil/toolutil.cpp
source/tools/toolutil/toolutil.h
source/tools/toolutil/toolutil.vcxproj
source/tools/toolutil/ucbuf.cpp
source/tools/toolutil/ucbuf.h
source/tools/toolutil/ucln_tu.cpp
source/tools/toolutil/ucm.c [new file with mode: 0644]
source/tools/toolutil/ucm.h
source/tools/toolutil/ucmstate.c [new file with mode: 0644]
source/tools/toolutil/udbgutil.cpp
source/tools/toolutil/udbgutil.h
source/tools/toolutil/unewdata.c [new file with mode: 0644]
source/tools/toolutil/unewdata.h
source/tools/toolutil/uoptions.c [new file with mode: 0644]
source/tools/toolutil/uoptions.h
source/tools/toolutil/uparse.c [new file with mode: 0644]
source/tools/toolutil/uparse.h
source/tools/toolutil/writesrc.c [new file with mode: 0644]
source/tools/toolutil/writesrc.h
source/tools/toolutil/xmlparser.cpp
source/tools/toolutil/xmlparser.h
source/tools/tzcode/Makefile.in
source/tools/tzcode/icuregions
source/tools/tzcode/icuzdump.cpp
source/tools/tzcode/tz2icu.cpp
source/tools/tzcode/tz2icu.h

index d56d69c..232f9b9 100644 (file)
@@ -5,31 +5,31 @@
        -->
 <head>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 58 (update #1: 58.2) with ICU 59</title>
+<title>ICU4C API Comparison: ICU 57 with ICU 58</title>
 <link type="text/css" href="icu4c.css" rel="stylesheet">
 </head>
 <body>
 <a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 58 (update #1: 58.2) with ICU 59</h1>
+<h1>ICU4C API Comparison: ICU 57 with ICU 58</h1>
 <div id="toc">
 <ul>
 <li>
-<a href="#removed">Removed from ICU 58</a>
+<a href="#removed">Removed from ICU 57</a>
 </li>
 <li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 59</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 58</a>
 </li>
 <li>
-<a href="#changed">Changed in  ICU 59</a>
+<a href="#changed">Changed in  ICU 58</a>
 </li>
 <li>
-<a href="#promoted">Promoted to stable in ICU 59</a>
+<a href="#promoted">Promoted to stable in ICU 58</a>
 </li>
 <li>
-<a href="#added">Added in ICU 59</a>
+<a href="#added">Added in ICU 58</a>
 </li>
 <li>
-<a href="#other">Other existing drafts in ICU 59</a>
+<a href="#other">Other existing drafts in ICU 58</a>
 </li>
 <li>
 <a href="#purevirtual">Signature Simplifications</a><sup style="background-color: yellow; font-size: smallest;">(new)</sup>
 <hr>
 </div>
 <a name="removed"></a>
-<h2>Removed from ICU 58</h2>
+<h2>Removed from ICU 57</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
+<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEast(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
+<td class="file">bytestrie.h</td><td class="proto">const StringPiece&amp; icu::BytesTrie::Iterator::getString()</td><td class="stabchange">Stable<br>ICU 4.8</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNorth(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
+<td class="file">bytestriebuilder.h</td><td class="proto">BytesTrieBuilder&amp; icu::BytesTrieBuilder::add(const StringPiece&amp;, int32_t, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.8</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSouth(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
+<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(const StringPiece&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWest(UErrorCode&amp;)</td><td class="">Draft<br>ICU 58</td><td>(missing)<br>
+<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(const StringPiece&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_HAVE_RVALUE_REFERENCES</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">fmtable.h</td><td class="proto">icu::Formattable::Formattable(const StringPiece&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.4</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto"><tt>#define</tt> U_STRING_CASE_MAPPER_DEFINED</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">fmtable.h</td><td class="proto">void icu::Formattable::setDecimalNumber(const StringPiece&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.4</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToASCII_UTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToUnicodeUTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToASCII_UTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToUnicodeUTF8(const StringPiece&amp;, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="stabchange">Stable<br>ICU 4.6</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto">UClassID icu::LayoutEngine::getDynamicClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto">icu::LayoutEngine::~LayoutEngine()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto">le_int32 icu::LayoutEngine::getGlyphCount()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto">le_int32 icu::LayoutEngine::layoutChars(const LEUnicode chars[], le_int32, le_int32, le_int32, le_bool, float, float, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> LayoutEngine* icu::LayoutEngine::layoutEngineFactory(const LEFontInstance*, le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> LayoutEngine* icu::LayoutEngine::layoutEngineFactory(const LEFontInstance*, le_int32, le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> UClassID icu::LayoutEngine::getStaticClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> const le_int32 icu::LayoutEngine::kTypoFlagKern</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto"><tt>static</tt> const le_int32 icu::LayoutEngine::kTypoFlagLiga</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getCharIndices(le_int32 charIndices[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getCharIndices(le_int32 charIndices[], le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphPosition(le_int32, float&amp;, float&amp;, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphPositions(float positions[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphs(LEGlyphID glyphs[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::getGlyphs(le_uint32 glyphs[], le_uint32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LayoutEngine.h</td><td class="proto">void icu::LayoutEngine::reset()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">LEGlyphID icu::LEFontInstance::mapCharToGlyph(LEUnicode32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">LEGlyphID icu::LEFontInstance::mapCharToGlyph(LEUnicode32, const LECharMapper*)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">LEGlyphID icu::LEFontInstance::mapCharToGlyph(LEUnicode32, const LECharMapper*, le_bool)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">LEUnicode32 icu::LECharMapper::mapChar(LEUnicode32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">UClassID icu::LEFontInstance::getDynamicClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">const LEFontInstance* icu::LEFontInstance::getSubFont(const LEUnicode chars[], le_int32*, le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">const void* icu::LEFontInstance::getFontTable(LETag, size_t&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getScaleFactorX()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getScaleFactorY()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getXPixelsPerEm()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::getYPixelsPerEm()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::xPixelsToUnits(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::xUnitsToPoints(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::yPixelsToUnits(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">float icu::LEFontInstance::yUnitsToPoints(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">icu::LECharMapper::~LECharMapper()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">icu::LEFontInstance::~LEFontInstance()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">le_bool icu::LEFontInstance::canDisplay(LEUnicode32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">le_bool icu::LEFontInstance::getGlyphPoint(LEGlyphID, le_int32, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getAscent()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getDescent()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getLeading()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getLineHeight()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">le_int32 icu::LEFontInstance::getUnitsPerEM()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto"><tt>static</tt> UClassID icu::LEFontInstance::getStaticClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto"><tt>static</tt> float icu::LEFontInstance::fixedToFloat(le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto"><tt>static</tt> le_int32 icu::LEFontInstance::floatToFixed(float)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::getGlyphAdvance(LEGlyphID, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::mapCharsToGlyphs(const LEUnicode chars[], le_int32, le_int32, le_bool, const LECharMapper*, le_bool, LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::pixelsToUnits(LEPoint&amp;, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::transformFunits(float, float, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEFontInstance.h</td><td class="proto">void icu::LEFontInstance::unitsToPoints(LEPoint&amp;, LEPoint&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID icu::LEGlyphStorage::getGlyphID(le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID&amp; icu::LEGlyphStorage::operator[](le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID* icu::LEGlyphStorage::insertGlyphs(le_int32, le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID* icu::LEGlyphStorage::insertGlyphs(le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">UClassID icu::LEGlyphStorage::getDynamicClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">icu::LEGlyphStorage::LEGlyphStorage()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">icu::LEGlyphStorage::~LEGlyphStorage()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::allocateAuxData(LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::allocatePositions(LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::applyInsertions()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::getCharIndex(le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">le_int32 icu::LEGlyphStorage::getGlyphCount()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">le_uint32 icu::LEGlyphStorage::getAuxData(le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto"><tt>static</tt> UClassID icu::LEGlyphStorage::getStaticClassID()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adjustPosition(le_int32, float, float, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptAuxDataArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptCharIndicesArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptGlyphArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptGlyphCount(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptGlyphCount(le_int32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::adoptPositionArray(LEGlyphStorage&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::allocateGlyphArray(le_int32, le_bool, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getAuxData(le_uint32 auxData[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getCharIndices(le_int32 charIndices[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getCharIndices(le_int32 charIndices[], le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphPosition(le_int32, float&amp;, float&amp;, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphPositions(float positions[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphs(LEGlyphID glyphs[], LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::getGlyphs(le_uint32 glyphs[], le_uint32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::moveGlyph(le_int32, le_int32, le_uint32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::reset()</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setAuxData(le_int32, le_uint32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setCharIndex(le_int32, le_int32, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setGlyphID(le_int32, LEGlyphID, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void icu::LEGlyphStorage::setPosition(le_int32, float, float, LEErrorCode&amp;)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LESwaps.h</td><td class="proto"><tt>#define</tt> SWAPL</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LESwaps.h</td><td class="proto"><tt>#define</tt> SWAPW</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LESwaps.h</td><td class="proto"><tt>static</tt> le_uint16 icu::LESwaps::swapWord(le_uint16)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LESwaps.h</td><td class="proto"><tt>static</tt> le_uint32 icu::LESwaps::swapLong(le_uint32)</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_AFRC_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ARRAY_COPY</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ARRAY_SIZE</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ASSERT_BAD_FONT</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CHAR_FILTER_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CLIENT_MASK</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CLIENT_SHIFT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_CSWH_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DEBUG_BAD_FONT</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DEFAULT_FEATURE_FLAG</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DELETE_ARRAY</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_DLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_FAILURE</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_FRAC_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GET_CLIENT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GET_GLYPH</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GET_SUB_FONT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GLYPH_MASK</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GLYPH_SHIFT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_GROW_ARRAY</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_HLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_Kerning_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_LIGA_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_Ligatures_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_MAKE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_NALT_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_NEW_ARRAY</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_RANGE_CHECK</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_RLIG_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_RUBY_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SALT_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SET_CLIENT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SET_GLYPH</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SET_SUB_FONT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SMCP_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS01_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS02_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS03_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS04_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS05_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS06_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SS07_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SUB_FONT_MASK</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SUB_FONT_SHIFT</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SUCCESS</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_SWSH_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_UINT32_MAX</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_UINTPTR_MAX</td><td class=""><i>(untagged)</i></td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>#define</tt> LE_ZERO_FEATURE_FLAG</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_FONT_FILE_NOT_FOUND_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_ILLEGAL_ARGUMENT_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_INDEX_OUT_OF_BOUNDS_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_INTERNAL_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_MEMORY_ALLOCATION_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_MISSING_FONT_TABLE_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_NO_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_NO_LAYOUT_ERROR</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEErrorCode::LE_NO_SUBFONT_WARNING</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_AFRC_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_CHAR_FILTER_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_CLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_CSWH_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_DLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_FEATURE_ENUM_MAX</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_FRAC_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_HLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_Kerning_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_LIGA_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_Ligatures_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_NALT_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_RLIG_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_RUBY_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SALT_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SMCP_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS01_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS02_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS03_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS04_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS05_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS06_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SS07_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_SWSH_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureENUMs::LE_ZERO_FEATURE_ENUM</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_AALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ABVF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ABVM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ABVS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_AFRC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_AKHN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_BLWF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_BLWM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_BLWS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_C2PC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_C2SC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CASE_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CCMP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CJCT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CPSP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CSWH_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_CURS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_DIST_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_DLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_DNOM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_EXPT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FIN2_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FIN3_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FINA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FRAC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_FWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HALF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HALN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HIST_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HKNA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HNGL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_HWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_INIT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ISOL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ITAL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JP78_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JP83_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_JP90_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_KERN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LFBD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LIGA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LJMO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LNUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_LOCL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MARK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MED2_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MEDI_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MGRK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MKMK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_MSET_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NLCK_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NUKT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_NUMR_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ONUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_OPBD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ORDN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ORNM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PCAP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PNUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PREF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PRES_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PSTF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PSTS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_PWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_QWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RAND_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RKRF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RLIG_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RPHF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RTBD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RTLA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_RUBY_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SINF_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SIZE_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SMCP_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SMPL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS01_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS02_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS03_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS04_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS05_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS06_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS07_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS08_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS09_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS10_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS11_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS12_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS13_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS14_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS15_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS16_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS17_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS18_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS19_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SS20_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SUBS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SUPS_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_SWSH_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TITL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TJMO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TNAM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TNUM_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TRAD_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_TWID_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_UNIC_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VALT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VATU_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VERT_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VHAL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VJMO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VKNA_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VKRN_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VPAL_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_VRT2_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LEFeatureTags::LE_ZERO_FEATURE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_ACNT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_AVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BASE_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BDAT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BHED_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BLOC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_BSLN_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CFF__TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CMAP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_CVT__TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_DSIG_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_EBDT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_EBLC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_EBSC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FDSC_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FEAT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FMTX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FPGM_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_FVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GASP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GDEF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GLYF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GPOS_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GSUB_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_GVAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HDMX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HEAD_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HHEA_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HMTX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_HSTY_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_JSTF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_JUST_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_KERN_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_LCAR_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_LOCA_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_LTSH_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_MAXP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_MORT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_MORX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_NAME_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_OPBD_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_OS_2_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_PCLT_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_POST_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_PREP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_PROP_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_TRAK_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VDMX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VHEA_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VMTX_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_VORG_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LETypes.h</td><td class="proto"><tt>enum</tt> LETableTags::LE_ZAPF_TABLE_TAG</td><td class="">Deprecated<br>ICU 54</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(const StringPiece&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto"><tt>static</tt> UnicodeString icu::UnicodeString::fromUTF8(const StringPiece&amp;)</td><td class="stabchange">Stable<br>ICU 4.2</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>#define</tt> NULL</td><td class="stabchange">Stable<br>ICU 2.0</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 </table>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 59</h2>
+<h2>Deprecated or Obsoleted in ICU 58</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
+                                                       icu::DateFormatSymbols::DtContextType::DT_CONTEXT_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
+                                                       icu::DateFormatSymbols::DtWidthType::DT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measfmt.h</td><td class="proto"><tt>enum</tt> UMeasureFormatWidth::UMEASFMT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateDirection::UDAT_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeUnit::UDAT_RELATIVE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmunit.h</td><td class="proto"><tt>enum</tt> 
+                                                       icu::TimeUnit::UTimeUnitFields::UTIMEUNIT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ubidi.h</td><td class="proto"><tt>#define</tt> U_BIDI_CLASS_DEFAULT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ubidi.h</td><td class="proto"><tt>enum</tt> UBiDiReorderingMode::UBIDI_REORDER_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ubrk.h</td><td class="proto"><tt>enum</tt> UBreakIteratorType::UBRK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBidiPairedBracketType::U_BPT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharDirection::U_CHAR_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharNameChoice::U_CHAR_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UDecompositionType::U_DT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UEastAsianWidth::U_EA_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UHangulSyllableType::U_HST_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningType::U_JT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UNumericType::U_NT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BINARY_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_DOUBLE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_INT_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_MASK_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_OTHER_PROPERTY_LIMIT</td><td class="stabchange">Stable<br>ICU 4.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_STRING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UPropertyNameChoice::U_PROPERTY_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> USentenceBreak::U_SB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucnv.h</td><td class="proto"><tt>enum</tt> UConverterUnicodeSet::UCNV_SET_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttribute::UCOL_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttributeValue::UCOL_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColBoundMode::UCOL_BOUND_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColReorderCode::UCOL_REORDER_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrencyUsage::UCURR_USAGE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_BOOLEAN_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">udata.h</td><td class="proto"><tt>enum</tt> UDataFileAccess::UDATA_FILE_ACCESS_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternConflict::UDATPG_CONFLICT_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternField::UDATPG_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uformattable.h</td><td class="proto"><tt>enum</tt> UFormattableType::UFMT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocDataLocaleType::ULOC_DATA_LOCALE_TYPE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataDelimiterType::ULOCDATA_DELIMITER_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataExemplarSetType::ULOCDATA_ES_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> UMeasurementSystem::UMS_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UCurrencySpacing::UNUM_CURRENCY_SPACING_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 49</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_FORMAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatSymbol::UNUM_FORMAT_SYMBOL_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">upluralrules.h</td><td class="proto"><tt>enum</tt> UPluralType::UPLURAL_TYPE_COUNT</td><td class="stabchange">Stable<br>ICU 50</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uregion.h</td><td class="proto"><tt>enum</tt> URegionType::URGN_LIMIT</td><td class="stabchange">Stable<br>ICU 51</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeDateTimeFormatterStyle::UDAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_COUNT</td><td class="">Draft<br>ICU 57</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ures.h</td><td class="proto"><tt>enum</tt> UResType::URES_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttribute::USEARCH_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttributeValue::USEARCH_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uset.h</td><td class="proto"><tt>enum</tt> USetSpanCondition::USET_SPAN_CONDITION_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_ANY_CASE</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_COLLATION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_CONVERSION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_FUNCTION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_BRK_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_WARNING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_FMT_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_IDNA_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PLUGIN_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_REGEX_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_STANDARD_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="changed"></a>
+<h2>Changed in  ICU 58 (old, new)</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
+<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(int32_t, UnicodeString&amp;, FieldPosition&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(double, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(int32_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(int64_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
+                                                       icu::DateFormatSymbols::DtContextType::DT_CONTEXT_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">dtfmtsym.h</td><td class="proto"><tt>enum</tt> 
+                                                       icu::DateFormatSymbols::DtWidthType::DT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetBaseSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous) {}</td><td class=""><i>(untagged)</i></td><td>Stable<br>
+<span class=""><span>ICU 2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous)::DONT_CARE</td><td class=""><i>(untagged)</i></td><td>Stable<br>
+<span class=""><span>ICU 2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">filteredbrk.h</td><td class="proto">BreakIterator* icu::FilteredBreakIteratorBuilder::build(BreakIterator*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::suppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::unsuppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">filteredbrk.h</td><td class="proto">icu::FilteredBreakIteratorBuilder::~FilteredBreakIteratorBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(const Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::adoptInsteadAndCheckErrorCode(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::swap(LocalArray&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">localpointer.h</td><td class="proto">void icu::LocalPointer&lt; T &gt;::swap(LocalPointer&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measfmt.h</td><td class="proto"><tt>enum</tt> UMeasureFormatWidth::UMEASFMT_WIDTH_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCentury(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCupMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGenericTemperature(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKnot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLiterPer100Kilometers(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMileScandinavian(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPintMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createRevolutionAngle(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(const Formattable&amp;, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(double, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(int32_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(int64_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="stabchange">Stable</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateDirection::UDAT_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeUnit::UDAT_RELATIVE_UNIT_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
-</THEAD>
 <tr class="row1">
-<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UDateTimeScale::UDTS_MAX_SCALE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 59</span></span></td>
+<td class="file">tmunit.h</td><td class="proto"><tt>enum</tt> 
+                                                       icu::TimeUnit::UTimeUnitFields::UTIMEUNIT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UTimeScaleValue::UTSV_MAX_SCALE_VALUE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 59</span></span></td>
+<td class="file">ubidi.h</td><td class="proto"><tt>#define</tt> U_BIDI_CLASS_DEFAULT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="changed"></a>
-<h2>Changed in  ICU 59 (old, new)</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
+<tr class="row1">
+<td class="file">ubidi.h</td><td class="proto"><tt>enum</tt> UBiDiReorderingMode::UBIDI_REORDER_COUNT</td><td class="stabchange">Stable<br>ICU 3.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ubrk.h</td><td class="proto"><tt>enum</tt> UBreakIteratorType::UBRK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBidiPairedBracketType::U_BPT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharDirection::U_CHAR_DIRECTION_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UCharNameChoice::U_CHAR_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UDecompositionType::U_DT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UEastAsianWidth::U_EA_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_PREPEND</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_REGIONAL_INDICATOR</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 50</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_SPACING_MARK</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UHangulSyllableType::U_HST_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningType::U_JT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_CLOSE_PARENTHESIS</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.4</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_CONDITIONAL_JAPANESE_STARTER</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 49</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_H2</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 3.4</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_H3</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 3.4</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_HEBREW_LETTER</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 49</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_JL</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 3.4</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_JT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 3.4</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_JV</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 3.4</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_NEXT_LINE</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 2.6</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_REGIONAL_INDICATOR</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 50</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_WORD_JOINER</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Stable<br>
+<span class="verchange"><span>ICU 2.6</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UNumericType::U_NT_COUNT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BINARY_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_DOUBLE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_INT_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_MASK_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_OTHER_PROPERTY_LIMIT</td><td class="stabchange">Stable<br>ICU 4.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_STRING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UPropertyNameChoice::U_PROPERTY_NAME_CHOICE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> USentenceBreak::U_SB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_CR</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_DOUBLE_QUOTE</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 52</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_EXTEND</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_HEBREW_LETTER</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 52</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_LF</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_MIDNUMLET</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_NEWLINE</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_REGIONAL_INDICATOR</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 50</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_SINGLE_QUOTE</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Stable<br>
+<span class="verchange"><span>ICU 52</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucnv.h</td><td class="proto"><tt>enum</tt> UConverterUnicodeSet::UCNV_SET_COUNT</td><td class="stabchange">Stable<br>ICU 2.6</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttribute::UCOL_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColAttributeValue::UCOL_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
-</THEAD>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColBoundMode::UCOL_BOUND_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilePerGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ucol.h</td><td class="proto"><tt>enum</tt> UColReorderCode::UCOL_REORDER_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramPerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrencyUsage::UCURR_USAGE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMillimolePerLiter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_BOOLEAN_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 53</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPartPerMillion(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::format(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_PARTIAL_LITERAL_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::formatNumeric(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">SimpleFormatter&amp; icu::SimpleFormatter::operator=(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udata.h</td><td class="proto"><tt>enum</tt> UDataFileAccess::UDATA_FILE_ACCESS_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPattern(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternConflict::UDATPG_CONFLICT_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPatternMinMaxArguments(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePatternField::UDATPG_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString icu::SimpleFormatter::getTextWithNoArguments()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uformattable.h</td><td class="proto"><tt>enum</tt> UFormattableType::UFMT_COUNT</td><td class="stabchange">Stable<br>ICU 52</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocDataLocaleType::ULOC_DATA_LOCALE_TYPE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.1</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataDelimiterType::ULOCDATA_DELIMITER_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> ULocaleDataExemplarSetType::ULOCDATA_ES_COUNT</td><td class="stabchange">Stable<br>ICU 3.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndAppend(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ulocdata.h</td><td class="proto"><tt>enum</tt> UMeasurementSystem::UMS_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndReplace(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unistr.h</td><td class="proto"><tt>#define</tt> UNISTR_OBJECT_SIZE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unistr.h</td><td class="proto">void icu::UnicodeString::swap(UnicodeString&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UCurrencySpacing::UNUM_CURRENCY_SPACING_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_FIELD_COUNT</td><td class="stabchange">Stable<br>ICU 49</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_CURRENCY_STANDARD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::~SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_LONG</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">int32_t icu::SimpleFormatter::getArgumentLimit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER_BASE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_FORMAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 4.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatSymbol::UNUM_FORMAT_SYMBOL_COUNT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_PRESENTATION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">upluralrules.h</td><td class="proto"><tt>enum</tt> UPluralType::UPLURAL_TYPE_COUNT</td><td class="stabchange">Stable<br>ICU 50</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uregion.h</td><td class="proto"><tt>enum</tt> URegionType::URGN_LIMIT</td><td class="stabchange">Stable<br>ICU 51</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_AM_PM_MIDNIGHT_NOON_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> UDateRelativeDateTimeFormatterStyle::UDAT_STYLE_COUNT</td><td class="stabchange">Stable<br>ICU 54</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">URelativeDateTimeFormatter* ureldatefmt_open(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_COUNT</td><td class="">Draft<br>ICU 57</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_DAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">ures.h</td><td class="proto"><tt>enum</tt> UResType::URES_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_FRIDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CODE_LIMIT</td><td class="stabchange">Stable<br>ICU 2.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttribute::USEARCH_ATTRIBUTE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">usearch.h</td><td class="proto"><tt>enum</tt> USearchAttributeValue::USEARCH_ATTRIBUTE_VALUE_COUNT</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uset.h</td><td class="proto"><tt>enum</tt> USetSpanCondition::USET_SPAN_CONDITION_COUNT</td><td class="stabchange">Stable<br>ICU 3.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONTH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_ANY_CASE</td><td class="stabchange">Stable<br>ICU 4.2</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_QUARTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUTF8(const USpoofChecker*, const char*, int32_t, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.2</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SATURDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.2</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SECOND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_COLLATION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SUNDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_CONVERSION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_THURSDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_FUNCTION_LIMIT</td><td class="stabchange">Stable<br>ICU 2.8</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_TUESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>#define</tt> NULL</td><td class="">Deprecated<br>ICU 54</td><td>Stable<br>
+<span class="verchange"><span>ICU 2.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEDNESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_BRK_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEEK</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_YEAR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_ERROR_WARNING_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter*, const UChar*, int32_t, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_FMT_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_format(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_IDNA_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PARSE_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_close(URelativeDateTimeFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_PLUGIN_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UDateTimeScale::UDTS_MAX_SCALE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 59</span></span></td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_REGEX_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">utmscale.h</td><td class="proto"><tt>enum</tt> UTimeScaleValue::UTSV_MAX_SCALE_VALUE</td><td class="stabchange">Stable<br>ICU 3.2</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 59</span></span></td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_STANDARD_ERROR_LIMIT</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 58</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="promoted"></a>
-<h2>Promoted to stable in ICU 59</h2>
+<h2>Promoted to stable in ICU 58</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
+<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">bytestrie.h</td><td class="proto">StringPiece icu::BytesTrie::Iterator::getString()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.8</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bytestriebuilder.h</td><td class="proto">BytesTrieBuilder&amp; icu::BytesTrieBuilder::add(StringPiece, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.8</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(int32_t, UnicodeString&amp;, FieldPosition&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetBaseSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> UnicodeString icu::DateTimePatternGenerator::staticGetSkeleton(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous) {}</td><td class=""><i>(untagged)</i></td><td>Stable<br>
+<span class=""><span>ICU 2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">fieldpos.h</td><td class="proto"><tt>enum</tt> icu::FieldPosition::(anonymous)::DONT_CARE</td><td class=""><i>(untagged)</i></td><td>Stable<br>
+<span class=""><span>ICU 2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">filteredbrk.h</td><td class="proto">BreakIterator* icu::FilteredBreakIteratorBuilder::build(BreakIterator*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::suppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">filteredbrk.h</td><td class="proto">UBool icu::FilteredBreakIteratorBuilder::unsuppressBreakAfter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">filteredbrk.h</td><td class="proto">icu::FilteredBreakIteratorBuilder::~FilteredBreakIteratorBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">filteredbrk.h</td><td class="proto"><tt>static</tt> FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(const Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">fmtable.h</td><td class="proto">icu::Formattable::Formattable(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">fmtable.h</td><td class="proto">void icu::Formattable::setDecimalNumber(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::adoptInsteadAndCheckErrorCode(T*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">localpointer.h</td><td class="proto">void icu::LocalArray&lt; T &gt;::swap(LocalArray&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">localpointer.h</td><td class="proto">void icu::LocalPointer&lt; T &gt;::swap(LocalPointer&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCentury(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCupMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGenericTemperature(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKnot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLiterPer100Kilometers(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::LocalPointer(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMileScandinavian(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPintMetric(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilePerGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createRevolutionAngle(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramPerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMillimolePerLiter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ADLAM</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPartPerMillion(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::format(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_C</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::formatNumeric(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_GLAGOLITIC_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">SimpleFormatter&amp; icu::SimpleFormatter::operator=(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPattern(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPatternMinMaxArguments(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MONGOLIAN_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString icu::SimpleFormatter::getTextWithNoArguments()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_NEWA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OSAGE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT_COMPONENTS</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndAppend(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndReplace(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_FEH</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::~SimpleFormatter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_NOON</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpleformatter.h</td><td class="proto">int32_t icu::SimpleFormatter::getArgumentLimit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_QAF</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER_BASE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_PRESENTATION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_AM_PM_MIDNIGHT_NOON_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">UnicodeString&amp; icu::UnicodeString::operator=(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">URelativeDateTimeFormatter* ureldatefmt_open(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_DAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_FRIDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatBooleanAttribute::UDAT_PARSE_PARTIAL_LITERAL_MATCH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unistr.h</td><td class="proto"><tt>#define</tt> UNISTR_OBJECT_SIZE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unistr.h</td><td class="proto"><tt>static</tt> UnicodeString icu::UnicodeString::fromUTF8(StringPiece)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.2</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unistr.h</td><td class="proto">void icu::UnicodeString::swap(UnicodeString&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONTH</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_CURRENCY_STANDARD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_QUARTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_LONG</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SATURDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatStyle::UNUM_DECIMAL_COMPACT_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SECOND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_ADLAM</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SUNDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_THURSDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_HAN_WITH_BOPOMOFO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_TUESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_JAMO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEDNESDAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEEK</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_NEWA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_YEAR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OSAGE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter*, const UChar*, int32_t, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_SYMBOLS_EMOJI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_format(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUTF8(const USpoofChecker*, const char*, int32_t, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.2</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, int32_t*, UErrorCode*)</td><td class="">Deprecated<br>ICU 51</td><td>Stable<br>
+<span class="verchange"><span>ICU 4.2</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_close(URelativeDateTimeFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 57</td>
+<td class="file">utypes.h</td><td class="proto"><tt>#define</tt> NULL</td><td class="">Deprecated<br>ICU 54</td><td>Stable<br>
+<span class="verchange"><span>ICU 2.0</span>
+<br>
+<b class="bigwarn" title="A stable API changed version.">(changed)</b></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="added"></a>
-<h2>Added in ICU 59</h2>
+<h2>Added in ICU 58</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
+<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::fold(uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">bytestrie.h</td><td class="proto">StringPiece icu::BytesTrie::Iterator::getString()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.8</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::toLower(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">bytestriebuilder.h</td><td class="proto">BytesTrieBuilder&amp; icu::BytesTrieBuilder::add(StringPiece, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.8</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::toTitle(const char*, uint32_t, BreakIterator*, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">compactdecimalformat.h</td><td class="proto">UnicodeString&amp; icu::CompactDecimalFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::toUpper(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">decimfmt.h</td><td class="proto">UnicodeString&amp; icu::DecimalFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8Fold(uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">fmtable.h</td><td class="proto">icu::Formattable::Formattable(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8ToLower(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">fmtable.h</td><td class="proto">void icu::Formattable::setDecimalNumber(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">casemap.h</td><td class="proto"><tt>static</tt> int32_t icu::CaseMap::utf8ToUpper(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::labelToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">char16_t* icu::Char16Ptr::get()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToASCII_UTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">const char16_t* icu::ConstChar16Ptr::get()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">idna.h</td><td class="proto">void icu::IDNA::nameToUnicodeUTF8(StringPiece, ByteSink&amp;, IDNAInfo&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.6</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(char16_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">measfmt.h</td><td class="proto">UnicodeString icu::MeasureFormat::getUnitDisplayName(const MeasureUnit&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEast(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(uint16_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNorth(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::Char16Ptr(wchar_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSouth(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::operator char16_t* ()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWest(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">icu::Char16Ptr::~Char16Ptr()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">numfmt.h</td><td class="proto">UnicodeString&amp; icu::NumberFormat::format(StringPiece, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.4</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const char16_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">tznames.h</td><td class="proto">void icu::TimeZoneNames::getDisplayNames(const UnicodeString&amp;, const UTimeZoneNameType types[], int32_t, UDate, UnicodeString dest[], UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">tznames.h</td><td class="proto">void icu::TimeZoneNames::loadAllDisplayNames(UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const uint16_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto">UBiDiTransform* ubiditransform_open(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::ConstChar16Ptr(const wchar_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_OFF</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::operator const char16_t* ()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_ON</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::~ConstChar16Ptr()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_LOGICAL</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getCoarseChangesIterator()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_VISUAL</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getCoarseIterator()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto">uint32_t ubiditransform_transform(UBiDiTransform*, const UChar*, int32_t, UChar*, int32_t, UBiDiLevel, UBiDiOrder, UBiDiLevel, UBiDiOrder, UBiDiMirroring, uint32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getFineChangesIterator()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">ubiditransform.h</td><td class="proto">void ubiditransform_close(UBiDiTransform*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getFineIterator()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ADLAM</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">edits.h</td><td class="proto">UBool icu::Edits::copyErrorTo(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">edits.h</td><td class="proto">UBool icu::Edits::hasChanges()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_C</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">edits.h</td><td class="proto">icu::Edits::Edits()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_GLAGOLITIC_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">edits.h</td><td class="proto">icu::Edits::~Edits()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">edits.h</td><td class="proto">int32_t icu::Edits::lengthDelta()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">edits.h</td><td class="proto">void icu::Edits::addReplace(int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_MONGOLIAN_SUPPLEMENT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">edits.h</td><td class="proto">void icu::Edits::addUnchanged(int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_NEWA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">edits.h</td><td class="proto">void icu::Edits::reset()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OSAGE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT_COMPONENTS</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGUT</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(LocalArray&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::LocalPointer(LocalPointer&lt; T &gt;&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoint(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_PLATFORM_HAS_WINUWP_API</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const Formattable&amp;, const NumberFormat&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UGraphemeClusterBreak::U_GCB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_openBinaryRules(const uint8_t*, int32_t, const UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_FEH</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">ubrk.h</td><td class="proto">int32_t ubrk_getBinaryRules(UBreakIterator*, uint8_t*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_NOON</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">ucasemap.h</td><td class="proto"><tt>#define</tt> UCASEMAP_OMIT_UNCHANGED_TEXT</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_AFRICAN_QAF</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> U_CHAR16_IS_TYPEDEF</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE_GAZ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_BASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_E_MODIFIER</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_GLUE_AFTER_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UWordBreakValues::U_WB_ZWJ</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_NO_SUBSTITUTE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_SUBSTITUTE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContextType::UDISPCTX_TYPE_SUBSTITUTE_HANDLING</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto"><tt>static</tt> UnicodeString icu::UnicodeString::fromUTF8(StringPiece)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_ADLAM</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_BHAIKSUKI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_HAN_WITH_BOPOMOFO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_JAMO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_MARCHEN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const uint16_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_NEWA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const wchar_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OSAGE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">UnicodeString&amp; icu::UnicodeString::operator=(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_SYMBOLS_EMOJI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 58</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in $rightVer.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(UnicodeString&amp;&amp;) U_NOEXCEPT</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 56</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">URestrictionLevel uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">USpoofCheckResult* uspoof_openCheckResult(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const std::nullptr_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer,,)</td><td class="">(missing)</td><td>
+<br>
+<span class=""><span></span>
+<br>
+<b class="bigwarn" title="A new API was introduced that was not tagged.">(untagged)</b></span></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const uint16_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">U_NAMESPACE_END int32_t uspoof_getCheckResultChecks(const USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const wchar_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">const USet* uspoof_getCheckResultNumerics(const USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(std::nullptr_t, int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> URestrictionLevel::USPOOF_UNDEFINED_RESTRICTIVE</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_CONFUSABLE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(wchar_t*, int32_t, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2(const USpoofChecker*, const UChar*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">unum.h</td><td class="proto">int32_t unum_formatDoubleForFields(const UNumberFormat*, double, UChar*, int32_t, UFieldPositionIterator*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UTF8(const USpoofChecker*, const char*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">upluralrules.h</td><td class="proto">UEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, USpoofCheckResult*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectWithFormat(const UPluralRules*, double, const UNumberFormat*, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">uspoof.h</td><td class="proto">void uspoof_closeCheckResult(USpoofCheckResult*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 58</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="other"></a>
-<h2>Other existing drafts in ICU 59</h2>
+<h2>Other existing drafts in ICU 58</h2>
 <div class="other">
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 58</th><th>ICU 59</th>
+<th>File</th><th>API</th><th>ICU 57</th><th>ICU 58</th>
 </tr>
 </THEAD>
 <tr class="row1">
 <td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::moveFrom(LocalPointer&lt; T &gt;&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft<br>ICU 56</td>
 </tr>
 <tr class="row1">
-<td class="file">measfmt.h</td><td class="proto">UnicodeString icu::MeasureFormat::getUnitDisplayName(const MeasureUnit&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
 </tr>
 <tr class="row0">
-<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilePerGallonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramPerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMillimolePerLiter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPartPerMillion(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::format(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">reldatefmt.h</td><td class="proto">UnicodeString&amp; icu::RelativeDateTimeFormatter::formatNumeric(double, URelativeDateTimeUnit, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">simpleformatter.h</td><td class="proto">SimpleFormatter&amp; icu::SimpleFormatter::operator=(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPattern(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">simpleformatter.h</td><td class="proto">UBool icu::SimpleFormatter::applyPatternMinMaxArguments(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString icu::SimpleFormatter::getTextWithNoArguments()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::format(const UnicodeString&amp;, const UnicodeString&amp;, const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndAppend(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">simpleformatter.h</td><td class="proto">UnicodeString&amp; icu::SimpleFormatter::formatAndReplace(const UnicodeString* const*, int32_t, UnicodeString&amp;, int32_t*, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto">UBiDiTransform* ubiditransform_open(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const SimpleFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_OFF</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiMirroring::UBIDI_MIRRORING_ON</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::SimpleFormatter(const UnicodeString&amp;, int32_t, int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_LOGICAL</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">simpleformatter.h</td><td class="proto">icu::SimpleFormatter::~SimpleFormatter()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto"><tt>enum</tt> UBiDiOrder::UBIDI_VISUAL</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">simpleformatter.h</td><td class="proto">int32_t icu::SimpleFormatter::getArgumentLimit()</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">ubiditransform.h</td><td class="proto">uint32_t ubiditransform_transform(UBiDiTransform*, const UChar*, int32_t, UChar*, int32_t, UBiDiLevel, UBiDiOrder, UBiDiLevel, UBiDiOrder, UBiDiMirroring, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER_BASE</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">ubiditransform.h</td><td class="proto">void ubiditransform_close(UBiDiTransform*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_MODIFIER</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_NO_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_PRESENTATION</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContext::UDISPCTX_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">udisplaycontext.h</td><td class="proto"><tt>enum</tt> UDisplayContextType::UDISPCTX_TYPE_SUBSTITUTE_HANDLING</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatField::UDAT_AM_PM_MIDNIGHT_NOON_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
 <td class="file">unistr.h</td><td class="proto">UnicodeString&amp; icu::UnicodeString::moveFrom(UnicodeString&amp;) U_NOEXCEPT</td><td class="" colspan="2" align="center">Draft<br>ICU 56</td>
 <td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">URestrictionLevel uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto">URelativeDateTimeFormatter* ureldatefmt_open(const char*, UNumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_DAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_FRIDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_HOUR</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MINUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_MONTH</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_QUARTER</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SATURDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SECOND</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row1">
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_SUNDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">USpoofCheckResult* uspoof_openCheckResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_THURSDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">U_NAMESPACE_END int32_t uspoof_getCheckResultChecks(const USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_TUESDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">const USet* uspoof_getCheckResultNumerics(const USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEDNESDAY</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_CONFUSABLE</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_WEEK</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2(const USpoofChecker*, const UChar*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeUnit::UDAT_REL_UNIT_YEAR</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UTF8(const USpoofChecker*, const char*, int32_t, USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter*, const UChar*, int32_t, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row0">
-<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check2UnicodeString(const USpoofChecker*, const icu::UnicodeString&amp;, USpoofCheckResult*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_format(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 <tr class="row1">
-<td class="file">uspoof.h</td><td class="proto">void uspoof_closeCheckResult(USpoofCheckResult*)</td><td class="" colspan="2" align="center">Draft<br>ICU 58</td>
+<td class="file">ureldatefmt.h</td><td class="proto">int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
+</tr>
+<tr class="row0">
+<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_close(URelativeDateTimeFormatter*)</td><td class="" colspan="2" align="center">Draft<br>ICU 57</td>
 </tr>
 </table>
 </div>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <p>
-<i><font size="-1">Contents generated by StableAPI tool on Wed Apr 05 23:17:58 UTC 2017<br>Copyright (C) 2017, International Business Machines Corporation, All Rights Reserved.</font></i>
+<i><font size="-1">Contents generated by StableAPI tool on Thu Sep 22 11:14:21 PDT 2016<br>Copyright (C) 2016, International Business Machines Corporation, All Rights Reserved.</font></i>
 </p>
 </body>
 </html>
diff --git a/LICENSE b/LICENSE
index c5295da..90be7cd 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
 
-Copyright © 1991-2017 Unicode, Inc. All rights reserved.
+Copyright © 1991-2016 Unicode, Inc. All rights reserved.
 Distributed under the Terms of Use in http://www.unicode.org/copyright.html
 
 Permission is hereby granted, free of charge, to any person obtaining
index fd770ee..ed27920 100644 (file)
@@ -130,12 +130,436 @@ icu/source/io/io.vcxproj
 icu/source/io/io.vcxproj.filters
 icu/source/data/makedata.vcxproj.filters
 icu/source/data/makedata.vcxproj
-icu/source/data/makedata_uwp.vcxproj
+icu/source/data/unit/fil_PH.txt
+icu/source/data/unit/kok.txt
+icu/source/data/unit/zh_Hans_HK.txt
+icu/source/data/unit/ga.txt
+icu/source/data/unit/br.txt
+icu/source/data/unit/en_VC.txt
+icu/source/data/unit/en_BS.txt
+icu/source/data/unit/sr_Latn_YU.txt
+icu/source/data/unit/th_TH_TRADITIONAL.txt
+icu/source/data/unit/en_CM.txt
+icu/source/data/unit/te.txt
+icu/source/data/unit/ee.txt
+icu/source/data/unit/sr_Latn_RS.txt
+icu/source/data/unit/zu.txt
+icu/source/data/unit/nb_NO.txt
+icu/source/data/unit/ebu.txt
+icu/source/data/unit/luo.txt
+icu/source/data/unit/en_VG.txt
+icu/source/data/unit/ksh.txt
+icu/source/data/unit/en_UG.txt
+icu/source/data/unit/es_CO.txt
+icu/source/data/unit/en_SS.txt
+icu/source/data/unit/dua.txt
+icu/source/data/unit/kam.txt
+icu/source/data/unit/en_SX.txt
+icu/source/data/unit/th.txt
+icu/source/data/unit/en_MT.txt
+icu/source/data/unit/no_NO_NY.txt
+icu/source/data/unit/mua.txt
+icu/source/data/unit/kl.txt
+icu/source/data/unit/es_BR.txt
+icu/source/data/unit/hr.txt
+icu/source/data/unit/en_GI.txt
+icu/source/data/unit/mas.txt
+icu/source/data/unit/lg.txt
+icu/source/data/unit/eo.txt
+icu/source/data/unit/sk.txt
+icu/source/data/unit/yo.txt
+icu/source/data/unit/pa_IN.txt
+icu/source/data/unit/sr_XK.txt
+icu/source/data/unit/sh_BA.txt
+icu/source/data/unit/es_PR.txt
+icu/source/data/unit/sr_Latn_CS.txt
+icu/source/data/unit/en_NA.txt
+icu/source/data/unit/tzm.txt
+icu/source/data/unit/ca.txt
+icu/source/data/unit/ru.txt
+icu/source/data/unit/is.txt
+icu/source/data/unit/twq.txt
+icu/source/data/unit/si.txt
+icu/source/data/unit/chr.txt
+icu/source/data/unit/bez.txt
+icu/source/data/unit/en_KE.txt
+icu/source/data/unit/pt_CH.txt
+icu/source/data/unit/zh_Hant_HK.txt
+icu/source/data/unit/en_ZA.txt
+icu/source/data/unit/en_JE.txt
+icu/source/data/unit/en_TC.txt
+icu/source/data/unit/in_ID.txt
+icu/source/data/unit/jmc.txt
+icu/source/data/unit/zh_Hant_MO.txt
+icu/source/data/unit/hu.txt
+icu/source/data/unit/pa_Arab_PK.txt
+icu/source/data/unit/pa.txt
+icu/source/data/unit/en_NH.txt
+icu/source/data/unit/uz_Arab.txt
+icu/source/data/unit/zh_Hant.txt
+icu/source/data/unit/en_TK.txt
+icu/source/data/unit/qu.txt
+icu/source/data/unit/sr_BA.txt
+icu/source/data/unit/in.txt
+icu/source/data/unit/en_PW.txt
+icu/source/data/unit/dyo.txt
+icu/source/data/unit/be.txt
+icu/source/data/unit/sr_Cyrl_RS.txt
+icu/source/data/unit/gsw.txt
+icu/source/data/unit/en_MO.txt
+icu/source/data/unit/id.txt
+icu/source/data/unit/shi.txt
+icu/source/data/unit/ak.txt
+icu/source/data/unit/yav.txt
+icu/source/data/unit/shi_Latn.txt
+icu/source/data/unit/es_VE.txt
+icu/source/data/unit/sbp.txt
+icu/source/data/unit/iw_IL.txt
+icu/source/data/unit/uz_AF.txt
+icu/source/data/unit/es_UY.txt
+icu/source/data/unit/ti.txt
+icu/source/data/unit/xog.txt
+icu/source/data/unit/guz.txt
+icu/source/data/unit/shi_Tfng.txt
+icu/source/data/unit/sah.txt
+icu/source/data/unit/mo.txt
+icu/source/data/unit/es_EC.txt
+icu/source/data/unit/pt_GQ.txt
+icu/source/data/unit/en_AG.txt
+icu/source/data/unit/fr.txt
+icu/source/data/unit/gv.txt
+icu/source/data/unit/es_PY.txt
+icu/source/data/unit/th_TH.txt
+icu/source/data/unit/az.txt
+icu/source/data/unit/bs_Latn.txt
+icu/source/data/unit/en_SG.txt
+icu/source/data/unit/sr_Cyrl_XK.txt
+icu/source/data/unit/sv.txt
+icu/source/data/unit/so.txt
+icu/source/data/unit/en_DG.txt
+icu/source/data/unit/mgh.txt
+icu/source/data/unit/gd.txt
+icu/source/data/unit/en_DK.txt
+icu/source/data/unit/en_ZW.txt
+icu/source/data/unit/en_SL.txt
+icu/source/data/unit/it.txt
+icu/source/data/unit/luy.txt
+icu/source/data/unit/sw.txt
+icu/source/data/unit/ar.txt
+icu/source/data/unit/fur.txt
+icu/source/data/unit/en_MG.txt
+icu/source/data/unit/rwk.txt
+icu/source/data/unit/es_US.txt
+icu/source/data/unit/naq.txt
+icu/source/data/unit/de_CH.txt
+icu/source/data/unit/sn.txt
+icu/source/data/unit/en_NR.txt
+icu/source/data/unit/mk.txt
+icu/source/data/unit/cgg.txt
+icu/source/data/unit/lrc.txt
+icu/source/data/unit/sr_Cyrl_BA.txt
+icu/source/data/unit/kw.txt
+icu/source/data/unit/zh_Hans.txt
+icu/source/data/unit/sh_YU.txt
+icu/source/data/unit/en_001.txt
+icu/source/data/unit/en_MS.txt
+icu/source/data/unit/ast.txt
+icu/source/data/unit/pa_Guru_IN.txt
+icu/source/data/unit/ka.txt
+icu/source/data/unit/wae.txt
+icu/source/data/unit/lt.txt
+icu/source/data/unit/en_NF.txt
+icu/source/data/unit/ig.txt
+icu/source/data/unit/es_PE.txt
+icu/source/data/unit/kea.txt
+icu/source/data/unit/uz.txt
+icu/source/data/unit/uz_Latn.txt
+icu/source/data/unit/en_CA.txt
+icu/source/data/unit/uz_Latn_UZ.txt
+icu/source/data/unit/pl.txt
+icu/source/data/unit/sr_Latn_BA.txt
+icu/source/data/unit/en_KI.txt
+icu/source/data/unit/uz_Cyrl.txt
+icu/source/data/unit/en_MY.txt
+icu/source/data/unit/fr_HT.txt
+icu/source/data/unit/sh_CS.txt
+icu/source/data/unit/rw.txt
+icu/source/data/unit/en_PN.txt
+icu/source/data/unit/ja.txt
+icu/source/data/unit/brx.txt
+icu/source/data/unit/de.txt
+icu/source/data/unit/en_BZ.txt
+icu/source/data/unit/cs.txt
+icu/source/data/unit/mr.txt
+icu/source/data/unit/en_ZM.txt
+icu/source/data/unit/es_NI.txt
+icu/source/data/unit/en_CX.txt
+icu/source/data/unit/en_BB.txt
+icu/source/data/unit/en_SZ.txt
+icu/source/data/unit/saq.txt
+icu/source/data/unit/en_DM.txt
+icu/source/data/unit/bem.txt
+icu/source/data/unit/en_IL.txt
+icu/source/data/unit/ii.txt
+icu/source/data/unit/vi.txt
+icu/source/data/unit/zh_TW.txt
+icu/source/data/unit/no_NO.txt
+icu/source/data/unit/kab.txt
+icu/source/data/unit/yue.txt
+icu/source/data/unit/en_DE.txt
+icu/source/data/unit/kk.txt
+icu/source/data/unit/tr.txt
+icu/source/data/unit/en_CK.txt
+icu/source/data/unit/shi_MA.txt
+icu/source/data/unit/fil.txt
+icu/source/data/unit/zgh.txt
+icu/source/data/unit/en.txt
+icu/source/data/unit/en_KN.txt
+icu/source/data/unit/en_MW.txt
+icu/source/data/unit/my.txt
+icu/source/data/unit/pt_PT.txt
+icu/source/data/unit/bs.txt
+icu/source/data/unit/sv_FI.txt
+icu/source/data/unit/en_GY.txt
+icu/source/data/unit/fr_CA.txt
+icu/source/data/unit/sr_Cyrl_YU.txt
+icu/source/data/unit/pt_LU.txt
+icu/source/data/unit/fi.txt
+icu/source/data/unit/en_IE.txt
+icu/source/data/unit/sr.txt
+icu/source/data/unit/vai_LR.txt
+icu/source/data/unit/bg.txt
+icu/source/data/unit/bs_Cyrl.txt
+icu/source/data/unit/ky.txt
+icu/source/data/unit/sr_CS.txt
+icu/source/data/unit/nyn.txt
+icu/source/data/unit/sr_ME.txt
+icu/source/data/unit/en_PK.txt
+icu/source/data/unit/af.txt
+icu/source/data/unit/mer.txt
+icu/source/data/unit/nl.txt
+icu/source/data/unit/en_IN.txt
+icu/source/data/unit/en_NL.txt
+icu/source/data/unit/ne.txt
+icu/source/data/unit/sr_YU.txt
+icu/source/data/unit/nus.txt
+icu/source/data/unit/gu.txt
+icu/source/data/unit/am.txt
+icu/source/data/unit/vai_Vaii_LR.txt
+icu/source/data/unit/en_HK.txt
+icu/source/data/unit/kn.txt
+icu/source/data/unit/es_SV.txt
+icu/source/data/unit/et.txt
+icu/source/data/unit/pa_Arab.txt
+icu/source/data/unit/az_AZ.txt
+icu/source/data/unit/mn.txt
+icu/source/data/unit/en_TT.txt
+icu/source/data/unit/en_NU.txt
+icu/source/data/unit/es.txt
+icu/source/data/unit/da.txt
+icu/source/data/unit/en_SH.txt
+icu/source/data/unit/en_CC.txt
+icu/source/data/unit/ug.txt
+icu/source/data/unit/en_GB.txt
+icu/source/data/unit/pt_AO.txt
+icu/source/data/unit/es_BO.txt
+icu/source/data/unit/or.txt
+icu/source/data/unit/nb.txt
+icu/source/data/unit/lag.txt
+icu/source/data/unit/es_GT.txt
+icu/source/data/unit/sr_RS.txt
+icu/source/data/unit/en_AU.txt
+icu/source/data/unit/zh_Hans_SG.txt
+icu/source/data/unit/vai_Vaii.txt
+icu/source/data/unit/sr_Cyrl.txt
+icu/source/data/unit/pa_PK.txt
+icu/source/data/unit/bn.txt
+icu/source/data/unit/cy.txt
+icu/source/data/unit/es_DO.txt
+icu/source/data/unit/fy.txt
+icu/source/data/unit/en_VU.txt
+icu/source/data/unit/en_ER.txt
+icu/source/data/unit/sq.txt
+icu/source/data/unit/lv.txt
+icu/source/data/unit/to.txt
+icu/source/data/unit/bas.txt
+icu/source/data/unit/ur.txt
+icu/source/data/unit/ro_MD.txt
+icu/source/data/unit/ksf.txt
+icu/source/data/unit/se.txt
+icu/source/data/unit/om.txt
+icu/source/data/unit/rm.txt
+icu/source/data/unit/en_IM.txt
+icu/source/data/unit/kde.txt
+icu/source/data/unit/zh_CN.txt
+icu/source/data/unit/es_CU.txt
+icu/source/data/unit/en_GG.txt
+icu/source/data/unit/en_RW.txt
+icu/source/data/unit/ro.txt
+icu/source/data/unit/nmg.txt
+icu/source/data/unit/dz.txt
+icu/source/data/unit/en_AT.txt
+icu/source/data/unit/en_SB.txt
+icu/source/data/unit/pa_Guru.txt
+icu/source/data/unit/en_FJ.txt
+icu/source/data/unit/es_PA.txt
+icu/source/data/unit/asa.txt
+icu/source/data/unit/ff.txt
+icu/source/data/unit/zh_Hans_CN.txt
+icu/source/data/unit/root.txt
+icu/source/data/unit/en_BM.txt
+icu/source/data/unit/en_WS.txt
+icu/source/data/unit/ja_JP_TRADITIONAL.txt
+icu/source/data/unit/en_FI.txt
+icu/source/data/unit/ewo.txt
+icu/source/data/unit/pt_GW.txt
+icu/source/data/unit/ln.txt
+icu/source/data/unit/zh_HK.txt
+icu/source/data/unit/jgo.txt
+icu/source/data/unit/dje.txt
+icu/source/data/unit/en_BW.txt
+icu/source/data/unit/es_CR.txt
+icu/source/data/unit/pt_CV.txt
+icu/source/data/unit/es_419.txt
+icu/source/data/unit/ms.txt
+icu/source/data/unit/ja_JP.txt
+icu/source/data/unit/fa.txt
+icu/source/data/unit/en_KY.txt
+icu/source/data/unit/en_CH.txt
+icu/source/data/unit/en_PG.txt
+icu/source/data/unit/he_IL.txt
+icu/source/data/unit/mg.txt
+icu/source/data/unit/as.txt
+icu/source/data/unit/smn.txt
+icu/source/data/unit/bs_BA.txt
+icu/source/data/unit/lo.txt
+icu/source/data/unit/en_AI.txt
+icu/source/data/unit/sg.txt
+icu/source/data/unit/he.txt
+icu/source/data/unit/es_MX.txt
+icu/source/data/unit/no.txt
+icu/source/data/unit/bo.txt
+icu/source/data/unit/ml.txt
+icu/source/data/unit/gl.txt
+icu/source/data/unit/ps.txt
+icu/source/data/unit/en_JM.txt
+icu/source/data/unit/teo.txt
+icu/source/data/unit/en_LC.txt
+icu/source/data/unit/nds.txt
+icu/source/data/unit/sr_Cyrl_CS.txt
+icu/source/data/unit/agq.txt
+icu/source/data/unit/pt.txt
+icu/source/data/unit/es_CL.txt
+icu/source/data/unit/bs_Latn_BA.txt
+icu/source/data/unit/bm.txt
+icu/source/data/unit/nn.txt
+icu/source/data/unit/nnh.txt
+icu/source/data/unit/zh.txt
+icu/source/data/unit/dav.txt
+icu/source/data/unit/ha.txt
+icu/source/data/unit/tl_PH.txt
+icu/source/data/unit/sh.txt
+icu/source/data/unit/tl.txt
+icu/source/data/unit/khq.txt
+icu/source/data/unit/lkt.txt
+icu/source/data/unit/ks.txt
+icu/source/data/unit/pt_ST.txt
+icu/source/data/unit/en_SI.txt
+icu/source/data/unit/uk.txt
+icu/source/data/unit/ta.txt
+icu/source/data/unit/fo.txt
+icu/source/data/unit/shi_Tfng_MA.txt
+icu/source/data/unit/os.txt
+icu/source/data/unit/ur_IN.txt
+icu/source/data/unit/lb.txt
+icu/source/data/unit/es_HN.txt
+icu/source/data/unit/hsb.txt
+icu/source/data/unit/en_GH.txt
+icu/source/data/unit/zh_Hans_MO.txt
+icu/source/data/unit/az_Latn_AZ.txt
+icu/source/data/unit/en_TZ.txt
+icu/source/data/unit/mzn.txt
+icu/source/data/unit/zh_SG.txt
+icu/source/data/unit/en_150.txt
+icu/source/data/unit/lu.txt
+icu/source/data/unit/el.txt
+icu/source/data/unit/en_CY.txt
+icu/source/data/unit/uz_Arab_AF.txt
+icu/source/data/unit/kln.txt
+icu/source/data/unit/seh.txt
+icu/source/data/unit/mt.txt
+icu/source/data/unit/ckb.txt
+icu/source/data/unit/km.txt
+icu/source/data/unit/ksb.txt
+icu/source/data/unit/en_MU.txt
+icu/source/data/unit/vai_Latn.txt
+icu/source/data/unit/en_SD.txt
+icu/source/data/unit/en_NG.txt
+icu/source/data/unit/en_FM.txt
+icu/source/data/unit/sr_Latn_ME.txt
+icu/source/data/unit/haw.txt
+icu/source/data/unit/yi.txt
+icu/source/data/unit/en_LR.txt
+icu/source/data/unit/vun.txt
+icu/source/data/unit/en_FK.txt
+icu/source/data/unit/az_Cyrl.txt
+icu/source/data/unit/mfe.txt
+icu/source/data/unit/zh_Hant_TW.txt
+icu/source/data/unit/es_AR.txt
+icu/source/data/unit/en_PH.txt
+icu/source/data/unit/pt_MZ.txt
+icu/source/data/unit/hy.txt
+icu/source/data/unit/dsb.txt
+icu/source/data/unit/en_GD.txt
+icu/source/data/unit/en_SE.txt
+icu/source/data/unit/ki.txt
+icu/source/data/unit/ko.txt
+icu/source/data/unit/en_NZ.txt
+icu/source/data/unit/iw.txt
+icu/source/data/unit/rn.txt
+icu/source/data/unit/en_BE.txt
+icu/source/data/unit/en_RH.txt
+icu/source/data/unit/hi.txt
+icu/source/data/unit/en_TO.txt
+icu/source/data/unit/id_ID.txt
+icu/source/data/unit/nd.txt
+icu/source/data/unit/pt_TL.txt
+icu/source/data/unit/vai.txt
+icu/source/data/unit/mgo.txt
+icu/source/data/unit/en_LS.txt
+icu/source/data/unit/ses.txt
+icu/source/data/unit/nn_NO.txt
+icu/source/data/unit/eu.txt
+icu/source/data/unit/en_SC.txt
+icu/source/data/unit/zh_MO.txt
+icu/source/data/unit/sl.txt
+icu/source/data/unit/sr_Latn.txt
+icu/source/data/unit/ce.txt
+icu/source/data/unit/en_IO.txt
+icu/source/data/unit/en_GM.txt
+icu/source/data/unit/en_TV.txt
+icu/source/data/unit/rof.txt
+icu/source/data/unit/kkj.txt
+icu/source/data/unit/pt_MO.txt
+icu/source/data/unit/az_Latn.txt
+icu/source/data/unit/uz_UZ.txt
 icu/source/data/unidata/confusablesWholeScript.txt
 icu/source/data/unidata/FractionalUCA.txt
 icu/source/data/unidata/confusables.txt
 icu/source/data/unidata/changes.txt
 icu/source/data/unidata/UCARules.txt
+icu/source/data/misc/windowsZones.txt
+icu/source/data/misc/keyTypeData.txt
+icu/source/data/misc/supplementalData.txt
+icu/source/data/misc/dayPeriods.txt
+icu/source/data/misc/metaZones.txt
+icu/source/data/misc/likelySubtags.txt
+icu/source/data/misc/numberingSystems.txt
+icu/source/data/misc/metadata.txt
+icu/source/data/misc/currencyNumericCodes.txt
+icu/source/data/misc/genderList.txt
+icu/source/data/misc/timezoneTypes.txt
+icu/source/data/misc/plurals.txt
 icu/source/tools/gensprep/gensprep.vcxproj
 icu/source/tools/gensprep/gensprep.vcxproj.filters
 icu/source/tools/genbrk/genbrk.vcxproj.filters
@@ -175,10 +599,8 @@ icu/source/stubdata/stubdata.vcxproj.filters
 icu/source/stubdata/stubdata.vcxproj
 icu/source/i18n/i18n.vcxproj
 icu/source/i18n/i18n.vcxproj.filters
-icu/source/i18n/i18n_uwp.vcxproj
 icu/source/common/common.vcxproj.filters
 icu/source/common/common.vcxproj
-icu/source/common/common_uwp.vcxproj
 icu/source/extra/uconv/uconv.vcxproj.filters
 icu/source/extra/uconv/uconv.vcxproj
 icu/source/extra/uconv/resources/fr.txt
index 2484672..25591ce 100644 (file)
@@ -11,8 +11,8 @@
     The ICU license is now in plain text format, see <a href="./LICENSE">LICENSE</a>.
 Update links and software appropriately.
   </p>
-  <i>© 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html</i> 
-  <i>© 1995-2016 International Business Machines Corporation and others</i>
+  <i>Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html</i> 
+  <i>Copyright (c) 1995-2016 International Business Machines Corporation and others</i>
 
 </body>
 </html>
diff --git a/packaging/rpm/icu.spec b/packaging/rpm/icu.spec
new file mode 100644 (file)
index 0000000..2edb595
--- /dev/null
@@ -0,0 +1,230 @@
+# Copyright (C) 2016 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#   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
+
index a497674..6327fed 100644 (file)
@@ -3,7 +3,7 @@
 
 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
   <head>
-    <title>ReadMe for ICU 59.1</title>
+    <title>ReadMe for ICU 58.2</title>
     <meta name="COPYRIGHT" content=
     "Copyright (C) 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html"/>
     <!-- meta name="COPYRIGHT" content=
@@ -32,7 +32,7 @@
       International Components for Unicode<br/>
       <span class="only-rc">Release Candidate</span>
       <span class="only-milestone">(Milestone Release)</span>
-      <abbr title="International Components for Unicode">ICU</abbr> 59.1 ReadMe
+      <abbr title="International Components for Unicode">ICU</abbr> 58.2 ReadMe
     </h1>
 
     <!-- Shouldn't need to comment/uncomment this paragraph, just change the body class -->
@@ -44,7 +44,7 @@
     <p class="note only-rc">This is a release candidate version of ICU4C.
       It is not recommended for production use.</p>
 
-    <p>Last updated: 2017-Apr-12<br/>
+    <p>Last updated: 2016-Dec-8<br/>
       Copyright &copy; 2016 and later: Unicode, Inc. and others. License &amp; terms of use:
       <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>
       Copyright &copy; 1997-2016 International Business Machines Corporation and others.
@@ -59,7 +59,9 @@
 
       <li><a href="#GettingStarted">Getting Started</a></li>
 
-      <li><a href="#News">What Is New In This Release?</a></li>
+      <li><a href="#News">What Is New In This release?</a></li>
+
+      <li><a href="#RecentPreviousChanges">Changes in recent previous releases</a></li>
 
       <li><a href="#Download">How To Download the Source Code</a></li>
 
     </table>
 
     <p><strong>Important:</strong> Please make sure you understand the <a href=
-    "http://source.icu-project.org/repos/icu/trunk/icu4c/LICENSE">Copyright and License Information</a>.</p>
+    "http://source.icu-project.org/repos/icu/icu/trunk/LICENSE">Copyright and License Information</a>.</p>
+
+    <h2><a name="News" href="#News" id="News">What is new in this
+    release?</a></h2>
+
+    <h3>New License</h3>
+    <p>This is the first release of ICU since the project
+       <a href="http://blog.unicode.org/2016/05/icu-joins-unicode-consortium.html">joined
+       the Unicode Consortium</a>. The license has changed to the
+       <a href="http://www.unicode.org/copyright.html#License">Unicode license</a>
+       (which is similar to the ICU 1.8.1-57 license).</p>
+
+    <h3>Layout Engine Removed</h3>
+    <p>The LayoutEngine was deprecated in ICU 54 and has now been removed.
+    see <a href='http://userguide.icu-project.org/layoutengine'>the
+    User's Guide</a> for more details and migration recommendations.
+    </p>
+    <p>
+      Note that the ParagraphLayout (layoutex) library is not deprecated.
+      There is a new option, <tt>--enable-layoutex</tt> which will build
+      the ParagraphLayout library using <a href="http://harfbuzz.org">HarfBuzz</a>
+      instead of ICU as the layout engine. See <a href="http://userguide.icu-project.org/layoutengine">
+        the users' guide</a> for more information about how to build.
+    </p>
+    <p>
+      The options <tt>--disable-layout</tt>
+      or <tt>--with-layout=false</tt> are being retained for
+      compatibility, but have no effect.
+    </p>
 
+    <h3>Changes in CLDR 30 data</h3>
+    <ul>
+       <li>For some combinations of numbering system (arab, arabext, latn) and/or locale
+               (ar, fa, he), there were changes to the bidirectional control characters used
+               with certain symbols (percent, minus, plus), and changes to number patterns
+               (currency and/or percent, including addition of bidirectional control
+               characters in some cases).</li>
+       <li>The bidirectional controls used for such purposes now include U+061C ARABIC
+               LETTER MARK (ALM), which requires use of the bidirectional algorithm from
+               Unicode 6.3 or later.</li>
+       <li>The time separator for Norwegian locales (nb, nn) was changed to be ‘:’
+               throughout.</li>
+       <li>For more information on CLDR 30 changes, see
+               <a href="http://cldr.unicode.org/index/downloads/cldr-30">CLDR 30 download
+               page</a>.</li>
+    </ul>
 
-    <h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>
+    <h3>Windows build changes</h3>
+    <p>Windows builds using Visual Studio now require Visual Studio 2015; otherwise you can
+       use cygwin or similar to build for Windows.</p>
 
-    <p>See the <a href="http://site.icu-project.org/download/59">ICU 59 download page</a>
-    for an overview of this release, important changes, new features, bug fixes, known issues,
-    changes to supported platforms and build environments,
-    and migration issues for existing applications migrating from previous ICU releases.</p>
+    <h3>API Changes</h3>
+    <p>See the <a href="APIChangeReport.html">API Change Report</a> for a complete
+      list of APIs added, removed, or changed in this release.</p>
 
-    <p>See the <a href="APIChangeReport.html">API Change Report</a> for a complete list of
-    APIs added, removed, or changed in this release.</p>
+    <!-- standing item -->
+    <h3>Full release notes and the latest updates</h3>
+    <p>The previous list concentrates on <em>changes that affect existing
+    applications migrating from previous ICU releases</em>.
+    For more news about this release, as well as late-breaking news, see the
+    <a href="http://site.icu-project.org/download/57">ICU download page</a>.</p>
 
-    <p><a name="RecentPreviousChanges" id="RecentPreviousChanges"></a>For
-    changes in previous releases, see the
-    main <a href="http://site.icu-project.org/download">ICU download page</a>
-    with its version-specific subpages.</p>
+    <h3>Upcoming changes</h3>
+    <p>Please note the following changes planned for an upcoming ICU4C release (likely ICU 59):</p>
+    <ul>
+       <li>Compiler support for C++11 will be required.</li>
+       <li>Support for Windows XP will be removed.</li>
+    </ul>
+
+    <h2><a name="RecentPreviousChanges" href="#RecentPreviousChanges" id="RecentPreviousChanges">Changes in recent
+    previous releases</a></h2>
+
+    <!-- ICU 57 items -->
+    <h3>ICU 57: Changes related to new CLDR data and specifications</h3>
+    <ul>
+       <li>Time formats may include the new day period characters b, B, and
+       these may produced in response to the new skeleton character C used
+       with DateTimePatternGenerator.</li>
+       <li>In day period rules, the use of "after" has been deprecated.</li>
+       <li>The measurement unit "proportion-karat" has been renamed to
+       "concentr-karat".</li>
+    </ul>
 
+    <!-- ICU 56 items -->
+    <h3>ICU 56: COLON withdrawn as date/time pattern character</h3>
+    <p>In ICU 55, COLON was introduced as a date/time pattern character
+      to be replaced by the value of the timeSeparator for the number
+      system being used; a corresponding new UDateFormatField
+      UDAT_TIME_SEPARATOR_FIELD was added. Use of COLON caused some
+      backwards compatibility problems, so it is being withdrawn as a
+      pattern character. However, UDAT_TIME_SEPARATOR_FIELD remains
+      as does the mechanism for replacing a pattern character with the
+      value of the timeSeparator; a new pattern character may be
+      assigned in the future.</p>
+
+    <h3>ICU 56: ICU Plugins are disabled by default</h3>
+    <p>ICU Plugins are now disabled by default. They may be enabled
+      with the configure option
+      <tt>--enable-plugins</tt> or by means of
+      <tt>#define UCONFIG_ENABLE_PLUGINS</tt>.
+       </p>
+
+    <h3>ICU 55: Deprecations in PluralRules (plurrule.h)</h3>
+    <p>The following PluralRules methods never had an implementation
+      but were inadvertently marked @stable; they have now been
+      deprecated. [#<a href="http://bugs.icu-project.org/trac/ticket/10759">10759</a>]</p>
+    <ul>
+      <li><tt>double icu::PluralRules::getUniqueKeywordValue(const UnicodeString&amp;)</tt></li>
+      <li><tt>int32_t icu::PluralRules::getAllKeywordValues(const UnicodeString&amp;, double*, int32_t, UErrorCode&amp;)</tt></li>
+    </ul>
+
+    <h3>ICU 55: Deprecate uidna.h functions for IDNA2003 support</h3>
+    <p>The IDNA2003 API has been deprecated; use the API for IDNA2008 / UTS #46 instead via
+      uidna_openUTS46() or class IDNA [#<a href="http://bugs.icu-project.org/trac/ticket/8477">8477</a>].
+      This applies to the following:</p>
+    <ul>
+      <li><tt>enum  value UIDNA_ALLOW_UNASSIGNED</tt></li>
+      <li><tt>uidna_IDNToASCII</tt></li>
+      <li><tt>uidna_IDNToUnicode</tt></li>
+      <li><tt>uidna_compare</tt></li>
+      <li><tt>uidna_toASCII</tt></li>
+      <li><tt>uidna_toUnicode</tt></li>
+    </ul>
+
+    <h3>ICU 54: Deprecation of Collation Short Strings</h3>
+    <p>The collation short naming scheme and its API functions are deprecated.
+    Use ucol_open() with language tag collation keywords instead (see <a href="http://userguide.icu-project.org/collation/api">Collation API Details</a>). For example, <code>ucol_open("de-u-co-phonebk-ka-shifted", &amp;errorCode)</code>
+     for German Phonebook order with "ignore punctuation" mode.</p>
+
+    <h3>ICU 54: Deprecation of UCOL_TAILORINGS_VERSION</h3>
+    <p>This was originally intended to be the version of collation tailorings,
+    but that information is actually in the tailorings data and this
+    constant has always been (and now will continue to be) 1.</p>
+
+    <!-- ICU 53 items -->
+    <h3>ICU 53: Deprecation of TimeUnitFormat</h3>
+    <p>The TimeUnitFormat and its methods were actually deprecated in ICU 53 and the
+    class as a whole was tagged as deprecated in that release, but the status tags for
+    the individual methods did not correctly indicate the deprecated status; they
+    do as of ICU 54. Use the MeasureFormat class and its methods instead.</p>
+
+    <!-- end of What's New items -->
 
     <h2><a name="Download" href="#Download" id="Download">How To Download the
     Source Code</a></h2>
             <li><b>brkitr/</b> Data files for character, word, sentence, title
             casing and line boundary analysis.</li>
 
-            <li><b>coll/</b> Data for collation tailorings. The makefile
-            <b>colfiles.mk</b> contains the list of resource bundle files.</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. Some of the locale data is split out into the type-specific
-            directories curr, lang, region, unit, and zone, described below.</li>
-
-            <li><b>curr/</b> Locale data for currency symbols and names (including
-            plural forms), with its own makefile <b>resfiles.mk</b>.</li>
-
-            <li><b>lang/</b> Locale data for names of languages, scripts, and locale
-            key names and values, with its own makefile <b>resfiles.mk</b>.</li>
-
-            <li><b>region/</b> Locale data for names of regions, with its own
-            makefile <b>resfiles.mk</b>.</li>
-
-            <li><b>unit/</b> Locale data for measurement unit patterns and names, 
-            with its own makefile <b>resfiles.mk</b>.</li>
-
-            <li><b>zone/</b> Locale data for time zone names, with its own
-            makefile <b>resfiles.mk</b>.</li>
+            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
             information.</li>
 
             <li><b>misc/</b> The misc directory contains other data files which
-            did not fit into the above categories, including time zone
-            information, region-specific data, and other data derived from CLDR
-            supplemental data.</li>
+            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>
         source file tree clean and have build output files written to
         a different location. This is called an "out-of-source build".
         Simply invoke the configure script from the target location:
-<pre>~/icu$ svn export http://source.icu-project.org/repos/icu/trunk/icu4c
+<pre>~/icu$ svn export http://source.icu-project.org/repos/icu/icu/trunk
 ~/icu$ mkdir trunk-dev
 ~/icu$ cd trunk-dev
 ~/icu/trunk-dev$ ../trunk/source/runConfigureICU Linux
     <ul>
       <li>Microsoft Windows</li>
 
-      <li>Microsoft Visual C++ (part of <a href="https://www.visualstudio.com/">Visual Studio</a>) (see the ICU download page for the currently compatible version)</li>
-      
-      <li><i><b>Optional:</b></i> A version of the <a href="https://developer.microsoft.com/windows/downloads">Windows 10 SDK</a> (if you want to build the UWP projects)</li>
+      <li>Microsoft Visual C++ (see the ICU download page for the currently compatible version)</li>
     </ul>
         <p class="note"><a href="#HowToBuildCygwin">Cygwin</a> is required if using a version of MSVC other than the one
         compatible with the supplied project files or if other compilers are used to build ICU. (e.g. GCC)</p>
       "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
       build from the command line instead.</li>
 
-      <li>You may need to re-target the UWP projects to the version of the SDK that you have installed. In Visual Studio you can
-      right-click on the UWP projects and select the option 'Retarget SDK Version'. Note: You do not need to have a copy of 
-      the Windows 10 SDK installed in order to build the non-UWP projects in Visual Studio. If the SDK is not installed then the
-      UWP projects will simply not be loaded.</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>
 
     "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 to build the 32-bit Release version:
-    <code>'devenv.com <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Release|Win32"'</code>.
-    Or to build the 64-bit Release version from the command line: 
-    <code>'devenv.com <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Release|x64"'</code>.
-    <br />You can also use Cygwin with this compiler to build ICU, and you can refer to the <a href=
+    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>
 
     <ul>
       <li>Microsoft Windows</li>
 
-      <li>Microsoft Visual C++ (from Visual Studio 2015 or newer, when gcc isn't used).</li>
+      <li>Microsoft Visual C++ (when gcc isn't used).</li>
 
       <li>
         Cygwin with the following installed:
       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.<br />For example:<br />
-      "<tt>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat</tt>"
-      can be used for 32-bit builds <strong>or</strong> <br />
-      "<tt>C:\Program Files (x86)\Microsoft Visual Studio 14\VC\bin\x86_amd64\vcvarsx86_amd64.bat</tt>"
-      can be used for 64-bit builds on Windows x64.</li>
+      you need to run vcvars32.bat.<br />For example:<br />"<tt>C:\Program Files\Microsoft
+      Visual Studio 8\VC\bin\vcvars32.bat</tt>" can be used for 32-bit builds
+      <strong>or</strong> <br />"<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
       configure option.</li>
 
       <li>The latest versions of z/OS use <a
-      href="https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.cbcux01/oebind6.htm">XPLINK
+      href="http://www.ibm.com/support/docview.wss?uid=swg2120240">XPLINK
       version (C128) of the C++ standard library</a> by default. You may see <a
-      href="https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.cbcux01/oebind5.htm">an
+      href="http://www.ibm.com/support/docview.wss?uid=swg21376279">an
       error</a> when running with XPLINK disabled. To avoid this error,
       set the following environment variable or similar:
 
@@ -1307,7 +1405,7 @@ cd ../../..</samp></pre>
       <li>Test ICU. <pre><samp>gmake check</samp></pre>
         (The <tt> QIBM_MULTI_THREADED=Y</tt> flag will be automatically applied to intltest -
           you can look at the <a href=
-      "https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzahw/rzahwceeco.htm">
+      "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>
@@ -1559,7 +1657,7 @@ gnumake</pre>
     <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
-    SUn Solaris document available from Oracle. Most notably, pay strict attention to the
+    document from Sun Microsystems. Most notably, pay strict attention to the
     following statements from Sun:</p>
 
     <blockquote>
@@ -1573,15 +1671,10 @@ gnumake</pre>
     <p>Failure to do this may cause spurious lock conflicts, recursive mutex
     failure, and deadlock.</p>
 
-    <p>Source: "<i>Multithreaded Programming Guide, Compiling and
-    Debugging</i>", Sun Microsystems, 2002 <br />
-     <a href=
-    "https://docs.oracle.com/cd/E19683-01/806-6867/compile-74765/index.html">https://docs.oracle.com/cd/E19683-01/806-6867/compile-74765/index.html</a></p>
-
-    <p>Note, a version of that chapter from a 2008 document update covering both Solaris 9
-    and Solaris 10 is available here:<br />
+    <p>Source: "<i>Solaris Multithreaded Programming Guide, Compiling and
+    Debugging</i>", Sun Microsystems, Inc., Apr 2004<br />
      <a href=
-    "http://docs.oracle.com/cd/E19253-01/816-5137/compile-94179/index.html">http://docs.oracle.com/cd/E19253-01/816-5137/compile-94179/index.html</a></p>
+    "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>
index df543e8..fde6125 100644 (file)
@@ -194,7 +194,7 @@ 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=namespace icu{" "U_NAMESPACE_END=}" U_SHOW_CPLUSPLUS_API=1 U_DEFINE_LOCAL_OPEN_POINTER()= U_IN_DOXYGEN=1 U_OVERRIDE=override U_FINAL=final UCONFIG_ENABLE_PLUGINS=1 U_CHAR16_IS_TYPEDEF=0 U_CPLUSPLUS_VERSION=11 U_HAVE_RVALUE_REFERENCES=1 U_WCHAR_IS_UTF16
+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=namespace icu{" "U_NAMESPACE_END=}" U_HAVE_STD_STRING=1 U_SHOW_CPLUSPLUS_API=1 U_DEFINE_LOCAL_OPEN_POINTER()= U_IN_DOXYGEN=1 U_OVERRIDE= U_FINAL= UCONFIG_ENABLE_PLUGINS=1
 EXPAND_AS_DEFINED      = 
 SKIP_FUNCTION_MACROS   = YES
 #---------------------------------------------------------------------------
index f4bab77..bd5b117 100644 (file)
@@ -140,10 +140,6 @@ $(LIBDIR) $(BINDIR):
 
 ## Recursive targets
 all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive check-exhaustive-recursive: $(LIBDIR) $(BINDIR)
-ifneq ($(NEED_ESCAPING),)
-       @echo "building tools/escapesrc (Needed for this platform with NEED_ESCAPING)"
-       @(cd tools/escapesrc && $(MAKE) RECURSIVE=YES $$local_target) || exit
-endif
        @dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
        list='$(LOCAL_SUBDIRS)'; for subdir in $$list; do \
@@ -327,10 +323,9 @@ $(top_builddir)/config/icu-config: $(top_builddir)/Makefile $(top_srcdir)/config
        -$(RMV) $@
        $(INSTALL_SCRIPT) $(top_srcdir)/config/icu-config-top $@
        chmod u+w $@
-       @echo "# Following from icu/icu4c/source/config/Makefile.inc" >> $@
-       LC_ALL=C $(SED) -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
        @echo "# Following from @platform_make_fragment@" >> $@
-       LC_ALL=C $(SED) -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
+       LC_ALL=C sed -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
+       LC_ALL=C sed -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
        cat $(top_srcdir)/config/icu-config-bottom >> $@
        chmod u-w $@
 
index 88a0d19..fdaaea9 100644 (file)
@@ -1,7 +1,5 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\samples\cal\cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcxproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
@@ -63,354 +61,268 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuinfo", "..\tools\icuinfo
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplug", "..\tools\icuinfo\testplug.vcxproj", "{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata_uwp", "..\data\makedata_uwp.vcxproj", "{B1D53358-37BD-48BC-B27C-68BAF1E78508}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n_uwp", "..\i18n\i18n_uwp.vcxproj", "{6786C051-383B-47E0-9E82-B8B994E06A25}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common_uwp", "..\common\common_uwp.vcxproj", "{C10CF34B-3F79-430E-AD38-5A32DC0589C2}"
-EndProject
 Global
+       GlobalSection(SubversionScc) = preSolution
+               Svn-Managed = True
+               Manager = AnkhSVN - Subversion Support for Visual Studio
+       EndGlobalSection
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|ARM = Debug|ARM
                Debug|Win32 = Debug|Win32
                Debug|x64 = Debug|x64
-               Release|ARM = Release|ARM
                Release|Win32 = Release|Win32
                Release|x64 = Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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
-               {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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
-               {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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
-               {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|Win32
+               {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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
-               {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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
-               {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|Win32
                {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|ARM.ActiveCfg = Release|Win32
                {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
-               {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.ActiveCfg = Debug|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.Build.0 = Debug|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.ActiveCfg = Debug|x64
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.Build.0 = Debug|x64
-               {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.ActiveCfg = Release|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.Build.0 = Release|Win32
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.ActiveCfg = Release|x64
                {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.Build.0 = Release|x64
-               {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.ActiveCfg = Debug|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.Build.0 = Debug|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.ActiveCfg = Debug|x64
                {E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.Build.0 = Debug|x64
-               {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.ActiveCfg = Release|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.Build.0 = Release|Win32
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.ActiveCfg = Release|x64
                {E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.Build.0 = Release|x64
-               {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.ActiveCfg = Debug|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.Build.0 = Debug|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.ActiveCfg = Debug|x64
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.Build.0 = Debug|x64
-               {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.ActiveCfg = Release|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.Build.0 = Release|Win32
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.ActiveCfg = Release|x64
                {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.Build.0 = Release|x64
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.ActiveCfg = Debug|ARM
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.Build.0 = Debug|ARM
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.ActiveCfg = Debug|Win32
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.Build.0 = Debug|Win32
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.ActiveCfg = Debug|x64
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.Build.0 = Debug|x64
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.ActiveCfg = Release|ARM
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.Build.0 = Release|ARM
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.ActiveCfg = Release|Win32
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.Build.0 = Release|Win32
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.ActiveCfg = Release|x64
-               {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.Build.0 = Release|x64
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.ActiveCfg = Debug|ARM
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.Build.0 = Debug|ARM
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.ActiveCfg = Debug|Win32
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.Build.0 = Debug|Win32
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.ActiveCfg = Debug|x64
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.Build.0 = Debug|x64
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.ActiveCfg = Release|ARM
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.Build.0 = Release|ARM
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.ActiveCfg = Release|Win32
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.Build.0 = Release|Win32
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.ActiveCfg = Release|x64
-               {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.Build.0 = Release|x64
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.ActiveCfg = Debug|ARM
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.Build.0 = Debug|ARM
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.ActiveCfg = Debug|Win32
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.Build.0 = Debug|Win32
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.ActiveCfg = Debug|x64
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.Build.0 = Debug|x64
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.ActiveCfg = Release|ARM
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.Build.0 = Release|ARM
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.ActiveCfg = Release|Win32
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.Build.0 = Release|Win32
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.ActiveCfg = Release|x64
-               {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.Build.0 = Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
-       GlobalSection(SubversionScc) = preSolution
-               Svn-Managed = True
-               Manager = AnkhSVN - Subversion Support for Visual Studio
-       EndGlobalSection
 EndGlobal
index 119bc99..f8331a0 100644 (file)
-@echo off
-REM Copyright (C) 2016 and later: Unicode, Inc. and others.
-REM License & terms of use: http://www.unicode.org/copyright.html
-REM  ********************************************************************
-REM  * COPYRIGHT:
-REM  * Copyright (c) 2010-2014, International Business Machines Corporation
-REM  * and others. All Rights Reserved.
-REM  ********************************************************************
-
-set ICU_ARCH=%1
-set ICU_DBRL=%2
-
-if "%1" == "" (
-echo Usage: %0 "x86 or x64"  "Debug or Release"
-exit /b 1
-)
-
-if "%2" == "" (
-echo Usage: %0 %1 "Debug or Release"
-exit /b 1
-)
-
-set ICU_OPATH=%PATH%
-
-set ICU_ICUDIR="%~dp0"\..\..
-
-if "%ICU_ARCH%" == "x64" (
-set ICU_BINDIR=%~dp0\..\..\bin64
-) else (
-set ICU_BINDIR=%~dp0\..\..\bin
-)
-
-set PATH=%ICU_BINDIR%;%PATH%
-
-echo testing ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%
-pushd %ICU_ICUDIR%
-
-@rem factor these out
-set ICUINFO_CMD=%ICU_ICUDIR%\source\tools\icuinfo\%ICU_ARCH%\%ICU_DBRL%\icuinfo.exe
-set INTLTEST_CMD=%ICU_ICUDIR%\source\test\intltest\%ICU_ARCH%\%ICU_DBRL%\intltest.exe
-set IOTEST_CMD=%ICU_ICUDIR%\source\test\iotest\%ICU_ARCH%\%ICU_DBRL%\iotest.exe
-set CINTLTST_CMD=%ICU_ICUDIR%\source\test\cintltst\%ICU_ARCH%\%ICU_DBRL%\cintltst.exe
-set LETEST_CMD=%ICU_ICUDIR%\source\test\letest\%ICU_ARCH%\%ICU_DBRL%\letest.exe
-
-set ICUFAILED=
-set ICURUN=
-set ICUFAILCNT=0
-
-@echo on
-
-@set THT=icuinfo
-@echo ==== %THT% =========================================================================
-%ICUINFO_CMD% %ICUINFO_OPTS%
-
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
-@set ICUFAILED=%ICUFAILED% %THT%
-@set ICUFAILCNT=1
-:OK_icuinfo
-@set ICURUN=%ICURUN% %THT%
-
-@set THT=intltest
-@echo ==== %THT% =========================================================================
-@cd %ICU_ICUDIR%\source\test\intltest
-%INTLTEST_CMD% %INTLTEST_OPTS%
-
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
-@set ICUFAILED=%ICUFAILED% %THT%
-@set ICUFAILCNT=1
-:OK_intltest
-@set ICURUN=%ICURUN% %THT%
-
-@set THT=iotest
-@echo ==== %THT% =========================================================================
-@cd %ICU_ICUDIR%\source\test\iotest
-%IOTEST_CMD% %IOTEST_OPTS%
-
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
-@set ICUFAILED=%ICUFAILED% %THT%
-@set ICUFAILCNT=1
-:OK_IOTEST
-@set ICURUN=%ICURUN% %THT%
-
-@set THT=cintltst
-@echo ==== %THT% =========================================================================
-@cd %ICU_ICUDIR%\source\test\cintltst
-%CINTLTST_CMD% %CINTLTST_OPTS%
-
-@IF NOT ERRORLEVEL 1 GOTO OK_%THT%
-@set ICUFAILED=%ICUFAILED% %THT%
-@set ICUFAILCNT=1
-:OK_cintltst
-@set ICURUN=%ICURUN% %THT%
-
-@REM  (Layout is deprecated - this would require HarfBuzz)
-@REM  @set THT=letest
-@REM  @echo ==== %THT% =========================================================================
-@REM  @cd %ICU_ICUDIR%\source\test\letest
-@REM  %LETST_CMD% %LETEST_OPTS%
-
-@REM  @IF NOT ERRORLEVEL 1 GOTO OK_%THT%
-@REM  @set ICUFAILED=%ICUFAILED% %THT%
-@REM  @set ICUFAILCNT=1
-@REM  :OK_letest
-@REM  @set ICURUN=%ICURUN% %THT%
-
-@echo off
-
-REM clean up
-set PATH=%ICU_OPATH%
-REM unset ICU_OPATH
-popd
-
-@REM done
-
-echo -
-echo -
-echo -
-echo ============================================================
-echo Summary: ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%
-echo -
-echo Tests Run    : %ICURUN%
-
-if %ICUFAILCNT% == 0 (
-       echo " - All Passed!"
-       exit /b 0
-)
-echo Failing Tests: %ICUFAILED%
-echo -
-echo FAILED!
-
-exit /b 1
+@echo off\r
+REM Copyright (C) 2016 and later: Unicode, Inc. and others.\r
+REM License & terms of use: http://www.unicode.org/copyright.html\r
+REM  ********************************************************************\r
+REM  * COPYRIGHT:\r
+REM  * Copyright (c) 2010-2014, International Business Machines Corporation\r
+REM  * and others. All Rights Reserved.\r
+REM  ********************************************************************\r
+\r
+set ICU_ARCH=%1\r
+set ICU_DBRL=%2\r
+\r
+if "%1" == "" (\r
+echo Usage: %0 "x86 or x64"  "Debug or Release"\r
+exit /b 1\r
+)\r
+\r
+if "%2" == "" (\r
+echo Usage: %0 %1 "Debug or Release"\r
+exit /b 1\r
+)\r
+\r
+set ICU_OPATH=%PATH%\r
+\r
+set ICU_ICUDIR="%~dp0"\..\..\r
+\r
+if "%ICU_ARCH%" == "x64" (\r
+set ICU_BINDIR=%~dp0\..\..\bin64\r
+) else (\r
+set ICU_BINDIR=%~dp0\..\..\bin\r
+)\r
+\r
+set PATH=%ICU_BINDIR%;%PATH%\r
+\r
+echo testing ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%\r
+pushd %ICU_ICUDIR%\r
+\r
+@rem factor these out\r
+set ICUINFO_CMD=%ICU_ICUDIR%\source\tools\icuinfo\%ICU_ARCH%\%ICU_DBRL%\icuinfo.exe\r
+set INTLTEST_CMD=%ICU_ICUDIR%\source\test\intltest\%ICU_ARCH%\%ICU_DBRL%\intltest.exe\r
+set IOTEST_CMD=%ICU_ICUDIR%\source\test\iotest\%ICU_ARCH%\%ICU_DBRL%\iotest.exe\r
+set CINTLTST_CMD=%ICU_ICUDIR%\source\test\cintltst\%ICU_ARCH%\%ICU_DBRL%\cintltst.exe\r
+set LETEST_CMD=%ICU_ICUDIR%\source\test\letest\%ICU_ARCH%\%ICU_DBRL%\letest.exe\r
+\r
+set ICUFAILED=\r
+set ICURUN=\r
+set ICUFAILCNT=0\r
+\r
+@echo on\r
+\r
+@set THT=icuinfo\r
+@echo ==== %THT% =========================================================================\r
+%ICUINFO_CMD% %ICUINFO_OPTS%\r
+\r
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
+@set ICUFAILED=%ICUFAILED% %THT%\r
+@set ICUFAILCNT=1\r
+:OK_icuinfo\r
+@set ICURUN=%ICURUN% %THT%\r
+\r
+@set THT=intltest\r
+@echo ==== %THT% =========================================================================\r
+@cd %ICU_ICUDIR%\source\test\intltest\r
+%INTLTEST_CMD% %INTLTEST_OPTS%\r
+\r
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
+@set ICUFAILED=%ICUFAILED% %THT%\r
+@set ICUFAILCNT=1\r
+:OK_intltest\r
+@set ICURUN=%ICURUN% %THT%\r
+\r
+@set THT=iotest\r
+@echo ==== %THT% =========================================================================\r
+@cd %ICU_ICUDIR%\source\test\iotest\r
+%IOTEST_CMD% %IOTEST_OPTS%\r
+\r
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
+@set ICUFAILED=%ICUFAILED% %THT%\r
+@set ICUFAILCNT=1\r
+:OK_IOTEST\r
+@set ICURUN=%ICURUN% %THT%\r
+\r
+@set THT=cintltst\r
+@echo ==== %THT% =========================================================================\r
+@cd %ICU_ICUDIR%\source\test\cintltst\r
+%CINTLTST_CMD% %CINTLTST_OPTS%\r
+\r
+@IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
+@set ICUFAILED=%ICUFAILED% %THT%\r
+@set ICUFAILCNT=1\r
+:OK_cintltst\r
+@set ICURUN=%ICURUN% %THT%\r
+\r
+@REM  (Layout is deprecated - this would require HarfBuzz)\r
+@REM  @set THT=letest\r
+@REM  @echo ==== %THT% =========================================================================\r
+@REM  @cd %ICU_ICUDIR%\source\test\letest\r
+@REM  %LETST_CMD% %LETEST_OPTS%\r
+\r
+@REM  @IF NOT ERRORLEVEL 1 GOTO OK_%THT%\r
+@REM  @set ICUFAILED=%ICUFAILED% %THT%\r
+@REM  @set ICUFAILCNT=1\r
+@REM  :OK_letest\r
+@REM  @set ICURUN=%ICURUN% %THT%\r
+\r
+@echo off\r
+\r
+REM clean up\r
+set PATH=%ICU_OPATH%\r
+REM unset ICU_OPATH\r
+popd\r
+\r
+@REM done\r
+\r
+echo -\r
+echo -\r
+echo -\r
+echo ============================================================\r
+echo Summary: ICU in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%\r
+echo -\r
+echo Tests Run    : %ICURUN%\r
+\r
+if %ICUFAILCNT% == 0 (\r
+       echo " - All Passed!"\r
+       exit /b 0\r
+)\r
+echo Failing Tests: %ICUFAILED%\r
+echo -\r
+echo FAILED!\r
+\r
+exit /b 1\r
index 10fa8de..59ffb73 100644 (file)
@@ -94,7 +94,6 @@ stringtriebuilder.o bytestriebuilder.o \
 bytestrie.o bytestrieiterator.o \
 ucharstrie.o ucharstriebuilder.o ucharstrieiterator.o \
 dictionarydata.o \
-edits.o \
 appendable.o ustr_cnv.o unistr_cnv.o unistr.o unistr_case.o unistr_props.o \
 utf_impl.o ustring.o ustrcase.o ucasemap.o ucasemap_titlecase_brkiter.o cstring.o ustrfmt.o ustrtrns.o ustr_wcs.o utext.o \
 unistr_case_locale.o ustrcase_locale.o unistr_titlecase_brkiter.o ustr_titlecase_brkiter.o \
index fca3c1e..1a597b5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  appendable.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 08f9bed..ebcd0d2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  bmpset.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 87375d2..8975cd6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  bmpset.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a590060..cf14483 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ************************************************************************************
index 0335d11..163cbbe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  ************************************************************************************
index f8e4d98..029ec5e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index bfd7bde..5a5c2e4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2011, International Business Machines
 // Corporation and others. All Rights Reserved.
index c4d498c..093cd8d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestrie.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 581505e..913d85a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestriebuilder.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e64961a..4d04247 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestrieiterator.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index aee9f4e..2479350 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
@@ -311,12 +311,12 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
 
         // 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.remove(i, U16_LENGTH(cp)), skipZeros, &subpermute, status);
+        permute(subPermuteString.replace(i, U16_LENGTH(cp), NULL, 0), skipZeros, &subpermute, status);
         /* Test for buffer overflows */
         if(U_FAILURE(status)) {
             return;
         }
-        // The upper remove is destructive. The question is do we have to make a copy, or we don't care about the contents 
+        // 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
index 887119a..625ac49 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8bacd20..c792181 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  charstr.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -15,7 +15,6 @@
 */
 
 #include "unicode/utypes.h"
-#include "unicode/putil.h"
 #include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
index 3cfdf6a..9758c5c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/cmemory.c b/source/common/cmemory.c
new file mode 100644 (file)
index 0000000..b40994a
--- /dev/null
@@ -0,0 +1,162 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 2002-2015, 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 "putilimp.h"
+#include "uassert.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;
+
+#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
+#include <stdio.h>
+static int n=0;
+static long b=0; 
+#endif
+
+#if U_DEBUG
+
+static char gValidMemorySink = 0;
+
+U_CAPI void uprv_checkValidMemory(const void *p, size_t n) {
+    /*
+     * Access the memory to ensure that it's all valid.
+     * Load and save a computed value to try to ensure that the compiler
+     * does not throw away the whole loop.
+     * A thread analyzer might complain about un-mutexed access to gValidMemorySink
+     * which is true but harmless because no one ever uses the value in gValidMemorySink.
+     */
+    const char *s = (const char *)p;
+    char c = gValidMemorySink;
+    size_t i;
+    U_ASSERT(p != NULL);
+    for(i = 0; i < n; ++i) {
+        c ^= s[i];
+    }
+    gValidMemorySink = c;
+}
+
+#endif  /* U_DEBUG */
+
+U_CAPI void * U_EXPORT2
+uprv_malloc(size_t s) {
+#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
+#if 1
+  putchar('>');
+  fflush(stdout);
+#else
+  fprintf(stderr,"MALLOC\t#%d\t%ul bytes\t%ul total\n", ++n,s,(b+=s)); fflush(stderr);
+#endif
+#endif
+    if (s > 0) {
+        if (pAlloc) {
+            return (*pAlloc)(pContext, s);
+        } else {
+            return uprv_default_malloc(s);
+        }
+    } else {
+        return (void *)zeroMem;
+    }
+}
+
+U_CAPI void * U_EXPORT2
+uprv_realloc(void * buffer, size_t size) {
+#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
+  putchar('~');
+  fflush(stdout);
+#endif
+    if (buffer == zeroMem) {
+        return uprv_malloc(size);
+    } else if (size == 0) {
+        if (pFree) {
+            (*pFree)(pContext, buffer);
+        } else {
+            uprv_default_free(buffer);
+        }
+        return (void *)zeroMem;
+    } else {
+        if (pRealloc) {
+            return (*pRealloc)(pContext, buffer, size);
+        } else {
+            return uprv_default_realloc(buffer, size);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+uprv_free(void *buffer) {
+#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
+  putchar('<');
+  fflush(stdout);
+#endif
+    if (buffer != zeroMem) {
+        if (pFree) {
+            (*pFree)(pContext, buffer);
+        } else {
+            uprv_default_free(buffer);
+        }
+    }
+}
+
+U_CAPI void * U_EXPORT2
+uprv_calloc(size_t num, size_t size) {
+    void *mem = NULL;
+    size *= num;
+    mem = uprv_malloc(size);
+    if (mem) {
+        uprv_memset(mem, 0, size);
+    }
+    return mem;
+}
+
+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;
+    }
+    pContext  = context;
+    pAlloc    = a;
+    pRealloc  = r;
+    pFree     = f;
+}
+
+
+U_CFUNC UBool cmemory_cleanup(void) {
+    pContext   = NULL;
+    pAlloc     = NULL;
+    pRealloc   = NULL;
+    pFree      = NULL;
+    return TRUE;
+}
index 665a822..a1211bd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 33ef60e..e6c9acf 100644 (file)
       <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuuc59.dll</OutputFile>
+      <OutputFile>..\..\bin\icuuc58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\icuuc.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuuc59d.dll</OutputFile>
+      <OutputFile>..\..\bin\icuuc58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\icuucd.pdb</ProgramDatabaseFile>
       <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuuc59.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuuc58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\icuuc.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuuc59d.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuuc58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\icuucd.pdb</ProgramDatabaseFile>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="filteredbrk.cpp" />
-    <ClCompile Include="ubidi.cpp" />
-    <ClCompile Include="ubiditransform.cpp" />
-    <ClCompile Include="ubidi_props.cpp" />
-    <ClCompile Include="ubidiln.cpp" />
-    <ClCompile Include="ubidiwrt.cpp" />
+    <ClCompile Include="ubidi.c" />
+    <ClCompile Include="ubiditransform.c" />
+    <ClCompile Include="ubidi_props.c" />
+    <ClCompile Include="ubidiln.c" />
+    <ClCompile Include="ubidiwrt.c" />
     <ClCompile Include="uloc_keytype.cpp" />
     <ClCompile Include="ushape.cpp" />
     <ClCompile Include="brkeng.cpp">
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
-    <ClCompile Include="propsvec.cpp" />
-    <ClCompile Include="uarrsort.cpp" />
-    <ClCompile Include="uenum.cpp" />
-    <ClCompile Include="uhash.cpp" />
+    <ClCompile Include="propsvec.c" />
+    <ClCompile Include="uarrsort.c" />
+    <ClCompile Include="uenum.c" />
+    <ClCompile Include="uhash.c" />
     <ClCompile Include="uhash_us.cpp" />
-    <ClCompile Include="ulist.cpp" />
+    <ClCompile Include="ulist.c" />
     <ClCompile Include="ustack.cpp" />
     <ClCompile Include="ustrenum.cpp" />
     <ClCompile Include="utrie.cpp" />
     <ClCompile Include="uvectr32.cpp" />
     <ClCompile Include="uvectr64.cpp" />
     <ClCompile Include="errorcode.cpp" />
-    <ClCompile Include="icudataver.cpp" />
-    <ClCompile Include="locmap.cpp">
+    <ClCompile Include="icudataver.c" />
+    <ClCompile Include="locmap.c">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="umath.cpp" />
+    <ClCompile Include="umath.c" />
     <ClCompile Include="umutex.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="utrace.cpp" />
-    <ClCompile Include="utypes.cpp" />
-    <ClCompile Include="wintz.cpp">
+    <ClCompile Include="utrace.c" />
+    <ClCompile Include="utypes.c" />
+    <ClCompile Include="wintz.c">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="ucnv.cpp" />
+    <ClCompile Include="ucnv.c" />
     <ClCompile Include="ucnv2022.cpp" />
     <ClCompile Include="ucnv_bld.cpp">
     </ClCompile>
-    <ClCompile Include="ucnv_cb.cpp" />
-    <ClCompile Include="ucnv_cnv.cpp" />
-    <ClCompile Include="ucnv_ct.cpp" />
-    <ClCompile Include="ucnv_err.cpp" />
+    <ClCompile Include="ucnv_cb.c" />
+    <ClCompile Include="ucnv_cnv.c" />
+    <ClCompile Include="ucnv_ct.c" />
+    <ClCompile Include="ucnv_err.c" />
     <ClCompile Include="ucnv_ext.cpp" />
     <ClCompile Include="ucnv_io.cpp">
     </ClCompile>
-    <ClCompile Include="ucnv_lmb.cpp" />
-    <ClCompile Include="ucnv_set.cpp" />
-    <ClCompile Include="ucnv_u16.cpp" />
-    <ClCompile Include="ucnv_u32.cpp" />
-    <ClCompile Include="ucnv_u7.cpp" />
-    <ClCompile Include="ucnv_u8.cpp" />
+    <ClCompile Include="ucnv_lmb.c" />
+    <ClCompile Include="ucnv_set.c" />
+    <ClCompile Include="ucnv_u16.c" />
+    <ClCompile Include="ucnv_u32.c" />
+    <ClCompile Include="ucnv_u7.c" />
+    <ClCompile Include="ucnv_u8.c" />
     <ClCompile Include="ucnvbocu.cpp" />
-    <ClCompile Include="ucnvdisp.cpp" />
-    <ClCompile Include="ucnvhz.cpp" />
-    <ClCompile Include="ucnvisci.cpp" />
-    <ClCompile Include="ucnvlat1.cpp" />
+    <ClCompile Include="ucnvdisp.c" />
+    <ClCompile Include="ucnvhz.c" />
+    <ClCompile Include="ucnvisci.c" />
+    <ClCompile Include="ucnvlat1.c" />
     <ClCompile Include="ucnvmbcs.cpp" />
-    <ClCompile Include="ucnvscsu.cpp" />
+    <ClCompile Include="ucnvscsu.c" />
     <ClCompile Include="ucnvsel.cpp">
     </ClCompile>
-    <ClCompile Include="cmemory.cpp" />
+    <ClCompile Include="cmemory.c" />
     <ClCompile Include="ucln_cmn.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="ucmndata.cpp" />
+    <ClCompile Include="ucmndata.c" />
     <ClCompile Include="udata.cpp" />
-    <ClCompile Include="udatamem.cpp" />
-    <ClCompile Include="udataswp.cpp" />
+    <ClCompile Include="udatamem.c" />
+    <ClCompile Include="udataswp.c" />
     <ClCompile Include="uinit.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="umapfile.cpp">
+    <ClCompile Include="umapfile.c">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
     <ClCompile Include="uobject.cpp" />
     <ClCompile Include="dtintrv.cpp" />
     <ClCompile Include="parsepos.cpp" />
-    <ClCompile Include="ustrfmt.cpp" />
+    <ClCompile Include="ustrfmt.c" />
     <ClCompile Include="util.cpp" />
     <ClCompile Include="util_props.cpp" />
     <ClCompile Include="punycode.cpp" />
     <ClCompile Include="resbund.cpp">
     </ClCompile>
     <ClCompile Include="resbund_cnv.cpp" />
-    <ClCompile Include="ucat.cpp" />
+    <ClCompile Include="ucat.c" />
     <ClCompile Include="uloc.cpp" />
-    <ClCompile Include="uloc_tag.cpp" />
-    <ClCompile Include="ures_cnv.cpp" />
+    <ClCompile Include="uloc_tag.c" />
+    <ClCompile Include="ures_cnv.c" />
     <ClCompile Include="uresbund.cpp" />
     <ClCompile Include="uresdata.cpp" />
     <ClCompile Include="resource.cpp" />
     <ClCompile Include="ruleiter.cpp" />
     <ClCompile Include="ucase.cpp">
     </ClCompile>
-    <ClCompile Include="uchar.cpp" />
+    <ClCompile Include="uchar.c" />
     <ClCompile Include="unames.cpp" />
     <ClCompile Include="unifiedcache.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     <ClCompile Include="uniset_props.cpp" />
     <ClCompile Include="unisetspan.cpp" />
     <ClCompile Include="uprops.cpp" />
-    <ClCompile Include="usc_impl.cpp" />
-    <ClCompile Include="uscript.cpp" />
+    <ClCompile Include="usc_impl.c" />
+    <ClCompile Include="uscript.c" />
     <ClCompile Include="uscript_props.cpp" />
     <ClCompile Include="uset.cpp" />
     <ClCompile Include="uset_props.cpp" />
     <ClCompile Include="bytestrieiterator.cpp" />
     <ClCompile Include="chariter.cpp" />
     <ClCompile Include="charstr.cpp" />
-    <ClCompile Include="cstring.cpp" />
+    <ClCompile Include="cstring.c" />
     <ClCompile Include="cstr.cpp" />
-    <ClCompile Include="cwchar.cpp" />
-    <ClCompile Include="edits.cpp" />
+    <ClCompile Include="cwchar.c" />
     <ClCompile Include="messagepattern.cpp" />
     <ClCompile Include="schriter.cpp" />
     <ClCompile Include="stringpiece.cpp" />
     <ClCompile Include="ucharstriebuilder.cpp" />
     <ClCompile Include="ucharstrieiterator.cpp" />
     <ClCompile Include="uchriter.cpp" />
-    <ClCompile Include="uinvchar.cpp" />
+    <ClCompile Include="uinvchar.c" />
     <ClCompile Include="uiter.cpp" />
     <ClCompile Include="unistr.cpp" />
     <ClCompile Include="unistr_case.cpp" />
     <ClCompile Include="ustring.cpp" />
     <ClCompile Include="ustrtrns.cpp" />
     <ClCompile Include="utext.cpp" />
-    <ClCompile Include="utf_impl.cpp" />
+    <ClCompile Include="utf_impl.c" />
     <ClCompile Include="listformatter.cpp" />
     <ClCompile Include="ulistformatter.cpp" />
   </ItemGroup>
 </Command>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
     </CustomBuild>
-    <CustomBuild Include="unicode\casemap.h">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="unicode\char16ptr.h">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-    </CustomBuild>
     <CustomBuild Include="unicode\chariter.h">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
 </Command>
     <ClInclude Include="cstring.h" />
     <ClInclude Include="cstr.h" />
     <ClInclude Include="cwchar.h" />
-    <CustomBuild Include="unicode\edits.h">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" ..\..\include\unicode
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
-    </CustomBuild>
     <CustomBuild Include="unicode\messagepattern.h">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
 </Command>
 </Command>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
     </CustomBuild>
-    <ClInclude Include="ucasemap_imp.h" />
     <CustomBuild Include="unicode\ucharstrie.h">
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
 </Command>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 0542a8b..56e8c12 100644 (file)
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="ubidi.cpp">
+    <ClCompile Include="ubidi.c">
       <Filter>bidi</Filter>
     </ClCompile>
-    <ClCompile Include="ubidi_props.cpp">
+    <ClCompile Include="ubidi_props.c">
       <Filter>bidi</Filter>
     </ClCompile>
-    <ClCompile Include="ubidiln.cpp">
+    <ClCompile Include="ubidiln.c">
       <Filter>bidi</Filter>
     </ClCompile>
-    <ClCompile Include="ubidiwrt.cpp">
+    <ClCompile Include="ubidiwrt.c">
       <Filter>bidi</Filter>
     </ClCompile>
     <ClCompile Include="ushape.cpp">
     <ClCompile Include="pluralmap.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="propsvec.cpp">
+    <ClCompile Include="propsvec.c">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="uarrsort.cpp">
+    <ClCompile Include="uarrsort.c">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="uenum.cpp">
+    <ClCompile Include="uenum.c">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="uhash.cpp">
+    <ClCompile Include="uhash.c">
       <Filter>collections</Filter>
     </ClCompile>
     <ClCompile Include="uhash_us.cpp">
       <Filter>collections</Filter>
     </ClCompile>
-    <ClCompile Include="ulist.cpp">
+    <ClCompile Include="ulist.c">
       <Filter>collections</Filter>
     </ClCompile>
     <ClCompile Include="unifiedcache.cpp">
     <ClCompile Include="errorcode.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="icudataver.cpp">
+    <ClCompile Include="icudataver.c">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="locmap.cpp">
+    <ClCompile Include="locmap.c">
       <Filter>configuration</Filter>
     </ClCompile>
     <ClCompile Include="putil.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="umath.cpp">
+    <ClCompile Include="umath.c">
       <Filter>configuration</Filter>
     </ClCompile>
     <ClCompile Include="umutex.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="utrace.cpp">
+    <ClCompile Include="utrace.c">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="utypes.cpp">
+    <ClCompile Include="utypes.c">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="wintz.cpp">
+    <ClCompile Include="wintz.c">
       <Filter>configuration</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv.cpp">
+    <ClCompile Include="ucnv.c">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnv2022.cpp">
     <ClCompile Include="ucnv_bld.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_cb.cpp">
+    <ClCompile Include="ucnv_cb.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_cnv.cpp">
+    <ClCompile Include="ucnv_cnv.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_err.cpp">
+    <ClCompile Include="ucnv_err.c">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnv_ext.cpp">
     <ClCompile Include="ucnv_io.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_lmb.cpp">
+    <ClCompile Include="ucnv_lmb.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_set.cpp">
+    <ClCompile Include="ucnv_set.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u16.cpp">
+    <ClCompile Include="ucnv_u16.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u32.cpp">
+    <ClCompile Include="ucnv_u32.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u7.cpp">
+    <ClCompile Include="ucnv_u7.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_u8.cpp">
+    <ClCompile Include="ucnv_u8.c">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnvbocu.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvdisp.cpp">
+    <ClCompile Include="ucnvdisp.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvhz.cpp">
+    <ClCompile Include="ucnvhz.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvisci.cpp">
+    <ClCompile Include="ucnvisci.c">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvlat1.cpp">
+    <ClCompile Include="ucnvlat1.c">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnvmbcs.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="ucnvscsu.cpp">
+    <ClCompile Include="ucnvscsu.c">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucnvsel.cpp">
       <Filter>conversion</Filter>
     </ClCompile>
-    <ClCompile Include="cmemory.cpp">
+    <ClCompile Include="cmemory.c">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="sharedobject.cpp">
     <ClCompile Include="ucln_cmn.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="ucmndata.cpp">
+    <ClCompile Include="ucmndata.c">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="udata.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="udatamem.cpp">
+    <ClCompile Include="udatamem.c">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="udataswp.cpp">
+    <ClCompile Include="udataswp.c">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="uinit.cpp">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
-    <ClCompile Include="umapfile.cpp">
+    <ClCompile Include="umapfile.c">
       <Filter>data &amp; memory</Filter>
     </ClCompile>
     <ClCompile Include="uobject.cpp">
     <ClCompile Include="ucurr.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="ustrfmt.cpp">
+    <ClCompile Include="ustrfmt.c">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="util.cpp">
     <ClCompile Include="resbund_cnv.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
-    <ClCompile Include="ucat.cpp">
+    <ClCompile Include="ucat.c">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
     <ClCompile Include="uloc.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
-    <ClCompile Include="uloc_tag.cpp">
+    <ClCompile Include="uloc_tag.c">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
-    <ClCompile Include="ures_cnv.cpp">
+    <ClCompile Include="ures_cnv.c">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
     <ClCompile Include="uresbund.cpp">
     <ClCompile Include="ucase.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
-    <ClCompile Include="uchar.cpp">
+    <ClCompile Include="uchar.c">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
     <ClCompile Include="unames.cpp">
     <ClCompile Include="uprops.cpp">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
-    <ClCompile Include="usc_impl.cpp">
+    <ClCompile Include="usc_impl.c">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
-    <ClCompile Include="uscript.cpp">
+    <ClCompile Include="uscript.c">
       <Filter>properties &amp; sets</Filter>
     </ClCompile>
     <ClCompile Include="uscript_props.cpp">
     <ClCompile Include="charstr.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="cstring.cpp">
+    <ClCompile Include="cstring.c">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="cstr.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="cwchar.cpp">
-      <Filter>strings</Filter>
-    </ClCompile>
-    <ClCompile Include="edits.cpp">
+    <ClCompile Include="cwchar.c">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="schriter.cpp">
     <ClCompile Include="uchriter.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="uinvchar.cpp">
+    <ClCompile Include="uinvchar.c">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="uiter.cpp">
     <ClCompile Include="utext.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="utf_impl.cpp">
+    <ClCompile Include="utf_impl.c">
       <Filter>strings</Filter>
     </ClCompile>
     <ClCompile Include="bytestrie.cpp">
     <ClCompile Include="dictionarydata.cpp">
       <Filter>break iteration</Filter>
     </ClCompile>
-    <ClCompile Include="ucnv_ct.cpp">
+    <ClCompile Include="ucnv_ct.c">
       <Filter>conversion</Filter>
     </ClCompile>
     <ClCompile Include="ucharstrie.cpp">
     <ClCompile Include="icuplug.cpp">
       <Filter>registration</Filter>
     </ClCompile>
-    <ClCompile Include="ubiditransform.cpp">
+    <ClCompile Include="ubiditransform.c">
       <Filter>bidi</Filter>
     </ClCompile>
   </ItemGroup>
     <ClInclude Include="cwchar.h">
       <Filter>strings</Filter>
     </ClInclude>
-    <ClInclude Include="ucasemap_imp.h">
-      <Filter>strings</Filter>
-    </ClInclude>
     <ClInclude Include="uinvchar.h">
       <Filter>strings</Filter>
     </ClInclude>
     <CustomBuild Include="unicode\bytestream.h">
       <Filter>strings</Filter>
     </CustomBuild>
-    <CustomBuild Include="unicode\casemap.h">
-      <Filter>strings</Filter>
-    </CustomBuild>
-    <CustomBuild Include="unicode\char16ptr.h">
-      <Filter>strings</Filter>
-    </CustomBuild>
     <CustomBuild Include="unicode\chariter.h">
       <Filter>strings</Filter>
     </CustomBuild>
-    <CustomBuild Include="unicode\edits.h">
-      <Filter>strings</Filter>
-    </CustomBuild>
     <CustomBuild Include="unicode\rep.h">
       <Filter>strings</Filter>
     </CustomBuild>
       <Filter>collections</Filter>
     </CustomBuild>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
index 307e570..57af69a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  cpputils.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 */
index 24654f8..a0006df 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c33f487..93b2e54 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/cstring.c b/source/common/cstring.c
new file mode 100644 (file)
index 0000000..eb6e021
--- /dev/null
@@ -0,0 +1,341 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1997-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File CSTRING.C
+*
+* @author       Helena Shih
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   6/18/98     hshih       Created
+*   09/08/98    stephen     Added include for ctype, for Mac Port
+*   11/15/99    helena      Integrated S/390 IEEE changes. 
+******************************************************************************
+*/
+
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "uassert.h"
+
+/*
+ * We hardcode case conversion for invariant characters to match our expectation
+ * and the compiler execution charset.
+ * This prevents problems on systems
+ * - with non-default casing behavior, like Turkish system locales where
+ *   tolower('I') maps to dotless i and toupper('i') maps to dotted I
+ * - where there are no lowercase Latin characters at all, or using different
+ *   codes (some old EBCDIC codepages)
+ *
+ * This works because the compiler usually runs on a platform where the execution
+ * charset includes all of the invariant characters at their expected
+ * code positions, so that the char * string literals in ICU code match
+ * the char literals here.
+ *
+ * Note that the set of lowercase Latin letters is discontiguous in EBCDIC
+ * and the set of uppercase Latin letters is discontiguous as well.
+ */
+
+U_CAPI UBool U_EXPORT2
+uprv_isASCIILetter(char c) {
+#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
+    return
+        ('a'<=c && c<='i') || ('j'<=c && c<='r') || ('s'<=c && c<='z') ||
+        ('A'<=c && c<='I') || ('J'<=c && c<='R') || ('S'<=c && c<='Z');
+#else
+    return ('a'<=c && c<='z') || ('A'<=c && c<='Z');
+#endif
+}
+
+U_CAPI char U_EXPORT2
+uprv_toupper(char c) {
+#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
+    if(('a'<=c && c<='i') || ('j'<=c && c<='r') || ('s'<=c && c<='z')) {
+        c=(char)(c+('A'-'a'));
+    }
+#else
+    if('a'<=c && c<='z') {
+        c=(char)(c+('A'-'a'));
+    }
+#endif
+    return c;
+}
+
+
+#if 0
+/*
+ * Commented out because cstring.h defines uprv_tolower() to be
+ * the same as either uprv_asciitolower() or uprv_ebcdictolower()
+ * to reduce the amount of code to cover with tests.
+ *
+ * Note that this uprv_tolower() definition is likely to work for most
+ * charset families, not just ASCII and EBCDIC, because its #else branch
+ * is written generically.
+ */
+U_CAPI char U_EXPORT2
+uprv_tolower(char c) {
+#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
+    if(('A'<=c && c<='I') || ('J'<=c && c<='R') || ('S'<=c && c<='Z')) {
+        c=(char)(c+('a'-'A'));
+    }
+#else
+    if('A'<=c && c<='Z') {
+        c=(char)(c+('a'-'A'));
+    }
+#endif
+    return c;
+}
+#endif
+
+U_CAPI char U_EXPORT2
+uprv_asciitolower(char c) {
+    if(0x41<=c && c<=0x5a) {
+        c=(char)(c+0x20);
+    }
+    return c;
+}
+
+U_CAPI char U_EXPORT2
+uprv_ebcdictolower(char c) {
+    if( (0xc1<=(uint8_t)c && (uint8_t)c<=0xc9) ||
+        (0xd1<=(uint8_t)c && (uint8_t)c<=0xd9) ||
+        (0xe2<=(uint8_t)c && (uint8_t)c<=0xe9)
+    ) {
+        c=(char)(c-0x40);
+    }
+    return c;
+}
+
+
+U_CAPI char* U_EXPORT2
+T_CString_toLowerCase(char* str)
+{
+    char* origPtr = str;
+
+    if (str) {
+        do
+            *str = (char)uprv_tolower(*str);
+        while (*(str++));
+    }
+
+    return origPtr;
+}
+
+U_CAPI char* U_EXPORT2
+T_CString_toUpperCase(char* str)
+{
+    char* origPtr = str;
+
+    if (str) {
+        do
+            *str = (char)uprv_toupper(*str);
+        while (*(str++));
+    }
+
+    return origPtr;
+}
+
+/*
+ * Takes a int32_t and fills in  a char* string with that number "radix"-based.
+ * Does not handle negative values (makes an empty string for them).
+ * Writes at most 12 chars ("-2147483647" plus NUL).
+ * Returns the length of the string (not including the NUL).
+ */
+U_CAPI int32_t U_EXPORT2
+T_CString_integerToString(char* buffer, int32_t v, int32_t radix)
+{
+    char      tbuf[30];
+    int32_t   tbx    = sizeof(tbuf);
+    uint8_t   digit;
+    int32_t   length = 0;
+    uint32_t  uval;
+    
+    U_ASSERT(radix>=2 && radix<=16);
+    uval = (uint32_t) v;
+    if(v<0 && radix == 10) {
+        /* Only in base 10 do we conside numbers to be signed. */
+        uval = (uint32_t)(-v); 
+        buffer[length++] = '-';
+    }
+    
+    tbx = sizeof(tbuf)-1;
+    tbuf[tbx] = 0;   /* We are generating the digits backwards.  Null term the end. */
+    do {
+        digit = (uint8_t)(uval % radix);
+        tbuf[--tbx] = (char)(T_CString_itosOffset(digit));
+        uval  = uval / radix;
+    } while (uval != 0);
+    
+    /* copy converted number into user buffer  */
+    uprv_strcpy(buffer+length, tbuf+tbx);
+    length += sizeof(tbuf) - tbx -1;
+    return length;
+}
+
+
+
+/*
+ * Takes a int64_t and fills in  a char* string with that number "radix"-based.
+ * Writes at most 21: chars ("-9223372036854775807" plus NUL).
+ * Returns the length of the string, not including the terminating NULL.
+ */
+U_CAPI int32_t U_EXPORT2
+T_CString_int64ToString(char* buffer, int64_t v, uint32_t radix)
+{
+    char      tbuf[30];
+    int32_t   tbx    = sizeof(tbuf);
+    uint8_t   digit;
+    int32_t   length = 0;
+    uint64_t  uval;
+    
+    U_ASSERT(radix>=2 && radix<=16);
+    uval = (uint64_t) v;
+    if(v<0 && radix == 10) {
+        /* Only in base 10 do we conside numbers to be signed. */
+        uval = (uint64_t)(-v); 
+        buffer[length++] = '-';
+    }
+    
+    tbx = sizeof(tbuf)-1;
+    tbuf[tbx] = 0;   /* We are generating the digits backwards.  Null term the end. */
+    do {
+        digit = (uint8_t)(uval % radix);
+        tbuf[--tbx] = (char)(T_CString_itosOffset(digit));
+        uval  = uval / radix;
+    } while (uval != 0);
+    
+    /* copy converted number into user buffer  */
+    uprv_strcpy(buffer+length, tbuf+tbx);
+    length += sizeof(tbuf) - tbx -1;
+    return length;
+}
+
+
+U_CAPI int32_t U_EXPORT2
+T_CString_stringToInteger(const char *integerString, int32_t radix)
+{
+    char *end;
+    return uprv_strtoul(integerString, &end, radix);
+
+}
+
+U_CAPI int U_EXPORT2
+uprv_stricmp(const char *str1, const char *str2) {
+    if(str1==NULL) {
+        if(str2==NULL) {
+            return 0;
+        } else {
+            return -1;
+        }
+    } else if(str2==NULL) {
+        return 1;
+    } else {
+        /* compare non-NULL strings lexically with lowercase */
+        int rc;
+        unsigned char c1, c2;
+
+        for(;;) {
+            c1=(unsigned char)*str1;
+            c2=(unsigned char)*str2;
+            if(c1==0) {
+                if(c2==0) {
+                    return 0;
+                } else {
+                    return -1;
+                }
+            } else if(c2==0) {
+                return 1;
+            } else {
+                /* compare non-zero characters with lowercase */
+                rc=(int)(unsigned char)uprv_tolower(c1)-(int)(unsigned char)uprv_tolower(c2);
+                if(rc!=0) {
+                    return rc;
+                }
+            }
+            ++str1;
+            ++str2;
+        }
+    }
+}
+
+U_CAPI int U_EXPORT2
+uprv_strnicmp(const char *str1, const char *str2, uint32_t n) {
+    if(str1==NULL) {
+        if(str2==NULL) {
+            return 0;
+        } else {
+            return -1;
+        }
+    } else if(str2==NULL) {
+        return 1;
+    } else {
+        /* compare non-NULL strings lexically with lowercase */
+        int rc;
+        unsigned char c1, c2;
+
+        for(; n--;) {
+            c1=(unsigned char)*str1;
+            c2=(unsigned char)*str2;
+            if(c1==0) {
+                if(c2==0) {
+                    return 0;
+                } else {
+                    return -1;
+                }
+            } else if(c2==0) {
+                return 1;
+            } else {
+                /* compare non-zero characters with lowercase */
+                rc=(int)(unsigned char)uprv_tolower(c1)-(int)(unsigned char)uprv_tolower(c2);
+                if(rc!=0) {
+                    return rc;
+                }
+            }
+            ++str1;
+            ++str2;
+        }
+    }
+
+    return 0;
+}
+
+U_CAPI char* U_EXPORT2
+uprv_strdup(const char *src) {
+    size_t len = uprv_strlen(src) + 1;
+    char *dup = (char *) uprv_malloc(len);
+
+    if (dup) {
+        uprv_memcpy(dup, src, len);
+    }
+
+    return dup;
+}
+
+U_CAPI char* U_EXPORT2
+uprv_strndup(const char *src, int32_t n) {
+    char *dup;
+
+    if(n < 0) {
+        dup = uprv_strdup(src);
+    } else {
+        dup = (char*)uprv_malloc(n+1);
+        if (dup) { 
+            uprv_memcpy(dup, src, n);
+            dup[n] = 0;
+        }
+    }
+
+    return dup;
+}
index 2232efc..238cb31 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/cwchar.c b/source/common/cwchar.c
new file mode 100644 (file)
index 0000000..4c469ce
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+******************************************************************************
+*
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  cwchar.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2001may25
+*   created by: Markus W. Scherer
+*/
+
+#include "unicode/utypes.h"
+
+#if !U_HAVE_WCSCPY
+
+#include "cwchar.h"
+
+U_CAPI wchar_t *uprv_wcscat(wchar_t *dst, const wchar_t *src) {
+    wchar_t *start=dst;
+    while(*dst!=0) {
+        ++dst;
+    }
+    while((*dst=*src)!=0) {
+        ++dst;
+        ++src;
+    }
+    return start;
+}
+
+U_CAPI wchar_t *uprv_wcscpy(wchar_t *dst, const wchar_t *src) {
+    wchar_t *start=dst;
+    while((*dst=*src)!=0) {
+        ++dst;
+        ++src;
+    }
+    return start;
+}
+
+U_CAPI size_t uprv_wcslen(const wchar_t *src) {
+    const wchar_t *start=src;
+    while(*src!=0) {
+        ++src;
+    }
+    return src-start;
+}
+
+#endif
+
index 8fd041a..c8c3497 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  cwchar.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8ee76ef..924f09b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
@@ -1385,25 +1385,12 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
     // Now that we're done, convert positions in t_boundary[] (indices in 
     // the normalized input string) back to indices in the original input UText
     // while reversing t_boundary and pushing values to foundBreaks.
-    int32_t prevCPPos = -1;
-    int32_t prevUTextPos = -1;
     for (int32_t i = numBreaks-1; i >= 0; i--) {
         int32_t cpPos = t_boundary.elementAti(i);
-        U_ASSERT(cpPos > prevCPPos);
         int32_t utextPos =  inputMap.isValid() ? inputMap->elementAti(cpPos) : cpPos + rangeStart;
-        U_ASSERT(utextPos >= prevUTextPos);
-        if (utextPos > prevUTextPos) {
-            // Boundaries are added to foundBreaks output in ascending order.
-            U_ASSERT(foundBreaks.size() == 0 || foundBreaks.peeki() < utextPos);
-            foundBreaks.push(utextPos, status);
-        } else {
-            // Normalization expanded the input text, the dictionary found a boundary
-            // within the expansion, giving two boundaries with the same index in the
-            // original text. Ignore the second. See ticket #12918.
-            --numBreaks;
-        }
-        prevCPPos = cpPos;
-        prevUTextPos = utextPos;
+        // Boundaries are added to foundBreaks output in ascending order.
+        U_ASSERT(foundBreaks.size() == 0 ||foundBreaks.peeki() < utextPos);
+        foundBreaks.push(utextPos, status);
     }
 
     // inString goes out of scope
index 242f475..9390e92 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 6e2dbee..00f6636 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 73b7d67..6f8852c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 80bb5d6..f3313d5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*******************************************************************************
 * Copyright (C) 2008, International Business Machines Corporation and
index e7ac43b..bc7807d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  errorcode.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1ab1ca6..acba959 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -702,4 +702,4 @@ FilteredBreakIteratorBuilder::createInstance(UErrorCode& status) {
 
 U_NAMESPACE_END
 
-#endif //#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#endif //#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION
index 28e5f6c..fb6e831 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  filterednormalizer2.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b411a43..ac7d22f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/icudataver.c b/source/common/icudataver.c
new file mode 100644 (file)
index 0000000..681a187
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 2009-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/icudataver.h"
+#include "unicode/ures.h"
+#include "uresimp.h" /* for ures_getVersionByKey */
+
+U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status) {
+    UResourceBundle *icudatares = NULL;
+    
+    if (U_FAILURE(*status)) {
+        return;
+    }
+    
+    if (dataVersionFillin != NULL) {
+        icudatares = ures_openDirect(NULL, U_ICU_VERSION_BUNDLE , status);
+        if (U_SUCCESS(*status)) {
+            ures_getVersionByKey(icudatares, U_ICU_DATA_KEY, dataVersionFillin, status);
+        }
+        ures_close(icudatares);
+    }
+}
index c6439cc..ec889f7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 3cad8f8..acbbcaf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index d105654..9225c22 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformatter.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -25,7 +25,6 @@
 #include "charstr.h"
 #include "ucln_cmn.h"
 #include "uresimp.h"
-#include "resource.h"
 
 U_NAMESPACE_BEGIN
 
@@ -79,6 +78,17 @@ uprv_deleteListFormatInternal(void *obj) {
 
 U_CDECL_END
 
+static ListFormatInternal* loadListFormatInternal(
+        const Locale& locale,
+        const char* style,
+        UErrorCode& errorCode);
+
+static void getStringByKey(
+        const UResourceBundle* rb,
+        const char* key,
+        UnicodeString& result,
+        UErrorCode& errorCode);
+
 ListFormatter::ListFormatter(const ListFormatter& other) :
         owned(other.owned), data(other.data) {
     if (other.owned != NULL) {
@@ -161,107 +171,30 @@ const ListFormatInternal* ListFormatter::getListFormatInternal(
     return result;
 }
 
-static const UChar solidus = 0x2F;
-static const UChar aliasPrefix[] = { 0x6C,0x69,0x73,0x74,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,0x2F }; // "listPattern/"
-enum {
-    kAliasPrefixLen = UPRV_LENGTHOF(aliasPrefix),
-    kStyleLenMax = 24 // longest currently is 14
-};
-
-struct ListFormatter::ListPatternsSink : public ResourceSink {
-    UnicodeString two, start, middle, end;
-#if ((U_PLATFORM == U_PF_AIX) || (U_PLATFORM == U_PF_OS390)) && (U_CPLUSPLUS_VERSION < 11)
-    char aliasedStyle[kStyleLenMax+1];
-    ListPatternsSink() {
-      uprv_memset(aliasedStyle, 0, kStyleLenMax+1);
-    }
-#else
-    char aliasedStyle[kStyleLenMax+1] = {0};
-
-    ListPatternsSink() {}
-#endif
-    virtual ~ListPatternsSink();
-
-    void setAliasedStyle(UnicodeString alias) {
-        int32_t startIndex = alias.indexOf(aliasPrefix, kAliasPrefixLen, 0);
-        if (startIndex < 0) {
-            return;
-        }
-        startIndex += kAliasPrefixLen;
-        int32_t endIndex = alias.indexOf(solidus, startIndex);
-        if (endIndex < 0) {
-            endIndex = alias.length();
-        }
-        alias.extract(startIndex, endIndex-startIndex, aliasedStyle, kStyleLenMax+1, US_INV);
-        aliasedStyle[kStyleLenMax] = 0;
-    }
-
-    void handleValueForPattern(ResourceValue &value, UnicodeString &pattern, UErrorCode &errorCode) {
-        if (pattern.isEmpty()) {
-            if (value.getType() == URES_ALIAS) {
-                if (aliasedStyle[0] == 0) {
-                    setAliasedStyle(value.getAliasUnicodeString(errorCode));
-                }
-            } else {
-                pattern = value.getUnicodeString(errorCode);
-            }
-        }
-    }
-
-    virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/,
-            UErrorCode &errorCode) {
-        aliasedStyle[0] = 0;
-        if (value.getType() == URES_ALIAS) {
-            setAliasedStyle(value.getAliasUnicodeString(errorCode));
-            return;
-        }
-        ResourceTable listPatterns = value.getTable(errorCode);
-        for (int i = 0; U_SUCCESS(errorCode) && listPatterns.getKeyAndValue(i, key, value); ++i) {
-            if (uprv_strcmp(key, "2") == 0) {
-                handleValueForPattern(value, two, errorCode);
-            } else if (uprv_strcmp(key, "end") == 0) {
-                handleValueForPattern(value, end, errorCode);
-            } else if (uprv_strcmp(key, "middle") == 0) {
-                handleValueForPattern(value, middle, errorCode);
-            } else if (uprv_strcmp(key, "start") == 0) {
-                handleValueForPattern(value, start, errorCode);
-            }
-        }
-    }
-};
-
-// Virtual destructors must be defined out of line.
-ListFormatter::ListPatternsSink::~ListPatternsSink() {}
-
-ListFormatInternal* ListFormatter::loadListFormatInternal(
+static ListFormatInternal* loadListFormatInternal(
         const Locale& locale, const char * style, UErrorCode& errorCode) {
     UResourceBundle* rb = ures_open(NULL, locale.getName(), &errorCode);
-    rb = ures_getByKeyWithFallback(rb, "listPattern", rb, &errorCode);
     if (U_FAILURE(errorCode)) {
         ures_close(rb);
         return NULL;
     }
-    ListFormatter::ListPatternsSink sink;
-    char currentStyle[kStyleLenMax+1];
-    uprv_strncpy(currentStyle, style, kStyleLenMax);
-    currentStyle[kStyleLenMax] = 0;
-
-    for (;;) {
-        ures_getAllItemsWithFallback(rb, currentStyle, sink, errorCode);
-        if (U_FAILURE(errorCode) || sink.aliasedStyle[0] == 0 || uprv_strcmp(currentStyle, sink.aliasedStyle) == 0) {
-            break;
-        }
-        uprv_strcpy(currentStyle, sink.aliasedStyle);
-    }
-    ures_close(rb);
+    rb = ures_getByKeyWithFallback(rb, "listPattern", rb, &errorCode);
+    rb = ures_getByKeyWithFallback(rb, style, rb, &errorCode);
+
     if (U_FAILURE(errorCode)) {
+        ures_close(rb);
         return NULL;
     }
-    if (sink.two.isEmpty() || sink.start.isEmpty() || sink.middle.isEmpty() || sink.end.isEmpty()) {
-        errorCode = U_MISSING_RESOURCE_ERROR;
+    UnicodeString two, start, middle, end;
+    getStringByKey(rb, "2", two, errorCode);
+    getStringByKey(rb, "start", start, errorCode);
+    getStringByKey(rb, "middle", middle, errorCode);
+    getStringByKey(rb, "end", end, errorCode);
+    ures_close(rb);
+    if (U_FAILURE(errorCode)) {
         return NULL;
     }
-    ListFormatInternal* result = new ListFormatInternal(sink.two, sink.start, sink.middle, sink.end, errorCode);
+    ListFormatInternal* result = new ListFormatInternal(two, start, middle, end, errorCode);
     if (result == NULL) {
         errorCode = U_MEMORY_ALLOCATION_ERROR;
         return NULL;
@@ -273,6 +206,15 @@ ListFormatInternal* ListFormatter::loadListFormatInternal(
     return result;
 }
 
+static void getStringByKey(const UResourceBundle* rb, const char* key, UnicodeString& result, UErrorCode& errorCode) {
+    int32_t len;
+    const UChar* ustr = ures_getStringByKeyWithFallback(rb, key, &len, &errorCode);
+    if (U_FAILURE(errorCode)) {
+      return;
+    }
+    result.setTo(ustr, len);
+}
+
 ListFormatter* ListFormatter::createInstance(UErrorCode& errorCode) {
     Locale locale;  // The default locale.
     return createInstance(locale, errorCode);
index bd37b95..bd61818 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -232,7 +232,6 @@ Normalizer2::getInstance(const char *packageName,
             }
         }
         if(allModes==NULL) {
-            ucln_common_registerCleanup(UCLN_COMMON_LOADED_NORMALIZER2, uprv_loaded_normalizer2_cleanup);
             LocalPointer<Norm2AllModes> localAllModes(
                 Norm2AllModes::createInstance(packageName, name, errorCode));
             if(U_SUCCESS(errorCode)) {
index 60d447c..6b0624f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index f054db3..6016fde 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  locavailable.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ff378b4..f2f56ad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 06133be..ab8628b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1aa3ca7..d60920c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  locdispnames.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 39934dc..a17478c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -13,7 +13,6 @@
 
 #include "unicode/locdspnm.h"
 #include "unicode/simpleformatter.h"
-#include "unicode/ucasemap.h"
 #include "unicode/ures.h"
 #include "unicode/udisplaycontext.h"
 #include "unicode/brkiter.h"
index 36508ac..d2781db 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -33,7 +33,6 @@
 
 
 #include "unicode/locid.h"
-#include "unicode/strenum.h"
 #include "unicode/uloc.h"
 #include "putilimp.h"
 #include "mutex.h"
index cdd6f78..c13b37e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  loclikely.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,7 +22,6 @@
 #include "unicode/utypes.h"
 #include "unicode/locid.h"
 #include "unicode/putil.h"
-#include "unicode/uchar.h"
 #include "unicode/uloc.h"
 #include "unicode/ures.h"
 #include "unicode/uscript.h"
diff --git a/source/common/locmap.c b/source/common/locmap.c
new file mode 100644 (file)
index 0000000..1e28bd7
--- /dev/null
@@ -0,0 +1,1175 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+ **********************************************************************
+ *   Copyright (C) 1996-2016, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ *
+ * Provides functionality for mapping between
+ * LCID and Posix IDs or ICU locale to codepage
+ *
+ * Note: All classes and code in this file are
+ *       intended for internal use only.
+ *
+ * Methods of interest:
+ *   unsigned long convertToLCID(const char*);
+ *   const char* convertToPosix(unsigned long);
+ *
+ * Kathleen Wilson, 4/30/96
+ *
+ *  Date        Name        Description
+ *  3/11/97     aliu        Fixed off-by-one bug in assignment operator. Added
+ *                          setId() method and safety check against 
+ *                          MAX_ID_LENGTH.
+ * 04/23/99     stephen     Added C wrapper for convertToPosix.
+ * 09/18/00     george      Removed the memory leaks.
+ * 08/23/01     george      Convert to C
+ */
+
+#include "locmap.h"
+#include "cstring.h"
+#include "cmemory.h"
+
+#if U_PLATFORM == U_PF_WINDOWS && defined(_MSC_VER) && (_MSC_VER >= 1500)
+/*
+ * TODO: It seems like we should widen this to
+ * either U_PLATFORM_USES_ONLY_WIN32_API (includes MinGW)
+ * or U_PLATFORM_HAS_WIN32_API (includes MinGW and Cygwin)
+ * but those use gcc and won't have defined(_MSC_VER).
+ * We might need to #include some Windows header and test for some version macro from there.
+ * Or call some Windows function and see what it returns.
+ */
+#define USE_WINDOWS_LOCALE_API
+#endif
+
+#ifdef USE_WINDOWS_LOCALE_API
+#include <windows.h>
+#include <winnls.h>
+#endif
+
+/*
+ * Note:
+ * The mapping from Win32 locale ID numbers to POSIX locale strings should
+ * be the faster one.
+ *
+ * Many LCID values come from winnt.h
+ * Some also come from http://www.microsoft.com/globaldev/reference/lcid-all.mspx
+ */
+
+/*
+////////////////////////////////////////////////
+//
+// Internal Classes for LCID <--> POSIX Mapping
+//
+/////////////////////////////////////////////////
+*/
+
+typedef struct ILcidPosixElement
+{
+    const uint32_t hostID;
+    const char * const posixID;
+} ILcidPosixElement;
+
+typedef struct ILcidPosixMap
+{
+    const uint32_t numRegions;
+    const struct ILcidPosixElement* const regionMaps;
+} ILcidPosixMap;
+
+
+/*
+/////////////////////////////////////////////////
+//
+// Easy macros to make the LCID <--> POSIX Mapping
+//
+/////////////////////////////////////////////////
+*/
+
+/**
+ * The standard one language/one country mapping for LCID.
+ * The first element must be the language, and the following
+ * elements are the language with the country.
+ * @param hostID LCID in host format such as 0x044d
+ * @param languageID posix ID of just the language such as 'de'
+ * @param posixID posix ID of the language_TERRITORY such as 'de_CH'
+ */
+#define ILCID_POSIX_ELEMENT_ARRAY(hostID, languageID, posixID) \
+static const ILcidPosixElement locmap_ ## languageID [] = { \
+    {LANGUAGE_LCID(hostID), #languageID},     /* parent locale */ \
+    {hostID, #posixID}, \
+};
+
+/**
+ * Define a subtable by ID
+ * @param id the POSIX ID, either a language or language_TERRITORY
+ */
+#define ILCID_POSIX_SUBTABLE(id) \
+static const ILcidPosixElement locmap_ ## id [] =
+
+
+/**
+ * Create the map for the posixID. This macro supposes that the language string
+ * name is the same as the global variable name, and that the first element
+ * in the ILcidPosixElement is just the language.
+ * @param _posixID the full POSIX ID for this entry.
+ */
+#define ILCID_POSIX_MAP(_posixID) \
+    {UPRV_LENGTHOF(locmap_ ## _posixID), locmap_ ## _posixID}
+
+/*
+////////////////////////////////////////////
+//
+// Create the table of LCID to POSIX Mapping
+// None of it should be dynamically created.
+//
+// Keep static locale variables inside the function so that
+// it can be created properly during static init.
+//
+// Note: This table should be updated periodically. Check the National Lanaguage Support API Reference Website.
+//       Microsoft is moving away from LCID in favor of locale name as of Vista.  This table needs to be
+//       maintained for support of older Windows version.
+//       Update: Windows 7 (091130)
+//
+// Note: Microsoft assign a different LCID if a locale has a sorting variant. POSIX IDs below may contain
+//       @collation=XXX, but no other keywords are allowed (at least for now). When uprv_convertToLCID() is
+//       called from uloc_getLCID(), keywords other than collation are already removed. If we really need
+//       to support other keywords in this mapping data, we must update the implementation.
+////////////////////////////////////////////
+*/
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0436, af, af_ZA)
+
+ILCID_POSIX_SUBTABLE(ar) {
+    {0x01,   "ar"},
+    {0x3801, "ar_AE"},
+    {0x3c01, "ar_BH"},
+    {0x1401, "ar_DZ"},
+    {0x0c01, "ar_EG"},
+    {0x0801, "ar_IQ"},
+    {0x2c01, "ar_JO"},
+    {0x3401, "ar_KW"},
+    {0x3001, "ar_LB"},
+    {0x1001, "ar_LY"},
+    {0x1801, "ar_MA"},
+    {0x1801, "ar_MO"},
+    {0x2001, "ar_OM"},
+    {0x4001, "ar_QA"},
+    {0x0401, "ar_SA"},
+    {0x2801, "ar_SY"},
+    {0x1c01, "ar_TN"},
+    {0x2401, "ar_YE"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x044d, as, as_IN)
+ILCID_POSIX_ELEMENT_ARRAY(0x045e, am, am_ET)
+ILCID_POSIX_ELEMENT_ARRAY(0x047a, arn,arn_CL)
+
+ILCID_POSIX_SUBTABLE(az) {
+    {0x2c,   "az"},
+    {0x082c, "az_Cyrl_AZ"},  /* Cyrillic based */
+    {0x742c, "az_Cyrl"},  /* Cyrillic based */
+    {0x042c, "az_Latn_AZ"}, /* Latin based */
+    {0x782c, "az_Latn"}, /* Latin based */
+    {0x042c, "az_AZ"} /* Latin based */
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x046d, ba, ba_RU)
+ILCID_POSIX_ELEMENT_ARRAY(0x0423, be, be_BY)
+
+/*ILCID_POSIX_SUBTABLE(ber) {
+    {0x5f,   "ber"},
+    {0x045f, "ber_Arab_DZ"},
+    {0x045f, "ber_Arab"},
+    {0x085f, "ber_Latn_DZ"},
+    {0x085f, "ber_Latn"}
+};*/
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0402, bg, bg_BG)
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0466, bin, bin_NG)
+
+ILCID_POSIX_SUBTABLE(bn) {
+    {0x45,   "bn"},
+    {0x0845, "bn_BD"},
+    {0x0445, "bn_IN"}
+};
+
+ILCID_POSIX_SUBTABLE(bo) {
+    {0x51,   "bo"},
+    {0x0851, "bo_BT"},
+    {0x0451, "bo_CN"},
+    {0x0c51, "dz_BT"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x047e, br, br_FR)
+
+ILCID_POSIX_SUBTABLE(ca) {
+    {0x03,   "ca"},
+    {0x0403, "ca_ES"},
+    {0x0803, "ca_ES_VALENCIA"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0483, co, co_FR)
+ILCID_POSIX_ELEMENT_ARRAY(0x045c, chr,chr_US)
+
+ILCID_POSIX_SUBTABLE(ckb) {
+    {0x92,   "ckb"},
+    {0x7c92, "ckb_Arab"},
+    {0x0492, "ckb_Arab_IQ"}
+};
+
+/* Declared as cs_CZ to get around compiler errors on z/OS, which defines cs as a function */
+ILCID_POSIX_ELEMENT_ARRAY(0x0405, cs, cs_CZ)
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0452, cy, cy_GB)
+ILCID_POSIX_ELEMENT_ARRAY(0x0406, da, da_DK)
+
+ILCID_POSIX_SUBTABLE(de) {
+    {0x07,   "de"},
+    {0x0c07, "de_AT"},
+    {0x0807, "de_CH"},
+    {0x0407, "de_DE"},
+    {0x1407, "de_LI"},
+    {0x1007, "de_LU"},
+    {0x10407,"de_DE@collation=phonebook"},  /*This is really de_DE_PHONEBOOK on Windows*/
+    {0x10407,"de@collation=phonebook"}  /*This is really de_DE_PHONEBOOK on Windows*/
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0465, dv, dv_MV)
+ILCID_POSIX_ELEMENT_ARRAY(0x0408, el, el_GR)
+
+ILCID_POSIX_SUBTABLE(en) {
+    {0x09,   "en"},
+    {0x0c09, "en_AU"},
+    {0x2809, "en_BZ"},
+    {0x1009, "en_CA"},
+    {0x0809, "en_GB"},
+    {0x3c09, "en_HK"},
+    {0x3809, "en_ID"},
+    {0x1809, "en_IE"},
+    {0x4009, "en_IN"},
+    {0x2009, "en_JM"},
+    {0x4409, "en_MY"},
+    {0x1409, "en_NZ"},
+    {0x3409, "en_PH"},
+    {0x4809, "en_SG"},
+    {0x2C09, "en_TT"},
+    {0x0409, "en_US"},
+    {0x007f, "en_US_POSIX"}, /* duplicate for roundtripping */
+    {0x2409, "en_VI"},  /* Virgin Islands AKA Caribbean Islands (en_CB). */
+    {0x1c09, "en_ZA"},
+    {0x3009, "en_ZW"},
+    {0x2409, "en_029"},
+    {0x0409, "en_AS"},  /* Alias for en_US. Leave last. */
+    {0x0409, "en_GU"},  /* Alias for en_US. Leave last. */
+    {0x0409, "en_MH"},  /* Alias for en_US. Leave last. */
+    {0x0409, "en_MP"},  /* Alias for en_US. Leave last. */
+    {0x0409, "en_UM"}   /* Alias for en_US. Leave last. */
+};
+
+ILCID_POSIX_SUBTABLE(en_US_POSIX) {
+    {0x007f, "en_US_POSIX"} /* duplicate for roundtripping */
+};
+
+ILCID_POSIX_SUBTABLE(es) {
+    {0x0a,   "es"},
+    {0x2c0a, "es_AR"},
+    {0x400a, "es_BO"},
+    {0x340a, "es_CL"},
+    {0x240a, "es_CO"},
+    {0x140a, "es_CR"},
+    {0x5c0a, "es_CU"},
+    {0x1c0a, "es_DO"},
+    {0x300a, "es_EC"},
+    {0x0c0a, "es_ES"},      /*Modern sort.*/
+    {0x100a, "es_GT"},
+    {0x480a, "es_HN"},
+    {0x080a, "es_MX"},
+    {0x4c0a, "es_NI"},
+    {0x180a, "es_PA"},
+    {0x280a, "es_PE"},
+    {0x500a, "es_PR"},
+    {0x3c0a, "es_PY"},
+    {0x440a, "es_SV"},
+    {0x540a, "es_US"},
+    {0x380a, "es_UY"},
+    {0x200a, "es_VE"},
+    {0x580a, "es_419"},
+    {0x040a, "es_ES@collation=traditional"},
+    {0x040a, "es@collation=traditional"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0425, et, et_EE)
+ILCID_POSIX_ELEMENT_ARRAY(0x042d, eu, eu_ES)
+
+/* ISO-639 doesn't distinguish between Persian and Dari.*/
+ILCID_POSIX_SUBTABLE(fa) {
+    {0x29,   "fa"},
+    {0x0429, "fa_IR"},  /* Persian/Farsi (Iran) */
+    {0x048c, "fa_AF"}   /* Persian/Dari (Afghanistan) */
+};
+
+/* duplicate for roundtripping */
+ILCID_POSIX_SUBTABLE(fa_AF) {
+    {0x8c,   "fa_AF"},  /* Persian/Dari (Afghanistan) */
+    {0x048c, "fa_AF"}   /* Persian/Dari (Afghanistan) */
+};
+
+ILCID_POSIX_SUBTABLE(ff) {
+    {0x67,   "ff"},
+    {0x7c67, "ff_Latn"},
+    {0x0867, "ff_Latn_SN"},
+    {0x0467, "ff_NG"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x040b, fi, fi_FI)
+ILCID_POSIX_ELEMENT_ARRAY(0x0464, fil,fil_PH)
+ILCID_POSIX_ELEMENT_ARRAY(0x0438, fo, fo_FO)
+
+ILCID_POSIX_SUBTABLE(fr) {
+    {0x0c,   "fr"},
+    {0x080c, "fr_BE"},
+    {0x0c0c, "fr_CA"},
+    {0x240c, "fr_CD"},
+    {0x240c, "fr_CG"},
+    {0x100c, "fr_CH"},
+    {0x300c, "fr_CI"},
+    {0x2c0c, "fr_CM"},
+    {0x040c, "fr_FR"},
+    {0x3c0c, "fr_HT"},
+    {0x140c, "fr_LU"},
+    {0x380c, "fr_MA"},
+    {0x180c, "fr_MC"},
+    {0x340c, "fr_ML"},
+    {0x200c, "fr_RE"},
+    {0x280c, "fr_SN"},
+    {0xe40c, "fr_015"},
+    {0x1c0c, "fr_029"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0467, fuv, fuv_NG)
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0462, fy, fy_NL)
+
+ILCID_POSIX_SUBTABLE(ga) { /* Gaelic (Ireland) */
+    {0x3c,   "ga"},
+    {0x083c, "ga_IE"},
+    {0x043c, "gd_GB"}
+};
+
+ILCID_POSIX_SUBTABLE(gd) { /* Gaelic (Scotland) */
+    {0x91,   "gd"},
+    {0x0491, "gd_GB"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0456, gl, gl_ES)
+ILCID_POSIX_ELEMENT_ARRAY(0x0447, gu, gu_IN)
+ILCID_POSIX_ELEMENT_ARRAY(0x0474, gn, gn_PY)
+ILCID_POSIX_ELEMENT_ARRAY(0x0484, gsw,gsw_FR)
+
+ILCID_POSIX_SUBTABLE(ha) {
+    {0x68,   "ha"},
+    {0x7c68, "ha_Latn"},
+    {0x0468, "ha_Latn_NG"},
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0475, haw,haw_US)
+ILCID_POSIX_ELEMENT_ARRAY(0x040d, he, he_IL)
+ILCID_POSIX_ELEMENT_ARRAY(0x0439, hi, hi_IN)
+
+/* This LCID is really four different locales.*/
+ILCID_POSIX_SUBTABLE(hr) {
+    {0x1a,   "hr"},
+    {0x141a, "bs_Latn_BA"},  /* Bosnian, Bosnia and Herzegovina */
+    {0x681a, "bs_Latn"},  /* Bosnian, Bosnia and Herzegovina */
+    {0x141a, "bs_BA"},  /* Bosnian, Bosnia and Herzegovina */
+    {0x781a, "bs"},     /* Bosnian */
+    {0x201a, "bs_Cyrl_BA"},  /* Bosnian, Bosnia and Herzegovina */
+    {0x641a, "bs_Cyrl"},  /* Bosnian, Bosnia and Herzegovina */
+    {0x101a, "hr_BA"},  /* Croatian in Bosnia */
+    {0x041a, "hr_HR"},  /* Croatian*/
+    {0x2c1a, "sr_Latn_ME"},
+    {0x241a, "sr_Latn_RS"},
+    {0x181a, "sr_Latn_BA"}, /* Serbo-Croatian in Bosnia */
+    {0x081a, "sr_Latn_CS"}, /* Serbo-Croatian*/
+    {0x701a, "sr_Latn"},    /* It's 0x1a or 0x081a, pick one to make the test program happy. */
+    {0x1c1a, "sr_Cyrl_BA"}, /* Serbo-Croatian in Bosnia */
+    {0x0c1a, "sr_Cyrl_CS"}, /* Serbian*/
+    {0x301a, "sr_Cyrl_ME"},
+    {0x281a, "sr_Cyrl_RS"},
+    {0x6c1a, "sr_Cyrl"},    /* It's 0x1a or 0x0c1a, pick one to make the test program happy. */
+    {0x7c1a, "sr"}          /* In CLDR sr is sr_Cyrl. */
+};
+
+ILCID_POSIX_SUBTABLE(hsb) {
+    {0x2E,   "hsb"},
+    {0x042E, "hsb_DE"},
+    {0x082E, "dsb_DE"},
+    {0x7C2E, "dsb"},
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x040e, hu, hu_HU)
+ILCID_POSIX_ELEMENT_ARRAY(0x042b, hy, hy_AM)
+ILCID_POSIX_ELEMENT_ARRAY(0x0469, ibb, ibb_NG)
+ILCID_POSIX_ELEMENT_ARRAY(0x0421, id, id_ID)
+ILCID_POSIX_ELEMENT_ARRAY(0x0470, ig, ig_NG)
+ILCID_POSIX_ELEMENT_ARRAY(0x0478, ii, ii_CN)
+ILCID_POSIX_ELEMENT_ARRAY(0x040f, is, is_IS)
+
+ILCID_POSIX_SUBTABLE(it) {
+    {0x10,   "it"},
+    {0x0810, "it_CH"},
+    {0x0410, "it_IT"}
+};
+
+ILCID_POSIX_SUBTABLE(iu) {
+    {0x5d,   "iu"},
+    {0x045d, "iu_Cans_CA"},
+    {0x785d, "iu_Cans"},
+    {0x085d, "iu_Latn_CA"},
+    {0x7c5d, "iu_Latn"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x040d, iw, iw_IL)    /*Left in for compatibility*/
+ILCID_POSIX_ELEMENT_ARRAY(0x0411, ja, ja_JP)
+ILCID_POSIX_ELEMENT_ARRAY(0x0437, ka, ka_GE)
+ILCID_POSIX_ELEMENT_ARRAY(0x043f, kk, kk_KZ)
+ILCID_POSIX_ELEMENT_ARRAY(0x046f, kl, kl_GL)
+ILCID_POSIX_ELEMENT_ARRAY(0x0453, km, km_KH)
+ILCID_POSIX_ELEMENT_ARRAY(0x044b, kn, kn_IN)
+
+ILCID_POSIX_SUBTABLE(ko) {
+    {0x12,   "ko"},
+    {0x0812, "ko_KP"},
+    {0x0412, "ko_KR"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0457, kok, kok_IN)
+ILCID_POSIX_ELEMENT_ARRAY(0x0471, kr,  kr_NG)
+
+ILCID_POSIX_SUBTABLE(ks) {         /* We could add PK and CN too */
+    {0x60,   "ks"},
+    {0x0860, "ks_IN"},              /* Documentation doesn't mention script */
+    {0x0460, "ks_Arab_IN"},
+    {0x0860, "ks_Deva_IN"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0440, ky, ky_KG)   /* Kyrgyz is spoken in Kyrgyzstan */
+ILCID_POSIX_ELEMENT_ARRAY(0x0476, la, la_IT)   /* TODO: Verify the country */
+ILCID_POSIX_ELEMENT_ARRAY(0x046e, lb, lb_LU)
+ILCID_POSIX_ELEMENT_ARRAY(0x0454, lo, lo_LA)
+ILCID_POSIX_ELEMENT_ARRAY(0x0427, lt, lt_LT)
+ILCID_POSIX_ELEMENT_ARRAY(0x0426, lv, lv_LV)
+ILCID_POSIX_ELEMENT_ARRAY(0x0481, mi, mi_NZ)
+ILCID_POSIX_ELEMENT_ARRAY(0x042f, mk, mk_MK)
+ILCID_POSIX_ELEMENT_ARRAY(0x044c, ml, ml_IN)
+
+ILCID_POSIX_SUBTABLE(mn) {
+    {0x50,   "mn"},
+    {0x0450, "mn_MN"},
+    {0x7c50, "mn_Mong"},
+    {0x0850, "mn_Mong_CN"},
+    {0x0850, "mn_CN"},
+    {0x7850, "mn_Cyrl"},
+    {0x0c50, "mn_Mong_MN"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0458, mni,mni_IN)
+ILCID_POSIX_ELEMENT_ARRAY(0x047c, moh,moh_CA)
+ILCID_POSIX_ELEMENT_ARRAY(0x044e, mr, mr_IN)
+
+ILCID_POSIX_SUBTABLE(ms) {
+    {0x3e,   "ms"},
+    {0x083e, "ms_BN"},   /* Brunei Darussalam*/
+    {0x043e, "ms_MY"}    /* Malaysia*/
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x043a, mt, mt_MT)
+ILCID_POSIX_ELEMENT_ARRAY(0x0455, my, my_MM)
+
+ILCID_POSIX_SUBTABLE(ne) {
+    {0x61,   "ne"},
+    {0x0861, "ne_IN"},   /* India*/
+    {0x0461, "ne_NP"}    /* Nepal*/
+};
+
+ILCID_POSIX_SUBTABLE(nl) {
+    {0x13,   "nl"},
+    {0x0813, "nl_BE"},
+    {0x0413, "nl_NL"}
+};
+
+/* The "no" locale split into nb and nn.  By default in ICU, "no" is nb.*/
+ILCID_POSIX_SUBTABLE(no) {
+    {0x14,   "no"},     /* really nb_NO */
+    {0x7c14, "nb"},     /* really nb */
+    {0x0414, "nb_NO"},  /* really nb_NO. Keep first in the 414 list. */
+    {0x0414, "no_NO"},  /* really nb_NO */
+    {0x0814, "nn_NO"},  /* really nn_NO. Keep first in the 814 list.  */
+    {0x7814, "nn"},     /* It's 0x14 or 0x814, pick one to make the test program happy. */
+    {0x0814, "no_NO_NY"}/* really nn_NO */
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x046c, nso,nso_ZA)   /* TODO: Verify the ISO-639 code */
+ILCID_POSIX_ELEMENT_ARRAY(0x0482, oc, oc_FR)
+
+ILCID_POSIX_SUBTABLE(om) { /* TODO: Verify the country */
+    {0x72,   "om"},
+    {0x0472, "om_ET"},
+    {0x0472, "gaz_ET"}
+};
+
+/* Declared as or_IN to get around compiler errors*/
+ILCID_POSIX_SUBTABLE(or_IN) {
+    {0x48,   "or"},
+    {0x0448, "or_IN"},
+};
+
+
+ILCID_POSIX_SUBTABLE(pa) {
+    {0x46,   "pa"},
+    {0x0446, "pa_IN"},
+    {0x0846, "pa_PK"},
+    {0x0846, "pa_Arab_PK"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0479, pap, pap_AN)
+ILCID_POSIX_ELEMENT_ARRAY(0x0415, pl, pl_PL)
+ILCID_POSIX_ELEMENT_ARRAY(0x0463, ps, ps_AF)
+
+ILCID_POSIX_SUBTABLE(pt) {
+    {0x16,   "pt"},
+    {0x0416, "pt_BR"},
+    {0x0816, "pt_PT"}
+};
+
+ILCID_POSIX_SUBTABLE(qu) {
+    {0x6b,   "qu"},
+    {0x046b, "qu_BO"},
+    {0x086b, "qu_EC"},
+    {0x0C6b, "qu_PE"},
+    {0x046b, "quz_BO"},
+    {0x086b, "quz_EC"},
+    {0x0C6b, "quz_PE"}
+};
+
+ILCID_POSIX_SUBTABLE(quc) {
+    {0x93,   "quc"},
+    {0x0493, "quc_CO"},
+    /*
+        "quc_Latn_GT" is an exceptional case. Language ID of "quc"
+        is 0x93, but LCID of "quc_Latn_GT" is 0x486, which should be
+        under the group of "qut". "qut" is a retired ISO 639-3 language
+        code for West Central Quiche, and merged to "quc".
+        It looks Windows previously reserved "qut" for K'iche', but,
+        decided to use "quc" when adding a locale for K'iche' (Guatemala).
+
+        This data structure used here assumes language ID bits in
+        LCID is unique for alphabetic language code. But this is not true
+        for "quc_Latn_GT". If we don't have the data below, LCID look up
+        by alphabetic locale ID (POSIX) will fail. The same entry is found
+        under "qut" below, which is required for reverse look up.
+    */
+    {0x0486, "quc_Latn_GT"}
+};
+
+ILCID_POSIX_SUBTABLE(qut) {
+    {0x86,   "qut"},
+    {0x0486, "qut_GT"},
+    /*
+        See the note in "quc" above.
+    */
+    {0x0486, "quc_Latn_GT"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0417, rm, rm_CH)
+
+ILCID_POSIX_SUBTABLE(ro) {
+    {0x18,   "ro"},
+    {0x0418, "ro_RO"},
+    {0x0818, "ro_MD"}
+};
+
+ILCID_POSIX_SUBTABLE(root) {
+    {0x00,   "root"}
+};
+
+ILCID_POSIX_SUBTABLE(ru) {
+    {0x19,   "ru"},
+    {0x0419, "ru_RU"},
+    {0x0819, "ru_MD"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0487, rw, rw_RW)
+ILCID_POSIX_ELEMENT_ARRAY(0x044f, sa, sa_IN)
+ILCID_POSIX_ELEMENT_ARRAY(0x0485, sah,sah_RU)
+
+ILCID_POSIX_SUBTABLE(sd) {
+    {0x59,   "sd"},
+    {0x0459, "sd_IN"},
+    {0x0459, "sd_Deva_IN"},
+    {0x0859, "sd_PK"}
+};
+
+ILCID_POSIX_SUBTABLE(se) {
+    {0x3b,   "se"},
+    {0x0c3b, "se_FI"},
+    {0x043b, "se_NO"},
+    {0x083b, "se_SE"},
+    {0x783b, "sma"},
+    {0x183b, "sma_NO"},
+    {0x1c3b, "sma_SE"},
+    {0x7c3b, "smj"},
+    {0x703b, "smn"},
+    {0x743b, "sms"},
+    {0x103b, "smj_NO"},
+    {0x143b, "smj_SE"},
+    {0x243b, "smn_FI"},
+    {0x203b, "sms_FI"},
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x045b, si, si_LK)
+ILCID_POSIX_ELEMENT_ARRAY(0x041b, sk, sk_SK)
+ILCID_POSIX_ELEMENT_ARRAY(0x0424, sl, sl_SI)
+
+ILCID_POSIX_SUBTABLE(so) { /* TODO: Verify the country */
+    {0x77,   "so"},
+    {0x0477, "so_ET"},
+    {0x0477, "so_SO"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x041c, sq, sq_AL)
+ILCID_POSIX_ELEMENT_ARRAY(0x0430, st, st_ZA)
+
+ILCID_POSIX_SUBTABLE(sv) {
+    {0x1d,   "sv"},
+    {0x081d, "sv_FI"},
+    {0x041d, "sv_SE"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0441, sw, sw_KE)
+ILCID_POSIX_ELEMENT_ARRAY(0x045A, syr, syr_SY)
+
+ILCID_POSIX_SUBTABLE(ta) {
+    {0x49,   "ta"},
+    {0x0449, "ta_IN"},
+    {0x0849, "ta_LK"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x044a, te, te_IN)
+
+/* Cyrillic based by default */
+ILCID_POSIX_SUBTABLE(tg) {
+    {0x28,   "tg"},
+    {0x7c28, "tg_Cyrl"},
+    {0x0428, "tg_Cyrl_TJ"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x041e, th, th_TH)
+
+ILCID_POSIX_SUBTABLE(ti) {
+    {0x73,   "ti"},
+    {0x0873, "ti_ER"},
+    {0x0473, "ti_ET"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0442, tk, tk_TM)
+
+ILCID_POSIX_SUBTABLE(tn) {
+    {0x32,   "tn"},
+    {0x0832, "tn_BW"},
+    {0x0432, "tn_ZA"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x041f, tr, tr_TR)
+ILCID_POSIX_ELEMENT_ARRAY(0x0431, ts, ts_ZA)
+ILCID_POSIX_ELEMENT_ARRAY(0x0444, tt, tt_RU)
+
+ILCID_POSIX_SUBTABLE(tzm) {
+    {0x5f,   "tzm"},
+    {0x7c5f, "tzm_Latn"},
+    {0x085f, "tzm_Latn_DZ"},
+    {0x105f, "tzm_Tfng_MA"},
+    {0x045f, "tzm_Arab_MA"},
+    {0x045f, "tmz"}
+};
+
+ILCID_POSIX_SUBTABLE(ug) {
+    {0x80,   "ug"},
+    {0x0480, "ug_CN"},
+    {0x0480, "ug_Arab_CN"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0422, uk, uk_UA)
+
+ILCID_POSIX_SUBTABLE(ur) {
+    {0x20,   "ur"},
+    {0x0820, "ur_IN"},
+    {0x0420, "ur_PK"}
+};
+
+ILCID_POSIX_SUBTABLE(uz) {
+    {0x43,   "uz"},
+    {0x0843, "uz_Cyrl_UZ"},  /* Cyrillic based */
+    {0x7843, "uz_Cyrl"},  /* Cyrillic based */
+    {0x0843, "uz_UZ"},  /* Cyrillic based */
+    {0x0443, "uz_Latn_UZ"}, /* Latin based */
+    {0x7c43, "uz_Latn"} /* Latin based */
+};
+
+ILCID_POSIX_SUBTABLE(ve) { /* TODO: Verify the country */
+    {0x33,   "ve"},
+    {0x0433, "ve_ZA"},
+    {0x0433, "ven_ZA"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x042a, vi, vi_VN)
+ILCID_POSIX_ELEMENT_ARRAY(0x0488, wo, wo_SN)
+ILCID_POSIX_ELEMENT_ARRAY(0x0434, xh, xh_ZA)
+ILCID_POSIX_ELEMENT_ARRAY(0x043d, yi, yi)
+ILCID_POSIX_ELEMENT_ARRAY(0x046a, yo, yo_NG)
+
+ILCID_POSIX_SUBTABLE(zh) {
+    {0x0004, "zh_Hans"},
+    {0x7804, "zh"},
+    {0x0804, "zh_CN"},
+    {0x0804, "zh_Hans_CN"},
+    {0x0c04, "zh_Hant_HK"},
+    {0x0c04, "zh_HK"},
+    {0x1404, "zh_Hant_MO"},
+    {0x1404, "zh_MO"},
+    {0x1004, "zh_Hans_SG"},
+    {0x1004, "zh_SG"},
+    {0x0404, "zh_Hant_TW"},
+    {0x7c04, "zh_Hant"},
+    {0x0404, "zh_TW"},
+    {0x30404,"zh_Hant_TW"},     /* Bopomofo order */
+    {0x30404,"zh_TW"},          /* Bopomofo order */
+    {0x20004,"zh@collation=stroke"},
+    {0x20404,"zh_Hant@collation=stroke"},
+    {0x20404,"zh_Hant_TW@collation=stroke"},
+    {0x20404,"zh_TW@collation=stroke"},
+    {0x20804,"zh_Hans@collation=stroke"},
+    {0x20804,"zh_Hans_CN@collation=stroke"},
+    {0x20804,"zh_CN@collation=stroke"}
+};
+
+ILCID_POSIX_ELEMENT_ARRAY(0x0435, zu, zu_ZA)
+
+/* This must be static and grouped by LCID. */
+static const ILcidPosixMap gPosixIDmap[] = {
+    ILCID_POSIX_MAP(af),    /*  af  Afrikaans                 0x36 */
+    ILCID_POSIX_MAP(am),    /*  am  Amharic                   0x5e */
+    ILCID_POSIX_MAP(ar),    /*  ar  Arabic                    0x01 */
+    ILCID_POSIX_MAP(arn),   /*  arn Araucanian/Mapudungun     0x7a */
+    ILCID_POSIX_MAP(as),    /*  as  Assamese                  0x4d */
+    ILCID_POSIX_MAP(az),    /*  az  Azerbaijani               0x2c */
+    ILCID_POSIX_MAP(ba),    /*  ba  Bashkir                   0x6d */
+    ILCID_POSIX_MAP(be),    /*  be  Belarusian                0x23 */
+/*    ILCID_POSIX_MAP(ber),     ber Berber/Tamazight          0x5f */
+    ILCID_POSIX_MAP(bg),    /*  bg  Bulgarian                 0x02 */
+    ILCID_POSIX_MAP(bin),   /*  bin Edo                       0x66 */
+    ILCID_POSIX_MAP(bn),    /*  bn  Bengali; Bangla           0x45 */
+    ILCID_POSIX_MAP(bo),    /*  bo  Tibetan                   0x51 */
+    ILCID_POSIX_MAP(br),    /*  br  Breton                    0x7e */
+    ILCID_POSIX_MAP(ca),    /*  ca  Catalan                   0x03 */
+    ILCID_POSIX_MAP(chr),   /*  chr Cherokee                  0x5c */
+    ILCID_POSIX_MAP(ckb),   /*  ckb Sorani (Central Kurdish)  0x92 */
+    ILCID_POSIX_MAP(co),    /*  co  Corsican                  0x83 */
+    ILCID_POSIX_MAP(cs),    /*  cs  Czech                     0x05 */
+    ILCID_POSIX_MAP(cy),    /*  cy  Welsh                     0x52 */
+    ILCID_POSIX_MAP(da),    /*  da  Danish                    0x06 */
+    ILCID_POSIX_MAP(de),    /*  de  German                    0x07 */
+    ILCID_POSIX_MAP(dv),    /*  dv  Divehi                    0x65 */
+    ILCID_POSIX_MAP(el),    /*  el  Greek                     0x08 */
+    ILCID_POSIX_MAP(en),    /*  en  English                   0x09 */
+    ILCID_POSIX_MAP(en_US_POSIX), /*    invariant             0x7f */
+    ILCID_POSIX_MAP(es),    /*  es  Spanish                   0x0a */
+    ILCID_POSIX_MAP(et),    /*  et  Estonian                  0x25 */
+    ILCID_POSIX_MAP(eu),    /*  eu  Basque                    0x2d */
+    ILCID_POSIX_MAP(fa),    /*  fa  Persian/Farsi             0x29 */
+    ILCID_POSIX_MAP(fa_AF), /*  fa  Persian/Dari              0x8c */
+    ILCID_POSIX_MAP(ff),    /*  ff  Fula                      0x67 */
+    ILCID_POSIX_MAP(fi),    /*  fi  Finnish                   0x0b */
+    ILCID_POSIX_MAP(fil),   /*  fil Filipino                  0x64 */
+    ILCID_POSIX_MAP(fo),    /*  fo  Faroese                   0x38 */
+    ILCID_POSIX_MAP(fr),    /*  fr  French                    0x0c */
+    ILCID_POSIX_MAP(fuv),   /*  fuv Fulfulde - Nigeria        0x67 */
+    ILCID_POSIX_MAP(fy),    /*  fy  Frisian                   0x62 */
+    ILCID_POSIX_MAP(ga),    /*  *   Gaelic (Ireland,Scotland) 0x3c */
+    ILCID_POSIX_MAP(gd),    /*  gd  Gaelic (United Kingdom)   0x91 */
+    ILCID_POSIX_MAP(gl),    /*  gl  Galician                  0x56 */
+    ILCID_POSIX_MAP(gn),    /*  gn  Guarani                   0x74 */
+    ILCID_POSIX_MAP(gsw),   /*  gsw Alemanic/Alsatian/Swiss German 0x84 */
+    ILCID_POSIX_MAP(gu),    /*  gu  Gujarati                  0x47 */
+    ILCID_POSIX_MAP(ha),    /*  ha  Hausa                     0x68 */
+    ILCID_POSIX_MAP(haw),   /*  haw Hawaiian                  0x75 */
+    ILCID_POSIX_MAP(he),    /*  he  Hebrew (formerly iw)      0x0d */
+    ILCID_POSIX_MAP(hi),    /*  hi  Hindi                     0x39 */
+    ILCID_POSIX_MAP(hr),    /*  *   Croatian and others       0x1a */
+    ILCID_POSIX_MAP(hsb),   /*  hsb Upper Sorbian             0x2e */
+    ILCID_POSIX_MAP(hu),    /*  hu  Hungarian                 0x0e */
+    ILCID_POSIX_MAP(hy),    /*  hy  Armenian                  0x2b */
+    ILCID_POSIX_MAP(ibb),   /*  ibb Ibibio - Nigeria          0x69 */
+    ILCID_POSIX_MAP(id),    /*  id  Indonesian (formerly in)  0x21 */
+    ILCID_POSIX_MAP(ig),    /*  ig  Igbo                      0x70 */
+    ILCID_POSIX_MAP(ii),    /*  ii  Sichuan Yi                0x78 */
+    ILCID_POSIX_MAP(is),    /*  is  Icelandic                 0x0f */
+    ILCID_POSIX_MAP(it),    /*  it  Italian                   0x10 */
+    ILCID_POSIX_MAP(iu),    /*  iu  Inuktitut                 0x5d */
+    ILCID_POSIX_MAP(iw),    /*  iw  Hebrew                    0x0d */
+    ILCID_POSIX_MAP(ja),    /*  ja  Japanese                  0x11 */
+    ILCID_POSIX_MAP(ka),    /*  ka  Georgian                  0x37 */
+    ILCID_POSIX_MAP(kk),    /*  kk  Kazakh                    0x3f */
+    ILCID_POSIX_MAP(kl),    /*  kl  Kalaallisut               0x6f */
+    ILCID_POSIX_MAP(km),    /*  km  Khmer                     0x53 */
+    ILCID_POSIX_MAP(kn),    /*  kn  Kannada                   0x4b */
+    ILCID_POSIX_MAP(ko),    /*  ko  Korean                    0x12 */
+    ILCID_POSIX_MAP(kok),   /*  kok Konkani                   0x57 */
+    ILCID_POSIX_MAP(kr),    /*  kr  Kanuri                    0x71 */
+    ILCID_POSIX_MAP(ks),    /*  ks  Kashmiri                  0x60 */
+    ILCID_POSIX_MAP(ky),    /*  ky  Kyrgyz                    0x40 */
+    ILCID_POSIX_MAP(lb),    /*  lb  Luxembourgish             0x6e */
+    ILCID_POSIX_MAP(la),    /*  la  Latin                     0x76 */
+    ILCID_POSIX_MAP(lo),    /*  lo  Lao                       0x54 */
+    ILCID_POSIX_MAP(lt),    /*  lt  Lithuanian                0x27 */
+    ILCID_POSIX_MAP(lv),    /*  lv  Latvian, Lettish          0x26 */
+    ILCID_POSIX_MAP(mi),    /*  mi  Maori                     0x81 */
+    ILCID_POSIX_MAP(mk),    /*  mk  Macedonian                0x2f */
+    ILCID_POSIX_MAP(ml),    /*  ml  Malayalam                 0x4c */
+    ILCID_POSIX_MAP(mn),    /*  mn  Mongolian                 0x50 */
+    ILCID_POSIX_MAP(mni),   /*  mni Manipuri                  0x58 */
+    ILCID_POSIX_MAP(moh),   /*  moh Mohawk                    0x7c */
+    ILCID_POSIX_MAP(mr),    /*  mr  Marathi                   0x4e */
+    ILCID_POSIX_MAP(ms),    /*  ms  Malay                     0x3e */
+    ILCID_POSIX_MAP(mt),    /*  mt  Maltese                   0x3a */
+    ILCID_POSIX_MAP(my),    /*  my  Burmese                   0x55 */
+/*    ILCID_POSIX_MAP(nb),    //  no  Norwegian                 0x14 */
+    ILCID_POSIX_MAP(ne),    /*  ne  Nepali                    0x61 */
+    ILCID_POSIX_MAP(nl),    /*  nl  Dutch                     0x13 */
+/*    ILCID_POSIX_MAP(nn),    //  no  Norwegian                 0x14 */
+    ILCID_POSIX_MAP(no),    /*  *   Norwegian                 0x14 */
+    ILCID_POSIX_MAP(nso),   /*  nso Sotho, Northern (Sepedi dialect) 0x6c */
+    ILCID_POSIX_MAP(oc),    /*  oc  Occitan                   0x82 */
+    ILCID_POSIX_MAP(om),    /*  om  Oromo                     0x72 */
+    ILCID_POSIX_MAP(or_IN), /*  or  Oriya                     0x48 */
+    ILCID_POSIX_MAP(pa),    /*  pa  Punjabi                   0x46 */
+    ILCID_POSIX_MAP(pap),   /*  pap Papiamentu                0x79 */
+    ILCID_POSIX_MAP(pl),    /*  pl  Polish                    0x15 */
+    ILCID_POSIX_MAP(ps),    /*  ps  Pashto                    0x63 */
+    ILCID_POSIX_MAP(pt),    /*  pt  Portuguese                0x16 */
+    ILCID_POSIX_MAP(qu),    /*  qu  Quechua                   0x6B */
+    ILCID_POSIX_MAP(quc),   /*  quc K'iche                    0x93 */
+    ILCID_POSIX_MAP(qut),   /*  qut K'iche                    0x86 */
+    ILCID_POSIX_MAP(rm),    /*  rm  Raeto-Romance/Romansh     0x17 */
+    ILCID_POSIX_MAP(ro),    /*  ro  Romanian                  0x18 */
+    ILCID_POSIX_MAP(root),  /*  root                          0x00 */
+    ILCID_POSIX_MAP(ru),    /*  ru  Russian                   0x19 */
+    ILCID_POSIX_MAP(rw),    /*  rw  Kinyarwanda               0x87 */
+    ILCID_POSIX_MAP(sa),    /*  sa  Sanskrit                  0x4f */
+    ILCID_POSIX_MAP(sah),   /*  sah Yakut                     0x85 */
+    ILCID_POSIX_MAP(sd),    /*  sd  Sindhi                    0x59 */
+    ILCID_POSIX_MAP(se),    /*  se  Sami                      0x3b */
+/*    ILCID_POSIX_MAP(sh),    //  sh  Serbo-Croatian            0x1a */
+    ILCID_POSIX_MAP(si),    /*  si  Sinhalese                 0x5b */
+    ILCID_POSIX_MAP(sk),    /*  sk  Slovak                    0x1b */
+    ILCID_POSIX_MAP(sl),    /*  sl  Slovenian                 0x24 */
+    ILCID_POSIX_MAP(so),    /*  so  Somali                    0x77 */
+    ILCID_POSIX_MAP(sq),    /*  sq  Albanian                  0x1c */
+/*    ILCID_POSIX_MAP(sr),    //  sr  Serbian                   0x1a */
+    ILCID_POSIX_MAP(st),    /*  st  Sutu                      0x30 */
+    ILCID_POSIX_MAP(sv),    /*  sv  Swedish                   0x1d */
+    ILCID_POSIX_MAP(sw),    /*  sw  Swahili                   0x41 */
+    ILCID_POSIX_MAP(syr),   /*  syr Syriac                    0x5A */
+    ILCID_POSIX_MAP(ta),    /*  ta  Tamil                     0x49 */
+    ILCID_POSIX_MAP(te),    /*  te  Telugu                    0x4a */
+    ILCID_POSIX_MAP(tg),    /*  tg  Tajik                     0x28 */
+    ILCID_POSIX_MAP(th),    /*  th  Thai                      0x1e */
+    ILCID_POSIX_MAP(ti),    /*  ti  Tigrigna                  0x73 */
+    ILCID_POSIX_MAP(tk),    /*  tk  Turkmen                   0x42 */
+    ILCID_POSIX_MAP(tn),    /*  tn  Tswana                    0x32 */
+    ILCID_POSIX_MAP(tr),    /*  tr  Turkish                   0x1f */
+    ILCID_POSIX_MAP(ts),    /*  ts  Tsonga                    0x31 */
+    ILCID_POSIX_MAP(tt),    /*  tt  Tatar                     0x44 */
+    ILCID_POSIX_MAP(tzm),   /*  tzm Tamazight                 0x5f */
+    ILCID_POSIX_MAP(ug),    /*  ug  Uighur                    0x80 */
+    ILCID_POSIX_MAP(uk),    /*  uk  Ukrainian                 0x22 */
+    ILCID_POSIX_MAP(ur),    /*  ur  Urdu                      0x20 */
+    ILCID_POSIX_MAP(uz),    /*  uz  Uzbek                     0x43 */
+    ILCID_POSIX_MAP(ve),    /*  ve  Venda                     0x33 */
+    ILCID_POSIX_MAP(vi),    /*  vi  Vietnamese                0x2a */
+    ILCID_POSIX_MAP(wo),    /*  wo  Wolof                     0x88 */
+    ILCID_POSIX_MAP(xh),    /*  xh  Xhosa                     0x34 */
+    ILCID_POSIX_MAP(yi),    /*  yi  Yiddish                   0x3d */
+    ILCID_POSIX_MAP(yo),    /*  yo  Yoruba                    0x6a */
+    ILCID_POSIX_MAP(zh),    /*  zh  Chinese                   0x04 */
+    ILCID_POSIX_MAP(zu),    /*  zu  Zulu                      0x35 */
+};
+
+static const uint32_t gLocaleCount = UPRV_LENGTHOF(gPosixIDmap);
+
+/**
+ * Do not call this function. It is called by hostID.
+ * The function is not private because this struct must stay as a C struct,
+ * and this is an internal class.
+ */
+static int32_t
+idCmp(const char* id1, const char* id2)
+{
+    int32_t diffIdx = 0;
+    while (*id1 == *id2 && *id1 != 0) {
+        diffIdx++;
+        id1++;
+        id2++;
+    }
+    return diffIdx;
+}
+
+/**
+ * Searches for a Windows LCID
+ *
+ * @param posixid the Posix style locale id.
+ * @param status gets set to U_ILLEGAL_ARGUMENT_ERROR when the Posix ID has
+ *               no equivalent Windows LCID.
+ * @return the LCID
+ */
+static uint32_t
+getHostID(const ILcidPosixMap *this_0, const char* posixID, UErrorCode* status)
+{
+    int32_t bestIdx = 0;
+    int32_t bestIdxDiff = 0;
+    int32_t posixIDlen = (int32_t)uprv_strlen(posixID);
+    uint32_t idx;
+
+    for (idx = 0; idx < this_0->numRegions; idx++ ) {
+        int32_t sameChars = idCmp(posixID, this_0->regionMaps[idx].posixID);
+        if (sameChars > bestIdxDiff && this_0->regionMaps[idx].posixID[sameChars] == 0) {
+            if (posixIDlen == sameChars) {
+                /* Exact match */
+                return this_0->regionMaps[idx].hostID;
+            }
+            bestIdxDiff = sameChars;
+            bestIdx = idx;
+        }
+    }
+    /* We asked for something unusual, like en_ZZ, and we try to return the number for the same language. */
+    /* We also have to make sure that sid and si and similar string subsets don't match. */
+    if ((posixID[bestIdxDiff] == '_' || posixID[bestIdxDiff] == '@')
+        && this_0->regionMaps[bestIdx].posixID[bestIdxDiff] == 0)
+    {
+        *status = U_USING_FALLBACK_WARNING;
+        return this_0->regionMaps[bestIdx].hostID;
+    }
+
+    /*no match found */
+    *status = U_ILLEGAL_ARGUMENT_ERROR;
+    return this_0->regionMaps->hostID;
+}
+
+static const char*
+getPosixID(const ILcidPosixMap *this_0, uint32_t hostID)
+{
+    uint32_t i;
+    for (i = 0; i <= this_0->numRegions; i++)
+    {
+        if (this_0->regionMaps[i].hostID == hostID)
+        {
+            return this_0->regionMaps[i].posixID;
+        }
+    }
+
+    /* If you get here, then no matching region was found,
+       so return the language id with the wild card region. */
+    return this_0->regionMaps[0].posixID;
+}
+
+/*
+//////////////////////////////////////
+//
+// LCID --> POSIX
+//
+/////////////////////////////////////
+*/
+#ifdef USE_WINDOWS_LOCALE_API
+/*
+ * Various language tags needs to be changed:
+ * quz -> qu
+ * prs -> fa
+ */
+#define FIX_LANGUAGE_ID_TAG(buffer, len) \
+    if (len >= 3) { \
+        if (buffer[0] == 'q' && buffer[1] == 'u' && buffer[2] == 'z') {\
+            buffer[2] = 0; \
+            uprv_strcat(buffer, buffer+3); \
+        } else if (buffer[0] == 'p' && buffer[1] == 'r' && buffer[2] == 's') {\
+            buffer[0] = 'f'; buffer[1] = 'a'; buffer[2] = 0; \
+            uprv_strcat(buffer, buffer+3); \
+        } \
+    }
+
+#endif
+U_CAPI int32_t
+uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UErrorCode* status)
+{
+    uint16_t langID;
+    uint32_t localeIndex;
+    UBool bLookup = TRUE;
+    const char *pPosixID = NULL;
+
+#ifdef USE_WINDOWS_LOCALE_API
+    // Note: Windows primary lang ID 0x92 in LCID is used for Central Kurdish and
+    // GetLocaleInfo() maps such LCID to "ku". However, CLDR uses "ku" for
+    // Northern Kurdish and "ckb" for Central Kurdish. For this reason, we cannot
+    // use the Windows API to resolve locale ID for this specific case.
+    if ((hostid & 0x3FF) != 0x92) {
+        int32_t tmpLen = 0;
+        char locName[157];  /* ULOC_FULLNAME_CAPACITY */
+
+        tmpLen = GetLocaleInfoA(hostid, LOCALE_SNAME, (LPSTR)locName, UPRV_LENGTHOF(locName));
+        if (tmpLen > 1) {
+            /* Windows locale name may contain sorting variant, such as "es-ES_tradnl".
+            In such case, we need special mapping data found in the hardcoded table
+            in this source file. */
+            char *p = uprv_strchr(locName, '_');
+            if (p) {
+                /* Keep the base locale, without variant */
+                *p = 0;
+                tmpLen = uprv_strlen(locName);
+            }
+            else {
+                /* No hardcoded table lookup necessary */
+                bLookup = FALSE;
+            }
+            /* Change the tag separator from '-' to '_' */
+            p = locName;
+            while (*p) {
+                if (*p == '-') {
+                    *p = '_';
+                }
+                p++;
+            }
+            FIX_LANGUAGE_ID_TAG(locName, tmpLen);
+            pPosixID = locName;
+        }
+    }
+#endif
+    if (bLookup) {
+        const char *pCandidate = NULL;
+        langID = LANGUAGE_LCID(hostid);
+
+        for (localeIndex = 0; localeIndex < gLocaleCount; localeIndex++) {
+            if (langID == gPosixIDmap[localeIndex].regionMaps->hostID) {
+                pCandidate = getPosixID(&gPosixIDmap[localeIndex], hostid);
+                break;
+            }
+        }
+
+        /* On Windows, when locale name has a variant, we still look up the hardcoded table.
+           If a match in the hardcoded table is longer than the Windows locale name without
+           variant, we use the one as the result */
+        if (pCandidate && (pPosixID == NULL || uprv_strlen(pCandidate) > uprv_strlen(pPosixID))) {
+            pPosixID = pCandidate;
+        }
+    }
+
+    if (pPosixID) {
+        int32_t resLen = uprv_strlen(pPosixID);
+        int32_t copyLen = resLen <= posixIDCapacity ? resLen : posixIDCapacity;
+        uprv_memcpy(posixID, pPosixID, copyLen);
+        if (resLen < posixIDCapacity) {
+            posixID[resLen] = 0;
+            if (*status == U_STRING_NOT_TERMINATED_WARNING) {
+                *status = U_ZERO_ERROR;
+            }
+        } else if (resLen == posixIDCapacity) {
+            *status = U_STRING_NOT_TERMINATED_WARNING;
+        } else {
+            *status = U_BUFFER_OVERFLOW_ERROR;
+        }
+        return resLen;
+    }
+
+    /* no match found */
+    *status = U_ILLEGAL_ARGUMENT_ERROR;
+    return -1;
+}
+
+/*
+//////////////////////////////////////
+//
+// POSIX --> LCID
+// This should only be called from uloc_getLCID.
+// The locale ID must be in canonical form.
+// langID is separate so that this file doesn't depend on the uloc_* API.
+//
+/////////////////////////////////////
+*/
+
+U_CAPI uint32_t
+uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
+{
+
+    uint32_t   low    = 0;
+    uint32_t   high   = gLocaleCount;
+    uint32_t   mid;
+    uint32_t   oldmid = 0;
+    int32_t    compVal;
+
+    uint32_t   value         = 0;
+    uint32_t   fallbackValue = (uint32_t)-1;
+    UErrorCode myStatus;
+    uint32_t   idx;
+
+    /* Check for incomplete id. */
+    if (!langID || !posixID || uprv_strlen(langID) < 2 || uprv_strlen(posixID) < 2) {
+        return 0;
+    }
+
+    /*Binary search for the map entry for normal cases */
+
+    while (high > low)  /*binary search*/{
+
+        mid = (high+low) >> 1; /*Finds median*/
+
+        if (mid == oldmid) 
+            break;
+
+        compVal = uprv_strcmp(langID, gPosixIDmap[mid].regionMaps->posixID);
+        if (compVal < 0){
+            high = mid;
+        }
+        else if (compVal > 0){
+            low = mid;
+        }
+        else /*we found it*/{
+            return getHostID(&gPosixIDmap[mid], posixID, status);
+        }
+        oldmid = mid;
+    }
+
+    /*
+     * Sometimes we can't do a binary search on posixID because some LCIDs
+     * go to different locales.  We hit one of those special cases.
+     */
+    for (idx = 0; idx < gLocaleCount; idx++ ) {
+        myStatus = U_ZERO_ERROR;
+        value = getHostID(&gPosixIDmap[idx], posixID, &myStatus);
+        if (myStatus == U_ZERO_ERROR) {
+            return value;
+        }
+        else if (myStatus == U_USING_FALLBACK_WARNING) {
+            fallbackValue = value;
+        }
+    }
+
+    if (fallbackValue != (uint32_t)-1) {
+        *status = U_USING_FALLBACK_WARNING;
+        return fallbackValue;
+    }
+
+    /* no match found */
+    *status = U_ILLEGAL_ARGUMENT_ERROR;
+    return 0;   /* return international (root) */
+}
+
index bef6295..4e14fe5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -32,8 +32,7 @@
 
 U_CAPI int32_t uprv_convertToPosix(uint32_t hostid, char* posixID, int32_t posixIDCapacity, UErrorCode* status);
 
-/* Don't call these functions directly. Use uloc_getLCID instead. */
-U_CAPI uint32_t uprv_convertToLCIDPlatform(const char *localeID);   // Leverage platform conversion if possible
+/* Don't call this function directly. Use uloc_getLCID instead. */
 U_CAPI uint32_t uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status);
 
 #endif /* LOCMAP_H */
index 258b707..ee60639 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  loclikely.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5f0bd52..a27edf1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 31bfffd..64f7dcc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index dc7a6ed..980f777 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  messageimpl.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f223d06..31d5bb7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  messagepattern.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0cace85..ac23b97 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //{{NO_DEPENDENCIES}}
 // Copyright (c) 2003-2010 International Business Machines
index bb45e7d..525628b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 9295404..4ddba0f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1999-2016, International Business Machines
index 9516817..943e83d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 77f6e27..33d9417 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 67f4c1c..be0240e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2impl.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 946abee..a6bf967 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2impl.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -176,7 +176,7 @@ public:
         lastCC=0;
     }
     void copyReorderableSuffixTo(UnicodeString &s) const {
-        s.setTo(ConstChar16Ptr(reorderStart), (int32_t)(limit-reorderStart));
+        s.setTo(reorderStart, (int32_t)(limit-reorderStart));
     }
 private:
     /*
index 607660c..19c09f0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *************************************************************************
 #include "normalizer2impl.h"
 #include "uprops.h"  // for uniset_getUnicode32Instance()
 
-#if defined(_ARM64_) && defined(move32)
- // System can define move32 intrinsics, but the char iters define move32 method
- // using same undef trick in headers, so undef here to re-enable the method.
-#undef move32
-#endif
-
 U_NAMESPACE_BEGIN
 
 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Normalizer)
@@ -46,7 +40,7 @@ Normalizer::Normalizer(const UnicodeString& str, UNormalizationMode mode) :
     init();
 }
 
-Normalizer::Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mode) :
+Normalizer::Normalizer(const UChar *str, int32_t length, UNormalizationMode mode) :
     UObject(), fFilteredNorm2(NULL), fNorm2(NULL), fUMode(mode), fOptions(0),
     text(new UCharCharacterIterator(str, length)),
     currentIndex(0), nextIndex(0),
@@ -441,7 +435,7 @@ Normalizer::setText(const CharacterIterator& newText,
 }
 
 void
-Normalizer::setText(ConstChar16Ptr newText,
+Normalizer::setText(const UChar* newText,
                     int32_t length,
                     UErrorCode &status)
 {
index 56c6c78..af6ac6c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 01e33ce..30c3f68 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  patternprops.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a42eb3c..f309c2d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  patternprops.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ec87f01..fc5f8fc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines Corporation and
index db64409..76e95c5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index a12eb7d..4107869 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1a8ced5..c93d3d7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c15b2a4..4863b26 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
diff --git a/source/common/propsvec.c b/source/common/propsvec.c
new file mode 100644 (file)
index 0000000..ed4d899
--- /dev/null
@@ -0,0 +1,527 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2002-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  propsvec.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2002feb22
+*   created by: Markus W. Scherer
+*
+*   Store bits (Unicode character properties) in bit set vectors.
+*/
+
+#include <stdlib.h>
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "utrie.h"
+#include "utrie2.h"
+#include "uarrsort.h"
+#include "propsvec.h"
+#include "uassert.h"
+
+struct UPropsVectors {
+    uint32_t *v;
+    int32_t columns;  /* number of columns, plus two for start & limit values */
+    int32_t maxRows;
+    int32_t rows;
+    int32_t prevRow;  /* search optimization: remember last row seen */
+    UBool isCompacted;
+};
+
+#define UPVEC_INITIAL_ROWS (1<<12)
+#define UPVEC_MEDIUM_ROWS ((int32_t)1<<16)
+#define UPVEC_MAX_ROWS (UPVEC_MAX_CP+1)
+
+U_CAPI UPropsVectors * U_EXPORT2
+upvec_open(int32_t columns, UErrorCode *pErrorCode) {
+    UPropsVectors *pv;
+    uint32_t *v, *row;
+    uint32_t cp;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return NULL;
+    }
+    if(columns<1) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    columns+=2; /* count range start and limit columns */
+
+    pv=(UPropsVectors *)uprv_malloc(sizeof(UPropsVectors));
+    v=(uint32_t *)uprv_malloc(UPVEC_INITIAL_ROWS*columns*4);
+    if(pv==NULL || v==NULL) {
+        uprv_free(pv);
+        uprv_free(v);
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    uprv_memset(pv, 0, sizeof(UPropsVectors));
+    pv->v=v;
+    pv->columns=columns;
+    pv->maxRows=UPVEC_INITIAL_ROWS;
+    pv->rows=2+(UPVEC_MAX_CP-UPVEC_FIRST_SPECIAL_CP);
+
+    /* set the all-Unicode row and the special-value rows */
+    row=pv->v;
+    uprv_memset(row, 0, pv->rows*columns*4);
+    row[0]=0;
+    row[1]=0x110000;
+    row+=columns;
+    for(cp=UPVEC_FIRST_SPECIAL_CP; cp<=UPVEC_MAX_CP; ++cp) {
+        row[0]=cp;
+        row[1]=cp+1;
+        row+=columns;
+    }
+    return pv;
+}
+
+U_CAPI void U_EXPORT2
+upvec_close(UPropsVectors *pv) {
+    if(pv!=NULL) {
+        uprv_free(pv->v);
+        uprv_free(pv);
+    }
+}
+
+static uint32_t *
+_findRow(UPropsVectors *pv, UChar32 rangeStart) {
+    uint32_t *row;
+    int32_t columns, i, start, limit, prevRow;
+
+    columns=pv->columns;
+    limit=pv->rows;
+    prevRow=pv->prevRow;
+
+    /* check the vicinity of the last-seen row (start searching with an unrolled loop) */
+    row=pv->v+prevRow*columns;
+    if(rangeStart>=(UChar32)row[0]) {
+        if(rangeStart<(UChar32)row[1]) {
+            /* same row as last seen */
+            return row;
+        } else if(rangeStart<(UChar32)(row+=columns)[1]) {
+            /* next row after the last one */
+            pv->prevRow=prevRow+1;
+            return row;
+        } else if(rangeStart<(UChar32)(row+=columns)[1]) {
+            /* second row after the last one */
+            pv->prevRow=prevRow+2;
+            return row;
+        } else if((rangeStart-(UChar32)row[1])<10) {
+            /* we are close, continue looping */
+            prevRow+=2;
+            do {
+                ++prevRow;
+                row+=columns;
+            } while(rangeStart>=(UChar32)row[1]);
+            pv->prevRow=prevRow;
+            return row;
+        }
+    } else if(rangeStart<(UChar32)pv->v[1]) {
+        /* the very first row */
+        pv->prevRow=0;
+        return pv->v;
+    }
+
+    /* do a binary search for the start of the range */
+    start=0;
+    while(start<limit-1) {
+        i=(start+limit)/2;
+        row=pv->v+i*columns;
+        if(rangeStart<(UChar32)row[0]) {
+            limit=i;
+        } else if(rangeStart<(UChar32)row[1]) {
+            pv->prevRow=i;
+            return row;
+        } else {
+            start=i;
+        }
+    }
+
+    /* must be found because all ranges together always cover all of Unicode */
+    pv->prevRow=start;
+    return pv->v+start*columns;
+}
+
+U_CAPI void U_EXPORT2
+upvec_setValue(UPropsVectors *pv,
+               UChar32 start, UChar32 end,
+               int32_t column,
+               uint32_t value, uint32_t mask,
+               UErrorCode *pErrorCode) {
+    uint32_t *firstRow, *lastRow;
+    int32_t columns;
+    UChar32 limit;
+    UBool splitFirstRow, splitLastRow;
+
+    /* argument checking */
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+    if( pv==NULL ||
+        start<0 || start>end || end>UPVEC_MAX_CP ||
+        column<0 || column>=(pv->columns-2)
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if(pv->isCompacted) {
+        *pErrorCode=U_NO_WRITE_PERMISSION;
+        return;
+    }
+    limit=end+1;
+
+    /* initialize */
+    columns=pv->columns;
+    column+=2; /* skip range start and limit columns */
+    value&=mask;
+
+    /* find the rows whose ranges overlap with the input range */
+
+    /* find the first and last rows, always successful */
+    firstRow=_findRow(pv, start);
+    lastRow=_findRow(pv, end);
+
+    /*
+     * Rows need to be split if they partially overlap with the
+     * input range (only possible for the first and last rows)
+     * and if their value differs from the input value.
+     */
+    splitFirstRow= (UBool)(start!=(UChar32)firstRow[0] && value!=(firstRow[column]&mask));
+    splitLastRow= (UBool)(limit!=(UChar32)lastRow[1] && value!=(lastRow[column]&mask));
+
+    /* split first/last rows if necessary */
+    if(splitFirstRow || splitLastRow) {
+        int32_t count, rows;
+
+        rows=pv->rows;
+        if((rows+splitFirstRow+splitLastRow)>pv->maxRows) {
+            uint32_t *newVectors;
+            int32_t newMaxRows;
+
+            if(pv->maxRows<UPVEC_MEDIUM_ROWS) {
+                newMaxRows=UPVEC_MEDIUM_ROWS;
+            } else if(pv->maxRows<UPVEC_MAX_ROWS) {
+                newMaxRows=UPVEC_MAX_ROWS;
+            } else {
+                /* Implementation bug, or UPVEC_MAX_ROWS too low. */
+                *pErrorCode=U_INTERNAL_PROGRAM_ERROR;
+                return;
+            }
+            newVectors=(uint32_t *)uprv_malloc(newMaxRows*columns*4);
+            if(newVectors==NULL) {
+                *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+                return;
+            }
+            uprv_memcpy(newVectors, pv->v, (size_t)rows*columns*4);
+            firstRow=newVectors+(firstRow-pv->v);
+            lastRow=newVectors+(lastRow-pv->v);
+            uprv_free(pv->v);
+            pv->v=newVectors;
+            pv->maxRows=newMaxRows;
+        }
+
+        /* count the number of row cells to move after the last row, and move them */
+        count = (int32_t)((pv->v+rows*columns)-(lastRow+columns));
+        if(count>0) {
+            uprv_memmove(
+                lastRow+(1+splitFirstRow+splitLastRow)*columns,
+                lastRow+columns,
+                count*4);
+        }
+        pv->rows=rows+splitFirstRow+splitLastRow;
+
+        /* split the first row, and move the firstRow pointer to the second part */
+        if(splitFirstRow) {
+            /* copy all affected rows up one and move the lastRow pointer */
+            count = (int32_t)((lastRow-firstRow)+columns);
+            uprv_memmove(firstRow+columns, firstRow, (size_t)count*4);
+            lastRow+=columns;
+
+            /* split the range and move the firstRow pointer */
+            firstRow[1]=firstRow[columns]=(uint32_t)start;
+            firstRow+=columns;
+        }
+
+        /* split the last row */
+        if(splitLastRow) {
+            /* copy the last row data */
+            uprv_memcpy(lastRow+columns, lastRow, (size_t)columns*4);
+
+            /* split the range and move the firstRow pointer */
+            lastRow[1]=lastRow[columns]=(uint32_t)limit;
+        }
+    }
+
+    /* set the "row last seen" to the last row for the range */
+    pv->prevRow=(int32_t)((lastRow-(pv->v))/columns);
+
+    /* set the input value in all remaining rows */
+    firstRow+=column;
+    lastRow+=column;
+    mask=~mask;
+    for(;;) {
+        *firstRow=(*firstRow&mask)|value;
+        if(firstRow==lastRow) {
+            break;
+        }
+        firstRow+=columns;
+    }
+}
+
+U_CAPI uint32_t U_EXPORT2
+upvec_getValue(const UPropsVectors *pv, UChar32 c, int32_t column) {
+    uint32_t *row;
+    UPropsVectors *ncpv;
+
+    if(pv->isCompacted || c<0 || c>UPVEC_MAX_CP || column<0 || column>=(pv->columns-2)) {
+        return 0;
+    }
+    ncpv=(UPropsVectors *)pv;
+    row=_findRow(ncpv, c);
+    return row[2+column];
+}
+
+U_CAPI uint32_t * U_EXPORT2
+upvec_getRow(const UPropsVectors *pv, int32_t rowIndex,
+             UChar32 *pRangeStart, UChar32 *pRangeEnd) {
+    uint32_t *row;
+    int32_t columns;
+
+    if(pv->isCompacted || rowIndex<0 || rowIndex>=pv->rows) {
+        return NULL;
+    }
+
+    columns=pv->columns;
+    row=pv->v+rowIndex*columns;
+    if(pRangeStart!=NULL) {
+        *pRangeStart=(UChar32)row[0];
+    }
+    if(pRangeEnd!=NULL) {
+        *pRangeEnd=(UChar32)row[1]-1;
+    }
+    return row+2;
+}
+
+static int32_t U_CALLCONV
+upvec_compareRows(const void *context, const void *l, const void *r) {
+    const uint32_t *left=(const uint32_t *)l, *right=(const uint32_t *)r;
+    const UPropsVectors *pv=(const UPropsVectors *)context;
+    int32_t i, count, columns;
+
+    count=columns=pv->columns; /* includes start/limit columns */
+
+    /* start comparing after start/limit but wrap around to them */
+    i=2;
+    do {
+        if(left[i]!=right[i]) {
+            return left[i]<right[i] ? -1 : 1;
+        }
+        if(++i==columns) {
+            i=0;
+        }
+    } while(--count>0);
+
+    return 0;
+}
+
+U_CAPI void U_EXPORT2
+upvec_compact(UPropsVectors *pv, UPVecCompactHandler *handler, void *context, UErrorCode *pErrorCode) {
+    uint32_t *row;
+    int32_t i, columns, valueColumns, rows, count;
+    UChar32 start, limit;
+
+    /* argument checking */
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+    if(handler==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if(pv->isCompacted) {
+        return;
+    }
+
+    /* Set the flag now: Sorting and compacting destroys the builder data structure. */
+    pv->isCompacted=TRUE;
+
+    rows=pv->rows;
+    columns=pv->columns;
+    U_ASSERT(columns>=3); /* upvec_open asserts this */
+    valueColumns=columns-2; /* not counting start & limit */
+
+    /* sort the properties vectors to find unique vector values */
+    uprv_sortArray(pv->v, rows, columns*4,
+                   upvec_compareRows, pv, FALSE, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    /*
+     * Find and set the special values.
+     * This has to do almost the same work as the compaction below,
+     * to find the indexes where the special-value rows will move.
+     */
+    row=pv->v;
+    count=-valueColumns;
+    for(i=0; i<rows; ++i) {
+        start=(UChar32)row[0];
+
+        /* count a new values vector if it is different from the current one */
+        if(count<0 || 0!=uprv_memcmp(row+2, row-valueColumns, valueColumns*4)) {
+            count+=valueColumns;
+        }
+
+        if(start>=UPVEC_FIRST_SPECIAL_CP) {
+            handler(context, start, start, count, row+2, valueColumns, pErrorCode);
+            if(U_FAILURE(*pErrorCode)) {
+                return;
+            }
+        }
+
+        row+=columns;
+    }
+
+    /* count is at the beginning of the last vector, add valueColumns to include that last vector */
+    count+=valueColumns;
+
+    /* Call the handler once more to signal the start of delivering real values. */
+    handler(context, UPVEC_START_REAL_VALUES_CP, UPVEC_START_REAL_VALUES_CP,
+            count, row-valueColumns, valueColumns, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    /*
+     * Move vector contents up to a contiguous array with only unique
+     * vector values, and call the handler function for each vector.
+     *
+     * This destroys the Properties Vector structure and replaces it
+     * with an array of just vector values.
+     */
+    row=pv->v;
+    count=-valueColumns;
+    for(i=0; i<rows; ++i) {
+        /* fetch these first before memmove() may overwrite them */
+        start=(UChar32)row[0];
+        limit=(UChar32)row[1];
+
+        /* add a new values vector if it is different from the current one */
+        if(count<0 || 0!=uprv_memcmp(row+2, pv->v+count, valueColumns*4)) {
+            count+=valueColumns;
+            uprv_memmove(pv->v+count, row+2, (size_t)valueColumns*4);
+        }
+
+        if(start<UPVEC_FIRST_SPECIAL_CP) {
+            handler(context, start, limit-1, count, pv->v+count, valueColumns, pErrorCode);
+            if(U_FAILURE(*pErrorCode)) {
+                return;
+            }
+        }
+
+        row+=columns;
+    }
+
+    /* count is at the beginning of the last vector, add one to include that last vector */
+    pv->rows=count/valueColumns+1;
+}
+
+U_CAPI const uint32_t * U_EXPORT2
+upvec_getArray(const UPropsVectors *pv, int32_t *pRows, int32_t *pColumns) {
+    if(!pv->isCompacted) {
+        return NULL;
+    }
+    if(pRows!=NULL) {
+        *pRows=pv->rows;
+    }
+    if(pColumns!=NULL) {
+        *pColumns=pv->columns-2;
+    }
+    return pv->v;
+}
+
+U_CAPI uint32_t * U_EXPORT2
+upvec_cloneArray(const UPropsVectors *pv,
+                 int32_t *pRows, int32_t *pColumns, UErrorCode *pErrorCode) {
+    uint32_t *clonedArray;
+    int32_t byteLength;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return NULL;
+    }
+    if(!pv->isCompacted) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    byteLength=pv->rows*(pv->columns-2)*4;
+    clonedArray=(uint32_t *)uprv_malloc(byteLength);
+    if(clonedArray==NULL) {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    uprv_memcpy(clonedArray, pv->v, byteLength);
+    if(pRows!=NULL) {
+        *pRows=pv->rows;
+    }
+    if(pColumns!=NULL) {
+        *pColumns=pv->columns-2;
+    }
+    return clonedArray;
+}
+
+U_CAPI UTrie2 * U_EXPORT2
+upvec_compactToUTrie2WithRowIndexes(UPropsVectors *pv, UErrorCode *pErrorCode) {
+    UPVecToUTrie2Context toUTrie2={ NULL, 0, 0, 0 };
+    upvec_compact(pv, upvec_compactToUTrie2Handler, &toUTrie2, pErrorCode);
+    utrie2_freeze(toUTrie2.trie, UTRIE2_16_VALUE_BITS, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        utrie2_close(toUTrie2.trie);
+        toUTrie2.trie=NULL;
+    }
+    return toUTrie2.trie;
+}
+
+/*
+ * TODO(markus): Add upvec_16BitsToUTrie2() function that enumerates all rows, extracts
+ * some 16-bit field and builds and returns a UTrie2.
+ */
+
+U_CAPI void U_CALLCONV
+upvec_compactToUTrie2Handler(void *context,
+                             UChar32 start, UChar32 end,
+                             int32_t rowIndex, uint32_t *row, int32_t columns,
+                             UErrorCode *pErrorCode) {
+    UPVecToUTrie2Context *toUTrie2=(UPVecToUTrie2Context *)context;
+    if(start<UPVEC_FIRST_SPECIAL_CP) {
+        utrie2_setRange32(toUTrie2->trie, start, end, (uint32_t)rowIndex, TRUE, pErrorCode);
+    } else {
+        switch(start) {
+        case UPVEC_INITIAL_VALUE_CP:
+            toUTrie2->initialValue=rowIndex;
+            break;
+        case UPVEC_ERROR_VALUE_CP:
+            toUTrie2->errorValue=rowIndex;
+            break;
+        case UPVEC_START_REAL_VALUES_CP:
+            toUTrie2->maxValue=rowIndex;
+            if(rowIndex>0xffff) {
+                /* too many rows for a 16-bit trie */
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+            } else {
+                toUTrie2->trie=utrie2_open(toUTrie2->initialValue,
+                                           toUTrie2->errorValue, pErrorCode);
+            }
+            break;
+        default:
+            break;
+        }
+    }
+}
index 3908061..b34e4ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  propsvec.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 90fe1ec..1d2ccb3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  punycode.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5d8a243..ff23eb0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  punycode.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 023186c..03f6548 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 // Must be before any other #includes.
 #include "uposixdefs.h"
 
-// First, the platform type. Need this for U_PLATFORM.
-#include "unicode/platform.h"
-
-#if U_PLATFORM == U_PF_MINGW && defined __STRICT_ANSI__
-/* tzset isn't defined in strict ANSI on MinGW. */
-#undef __STRICT_ANSI__
-#endif
-
-/*
- * Cygwin with GCC requires inclusion of time.h after the above disabling strict asci mode statement.
- */
-#include <time.h>
-
-#if !U_PLATFORM_USES_ONLY_WIN32_API
-#include <sys/time.h>
-#endif
-
-/* include the rest of the ICU headers */
+/* include ICU headers */
+#include "unicode/utypes.h"
 #include "unicode/putil.h"
 #include "unicode/ustring.h"
 #include "putilimp.h"
      * Should Cygwin be included as well (U_PLATFORM_HAS_WIN32_API)
      * to use native APIs as much as possible?
      */
-#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
-#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
 #   define NOIME
 #   define NOMCX
 #   include <windows.h>
-#   include "unicode\uloc.h"
-#if U_PLATFORM_HAS_WINUWP_API == 0
 #   include "wintz.h"
-#else // U_PLATFORM_HAS_WINUWP_API
-typedef PVOID LPMSG; // TODO: figure out how to get rid of this typedef
-#include <Windows.Globalization.h>
-#include <windows.system.userprofile.h>
-#include <wrl\wrappers\corewrappers.h>
-#include <wrl\client.h>
-
-using namespace ABI::Windows::Foundation;
-using namespace Microsoft::WRL;
-using namespace Microsoft::WRL::Wrappers;
-#endif
 #elif U_PLATFORM == U_PF_OS400
 #   include <float.h>
 #   include <qusec.h>       /* error code structure */
@@ -135,6 +104,20 @@ using namespace Microsoft::WRL::Wrappers;
 #   include <sys/neutrino.h>
 #endif
 
+#if (U_PF_MINGW <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(__STRICT_ANSI__)
+/* tzset isn't defined in strict ANSI on Cygwin and MinGW. */
+#undef __STRICT_ANSI__
+#endif
+
+/*
+ * Cygwin with GCC requires inclusion of time.h after the above disabling strict asci mode statement.
+ */
+#include <time.h>
+
+#if !U_PLATFORM_USES_ONLY_WIN32_API
+#include <sys/time.h>
+#endif
+
 /*
  * Only include langinfo.h if we have a way to get the codeset. If we later
  * depend on more feature, we can test on U_HAVE_NL_LANGINFO.
@@ -668,7 +651,7 @@ uprv_timezone()
 /* Note that U_TZNAME does *not* have to be tzname, but if it is,
    some platforms need to have it declared here. */
 
-#if defined(U_TZNAME) && (U_PLATFORM == U_PF_IRIX || U_PLATFORM_IS_DARWIN_BASED)
+#if defined(U_TZNAME) && (U_PLATFORM == U_PF_IRIX || U_PLATFORM_IS_DARWIN_BASED || (U_PLATFORM == U_PF_CYGWIN && !U_PLATFORM_USES_ONLY_WIN32_API))
 /* RS6000 and others reject char **tzname.  */
 extern U_IMPORT char *U_TZNAME[];
 #endif
@@ -1025,65 +1008,16 @@ uprv_tzname_clear_cache()
 #endif
 }
 
-// With the Universal Windows Platform we can just ask Windows for the name
-#if U_PLATFORM_HAS_WINUWP_API
-U_CAPI const char* U_EXPORT2
-uprv_getWindowsTimeZone()
-{
-    // Get default Windows timezone.   
-    ComPtr<IInspectable> calendar;
-    HRESULT hr = RoActivateInstance(
-        HStringReference(RuntimeClass_Windows_Globalization_Calendar).Get(),
-        &calendar);
-    if (SUCCEEDED(hr))
-    {
-        ComPtr<ABI::Windows::Globalization::ITimeZoneOnCalendar> timezone;
-        hr = calendar.As(&timezone);
-        if (SUCCEEDED(hr))
-        {
-            HString timezoneString;
-            hr = timezone->GetTimeZone(timezoneString.GetAddressOf());
-            if (SUCCEEDED(hr))
-            {
-                int32_t length = wcslen(timezoneString.GetRawBuffer(NULL));
-                char* asciiId = (char*)uprv_calloc(length + 1, sizeof(char));
-                if (asciiId != nullptr)
-                {
-                    u_UCharsToChars((UChar*)timezoneString.GetRawBuffer(NULL), asciiId, length);
-                    return asciiId;
-                }
-            }
-        }
-    }
-
-    // Failed
-    return nullptr;
-}
-#endif
-
 U_CAPI const char* U_EXPORT2
 uprv_tzname(int n)
 {
     const char *tzid = NULL;
 #if U_PLATFORM_USES_ONLY_WIN32_API
-#if U_PLATFORM_HAS_WINUWP_API > 0
-    tzid = uprv_getWindowsTimeZone();
-#else
     tzid = uprv_detectWindowsTimeZone();
-#endif
 
     if (tzid != NULL) {
         return tzid;
     }
-
-#ifndef U_TZNAME
-    // The return value is free'd in timezone.cpp on Windows because
-    // the other code path returns a pointer to a heap location.
-    // If we don't have a name already, then tzname wouldn't be any
-    // better, so just fall back.
-    return uprv_strdup("Etc/UTC");
-#endif // !U_TZNAME
-
 #else
 
 /*#if U_PLATFORM_IS_DARWIN_BASED
@@ -1228,8 +1162,7 @@ UInitOnce gTimeZoneFilesInitOnce = U_INITONCE_INITIALIZER;
 static CharString *gTimeZoneFilesDirectory = NULL;
 
 #if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
- static char *gCorrectedPOSIXLocale = NULL; /* Sometimes heap allocated */
- static bool gCorrectedPOSIXLocaleHeapAllocated = false;
+ static char *gCorrectedPOSIXLocale = NULL; /* Heap allocated */
 #endif
 
 static UBool U_CALLCONV putil_cleanup(void)
@@ -1250,10 +1183,9 @@ static UBool U_CALLCONV putil_cleanup(void)
 #endif
 
 #if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
-    if (gCorrectedPOSIXLocale && gCorrectedPOSIXLocaleHeapAllocated) {
+    if (gCorrectedPOSIXLocale) {
         uprv_free(gCorrectedPOSIXLocale);
         gCorrectedPOSIXLocale = NULL;
-        gCorrectedPOSIXLocaleHeapAllocated = false;
     }
 #endif
     return TRUE;
@@ -1365,9 +1297,7 @@ static void U_CALLCONV dataDirectoryInitFn() {
     */
 #   if !defined(ICU_NO_USER_DATA_OVERRIDE) && !UCONFIG_NO_FILE_IO
     /* First try to get the environment variable */
-#       if U_PLATFORM_HAS_WINUWP_API == 0  // Windows UWP does not support getenv
-        path=getenv("ICU_DATA");
-#       endif
+    path=getenv("ICU_DATA");
 #   endif
 
     /* ICU_DATA_DIR may be set as a compile option.
@@ -1396,35 +1326,9 @@ static void U_CALLCONV dataDirectoryInitFn() {
     }
 #endif
 
-#if defined(ICU_DATA_DIR_WINDOWS) && U_PLATFORM_HAS_WINUWP_API != 0
-    // Use data from the %windir%\globalization\icu directory
-    // This is only available if ICU is built as a system component
-    char datadir_path_buffer[MAX_PATH];
-    UINT length = GetWindowsDirectoryA(datadir_path_buffer, UPRV_LENGTHOF(datadir_path_buffer));
-    if (length > 0 && length < (UPRV_LENGTHOF(datadir_path_buffer) - sizeof(ICU_DATA_DIR_WINDOWS) - 1))
-    {
-        if (datadir_path_buffer[length - 1] != '\\')
-        {
-            datadir_path_buffer[length++] = '\\';
-            datadir_path_buffer[length] = '\0';
-        }
-
-        if ((length + 1 + sizeof(ICU_DATA_DIR_WINDOWS)) < UPRV_LENGTHOF(datadir_path_buffer))
-        {
-            uprv_strcat(datadir_path_buffer, ICU_DATA_DIR_WINDOWS);
-            path = datadir_path_buffer;
-        }
-    }
-#endif
-
     if(path==NULL) {
         /* It looks really bad, set it to something. */
-#if U_PLATFORM_HAS_WIN32_API
-        // Windows UWP will require icudtl.dat file in same directory as icuuc.dll
-        path = ".\\";
-#else
         path = "";
-#endif
     }
 
     u_setDataDirectory(path);
@@ -1462,12 +1366,7 @@ static void U_CALLCONV TimeZoneDataDirInitFn(UErrorCode &status) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
-#if U_PLATFORM_HAS_WINUWP_API == 0
     const char *dir = getenv("ICU_TIMEZONE_FILES_DIR");
-#else
-    // TODO: UWP does not support alternate timezone data directories at this time
-    const char *dir = "";
-#endif // U_PLATFORM_HAS_WINUWP_API
 #if defined(U_TIMEZONE_FILES_DIR)
     if (dir == NULL) {
         dir = TO_STRING(U_TIMEZONE_FILES_DIR);
@@ -1704,7 +1603,6 @@ The leftmost codepage (.xxx) wins.
 
     if (gCorrectedPOSIXLocale == NULL) {
         gCorrectedPOSIXLocale = correctedPOSIXLocale;
-        gCorrectedPOSIXLocaleHeapAllocated = true;
         ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
         correctedPOSIXLocale = NULL;
     }
@@ -1720,115 +1618,25 @@ The leftmost codepage (.xxx) wins.
     UErrorCode status = U_ZERO_ERROR;
     char *correctedPOSIXLocale = 0;
 
-    // If we have already figured this out just use the cached value
     if (gCorrectedPOSIXLocale != NULL) {
         return gCorrectedPOSIXLocale;
     }
 
-    // No cached value, need to determine the current value
-    static WCHAR windowsLocale[LOCALE_NAME_MAX_LENGTH];
-#if U_PLATFORM_HAS_WINUWP_API == 0 
-    // If not a Universal Windows App, we'll need user default language.
-    // Vista and above should use Locale Names instead of LCIDs
-    int length = GetUserDefaultLocaleName(windowsLocale, UPRV_LENGTHOF(windowsLocale));
-#else
-    // In a UWP app, we want the top language that the application and user agreed upon
-    ComPtr<ABI::Windows::Foundation::Collections::IVectorView<HSTRING>> languageList;
-
-    ComPtr<ABI::Windows::Globalization::IApplicationLanguagesStatics> applicationLanguagesStatics;
-    HRESULT hr = GetActivationFactory(
-        HStringReference(RuntimeClass_Windows_Globalization_ApplicationLanguages).Get(),
-        &applicationLanguagesStatics);
-    if (SUCCEEDED(hr))
-    {
-        hr = applicationLanguagesStatics->get_Languages(&languageList);
-    }
-
-    if (FAILED(hr))
-    {
-        // If there is no application context, then use the top language from the user language profile
-        ComPtr<ABI::Windows::System::UserProfile::IGlobalizationPreferencesStatics> globalizationPreferencesStatics;
-        hr = GetActivationFactory(
-            HStringReference(RuntimeClass_Windows_System_UserProfile_GlobalizationPreferences).Get(),
-            &globalizationPreferencesStatics);
-        if (SUCCEEDED(hr))
-        {
-            hr = globalizationPreferencesStatics->get_Languages(&languageList);
-        }
-    }
-
-    // We have a list of languages, ICU knows one, so use the top one for our locale
-    HString topLanguage;
-    if (SUCCEEDED(hr))
-    {
-        hr = languageList->GetAt(0, topLanguage.GetAddressOf());
-    }
-
-    if (FAILED(hr))
-    {
-        // Unexpected, use en-US by default
-        if (gCorrectedPOSIXLocale == NULL) {
-            gCorrectedPOSIXLocale = "en_US";
-        }
-
-        return gCorrectedPOSIXLocale;
-    }
-
-    // ResolveLocaleName will get a likely subtags form consistent with Windows behavior.
-    int length = ResolveLocaleName(topLanguage.GetRawBuffer(NULL), windowsLocale, UPRV_LENGTHOF(windowsLocale));
-#endif
-    // Now we should have a Windows locale name that needs converted to the POSIX style,
-    if (length > 0)
-    {
-        // First we need to go from UTF-16 to char (and also convert from _ to - while we're at it.)
-        char modifiedWindowsLocale[LOCALE_NAME_MAX_LENGTH];
-
-        int32_t i;
-        for (i = 0; i < UPRV_LENGTHOF(modifiedWindowsLocale); i++)
-        {
-            if (windowsLocale[i] == '_')
-            {
-                modifiedWindowsLocale[i] = '-';
-            }
-            else
-            {
-                modifiedWindowsLocale[i] = static_cast<char>(windowsLocale[i]);
-            }
-
-            if (modifiedWindowsLocale[i] == '\0')
-            {
-                break;
-            }
-        }
-
-        if (i >= UPRV_LENGTHOF(modifiedWindowsLocale))
-        {
-            // Ran out of room, can't really happen, maybe we'll be lucky about a matching
-            // locale when tags are dropped
-            modifiedWindowsLocale[UPRV_LENGTHOF(modifiedWindowsLocale) - 1] = '\0';
-        }
-
-        // Now normalize the resulting name
-        if (correctedPOSIXLocale)
-        {
-            int32_t posixLen = uloc_canonicalize(modifiedWindowsLocale, correctedPOSIXLocale, POSIX_LOCALE_CAPACITY, &status);
-            if (U_SUCCESS(status))
-            {
-                *(correctedPOSIXLocale + posixLen) = 0;
-                gCorrectedPOSIXLocale = correctedPOSIXLocale;
-                gCorrectedPOSIXLocaleHeapAllocated = true;
-                ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
-            }
-            else
-            {
-                uprv_free(correctedPOSIXLocale);
-            }
+    LCID id = GetThreadLocale();
+    correctedPOSIXLocale = static_cast<char *>(uprv_malloc(POSIX_LOCALE_CAPACITY + 1));
+    if (correctedPOSIXLocale) {
+        int32_t posixLen = uprv_convertToPosix(id, correctedPOSIXLocale, POSIX_LOCALE_CAPACITY, &status);
+        if (U_SUCCESS(status)) {
+            *(correctedPOSIXLocale + posixLen) = 0;
+            gCorrectedPOSIXLocale = correctedPOSIXLocale;
+            ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
+        } else {
+            uprv_free(correctedPOSIXLocale);
         }
     }
 
-    // If unable to find a locale we can agree upon, use en-US by default
     if (gCorrectedPOSIXLocale == NULL) {
-        gCorrectedPOSIXLocale = "en_US";
+        return "en_US";
     }
     return gCorrectedPOSIXLocale;
 
@@ -2115,34 +1923,8 @@ int_getDefaultCodepage()
 
 #elif U_PLATFORM_USES_ONLY_WIN32_API
     static char codepage[64];
-    DWORD codepageNumber = 0;
-
-#if U_PLATFORM_HAS_WINUWP_API > 0
-    // UWP doesn't have a direct API to get the default ACP as Microsoft would rather
-    // have folks use Unicode than a "system" code page, however this is the same
-    // codepage as the system default locale codepage.  (FWIW, the system locale is
-    // ONLY used for codepage, it should never be used for anything else)
-    GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER,
-        (LPWSTR)&codepageNumber, sizeof(codepageNumber) / sizeof(WCHAR));
-#else
-    // Win32 apps can call GetACP
-    codepageNumber = GetACP();
-#endif
-    // Special case for UTF-8
-    if (codepageNumber == 65001)
-    { 
-        return "UTF-8";
-    }
-    // Windows codepages can look like windows-1252, so format the found number
-    // the numbers are eclectic, however all valid system code pages, besides UTF-8
-    // are between 3 and 19999
-    if (codepageNumber > 0 && codepageNumber < 20000)
-    {
-        sprintf(codepage, "windows-%ld", codepageNumber);
-        return codepage;
-    }
-    // If the codepage number call failed then return UTF-8
-    return "UTF-8";
+    sprintf(codepage, "windows-%d", GetACP());
+    return codepage;
 
 #elif U_POSIX_LOCALE
     static char codesetName[100];
index e547322..05f7391 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -87,7 +87,7 @@ typedef size_t uintptr_t;
 
 #ifdef U_HAVE_NL_LANGINFO_CODESET
     /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API || U_PLATFORM == U_PF_ANDROID || U_PLATFORM == U_PF_QNX
+#elif U_PLATFORM_HAS_WIN32_API || U_PLATFORM == U_PF_ANDROID || U_PLATFORM == U_PF_QNX
 #   define U_HAVE_NL_LANGINFO_CODESET 0
 #else
 #   define U_HAVE_NL_LANGINFO_CODESET 1
@@ -106,10 +106,7 @@ typedef size_t uintptr_t;
 #ifdef U_TZSET
     /* Use the predefined value. */
 #elif U_PLATFORM_USES_ONLY_WIN32_API
-    // UWP doesn't support tzset or environment variables for tz
-#if U_PLATFORM_HAS_WINUWP_API == 0
 #   define U_TZSET _tzset
-#endif
 #elif U_PLATFORM == U_PF_OS400
    /* not defined */
 #else
@@ -144,10 +141,7 @@ typedef size_t uintptr_t;
 #ifdef U_TZNAME
     /* Use the predefined value. */
 #elif U_PLATFORM_USES_ONLY_WIN32_API
-    /* not usable on all windows platforms */
-#if U_PLATFORM_HAS_WINUWP_API == 0
 #   define U_TZNAME _tzname
-#endif
 #elif U_PLATFORM == U_PF_OS400
    /* not defined */
 #else
index e4c91ba..2680bf2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 63ed15f..26e11ac 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 8011baf..1d6f37d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  rbbidata.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 69d8415..123c21e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index f352596..74096cc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index f4fa13c..3d9fe6f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  rbbirb.cpp
index d58a136..e4f736c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbirb.h
index 586953c..b5bc8f7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------------------------------
 //
index e68e052..df30f2c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  rbbiscan.cpp
@@ -1179,12 +1179,13 @@ RBBINode  *RBBIRuleScanner::pushNewNode(RBBINode::NodeType  t) {
     if (U_FAILURE(*fRB->fStatus)) {
         return NULL;
     }
-    if (fNodeStackPtr >= kStackSize - 1) {
-        error(U_BRK_RULE_SYNTAX);
+    fNodeStackPtr++;
+    if (fNodeStackPtr >= kStackSize) {
+        error(U_BRK_INTERNAL_ERROR);
         RBBIDebugPuts("RBBIRuleScanner::pushNewNode - stack overflow.");
+        *fRB->fStatus = U_BRK_INTERNAL_ERROR;
         return NULL;
     }
-    fNodeStackPtr++;
     fNodeStack[fNodeStackPtr] = new RBBINode(t);
     if (fNodeStack[fNodeStackPtr] == NULL) {
         *fRB->fStatus = U_MEMORY_ALLOCATION_ERROR;
index 8bec823..6f3267e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbiscan.h
index f55388a..ebdf8b7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbisetb.cpp
index a7d1e7a..89bfb98 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbisetb.h
index 5303f76..d937edb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  rbbistbl.cpp    Implementation of the ICU RBBISymbolTable class
index 0f1a901..2738c75 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1041501..d71a024 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  rbbitblb.h
index 512bd53..7bd6b32 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 45c0b39..65c32b5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  resbund_cnv.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 3d41a16..62b3aa4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 3dbff78..43c3309 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 41eea23..6e27b4d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4e1be53..1221396 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f852800..cc41366 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index de29c64..c650ef3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
index e1f69cd..679c443 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 538982c..319d7b8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 84f2347..114d643 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index ccf6433..7faec51 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index f4579d0..71c6c44 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index dc77c7b..69a81da 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index dba7a0f..05606ff 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 94279ab..299695e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 09154d1..4cf66b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 37aa458..8e5095e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index d132651..0e53cfb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index f866e0a..eaeb60d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 12f18a5..6e0bad0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  sprpimpl.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index d4f7f31..b032b47 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2013, International Business Machines
 // Corporation and others. All Rights Reserved.
index cf5b7b7..075d7c4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  stringtriebuilder.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/uarrsort.c b/source/common/uarrsort.c
new file mode 100644 (file)
index 0000000..bb1b5bd
--- /dev/null
@@ -0,0 +1,285 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2003-2013, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  uarrsort.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2003aug04
+*   created by: Markus W. Scherer
+*
+*   Internal function for sorting arrays.
+*/
+
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "uarrsort.h"
+
+enum {
+    /**
+     * "from Knuth"
+     *
+     * A binary search over 8 items performs 4 comparisons:
+     * log2(8)=3 to subdivide, +1 to check for equality.
+     * A linear search over 8 items on average also performs 4 comparisons.
+     */
+    MIN_QSORT=9,
+    STACK_ITEM_SIZE=200
+};
+
+/* UComparator convenience implementations ---------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+uprv_uint16Comparator(const void *context, const void *left, const void *right) {
+    return (int32_t)*(const uint16_t *)left - (int32_t)*(const uint16_t *)right;
+}
+
+U_CAPI int32_t U_EXPORT2
+uprv_int32Comparator(const void *context, const void *left, const void *right) {
+    return *(const int32_t *)left - *(const int32_t *)right;
+}
+
+U_CAPI int32_t U_EXPORT2
+uprv_uint32Comparator(const void *context, const void *left, const void *right) {
+    uint32_t l=*(const uint32_t *)left, r=*(const uint32_t *)right;
+
+    /* compare directly because (l-r) would overflow the int32_t result */
+    if(l<r) {
+        return -1;
+    } else if(l==r) {
+        return 0;
+    } else /* l>r */ {
+        return 1;
+    }
+}
+
+/* Insertion sort using binary search --------------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+uprv_stableBinarySearch(char *array, int32_t limit, void *item, int32_t itemSize,
+                        UComparator *cmp, const void *context) {
+    int32_t start=0;
+    UBool found=FALSE;
+
+    /* Binary search until we get down to a tiny sub-array. */
+    while((limit-start)>=MIN_QSORT) {
+        int32_t i=(start+limit)/2;
+        int32_t diff=cmp(context, item, array+i*itemSize);
+        if(diff==0) {
+            /*
+             * Found the item. We look for the *last* occurrence of such
+             * an item, for stable sorting.
+             * If we knew that there will be only few equal items,
+             * we could break now and enter the linear search.
+             * However, if there are many equal items, then it should be
+             * faster to continue with the binary search.
+             * It seems likely that we either have all unique items
+             * (where found will never become TRUE in the insertion sort)
+             * or potentially many duplicates.
+             */
+            found=TRUE;
+            start=i+1;
+        } else if(diff<0) {
+            limit=i;
+        } else {
+            start=i;
+        }
+    }
+
+    /* Linear search over the remaining tiny sub-array. */
+    while(start<limit) {
+        int32_t diff=cmp(context, item, array+start*itemSize);
+        if(diff==0) {
+            found=TRUE;
+        } else if(diff<0) {
+            break;
+        }
+        ++start;
+    }
+    return found ? (start-1) : ~start;
+}
+
+static void
+doInsertionSort(char *array, int32_t length, int32_t itemSize,
+                UComparator *cmp, const void *context, void *pv) {
+    int32_t j;
+
+    for(j=1; j<length; ++j) {
+        char *item=array+j*itemSize;
+        int32_t insertionPoint=uprv_stableBinarySearch(array, j, item, itemSize, cmp, context);
+        if(insertionPoint<0) {
+            insertionPoint=~insertionPoint;
+        } else {
+            ++insertionPoint;  /* one past the last equal item */
+        }
+        if(insertionPoint<j) {
+            char *dest=array+insertionPoint*itemSize;
+            uprv_memcpy(pv, item, itemSize);  /* v=array[j] */
+            uprv_memmove(dest+itemSize, dest, (j-insertionPoint)*(size_t)itemSize);
+            uprv_memcpy(dest, pv, itemSize);  /* array[insertionPoint]=v */
+        }
+    }
+}
+
+static void
+insertionSort(char *array, int32_t length, int32_t itemSize,
+              UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
+    UAlignedMemory v[STACK_ITEM_SIZE/sizeof(UAlignedMemory)+1];
+    void *pv;
+
+    /* allocate an intermediate item variable (v) */
+    if(itemSize<=STACK_ITEM_SIZE) {
+        pv=v;
+    } else {
+        pv=uprv_malloc(itemSize);
+        if(pv==NULL) {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
+
+    doInsertionSort(array, length, itemSize, cmp, context, pv);
+
+    if(pv!=v) {
+        uprv_free(pv);
+    }
+}
+
+/* QuickSort ---------------------------------------------------------------- */
+
+/*
+ * This implementation is semi-recursive:
+ * It recurses for the smaller sub-array to shorten the recursion depth,
+ * and loops for the larger sub-array.
+ *
+ * Loosely after QuickSort algorithms in
+ * Niklaus Wirth
+ * Algorithmen und Datenstrukturen mit Modula-2
+ * B.G. Teubner Stuttgart
+ * 4. Auflage 1986
+ * ISBN 3-519-02260-5
+ */
+static void
+subQuickSort(char *array, int32_t start, int32_t limit, int32_t itemSize,
+             UComparator *cmp, const void *context,
+             void *px, void *pw) {
+    int32_t left, right;
+
+    /* start and left are inclusive, limit and right are exclusive */
+    do {
+        if((start+MIN_QSORT)>=limit) {
+            doInsertionSort(array+start*itemSize, limit-start, itemSize, cmp, context, px);
+            break;
+        }
+
+        left=start;
+        right=limit;
+
+        /* x=array[middle] */
+        uprv_memcpy(px, array+(size_t)((start+limit)/2)*itemSize, itemSize);
+
+        do {
+            while(/* array[left]<x */
+                  cmp(context, array+left*itemSize, px)<0
+            ) {
+                ++left;
+            }
+            while(/* x<array[right-1] */
+                  cmp(context, px, array+(right-1)*itemSize)<0
+            ) {
+                --right;
+            }
+
+            /* swap array[left] and array[right-1] via w; ++left; --right */
+            if(left<right) {
+                --right;
+
+                if(left<right) {
+                    uprv_memcpy(pw, array+(size_t)left*itemSize, itemSize);
+                    uprv_memcpy(array+(size_t)left*itemSize, array+(size_t)right*itemSize, itemSize);
+                    uprv_memcpy(array+(size_t)right*itemSize, pw, itemSize);
+                }
+
+                ++left;
+            }
+        } while(left<right);
+
+        /* sort sub-arrays */
+        if((right-start)<(limit-left)) {
+            /* sort [start..right[ */
+            if(start<(right-1)) {
+                subQuickSort(array, start, right, itemSize, cmp, context, px, pw);
+            }
+
+            /* sort [left..limit[ */
+            start=left;
+        } else {
+            /* sort [left..limit[ */
+            if(left<(limit-1)) {
+                subQuickSort(array, left, limit, itemSize, cmp, context, px, pw);
+            }
+
+            /* sort [start..right[ */
+            limit=right;
+        }
+    } while(start<(limit-1));
+}
+
+static void
+quickSort(char *array, int32_t length, int32_t itemSize,
+            UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
+    UAlignedMemory xw[(2*STACK_ITEM_SIZE)/sizeof(UAlignedMemory)+1];
+    void *p;
+
+    /* allocate two intermediate item variables (x and w) */
+    if(itemSize<=STACK_ITEM_SIZE) {
+        p=xw;
+    } else {
+        p=uprv_malloc(2*itemSize);
+        if(p==NULL) {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
+
+    subQuickSort(array, 0, length, itemSize,
+                 cmp, context, p, (char *)p+itemSize);
+
+    if(p!=xw) {
+        uprv_free(p);
+    }
+}
+
+/* uprv_sortArray() API ----------------------------------------------------- */
+
+/*
+ * Check arguments, select an appropriate implementation,
+ * cast the array to char * so that array+i*itemSize works.
+ */
+U_CAPI void U_EXPORT2
+uprv_sortArray(void *array, int32_t length, int32_t itemSize,
+               UComparator *cmp, const void *context,
+               UBool sortStable, UErrorCode *pErrorCode) {
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return;
+    }
+    if((length>0 && array==NULL) || length<0 || itemSize<=0 || cmp==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    if(length<=1) {
+        return;
+    } else if(length<MIN_QSORT || sortStable) {
+        insertionSort((char *)array, length, itemSize, cmp, context, pErrorCode);
+    } else {
+        quickSort((char *)array, length, itemSize, cmp, context, pErrorCode);
+    }
+}
index a55dca5..8b25cc5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uarrsort.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fd6b6c4..5a048a5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/ubidi.c b/source/common/ubidi.c
new file mode 100644 (file)
index 0000000..3c94978
--- /dev/null
@@ -0,0 +1,3015 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  ubidi.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 1999jul27
+*   created by: Markus W. Scherer, updated by Matitiahu Allouche
+*
+*/
+
+#include "cmemory.h"
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "unicode/uchar.h"
+#include "unicode/ubidi.h"
+#include "unicode/utf16.h"
+#include "ubidi_props.h"
+#include "ubidiimp.h"
+#include "uassert.h"
+
+/*
+ * General implementation notes:
+ *
+ * Throughout the implementation, there are comments like (W2) that refer to
+ * rules of the BiDi algorithm, in this example to the second rule of the
+ * resolution of weak types.
+ *
+ * For handling surrogate pairs, where two UChar's form one "abstract" (or UTF-32)
+ * character according to UTF-16, the second UChar gets the directional property of
+ * the entire character assigned, while the first one gets a BN, a boundary
+ * neutral, type, which is ignored by most of the algorithm according to
+ * rule (X9) and the implementation suggestions of the BiDi algorithm.
+ *
+ * Later, adjustWSLevels() will set the level for each BN to that of the
+ * following character (UChar), which results in surrogate pairs getting the
+ * same level on each of their surrogates.
+ *
+ * In a UTF-8 implementation, the same thing could be done: the last byte of
+ * a multi-byte sequence would get the "real" property, while all previous
+ * bytes of that sequence would get BN.
+ *
+ * It is not possible to assign all those parts of a character the same real
+ * property because this would fail in the resolution of weak types with rules
+ * that look at immediately surrounding types.
+ *
+ * As a related topic, this implementation does not remove Boundary Neutral
+ * types from the input, but ignores them wherever this is relevant.
+ * For example, the loop for the resolution of the weak types reads
+ * types until it finds a non-BN.
+ * Also, explicit embedding codes are neither changed into BN nor removed.
+ * They are only treated the same way real BNs are.
+ * As stated before, adjustWSLevels() takes care of them at the end.
+ * For the purpose of conformance, the levels of all these codes
+ * do not matter.
+ *
+ * Note that this implementation modifies the dirProps
+ * after the initial setup, when applying X5c (replace FSI by LRI or RLI),
+ * X6, N0 (replace paired brackets by L or R).
+ *
+ * In this implementation, the resolution of weak types (W1 to W6),
+ * neutrals (N1 and N2), and the assignment of the resolved level (In)
+ * are all done in one single loop, in resolveImplicitLevels().
+ * Changes of dirProp values are done on the fly, without writing
+ * them back to the dirProps array.
+ *
+ *
+ * This implementation contains code that allows to bypass steps of the
+ * algorithm that are not needed on the specific paragraph
+ * in order to speed up the most common cases considerably,
+ * like text that is entirely LTR, or RTL text without numbers.
+ *
+ * Most of this is done by setting a bit for each directional property
+ * in a flags variable and later checking for whether there are
+ * any LTR characters or any RTL characters, or both, whether
+ * there are any explicit embedding codes, etc.
+ *
+ * If the (Xn) steps are performed, then the flags are re-evaluated,
+ * because they will then not contain the embedding codes any more
+ * and will be adjusted for override codes, so that subsequently
+ * more bypassing may be possible than what the initial flags suggested.
+ *
+ * If the text is not mixed-directional, then the
+ * algorithm steps for the weak type resolution are not performed,
+ * and all levels are set to the paragraph level.
+ *
+ * If there are no explicit embedding codes, then the (Xn) steps
+ * are not performed.
+ *
+ * If embedding levels are supplied as a parameter, then all
+ * explicit embedding codes are ignored, and the (Xn) steps
+ * are not performed.
+ *
+ * White Space types could get the level of the run they belong to,
+ * and are checked with a test of (flags&MASK_EMBEDDING) to
+ * consider if the paragraph direction should be considered in
+ * the flags variable.
+ *
+ * If there are no White Space types in the paragraph, then
+ * (L1) is not necessary in adjustWSLevels().
+ */
+
+/* to avoid some conditional statements, use tiny constant arrays */
+static const Flags flagLR[2]={ DIRPROP_FLAG(L), DIRPROP_FLAG(R) };
+static const Flags flagE[2]={ DIRPROP_FLAG(LRE), DIRPROP_FLAG(RLE) };
+static const Flags flagO[2]={ DIRPROP_FLAG(LRO), DIRPROP_FLAG(RLO) };
+
+#define DIRPROP_FLAG_LR(level) flagLR[(level)&1]
+#define DIRPROP_FLAG_E(level)  flagE[(level)&1]
+#define DIRPROP_FLAG_O(level)  flagO[(level)&1]
+
+#define DIR_FROM_STRONG(strong) ((strong)==L ? L : R)
+
+#define NO_OVERRIDE(level)  ((level)&~UBIDI_LEVEL_OVERRIDE)
+
+/* UBiDi object management -------------------------------------------------- */
+
+U_CAPI UBiDi * U_EXPORT2
+ubidi_open(void)
+{
+    UErrorCode errorCode=U_ZERO_ERROR;
+    return ubidi_openSized(0, 0, &errorCode);
+}
+
+U_CAPI UBiDi * U_EXPORT2
+ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode) {
+    UBiDi *pBiDi;
+
+    /* check the argument values */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return NULL;
+    } else if(maxLength<0 || maxRunCount<0) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;    /* invalid arguments */
+    }
+
+    /* allocate memory for the object */
+    pBiDi=(UBiDi *)uprv_malloc(sizeof(UBiDi));
+    if(pBiDi==NULL) {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+
+    /* reset the object, all pointers NULL, all flags FALSE, all sizes 0 */
+    uprv_memset(pBiDi, 0, sizeof(UBiDi));
+
+    /* get BiDi properties */
+    pBiDi->bdp=ubidi_getSingleton();
+
+    /* allocate memory for arrays as requested */
+    if(maxLength>0) {
+        if( !getInitialDirPropsMemory(pBiDi, maxLength) ||
+            !getInitialLevelsMemory(pBiDi, maxLength)
+        ) {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        }
+    } else {
+        pBiDi->mayAllocateText=TRUE;
+    }
+
+    if(maxRunCount>0) {
+        if(maxRunCount==1) {
+            /* use simpleRuns[] */
+            pBiDi->runsSize=sizeof(Run);
+        } else if(!getInitialRunsMemory(pBiDi, maxRunCount)) {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        }
+    } else {
+        pBiDi->mayAllocateRuns=TRUE;
+    }
+
+    if(U_SUCCESS(*pErrorCode)) {
+        return pBiDi;
+    } else {
+        ubidi_close(pBiDi);
+        return NULL;
+    }
+}
+
+/*
+ * We are allowed to allocate memory if memory==NULL or
+ * mayAllocate==TRUE for each array that we need.
+ * We also try to grow memory as needed if we
+ * allocate it.
+ *
+ * Assume sizeNeeded>0.
+ * If *pMemory!=NULL, then assume *pSize>0.
+ *
+ * ### this realloc() may unnecessarily copy the old data,
+ * which we know we don't need any more;
+ * is this the best way to do this??
+ */
+U_CFUNC UBool
+ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAllocate, int32_t sizeNeeded) {
+    void **pMemory = (void **)bidiMem;
+    /* check for existing memory */
+    if(*pMemory==NULL) {
+        /* we need to allocate memory */
+        if(mayAllocate && (*pMemory=uprv_malloc(sizeNeeded))!=NULL) {
+            *pSize=sizeNeeded;
+            return TRUE;
+        } else {
+            return FALSE;
+        }
+    } else {
+        if(sizeNeeded<=*pSize) {
+            /* there is already enough memory */
+            return TRUE;
+        }
+        else if(!mayAllocate) {
+            /* not enough memory, and we must not allocate */
+            return FALSE;
+        } else {
+            /* we try to grow */
+            void *memory;
+            /* in most cases, we do not need the copy-old-data part of
+             * realloc, but it is needed when adding runs using getRunsMemory()
+             * in setParaRunsOnly()
+             */
+            if((memory=uprv_realloc(*pMemory, sizeNeeded))!=NULL) {
+                *pMemory=memory;
+                *pSize=sizeNeeded;
+                return TRUE;
+            } else {
+                /* we failed to grow */
+                return FALSE;
+            }
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_close(UBiDi *pBiDi) {
+    if(pBiDi!=NULL) {
+        pBiDi->pParaBiDi=NULL;          /* in case one tries to reuse this block */
+        if(pBiDi->dirPropsMemory!=NULL) {
+            uprv_free(pBiDi->dirPropsMemory);
+        }
+        if(pBiDi->levelsMemory!=NULL) {
+            uprv_free(pBiDi->levelsMemory);
+        }
+        if(pBiDi->openingsMemory!=NULL) {
+            uprv_free(pBiDi->openingsMemory);
+        }
+        if(pBiDi->parasMemory!=NULL) {
+            uprv_free(pBiDi->parasMemory);
+        }
+        if(pBiDi->runsMemory!=NULL) {
+            uprv_free(pBiDi->runsMemory);
+        }
+        if(pBiDi->isolatesMemory!=NULL) {
+            uprv_free(pBiDi->isolatesMemory);
+        }
+        if(pBiDi->insertPoints.points!=NULL) {
+            uprv_free(pBiDi->insertPoints.points);
+        }
+
+        uprv_free(pBiDi);
+    }
+}
+
+/* set to approximate "inverse BiDi" ---------------------------------------- */
+
+U_CAPI void U_EXPORT2
+ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) {
+    if(pBiDi!=NULL) {
+        pBiDi->isInverse=isInverse;
+        pBiDi->reorderingMode = isInverse ? UBIDI_REORDER_INVERSE_NUMBERS_AS_L
+                                          : UBIDI_REORDER_DEFAULT;
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+ubidi_isInverse(UBiDi *pBiDi) {
+    if(pBiDi!=NULL) {
+        return pBiDi->isInverse;
+    } else {
+        return FALSE;
+    }
+}
+
+/* FOOD FOR THOUGHT: currently the reordering modes are a mixture of
+ * algorithm for direct BiDi, algorithm for inverse BiDi and the bizarre
+ * concept of RUNS_ONLY which is a double operation.
+ * It could be advantageous to divide this into 3 concepts:
+ * a) Operation: direct / inverse / RUNS_ONLY
+ * b) Direct algorithm: default / NUMBERS_SPECIAL / GROUP_NUMBERS_WITH_R
+ * c) Inverse algorithm: default / INVERSE_LIKE_DIRECT / NUMBERS_SPECIAL
+ * This would allow combinations not possible today like RUNS_ONLY with
+ * NUMBERS_SPECIAL.
+ * Also allow to set INSERT_MARKS for the direct step of RUNS_ONLY and
+ * REMOVE_CONTROLS for the inverse step.
+ * Not all combinations would be supported, and probably not all do make sense.
+ * This would need to document which ones are supported and what are the
+ * fallbacks for unsupported combinations.
+ */
+U_CAPI void U_EXPORT2
+ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) {
+    if ((pBiDi!=NULL) && (reorderingMode >= UBIDI_REORDER_DEFAULT)
+                        && (reorderingMode < UBIDI_REORDER_COUNT)) {
+        pBiDi->reorderingMode = reorderingMode;
+        pBiDi->isInverse = (UBool)(reorderingMode == UBIDI_REORDER_INVERSE_NUMBERS_AS_L);
+    }
+}
+
+U_CAPI UBiDiReorderingMode U_EXPORT2
+ubidi_getReorderingMode(UBiDi *pBiDi) {
+    if (pBiDi!=NULL) {
+        return pBiDi->reorderingMode;
+    } else {
+        return UBIDI_REORDER_DEFAULT;
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) {
+    if (reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
+        reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS;
+    }
+    if (pBiDi!=NULL) {
+        pBiDi->reorderingOptions=reorderingOptions;
+    }
+}
+
+U_CAPI uint32_t U_EXPORT2
+ubidi_getReorderingOptions(UBiDi *pBiDi) {
+    if (pBiDi!=NULL) {
+        return pBiDi->reorderingOptions;
+    } else {
+        return 0;
+    }
+}
+
+U_CAPI UBiDiDirection U_EXPORT2
+ubidi_getBaseDirection(const UChar *text,
+int32_t length){
+
+    int32_t i;
+    UChar32 uchar;
+    UCharDirection dir;
+
+    if( text==NULL || length<-1 ){
+        return UBIDI_NEUTRAL;
+    }
+
+    if(length==-1) {
+        length=u_strlen(text);
+    }
+
+    for( i = 0 ; i < length; ) {
+        /* i is incremented by U16_NEXT */
+        U16_NEXT(text, i, length, uchar);
+        dir = u_charDirection(uchar);
+        if( dir == U_LEFT_TO_RIGHT )
+                return UBIDI_LTR;
+        if( dir == U_RIGHT_TO_LEFT || dir ==U_RIGHT_TO_LEFT_ARABIC )
+                return UBIDI_RTL;
+    }
+    return UBIDI_NEUTRAL;
+}
+
+/* perform (P2)..(P3) ------------------------------------------------------- */
+
+/**
+ * Returns the directionality of the first strong character
+ * after the last B in prologue, if any.
+ * Requires prologue!=null.
+ */
+static DirProp
+firstL_R_AL(UBiDi *pBiDi) {
+    const UChar *text=pBiDi->prologue;
+    int32_t length=pBiDi->proLength;
+    int32_t i;
+    UChar32 uchar;
+    DirProp dirProp, result=ON;
+    for(i=0; i<length; ) {
+        /* i is incremented by U16_NEXT */
+        U16_NEXT(text, i, length, uchar);
+        dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
+        if(result==ON) {
+            if(dirProp==L || dirProp==R || dirProp==AL) {
+                result=dirProp;
+            }
+        } else {
+            if(dirProp==B) {
+                result=ON;
+            }
+        }
+    }
+    return result;
+}
+
+/*
+ * Check that there are enough entries in the array pointed to by pBiDi->paras
+ */
+static UBool
+checkParaCount(UBiDi *pBiDi) {
+    int32_t count=pBiDi->paraCount;
+    if(pBiDi->paras==pBiDi->simpleParas) {
+        if(count<=SIMPLE_PARAS_COUNT)
+            return TRUE;
+        if(!getInitialParasMemory(pBiDi, SIMPLE_PARAS_COUNT * 2))
+            return FALSE;
+        pBiDi->paras=pBiDi->parasMemory;
+        uprv_memcpy(pBiDi->parasMemory, pBiDi->simpleParas, SIMPLE_PARAS_COUNT * sizeof(Para));
+        return TRUE;
+    }
+    if(!getInitialParasMemory(pBiDi, count * 2))
+        return FALSE;
+    pBiDi->paras=pBiDi->parasMemory;
+    return TRUE;
+}
+
+/*
+ * Get the directional properties for the text, calculate the flags bit-set, and
+ * determine the paragraph level if necessary (in pBiDi->paras[i].level).
+ * FSI initiators are also resolved and their dirProp replaced with LRI or RLI.
+ * When encountering an FSI, it is initially replaced with an LRI, which is the
+ * default. Only if a strong R or AL is found within its scope will the LRI be
+ * replaced by an RLI.
+ */
+static UBool
+getDirProps(UBiDi *pBiDi) {
+    const UChar *text=pBiDi->text;
+    DirProp *dirProps=pBiDi->dirPropsMemory;    /* pBiDi->dirProps is const */
+
+    int32_t i=0, originalLength=pBiDi->originalLength;
+    Flags flags=0;      /* collect all directionalities in the text */
+    UChar32 uchar;
+    DirProp dirProp=0, defaultParaLevel=0;  /* initialize to avoid compiler warnings */
+    UBool isDefaultLevel=IS_DEFAULT_LEVEL(pBiDi->paraLevel);
+    /* for inverse BiDi, the default para level is set to RTL if there is a
+       strong R or AL character at either end of the text                            */
+    UBool isDefaultLevelInverse=isDefaultLevel && (UBool)
+            (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT ||
+             pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
+    int32_t lastArabicPos=-1;
+    int32_t controlCount=0;
+    UBool removeBiDiControls = (UBool)(pBiDi->reorderingOptions &
+                                       UBIDI_OPTION_REMOVE_CONTROLS);
+
+    typedef enum {
+         NOT_SEEKING_STRONG,            /* 0: not contextual paraLevel, not after FSI */
+         SEEKING_STRONG_FOR_PARA,       /* 1: looking for first strong char in para */
+         SEEKING_STRONG_FOR_FSI,        /* 2: looking for first strong after FSI */
+         LOOKING_FOR_PDI                /* 3: found strong after FSI, looking for PDI */
+    } State;
+    State state;
+    DirProp lastStrong=ON;              /* for default level & inverse BiDi */
+    /* The following stacks are used to manage isolate sequences. Those
+       sequences may be nested, but obviously never more deeply than the
+       maximum explicit embedding level.
+       lastStack is the index of the last used entry in the stack. A value of -1
+       means that there is no open isolate sequence.
+       lastStack is reset to -1 on paragraph boundaries. */
+    /* The following stack contains the position of the initiator of
+       each open isolate sequence */
+    int32_t isolateStartStack[UBIDI_MAX_EXPLICIT_LEVEL+1];
+    /* The following stack contains the last known state before
+       encountering the initiator of an isolate sequence */
+    int8_t  previousStateStack[UBIDI_MAX_EXPLICIT_LEVEL+1];
+    int32_t stackLast=-1;
+
+    if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING)
+        pBiDi->length=0;
+    defaultParaLevel=pBiDi->paraLevel&1;
+    if(isDefaultLevel) {
+        pBiDi->paras[0].level=defaultParaLevel;
+        lastStrong=defaultParaLevel;
+        if(pBiDi->proLength>0 &&                    /* there is a prologue */
+           (dirProp=firstL_R_AL(pBiDi))!=ON) {  /* with a strong character */
+            if(dirProp==L)
+                pBiDi->paras[0].level=0;    /* set the default para level */
+            else
+                pBiDi->paras[0].level=1;    /* set the default para level */
+            state=NOT_SEEKING_STRONG;
+        } else {
+            state=SEEKING_STRONG_FOR_PARA;
+        }
+    } else {
+        pBiDi->paras[0].level=pBiDi->paraLevel;
+        state=NOT_SEEKING_STRONG;
+    }
+    /* count paragraphs and determine the paragraph level (P2..P3) */
+    /*
+     * see comment in ubidi.h:
+     * the UBIDI_DEFAULT_XXX values are designed so that
+     * their bit 0 alone yields the intended default
+     */
+    for( /* i=0 above */ ; i<originalLength; ) {
+        /* i is incremented by U16_NEXT */
+        U16_NEXT(text, i, originalLength, uchar);
+        flags|=DIRPROP_FLAG(dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar));
+        dirProps[i-1]=dirProp;
+        if(uchar>0xffff) {  /* set the lead surrogate's property to BN */
+            flags|=DIRPROP_FLAG(BN);
+            dirProps[i-2]=BN;
+        }
+        if(removeBiDiControls && IS_BIDI_CONTROL_CHAR(uchar))
+            controlCount++;
+        if(dirProp==L) {
+            if(state==SEEKING_STRONG_FOR_PARA) {
+                pBiDi->paras[pBiDi->paraCount-1].level=0;
+                state=NOT_SEEKING_STRONG;
+            }
+            else if(state==SEEKING_STRONG_FOR_FSI) {
+                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
+                    /* no need for next statement, already set by default */
+                    /* dirProps[isolateStartStack[stackLast]]=LRI; */
+                    flags|=DIRPROP_FLAG(LRI);
+                }
+                state=LOOKING_FOR_PDI;
+            }
+            lastStrong=L;
+            continue;
+        }
+        if(dirProp==R || dirProp==AL) {
+            if(state==SEEKING_STRONG_FOR_PARA) {
+                pBiDi->paras[pBiDi->paraCount-1].level=1;
+                state=NOT_SEEKING_STRONG;
+            }
+            else if(state==SEEKING_STRONG_FOR_FSI) {
+                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
+                    dirProps[isolateStartStack[stackLast]]=RLI;
+                    flags|=DIRPROP_FLAG(RLI);
+                }
+                state=LOOKING_FOR_PDI;
+            }
+            lastStrong=R;
+            if(dirProp==AL)
+                lastArabicPos=i-1;
+            continue;
+        }
+        if(dirProp>=FSI && dirProp<=RLI) {  /* FSI, LRI or RLI */
+            stackLast++;
+            if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
+                isolateStartStack[stackLast]=i-1;
+                previousStateStack[stackLast]=state;
+            }
+            if(dirProp==FSI) {
+                dirProps[i-1]=LRI;      /* default if no strong char */
+                state=SEEKING_STRONG_FOR_FSI;
+            }
+            else
+                state=LOOKING_FOR_PDI;
+            continue;
+        }
+        if(dirProp==PDI) {
+            if(state==SEEKING_STRONG_FOR_FSI) {
+                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL) {
+                    /* no need for next statement, already set by default */
+                    /* dirProps[isolateStartStack[stackLast]]=LRI; */
+                    flags|=DIRPROP_FLAG(LRI);
+                }
+            }
+            if(stackLast>=0) {
+                if(stackLast<=UBIDI_MAX_EXPLICIT_LEVEL)
+                    state=previousStateStack[stackLast];
+                stackLast--;
+            }
+            continue;
+        }
+        if(dirProp==B) {
+            if(i<originalLength && uchar==CR && text[i]==LF) /* do nothing on the CR */
+                continue;
+            pBiDi->paras[pBiDi->paraCount-1].limit=i;
+            if(isDefaultLevelInverse && lastStrong==R)
+                pBiDi->paras[pBiDi->paraCount-1].level=1;
+            if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
+                /* When streaming, we only process whole paragraphs
+                   thus some updates are only done on paragraph boundaries */
+                pBiDi->length=i;        /* i is index to next character */
+                pBiDi->controlCount=controlCount;
+            }
+            if(i<originalLength) {              /* B not last char in text */
+                pBiDi->paraCount++;
+                if(checkParaCount(pBiDi)==FALSE)    /* not enough memory for a new para entry */
+                    return FALSE;
+                if(isDefaultLevel) {
+                    pBiDi->paras[pBiDi->paraCount-1].level=defaultParaLevel;
+                    state=SEEKING_STRONG_FOR_PARA;
+                    lastStrong=defaultParaLevel;
+                } else {
+                    pBiDi->paras[pBiDi->paraCount-1].level=pBiDi->paraLevel;
+                    state=NOT_SEEKING_STRONG;
+                }
+                stackLast=-1;
+            }
+            continue;
+        }
+    }
+    /* Ignore still open isolate sequences with overflow */
+    if(stackLast>UBIDI_MAX_EXPLICIT_LEVEL) {
+        stackLast=UBIDI_MAX_EXPLICIT_LEVEL;
+        state=SEEKING_STRONG_FOR_FSI;   /* to be on the safe side */
+    }
+    /* Resolve direction of still unresolved open FSI sequences */
+    while(stackLast>=0) {
+        if(state==SEEKING_STRONG_FOR_FSI) {
+            /* no need for next statement, already set by default */
+            /* dirProps[isolateStartStack[stackLast]]=LRI; */
+            flags|=DIRPROP_FLAG(LRI);
+            break;
+        }
+        state=previousStateStack[stackLast];
+        stackLast--;
+    }
+    /* When streaming, ignore text after the last paragraph separator */
+    if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
+        if(pBiDi->length<originalLength)
+            pBiDi->paraCount--;
+    } else {
+        pBiDi->paras[pBiDi->paraCount-1].limit=originalLength;
+        pBiDi->controlCount=controlCount;
+    }
+    /* For inverse bidi, default para direction is RTL if there is
+       a strong R or AL at either end of the paragraph */
+    if(isDefaultLevelInverse && lastStrong==R) {
+        pBiDi->paras[pBiDi->paraCount-1].level=1;
+    }
+    if(isDefaultLevel) {
+        pBiDi->paraLevel=pBiDi->paras[0].level;
+    }
+    /* The following is needed to resolve the text direction for default level
+       paragraphs containing no strong character */
+    for(i=0; i<pBiDi->paraCount; i++)
+        flags|=DIRPROP_FLAG_LR(pBiDi->paras[i].level);
+
+    if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) {
+        flags|=DIRPROP_FLAG(L);
+    }
+    pBiDi->flags=flags;
+    pBiDi->lastArabicPos=lastArabicPos;
+    return TRUE;
+}
+
+/* determine the paragraph level at position index */
+U_CFUNC UBiDiLevel
+ubidi_getParaLevelAtIndex(const UBiDi *pBiDi, int32_t pindex) {
+    int32_t i;
+    for(i=0; i<pBiDi->paraCount; i++)
+        if(pindex<pBiDi->paras[i].limit)
+            break;
+    if(i>=pBiDi->paraCount)
+        i=pBiDi->paraCount-1;
+    return (UBiDiLevel)(pBiDi->paras[i].level);
+}
+
+/* Functions for handling paired brackets ----------------------------------- */
+
+/* In the isoRuns array, the first entry is used for text outside of any
+   isolate sequence.  Higher entries are used for each more deeply nested
+   isolate sequence. isoRunLast is the index of the last used entry.  The
+   openings array is used to note the data of opening brackets not yet
+   matched by a closing bracket, or matched but still susceptible to change
+   level.
+   Each isoRun entry contains the index of the first and
+   one-after-last openings entries for pending opening brackets it
+   contains.  The next openings entry to use is the one-after-last of the
+   most deeply nested isoRun entry.
+   isoRun entries also contain their current embedding level and the last
+   encountered strong character, since these will be needed to resolve
+   the level of paired brackets.  */
+
+static void
+bracketInit(UBiDi *pBiDi, BracketData *bd) {
+    bd->pBiDi=pBiDi;
+    bd->isoRunLast=0;
+    bd->isoRuns[0].start=0;
+    bd->isoRuns[0].limit=0;
+    bd->isoRuns[0].level=GET_PARALEVEL(pBiDi, 0);
+    bd->isoRuns[0].lastStrong=bd->isoRuns[0].lastBase=bd->isoRuns[0].contextDir=GET_PARALEVEL(pBiDi, 0)&1;
+    bd->isoRuns[0].contextPos=0;
+    if(pBiDi->openingsMemory) {
+        bd->openings=pBiDi->openingsMemory;
+        bd->openingsCount=pBiDi->openingsSize / sizeof(Opening);
+    } else {
+        bd->openings=bd->simpleOpenings;
+        bd->openingsCount=SIMPLE_OPENINGS_COUNT;
+    }
+    bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIAL ||
+                         bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL;
+}
+
+/* paragraph boundary */
+static void
+bracketProcessB(BracketData *bd, UBiDiLevel level) {
+    bd->isoRunLast=0;
+    bd->isoRuns[0].limit=0;
+    bd->isoRuns[0].level=level;
+    bd->isoRuns[0].lastStrong=bd->isoRuns[0].lastBase=bd->isoRuns[0].contextDir=level&1;
+    bd->isoRuns[0].contextPos=0;
+}
+
+/* LRE, LRO, RLE, RLO, PDF */
+static void
+bracketProcessBoundary(BracketData *bd, int32_t lastCcPos,
+                       UBiDiLevel contextLevel, UBiDiLevel embeddingLevel) {
+    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    DirProp *dirProps=bd->pBiDi->dirProps;
+    if(DIRPROP_FLAG(dirProps[lastCcPos])&MASK_ISO)  /* after an isolate */
+        return;
+    if(NO_OVERRIDE(embeddingLevel)>NO_OVERRIDE(contextLevel))   /* not a PDF */
+        contextLevel=embeddingLevel;
+    pLastIsoRun->limit=pLastIsoRun->start;
+    pLastIsoRun->level=embeddingLevel;
+    pLastIsoRun->lastStrong=pLastIsoRun->lastBase=pLastIsoRun->contextDir=contextLevel&1;
+    pLastIsoRun->contextPos=lastCcPos;
+}
+
+/* LRI or RLI */
+static void
+bracketProcessLRI_RLI(BracketData *bd, UBiDiLevel level) {
+    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    int16_t lastLimit;
+    pLastIsoRun->lastBase=ON;
+    lastLimit=pLastIsoRun->limit;
+    bd->isoRunLast++;
+    pLastIsoRun++;
+    pLastIsoRun->start=pLastIsoRun->limit=lastLimit;
+    pLastIsoRun->level=level;
+    pLastIsoRun->lastStrong=pLastIsoRun->lastBase=pLastIsoRun->contextDir=level&1;
+    pLastIsoRun->contextPos=0;
+}
+
+/* PDI */
+static void
+bracketProcessPDI(BracketData *bd) {
+    IsoRun *pLastIsoRun;
+    bd->isoRunLast--;
+    pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    pLastIsoRun->lastBase=ON;
+}
+
+/* newly found opening bracket: create an openings entry */
+static UBool                            /* return TRUE if success */
+bracketAddOpening(BracketData *bd, UChar match, int32_t position) {
+    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    Opening *pOpening;
+    if(pLastIsoRun->limit>=bd->openingsCount) {  /* no available new entry */
+        UBiDi *pBiDi=bd->pBiDi;
+        if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2))
+            return FALSE;
+        if(bd->openings==bd->simpleOpenings)
+            uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings,
+                        SIMPLE_OPENINGS_COUNT * sizeof(Opening));
+        bd->openings=pBiDi->openingsMemory;     /* may have changed */
+        bd->openingsCount=pBiDi->openingsSize / sizeof(Opening);
+    }
+    pOpening=&bd->openings[pLastIsoRun->limit];
+    pOpening->position=position;
+    pOpening->match=match;
+    pOpening->contextDir=pLastIsoRun->contextDir;
+    pOpening->contextPos=pLastIsoRun->contextPos;
+    pOpening->flags=0;
+    pLastIsoRun->limit++;
+    return TRUE;
+}
+
+/* change N0c1 to N0c2 when a preceding bracket is assigned the embedding level */
+static void
+fixN0c(BracketData *bd, int32_t openingIndex, int32_t newPropPosition, DirProp newProp) {
+    /* This function calls itself recursively */
+    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    Opening *qOpening;
+    DirProp *dirProps=bd->pBiDi->dirProps;
+    int32_t k, openingPosition, closingPosition;
+    for(k=openingIndex+1, qOpening=&bd->openings[k]; k<pLastIsoRun->limit; k++, qOpening++) {
+        if(qOpening->match>=0)      /* not an N0c match */
+            continue;
+        if(newPropPosition<qOpening->contextPos)
+            break;
+        if(newPropPosition>=qOpening->position)
+            continue;
+        if(newProp==qOpening->contextDir)
+            break;
+        openingPosition=qOpening->position;
+        dirProps[openingPosition]=newProp;
+        closingPosition=-(qOpening->match);
+        dirProps[closingPosition]=newProp;
+        qOpening->match=0;                      /* prevent further changes */
+        fixN0c(bd, k, openingPosition, newProp);
+        fixN0c(bd, k, closingPosition, newProp);
+    }
+}
+
+/* process closing bracket */
+static DirProp              /* return L or R if N0b or N0c, ON if N0d */
+bracketProcessClosing(BracketData *bd, int32_t openIdx, int32_t position) {
+    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    Opening *pOpening, *qOpening;
+    UBiDiDirection direction;
+    UBool stable;
+    DirProp newProp;
+    pOpening=&bd->openings[openIdx];
+    direction=pLastIsoRun->level&1;
+    stable=TRUE;            /* assume stable until proved otherwise */
+
+    /* The stable flag is set when brackets are paired and their
+       level is resolved and cannot be changed by what will be
+       found later in the source string.
+       An unstable match can occur only when applying N0c, where
+       the resolved level depends on the preceding context, and
+       this context may be affected by text occurring later.
+       Example: RTL paragraph containing:  abc[(latin) HEBREW]
+       When the closing parenthesis is encountered, it appears
+       that N0c1 must be applied since 'abc' sets an opposite
+       direction context and both parentheses receive level 2.
+       However, when the closing square bracket is processed,
+       N0b applies because of 'HEBREW' being included within the
+       brackets, thus the square brackets are treated like R and
+       receive level 1. However, this changes the preceding
+       context of the opening parenthesis, and it now appears
+       that N0c2 must be applied to the parentheses rather than
+       N0c1. */
+
+    if((direction==0 && pOpening->flags&FOUND_L) ||
+       (direction==1 && pOpening->flags&FOUND_R)) { /* N0b */
+        newProp=direction;
+    }
+    else if(pOpening->flags&(FOUND_L|FOUND_R)) {    /* N0c */
+        /* it is stable if there is no containing pair or in
+           conditions too complicated and not worth checking */
+        stable=(openIdx==pLastIsoRun->start);
+        if(direction!=pOpening->contextDir)
+            newProp=pOpening->contextDir;           /* N0c1 */
+        else
+            newProp=direction;                      /* N0c2 */
+    } else {
+        /* forget this and any brackets nested within this pair */
+        pLastIsoRun->limit=openIdx;
+        return ON;                                  /* N0d */
+    }
+    bd->pBiDi->dirProps[pOpening->position]=newProp;
+    bd->pBiDi->dirProps[position]=newProp;
+    /* Update nested N0c pairs that may be affected */
+    fixN0c(bd, openIdx, pOpening->position, newProp);
+    if(stable) {
+        pLastIsoRun->limit=openIdx; /* forget any brackets nested within this pair */
+        /* remove lower located synonyms if any */
+        while(pLastIsoRun->limit>pLastIsoRun->start &&
+              bd->openings[pLastIsoRun->limit-1].position==pOpening->position)
+            pLastIsoRun->limit--;
+    } else {
+        int32_t k;
+        pOpening->match=-position;
+        /* neutralize lower located synonyms if any */
+        k=openIdx-1;
+        while(k>=pLastIsoRun->start &&
+              bd->openings[k].position==pOpening->position)
+            bd->openings[k--].match=0;
+        /* neutralize any unmatched opening between the current pair;
+           this will also neutralize higher located synonyms if any */
+        for(k=openIdx+1; k<pLastIsoRun->limit; k++) {
+            qOpening=&bd->openings[k];
+            if(qOpening->position>=position)
+                break;
+            if(qOpening->match>0)
+                qOpening->match=0;
+        }
+    }
+    return newProp;
+}
+
+/* handle strong characters, digits and candidates for closing brackets */
+static UBool                            /* return TRUE if success */
+bracketProcessChar(BracketData *bd, int32_t position) {
+    IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+    DirProp *dirProps, dirProp, newProp;
+    UBiDiLevel level;
+    dirProps=bd->pBiDi->dirProps;
+    dirProp=dirProps[position];
+    if(dirProp==ON) {
+        UChar c, match;
+        int32_t idx;
+        /* First see if it is a matching closing bracket. Hopefully, this is
+           more efficient than checking if it is a closing bracket at all */
+        c=bd->pBiDi->text[position];
+        for(idx=pLastIsoRun->limit-1; idx>=pLastIsoRun->start; idx--) {
+            if(bd->openings[idx].match!=c)
+                continue;
+            /* We have a match */
+            newProp=bracketProcessClosing(bd, idx, position);
+            if(newProp==ON) {           /* N0d */
+                c=0;        /* prevent handling as an opening */
+                break;
+            }
+            pLastIsoRun->lastBase=ON;
+            pLastIsoRun->contextDir=newProp;
+            pLastIsoRun->contextPos=position;
+            level=bd->pBiDi->levels[position];
+            if(level&UBIDI_LEVEL_OVERRIDE) {    /* X4, X5 */
+                uint16_t flag;
+                int32_t i;
+                newProp=level&1;
+                pLastIsoRun->lastStrong=newProp;
+                flag=DIRPROP_FLAG(newProp);
+                for(i=pLastIsoRun->start; i<idx; i++)
+                    bd->openings[i].flags|=flag;
+                /* matching brackets are not overridden by LRO/RLO */
+                bd->pBiDi->levels[position]&=~UBIDI_LEVEL_OVERRIDE;
+            }
+            /* matching brackets are not overridden by LRO/RLO */
+            bd->pBiDi->levels[bd->openings[idx].position]&=~UBIDI_LEVEL_OVERRIDE;
+            return TRUE;
+        }
+        /* We get here only if the ON character is not a matching closing
+           bracket or it is a case of N0d */
+        /* Now see if it is an opening bracket */
+        if(c)
+            match=u_getBidiPairedBracket(c);    /* get the matching char */
+        else
+            match=0;
+        if(match!=c &&                  /* has a matching char */
+           ubidi_getPairedBracketType(bd->pBiDi->bdp, c)==U_BPT_OPEN) { /* opening bracket */
+            /* special case: process synonyms
+               create an opening entry for each synonym */
+            if(match==0x232A) {     /* RIGHT-POINTING ANGLE BRACKET */
+                if(!bracketAddOpening(bd, 0x3009, position))
+                    return FALSE;
+            }
+            else if(match==0x3009) {         /* RIGHT ANGLE BRACKET */
+                if(!bracketAddOpening(bd, 0x232A, position))
+                    return FALSE;
+            }
+            if(!bracketAddOpening(bd, match, position))
+                return FALSE;
+        }
+    }
+    level=bd->pBiDi->levels[position];
+    if(level&UBIDI_LEVEL_OVERRIDE) {    /* X4, X5 */
+        newProp=level&1;
+        if(dirProp!=S && dirProp!=WS && dirProp!=ON)
+            dirProps[position]=newProp;
+        pLastIsoRun->lastBase=newProp;
+        pLastIsoRun->lastStrong=newProp;
+        pLastIsoRun->contextDir=newProp;
+        pLastIsoRun->contextPos=position;
+    }
+    else if(dirProp<=R || dirProp==AL) {
+        newProp=DIR_FROM_STRONG(dirProp);
+        pLastIsoRun->lastBase=dirProp;
+        pLastIsoRun->lastStrong=dirProp;
+        pLastIsoRun->contextDir=newProp;
+        pLastIsoRun->contextPos=position;
+    }
+    else if(dirProp==EN) {
+        pLastIsoRun->lastBase=EN;
+        if(pLastIsoRun->lastStrong==L) {
+            newProp=L;                  /* W7 */
+            if(!bd->isNumbersSpecial)
+                dirProps[position]=ENL;
+            pLastIsoRun->contextDir=L;
+            pLastIsoRun->contextPos=position;
+        }
+        else {
+            newProp=R;                  /* N0 */
+            if(pLastIsoRun->lastStrong==AL)
+                dirProps[position]=AN;  /* W2 */
+            else
+                dirProps[position]=ENR;
+            pLastIsoRun->contextDir=R;
+            pLastIsoRun->contextPos=position;
+        }
+    }
+    else if(dirProp==AN) {
+        newProp=R;                      /* N0 */
+        pLastIsoRun->lastBase=AN;
+        pLastIsoRun->contextDir=R;
+        pLastIsoRun->contextPos=position;
+    }
+    else if(dirProp==NSM) {
+        /* if the last real char was ON, change NSM to ON so that it
+           will stay ON even if the last real char is a bracket which
+           may be changed to L or R */
+        newProp=pLastIsoRun->lastBase;
+        if(newProp==ON)
+            dirProps[position]=newProp;
+    }
+    else {
+        newProp=dirProp;
+        pLastIsoRun->lastBase=dirProp;
+    }
+    if(newProp<=R || newProp==AL) {
+        int32_t i;
+        uint16_t flag=DIRPROP_FLAG(DIR_FROM_STRONG(newProp));
+        for(i=pLastIsoRun->start; i<pLastIsoRun->limit; i++)
+            if(position>bd->openings[i].position)
+                bd->openings[i].flags|=flag;
+    }
+    return TRUE;
+}
+
+/* perform (X1)..(X9) ------------------------------------------------------- */
+
+/* determine if the text is mixed-directional or single-directional */
+static UBiDiDirection
+directionFromFlags(UBiDi *pBiDi) {
+    Flags flags=pBiDi->flags;
+    /* if the text contains AN and neutrals, then some neutrals may become RTL */
+    if(!(flags&MASK_RTL || ((flags&DIRPROP_FLAG(AN)) && (flags&MASK_POSSIBLE_N)))) {
+        return UBIDI_LTR;
+    } else if(!(flags&MASK_LTR)) {
+        return UBIDI_RTL;
+    } else {
+        return UBIDI_MIXED;
+    }
+}
+
+/*
+ * Resolve the explicit levels as specified by explicit embedding codes.
+ * Recalculate the flags to have them reflect the real properties
+ * after taking the explicit embeddings into account.
+ *
+ * The BiDi algorithm is designed to result in the same behavior whether embedding
+ * levels are externally specified (from "styled text", supposedly the preferred
+ * method) or set by explicit embedding codes (LRx, RLx, PDF, FSI, PDI) in the plain text.
+ * That is why (X9) instructs to remove all not-isolate explicit codes (and BN).
+ * However, in a real implementation, the removal of these codes and their index
+ * positions in the plain text is undesirable since it would result in
+ * reallocated, reindexed text.
+ * Instead, this implementation leaves the codes in there and just ignores them
+ * in the subsequent processing.
+ * In order to get the same reordering behavior, positions with a BN or a not-isolate
+ * explicit embedding code just get the same level assigned as the last "real"
+ * character.
+ *
+ * Some implementations, not this one, then overwrite some of these
+ * directionality properties at "real" same-level-run boundaries by
+ * L or R codes so that the resolution of weak types can be performed on the
+ * entire paragraph at once instead of having to parse it once more and
+ * perform that resolution on same-level-runs.
+ * This limits the scope of the implicit rules in effectively
+ * the same way as the run limits.
+ *
+ * Instead, this implementation does not modify these codes, except for
+ * paired brackets whose properties (ON) may be replaced by L or R.
+ * On one hand, the paragraph has to be scanned for same-level-runs, but
+ * on the other hand, this saves another loop to reset these codes,
+ * or saves making and modifying a copy of dirProps[].
+ *
+ *
+ * Note that (Pn) and (Xn) changed significantly from version 4 of the BiDi algorithm.
+ *
+ *
+ * Handling the stack of explicit levels (Xn):
+ *
+ * With the BiDi stack of explicit levels, as pushed with each
+ * LRE, RLE, LRO, RLO, LRI, RLI and FSI and popped with each PDF and PDI,
+ * the explicit level must never exceed UBIDI_MAX_EXPLICIT_LEVEL.
+ *
+ * In order to have a correct push-pop semantics even in the case of overflows,
+ * overflow counters and a valid isolate counter are used as described in UAX#9
+ * section 3.3.2 "Explicit Levels and Directions".
+ *
+ * This implementation assumes that UBIDI_MAX_EXPLICIT_LEVEL is odd.
+ *
+ * Returns normally the direction; -1 if there was a memory shortage
+ *
+ */
+static UBiDiDirection
+resolveExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
+    DirProp *dirProps=pBiDi->dirProps;
+    UBiDiLevel *levels=pBiDi->levels;
+    const UChar *text=pBiDi->text;
+
+    int32_t i=0, length=pBiDi->length;
+    Flags flags=pBiDi->flags;       /* collect all directionalities in the text */
+    DirProp dirProp;
+    UBiDiLevel level=GET_PARALEVEL(pBiDi, 0);
+    UBiDiDirection direction;
+    pBiDi->isolateCount=0;
+
+    if(U_FAILURE(*pErrorCode)) { return UBIDI_LTR; }
+
+    /* determine if the text is mixed-directional or single-directional */
+    direction=directionFromFlags(pBiDi);
+
+    /* we may not need to resolve any explicit levels */
+    if((direction!=UBIDI_MIXED)) {
+        /* not mixed directionality: levels don't matter - trailingWSStart will be 0 */
+        return direction;
+    }
+    if(pBiDi->reorderingMode > UBIDI_REORDER_LAST_LOGICAL_TO_VISUAL) {
+        /* inverse BiDi: mixed, but all characters are at the same embedding level */
+        /* set all levels to the paragraph level */
+        int32_t paraIndex, start, limit;
+        for(paraIndex=0; paraIndex<pBiDi->paraCount; paraIndex++) {
+            if(paraIndex==0)
+                start=0;
+            else
+                start=pBiDi->paras[paraIndex-1].limit;
+            limit=pBiDi->paras[paraIndex].limit;
+            level=pBiDi->paras[paraIndex].level;
+            for(i=start; i<limit; i++)
+                levels[i]=level;
+        }
+        return direction;   /* no bracket matching for inverse BiDi */
+    }
+    if(!(flags&(MASK_EXPLICIT|MASK_ISO))) {
+        /* no embeddings, set all levels to the paragraph level */
+        /* we still have to perform bracket matching */
+        int32_t paraIndex, start, limit;
+        BracketData bracketData;
+        bracketInit(pBiDi, &bracketData);
+        for(paraIndex=0; paraIndex<pBiDi->paraCount; paraIndex++) {
+            if(paraIndex==0)
+                start=0;
+            else
+                start=pBiDi->paras[paraIndex-1].limit;
+            limit=pBiDi->paras[paraIndex].limit;
+            level=pBiDi->paras[paraIndex].level;
+            for(i=start; i<limit; i++) {
+                levels[i]=level;
+                dirProp=dirProps[i];
+                if(dirProp==BN)
+                    continue;
+                if(dirProp==B) {
+                    if((i+1)<length) {
+                        if(text[i]==CR && text[i+1]==LF)
+                            continue;   /* skip CR when followed by LF */
+                        bracketProcessB(&bracketData, level);
+                    }
+                    continue;
+                }
+                if(!bracketProcessChar(&bracketData, i)) {
+                    *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+                    return UBIDI_LTR;
+                }
+            }
+        }
+        return direction;
+    }
+    {
+        /* continue to perform (Xn) */
+
+        /* (X1) level is set for all codes, embeddingLevel keeps track of the push/pop operations */
+        /* both variables may carry the UBIDI_LEVEL_OVERRIDE flag to indicate the override status */
+        UBiDiLevel embeddingLevel=level, newLevel;
+        UBiDiLevel previousLevel=level;     /* previous level for regular (not CC) characters */
+        int32_t lastCcPos=0;                /* index of last effective LRx,RLx, PDx */
+
+        /* The following stack remembers the embedding level and the ISOLATE flag of level runs.
+           stackLast points to its current entry. */
+        uint16_t stack[UBIDI_MAX_EXPLICIT_LEVEL+2];   /* we never push anything >=UBIDI_MAX_EXPLICIT_LEVEL
+                                                        but we need one more entry as base */
+        uint32_t stackLast=0;
+        int32_t overflowIsolateCount=0;
+        int32_t overflowEmbeddingCount=0;
+        int32_t validIsolateCount=0;
+        BracketData bracketData;
+        bracketInit(pBiDi, &bracketData);
+        stack[0]=level;     /* initialize base entry to para level, no override, no isolate */
+
+        /* recalculate the flags */
+        flags=0;
+
+        for(i=0; i<length; ++i) {
+            dirProp=dirProps[i];
+            switch(dirProp) {
+            case LRE:
+            case RLE:
+            case LRO:
+            case RLO:
+                /* (X2, X3, X4, X5) */
+                flags|=DIRPROP_FLAG(BN);
+                levels[i]=previousLevel;
+                if (dirProp==LRE || dirProp==LRO)
+                    /* least greater even level */
+                    newLevel=(UBiDiLevel)((embeddingLevel+2)&~(UBIDI_LEVEL_OVERRIDE|1));
+                else
+                    /* least greater odd level */
+                    newLevel=(UBiDiLevel)((NO_OVERRIDE(embeddingLevel)+1)|1);
+                if(newLevel<=UBIDI_MAX_EXPLICIT_LEVEL && overflowIsolateCount==0 &&
+                                                         overflowEmbeddingCount==0) {
+                    lastCcPos=i;
+                    embeddingLevel=newLevel;
+                    if(dirProp==LRO || dirProp==RLO)
+                        embeddingLevel|=UBIDI_LEVEL_OVERRIDE;
+                    stackLast++;
+                    stack[stackLast]=embeddingLevel;
+                    /* we don't need to set UBIDI_LEVEL_OVERRIDE off for LRE and RLE
+                       since this has already been done for newLevel which is
+                       the source for embeddingLevel.
+                     */
+                } else {
+                    if(overflowIsolateCount==0)
+                        overflowEmbeddingCount++;
+                }
+                break;
+            case PDF:
+                /* (X7) */
+                flags|=DIRPROP_FLAG(BN);
+                levels[i]=previousLevel;
+                /* handle all the overflow cases first */
+                if(overflowIsolateCount) {
+                    break;
+                }
+                if(overflowEmbeddingCount) {
+                    overflowEmbeddingCount--;
+                    break;
+                }
+                if(stackLast>0 && stack[stackLast]<ISOLATE) {   /* not an isolate entry */
+                    lastCcPos=i;
+                    stackLast--;
+                    embeddingLevel=(UBiDiLevel)stack[stackLast];
+                }
+                break;
+            case LRI:
+            case RLI:
+                flags|=(DIRPROP_FLAG(ON)|DIRPROP_FLAG_LR(embeddingLevel));
+                levels[i]=NO_OVERRIDE(embeddingLevel);
+                if(NO_OVERRIDE(embeddingLevel)!=NO_OVERRIDE(previousLevel)) {
+                    bracketProcessBoundary(&bracketData, lastCcPos,
+                                           previousLevel, embeddingLevel);
+                    flags|=DIRPROP_FLAG_MULTI_RUNS;
+                }
+                previousLevel=embeddingLevel;
+                /* (X5a, X5b) */
+                if(dirProp==LRI)
+                    /* least greater even level */
+                    newLevel=(UBiDiLevel)((embeddingLevel+2)&~(UBIDI_LEVEL_OVERRIDE|1));
+                else
+                    /* least greater odd level */
+                    newLevel=(UBiDiLevel)((NO_OVERRIDE(embeddingLevel)+1)|1);
+                if(newLevel<=UBIDI_MAX_EXPLICIT_LEVEL && overflowIsolateCount==0 &&
+                                                         overflowEmbeddingCount==0) {
+                    flags|=DIRPROP_FLAG(dirProp);
+                    lastCcPos=i;
+                    validIsolateCount++;
+                    if(validIsolateCount>pBiDi->isolateCount)
+                        pBiDi->isolateCount=validIsolateCount;
+                    embeddingLevel=newLevel;
+                    /* we can increment stackLast without checking because newLevel
+                       will exceed UBIDI_MAX_EXPLICIT_LEVEL before stackLast overflows */
+                    stackLast++;
+                    stack[stackLast]=embeddingLevel+ISOLATE;
+                    bracketProcessLRI_RLI(&bracketData, embeddingLevel);
+                } else {
+                    /* make it WS so that it is handled by adjustWSLevels() */
+                    dirProps[i]=WS;
+                    overflowIsolateCount++;
+                }
+                break;
+            case PDI:
+                if(NO_OVERRIDE(embeddingLevel)!=NO_OVERRIDE(previousLevel)) {
+                    bracketProcessBoundary(&bracketData, lastCcPos,
+                                           previousLevel, embeddingLevel);
+                    flags|=DIRPROP_FLAG_MULTI_RUNS;
+                }
+                /* (X6a) */
+                if(overflowIsolateCount) {
+                    overflowIsolateCount--;
+                    /* make it WS so that it is handled by adjustWSLevels() */
+                    dirProps[i]=WS;
+                }
+                else if(validIsolateCount) {
+                    flags|=DIRPROP_FLAG(PDI);
+                    lastCcPos=i;
+                    overflowEmbeddingCount=0;
+                    while(stack[stackLast]<ISOLATE) /* pop embedding entries */
+                        stackLast--;                /* until the last isolate entry */
+                    stackLast--;                    /* pop also the last isolate entry */
+                    validIsolateCount--;
+                    bracketProcessPDI(&bracketData);
+                } else
+                    /* make it WS so that it is handled by adjustWSLevels() */
+                    dirProps[i]=WS;
+                embeddingLevel=(UBiDiLevel)stack[stackLast]&~ISOLATE;
+                flags|=(DIRPROP_FLAG(ON)|DIRPROP_FLAG_LR(embeddingLevel));
+                previousLevel=embeddingLevel;
+                levels[i]=NO_OVERRIDE(embeddingLevel);
+                break;
+            case B:
+                flags|=DIRPROP_FLAG(B);
+                levels[i]=GET_PARALEVEL(pBiDi, i);
+                if((i+1)<length) {
+                    if(text[i]==CR && text[i+1]==LF)
+                        break;          /* skip CR when followed by LF */
+                    overflowEmbeddingCount=overflowIsolateCount=0;
+                    validIsolateCount=0;
+                    stackLast=0;
+                    previousLevel=embeddingLevel=GET_PARALEVEL(pBiDi, i+1);
+                    stack[0]=embeddingLevel; /* initialize base entry to para level, no override, no isolate */
+                    bracketProcessB(&bracketData, embeddingLevel);
+                }
+                break;
+            case BN:
+                /* BN, LRE, RLE, and PDF are supposed to be removed (X9) */
+                /* they will get their levels set correctly in adjustWSLevels() */
+                levels[i]=previousLevel;
+                flags|=DIRPROP_FLAG(BN);
+                break;
+            default:
+                /* all other types are normal characters and get the "real" level */
+                if(NO_OVERRIDE(embeddingLevel)!=NO_OVERRIDE(previousLevel)) {
+                    bracketProcessBoundary(&bracketData, lastCcPos,
+                                           previousLevel, embeddingLevel);
+                    flags|=DIRPROP_FLAG_MULTI_RUNS;
+                    if(embeddingLevel&UBIDI_LEVEL_OVERRIDE)
+                        flags|=DIRPROP_FLAG_O(embeddingLevel);
+                    else
+                        flags|=DIRPROP_FLAG_E(embeddingLevel);
+                }
+                previousLevel=embeddingLevel;
+                levels[i]=embeddingLevel;
+                if(!bracketProcessChar(&bracketData, i))
+                    return -1;
+                /* the dirProp may have been changed in bracketProcessChar() */
+                flags|=DIRPROP_FLAG(dirProps[i]);
+                break;
+            }
+        }
+        if(flags&MASK_EMBEDDING)
+            flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
+        if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B)))
+            flags|=DIRPROP_FLAG(L);
+        /* again, determine if the text is mixed-directional or single-directional */
+        pBiDi->flags=flags;
+        direction=directionFromFlags(pBiDi);
+    }
+    return direction;
+}
+
+/*
+ * Use a pre-specified embedding levels array:
+ *
+ * Adjust the directional properties for overrides (->LEVEL_OVERRIDE),
+ * ignore all explicit codes (X9),
+ * and check all the preset levels.
+ *
+ * Recalculate the flags to have them reflect the real properties
+ * after taking the explicit embeddings into account.
+ */
+static UBiDiDirection
+checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
+    DirProp *dirProps=pBiDi->dirProps;
+    DirProp dirProp;
+    UBiDiLevel *levels=pBiDi->levels;
+    int32_t isolateCount=0;
+
+    int32_t i, length=pBiDi->length;
+    Flags flags=0;  /* collect all directionalities in the text */
+    UBiDiLevel level;
+    pBiDi->isolateCount=0;
+
+    for(i=0; i<length; ++i) {
+        level=levels[i];
+        dirProp=dirProps[i];
+        if(dirProp==LRI || dirProp==RLI) {
+            isolateCount++;
+            if(isolateCount>pBiDi->isolateCount)
+                pBiDi->isolateCount=isolateCount;
+        }
+        else if(dirProp==PDI)
+            isolateCount--;
+        else if(dirProp==B)
+            isolateCount=0;
+        if(level&UBIDI_LEVEL_OVERRIDE) {
+            /* keep the override flag in levels[i] but adjust the flags */
+            level&=~UBIDI_LEVEL_OVERRIDE;     /* make the range check below simpler */
+            flags|=DIRPROP_FLAG_O(level);
+        } else {
+            /* set the flags */
+            flags|=DIRPROP_FLAG_E(level)|DIRPROP_FLAG(dirProp);
+        }
+        if((level<GET_PARALEVEL(pBiDi, i) &&
+            !((0==level)&&(dirProp==B))) ||
+           (UBIDI_MAX_EXPLICIT_LEVEL<level)) {
+            /* level out of bounds */
+            *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+            return UBIDI_LTR;
+        }
+    }
+    if(flags&MASK_EMBEDDING)
+        flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
+    /* determine if the text is mixed-directional or single-directional */
+    pBiDi->flags=flags;
+    return directionFromFlags(pBiDi);
+}
+
+/******************************************************************
+ The Properties state machine table
+*******************************************************************
+
+ All table cells are 8 bits:
+      bits 0..4:  next state
+      bits 5..7:  action to perform (if > 0)
+
+ Cells may be of format "n" where n represents the next state
+ (except for the rightmost column).
+ Cells may also be of format "s(x,y)" where x represents an action
+ to perform and y represents the next state.
+
+*******************************************************************
+ Definitions and type for properties state table
+*******************************************************************
+*/
+#define IMPTABPROPS_COLUMNS 16
+#define IMPTABPROPS_RES (IMPTABPROPS_COLUMNS - 1)
+#define GET_STATEPROPS(cell) ((cell)&0x1f)
+#define GET_ACTIONPROPS(cell) ((cell)>>5)
+#define s(action, newState) ((uint8_t)(newState+(action<<5)))
+
+static const uint8_t groupProp[] =          /* dirProp regrouped */
+{
+/*  L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  FSI LRI RLI PDI ENL ENR */
+    0,  1,  2,  7,  8,  3,  9,  6,  5,  4,  4,  10, 10, 12, 10, 10, 10, 11, 10, 4,  4,  4,  4,  13, 14
+};
+enum { DirProp_L=0, DirProp_R=1, DirProp_EN=2, DirProp_AN=3, DirProp_ON=4, DirProp_S=5, DirProp_B=6 }; /* reduced dirProp */
+
+/******************************************************************
+
+      PROPERTIES  STATE  TABLE
+
+ In table impTabProps,
+      - the ON column regroups ON and WS, FSI, RLI, LRI and PDI
+      - the BN column regroups BN, LRE, RLE, LRO, RLO, PDF
+      - the Res column is the reduced property assigned to a run
+
+ Action 1: process current run1, init new run1
+        2: init new run2
+        3: process run1, process run2, init new run1
+        4: process run1, set run1=run2, init new run2
+
+ Notes:
+  1) This table is used in resolveImplicitLevels().
+  2) This table triggers actions when there is a change in the Bidi
+     property of incoming characters (action 1).
+  3) Most such property sequences are processed immediately (in
+     fact, passed to processPropertySeq().
+  4) However, numbers are assembled as one sequence. This means
+     that undefined situations (like CS following digits, until
+     it is known if the next char will be a digit) are held until
+     following chars define them.
+     Example: digits followed by CS, then comes another CS or ON;
+              the digits will be processed, then the CS assigned
+              as the start of an ON sequence (action 3).
+  5) There are cases where more than one sequence must be
+     processed, for instance digits followed by CS followed by L:
+     the digits must be processed as one sequence, and the CS
+     must be processed as an ON sequence, all this before starting
+     assembling chars for the opening L sequence.
+
+
+*/
+static const uint8_t impTabProps[][IMPTABPROPS_COLUMNS] =
+{
+/*                        L ,     R ,    EN ,    AN ,    ON ,     S ,     B ,    ES ,    ET ,    CS ,    BN ,   NSM ,    AL ,   ENL ,   ENR , Res */
+/* 0 Init        */ {     1 ,     2 ,     4 ,     5 ,     7 ,    15 ,    17 ,     7 ,     9 ,     7 ,     0 ,     7 ,     3 ,    18 ,    21 , DirProp_ON },
+/* 1 L           */ {     1 , s(1,2), s(1,4), s(1,5), s(1,7),s(1,15),s(1,17), s(1,7), s(1,9), s(1,7),     1 ,     1 , s(1,3),s(1,18),s(1,21),  DirProp_L },
+/* 2 R           */ { s(1,1),     2 , s(1,4), s(1,5), s(1,7),s(1,15),s(1,17), s(1,7), s(1,9), s(1,7),     2 ,     2 , s(1,3),s(1,18),s(1,21),  DirProp_R },
+/* 3 AL          */ { s(1,1), s(1,2), s(1,6), s(1,6), s(1,8),s(1,16),s(1,17), s(1,8), s(1,8), s(1,8),     3 ,     3 ,     3 ,s(1,18),s(1,21),  DirProp_R },
+/* 4 EN          */ { s(1,1), s(1,2),     4 , s(1,5), s(1,7),s(1,15),s(1,17),s(2,10),    11 ,s(2,10),     4 ,     4 , s(1,3),    18 ,    21 , DirProp_EN },
+/* 5 AN          */ { s(1,1), s(1,2), s(1,4),     5 , s(1,7),s(1,15),s(1,17), s(1,7), s(1,9),s(2,12),     5 ,     5 , s(1,3),s(1,18),s(1,21), DirProp_AN },
+/* 6 AL:EN/AN    */ { s(1,1), s(1,2),     6 ,     6 , s(1,8),s(1,16),s(1,17), s(1,8), s(1,8),s(2,13),     6 ,     6 , s(1,3),    18 ,    21 , DirProp_AN },
+/* 7 ON          */ { s(1,1), s(1,2), s(1,4), s(1,5),     7 ,s(1,15),s(1,17),     7 ,s(2,14),     7 ,     7 ,     7 , s(1,3),s(1,18),s(1,21), DirProp_ON },
+/* 8 AL:ON       */ { s(1,1), s(1,2), s(1,6), s(1,6),     8 ,s(1,16),s(1,17),     8 ,     8 ,     8 ,     8 ,     8 , s(1,3),s(1,18),s(1,21), DirProp_ON },
+/* 9 ET          */ { s(1,1), s(1,2),     4 , s(1,5),     7 ,s(1,15),s(1,17),     7 ,     9 ,     7 ,     9 ,     9 , s(1,3),    18 ,    21 , DirProp_ON },
+/*10 EN+ES/CS    */ { s(3,1), s(3,2),     4 , s(3,5), s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    10 , s(4,7), s(3,3),    18 ,    21 , DirProp_EN },
+/*11 EN+ET       */ { s(1,1), s(1,2),     4 , s(1,5), s(1,7),s(1,15),s(1,17), s(1,7),    11 , s(1,7),    11 ,    11 , s(1,3),    18 ,    21 , DirProp_EN },
+/*12 AN+CS       */ { s(3,1), s(3,2), s(3,4),     5 , s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    12 , s(4,7), s(3,3),s(3,18),s(3,21), DirProp_AN },
+/*13 AL:EN/AN+CS */ { s(3,1), s(3,2),     6 ,     6 , s(4,8),s(3,16),s(3,17), s(4,8), s(4,8), s(4,8),    13 , s(4,8), s(3,3),    18 ,    21 , DirProp_AN },
+/*14 ON+ET       */ { s(1,1), s(1,2), s(4,4), s(1,5),     7 ,s(1,15),s(1,17),     7 ,    14 ,     7 ,    14 ,    14 , s(1,3),s(4,18),s(4,21), DirProp_ON },
+/*15 S           */ { s(1,1), s(1,2), s(1,4), s(1,5), s(1,7),    15 ,s(1,17), s(1,7), s(1,9), s(1,7),    15 , s(1,7), s(1,3),s(1,18),s(1,21),  DirProp_S },
+/*16 AL:S        */ { s(1,1), s(1,2), s(1,6), s(1,6), s(1,8),    16 ,s(1,17), s(1,8), s(1,8), s(1,8),    16 , s(1,8), s(1,3),s(1,18),s(1,21),  DirProp_S },
+/*17 B           */ { s(1,1), s(1,2), s(1,4), s(1,5), s(1,7),s(1,15),    17 , s(1,7), s(1,9), s(1,7),    17 , s(1,7), s(1,3),s(1,18),s(1,21),  DirProp_B },
+/*18 ENL         */ { s(1,1), s(1,2),    18 , s(1,5), s(1,7),s(1,15),s(1,17),s(2,19),    20 ,s(2,19),    18 ,    18 , s(1,3),    18 ,    21 ,  DirProp_L },
+/*19 ENL+ES/CS   */ { s(3,1), s(3,2),    18 , s(3,5), s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    19 , s(4,7), s(3,3),    18 ,    21 ,  DirProp_L },
+/*20 ENL+ET      */ { s(1,1), s(1,2),    18 , s(1,5), s(1,7),s(1,15),s(1,17), s(1,7),    20 , s(1,7),    20 ,    20 , s(1,3),    18 ,    21 ,  DirProp_L },
+/*21 ENR         */ { s(1,1), s(1,2),    21 , s(1,5), s(1,7),s(1,15),s(1,17),s(2,22),    23 ,s(2,22),    21 ,    21 , s(1,3),    18 ,    21 , DirProp_AN },
+/*22 ENR+ES/CS   */ { s(3,1), s(3,2),    21 , s(3,5), s(4,7),s(3,15),s(3,17), s(4,7),s(4,14), s(4,7),    22 , s(4,7), s(3,3),    18 ,    21 , DirProp_AN },
+/*23 ENR+ET      */ { s(1,1), s(1,2),    21 , s(1,5), s(1,7),s(1,15),s(1,17), s(1,7),    23 , s(1,7),    23 ,    23 , s(1,3),    18 ,    21 , DirProp_AN }
+};
+
+/*  we must undef macro s because the levels tables have a different
+ *  structure (4 bits for action and 4 bits for next state.
+ */
+#undef s
+
+/******************************************************************
+ The levels state machine tables
+*******************************************************************
+
+ All table cells are 8 bits:
+      bits 0..3:  next state
+      bits 4..7:  action to perform (if > 0)
+
+ Cells may be of format "n" where n represents the next state
+ (except for the rightmost column).
+ Cells may also be of format "s(x,y)" where x represents an action
+ to perform and y represents the next state.
+
+ This format limits each table to 16 states each and to 15 actions.
+
+*******************************************************************
+ Definitions and type for levels state tables
+*******************************************************************
+*/
+#define IMPTABLEVELS_COLUMNS (DirProp_B + 2)
+#define IMPTABLEVELS_RES (IMPTABLEVELS_COLUMNS - 1)
+#define GET_STATE(cell) ((cell)&0x0f)
+#define GET_ACTION(cell) ((cell)>>4)
+#define s(action, newState) ((uint8_t)(newState+(action<<4)))
+
+typedef uint8_t ImpTab[][IMPTABLEVELS_COLUMNS];
+typedef uint8_t ImpAct[];
+
+/* FOOD FOR THOUGHT: each ImpTab should have its associated ImpAct,
+ * instead of having a pair of ImpTab and a pair of ImpAct.
+ */
+typedef struct ImpTabPair {
+    const void * pImpTab[2];
+    const void * pImpAct[2];
+} ImpTabPair;
+
+/******************************************************************
+
+      LEVELS  STATE  TABLES
+
+ In all levels state tables,
+      - state 0 is the initial state
+      - the Res column is the increment to add to the text level
+        for this property sequence.
+
+ The impAct arrays for each table of a pair map the local action
+ numbers of the table to the total list of actions. For instance,
+ action 2 in a given table corresponds to the action number which
+ appears in entry [2] of the impAct array for that table.
+ The first entry of all impAct arrays must be 0.
+
+ Action 1: init conditional sequence
+        2: prepend conditional sequence to current sequence
+        3: set ON sequence to new level - 1
+        4: init EN/AN/ON sequence
+        5: fix EN/AN/ON sequence followed by R
+        6: set previous level sequence to level 2
+
+ Notes:
+  1) These tables are used in processPropertySeq(). The input
+     is property sequences as determined by resolveImplicitLevels.
+  2) Most such property sequences are processed immediately
+     (levels are assigned).
+  3) However, some sequences cannot be assigned a final level till
+     one or more following sequences are received. For instance,
+     ON following an R sequence within an even-level paragraph.
+     If the following sequence is R, the ON sequence will be
+     assigned basic run level+1, and so will the R sequence.
+  4) S is generally handled like ON, since its level will be fixed
+     to paragraph level in adjustWSLevels().
+
+*/
+
+static const ImpTab impTabL_DEFAULT =   /* Even paragraph level */
+/*  In this table, conditional sequences receive the lower possible level
+    until proven otherwise.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     0 ,     1 ,     0 ,     2 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : R          */ {     0 ,     1 ,     3 ,     3 , s(1,4), s(1,4),     0 ,  1 },
+/* 2 : AN         */ {     0 ,     1 ,     0 ,     2 , s(1,5), s(1,5),     0 ,  2 },
+/* 3 : R+EN/AN    */ {     0 ,     1 ,     3 ,     3 , s(1,4), s(1,4),     0 ,  2 },
+/* 4 : R+ON       */ {     0 , s(2,1), s(3,3), s(3,3),     4 ,     4 ,     0 ,  0 },
+/* 5 : AN+ON      */ {     0 , s(2,1),     0 , s(3,2),     5 ,     5 ,     0 ,  0 }
+};
+static const ImpTab impTabR_DEFAULT =   /* Odd  paragraph level */
+/*  In this table, conditional sequences receive the lower possible level
+    until proven otherwise.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : L          */ {     1 ,     0 ,     1 ,     3 , s(1,4), s(1,4),     0 ,  1 },
+/* 2 : EN/AN      */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  1 },
+/* 3 : L+AN       */ {     1 ,     0 ,     1 ,     3 ,     5 ,     5 ,     0 ,  1 },
+/* 4 : L+ON       */ { s(2,1),     0 , s(2,1),     3 ,     4 ,     4 ,     0 ,  0 },
+/* 5 : L+AN+ON    */ {     1 ,     0 ,     1 ,     3 ,     5 ,     5 ,     0 ,  0 }
+};
+static const ImpAct impAct0 = {0,1,2,3,4};
+static const ImpTabPair impTab_DEFAULT = {{&impTabL_DEFAULT,
+                                           &impTabR_DEFAULT},
+                                          {&impAct0, &impAct0}};
+
+static const ImpTab impTabL_NUMBERS_SPECIAL =   /* Even paragraph level */
+/*  In this table, conditional sequences receive the lower possible level
+    until proven otherwise.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     0 ,     2 , s(1,1), s(1,1),     0 ,     0 ,     0 ,  0 },
+/* 1 : L+EN/AN    */ {     0 , s(4,2),     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
+/* 2 : R          */ {     0 ,     2 ,     4 ,     4 , s(1,3), s(1,3),     0 ,  1 },
+/* 3 : R+ON       */ {     0 , s(2,2), s(3,4), s(3,4),     3 ,     3 ,     0 ,  0 },
+/* 4 : R+EN/AN    */ {     0 ,     2 ,     4 ,     4 , s(1,3), s(1,3),     0 ,  2 }
+};
+static const ImpTabPair impTab_NUMBERS_SPECIAL = {{&impTabL_NUMBERS_SPECIAL,
+                                                   &impTabR_DEFAULT},
+                                                  {&impAct0, &impAct0}};
+
+static const ImpTab impTabL_GROUP_NUMBERS_WITH_R =
+/*  In this table, EN/AN+ON sequences receive levels as if associated with R
+    until proven that there is L or sor/eor on both sides. AN is handled like EN.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 init         */ {     0 ,     3 , s(1,1), s(1,1),     0 ,     0 ,     0 ,  0 },
+/* 1 EN/AN        */ { s(2,0),     3 ,     1 ,     1 ,     2 , s(2,0), s(2,0),  2 },
+/* 2 EN/AN+ON     */ { s(2,0),     3 ,     1 ,     1 ,     2 , s(2,0), s(2,0),  1 },
+/* 3 R            */ {     0 ,     3 ,     5 ,     5 , s(1,4),     0 ,     0 ,  1 },
+/* 4 R+ON         */ { s(2,0),     3 ,     5 ,     5 ,     4 , s(2,0), s(2,0),  1 },
+/* 5 R+EN/AN      */ {     0 ,     3 ,     5 ,     5 , s(1,4),     0 ,     0 ,  2 }
+};
+static const ImpTab impTabR_GROUP_NUMBERS_WITH_R =
+/*  In this table, EN/AN+ON sequences receive levels as if associated with R
+    until proven that there is L on both sides. AN is handled like EN.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 init         */ {     2 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
+/* 1 EN/AN        */ {     2 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  1 },
+/* 2 L            */ {     2 ,     0 , s(1,4), s(1,4), s(1,3),     0 ,     0 ,  1 },
+/* 3 L+ON         */ { s(2,2),     0 ,     4 ,     4 ,     3 ,     0 ,     0 ,  0 },
+/* 4 L+EN/AN      */ { s(2,2),     0 ,     4 ,     4 ,     3 ,     0 ,     0 ,  1 }
+};
+static const ImpTabPair impTab_GROUP_NUMBERS_WITH_R = {
+                        {&impTabL_GROUP_NUMBERS_WITH_R,
+                         &impTabR_GROUP_NUMBERS_WITH_R},
+                        {&impAct0, &impAct0}};
+
+
+static const ImpTab impTabL_INVERSE_NUMBERS_AS_L =
+/*  This table is identical to the Default LTR table except that EN and AN are
+    handled like L.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     0 ,     1 ,     0 ,     0 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : R          */ {     0 ,     1 ,     0 ,     0 , s(1,4), s(1,4),     0 ,  1 },
+/* 2 : AN         */ {     0 ,     1 ,     0 ,     0 , s(1,5), s(1,5),     0 ,  2 },
+/* 3 : R+EN/AN    */ {     0 ,     1 ,     0 ,     0 , s(1,4), s(1,4),     0 ,  2 },
+/* 4 : R+ON       */ { s(2,0),     1 , s(2,0), s(2,0),     4 ,     4 , s(2,0),  1 },
+/* 5 : AN+ON      */ { s(2,0),     1 , s(2,0), s(2,0),     5 ,     5 , s(2,0),  1 }
+};
+static const ImpTab impTabR_INVERSE_NUMBERS_AS_L =
+/*  This table is identical to the Default RTL table except that EN and AN are
+    handled like L.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     1 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : L          */ {     1 ,     0 ,     1 ,     1 , s(1,4), s(1,4),     0 ,  1 },
+/* 2 : EN/AN      */ {     1 ,     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  1 },
+/* 3 : L+AN       */ {     1 ,     0 ,     1 ,     1 ,     5 ,     5 ,     0 ,  1 },
+/* 4 : L+ON       */ { s(2,1),     0 , s(2,1), s(2,1),     4 ,     4 ,     0 ,  0 },
+/* 5 : L+AN+ON    */ {     1 ,     0 ,     1 ,     1 ,     5 ,     5 ,     0 ,  0 }
+};
+static const ImpTabPair impTab_INVERSE_NUMBERS_AS_L = {
+                        {&impTabL_INVERSE_NUMBERS_AS_L,
+                         &impTabR_INVERSE_NUMBERS_AS_L},
+                        {&impAct0, &impAct0}};
+
+static const ImpTab impTabR_INVERSE_LIKE_DIRECT =   /* Odd  paragraph level */
+/*  In this table, conditional sequences receive the lower possible level
+    until proven otherwise.
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : L          */ {     1 ,     0 ,     1 ,     2 , s(1,3), s(1,3),     0 ,  1 },
+/* 2 : EN/AN      */ {     1 ,     0 ,     2 ,     2 ,     0 ,     0 ,     0 ,  1 },
+/* 3 : L+ON       */ { s(2,1), s(3,0),     6 ,     4 ,     3 ,     3 , s(3,0),  0 },
+/* 4 : L+ON+AN    */ { s(2,1), s(3,0),     6 ,     4 ,     5 ,     5 , s(3,0),  3 },
+/* 5 : L+AN+ON    */ { s(2,1), s(3,0),     6 ,     4 ,     5 ,     5 , s(3,0),  2 },
+/* 6 : L+ON+EN    */ { s(2,1), s(3,0),     6 ,     4 ,     3 ,     3 , s(3,0),  1 }
+};
+static const ImpAct impAct1 = {0,1,13,14};
+/* FOOD FOR THOUGHT: in LTR table below, check case "JKL 123abc"
+ */
+static const ImpTabPair impTab_INVERSE_LIKE_DIRECT = {
+                        {&impTabL_DEFAULT,
+                         &impTabR_INVERSE_LIKE_DIRECT},
+                        {&impAct0, &impAct1}};
+
+static const ImpTab impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS =
+/*  The case handled in this table is (visually):  R EN L
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     0 , s(6,3),     0 ,     1 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : L+AN       */ {     0 , s(6,3),     0 ,     1 , s(1,2), s(3,0),     0 ,  4 },
+/* 2 : L+AN+ON    */ { s(2,0), s(6,3), s(2,0),     1 ,     2 , s(3,0), s(2,0),  3 },
+/* 3 : R          */ {     0 , s(6,3), s(5,5), s(5,6), s(1,4), s(3,0),     0 ,  3 },
+/* 4 : R+ON       */ { s(3,0), s(4,3), s(5,5), s(5,6),     4 , s(3,0), s(3,0),  3 },
+/* 5 : R+EN       */ { s(3,0), s(4,3),     5 , s(5,6), s(1,4), s(3,0), s(3,0),  4 },
+/* 6 : R+AN       */ { s(3,0), s(4,3), s(5,5),     6 , s(1,4), s(3,0), s(3,0),  4 }
+};
+static const ImpTab impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS =
+/*  The cases handled in this table are (visually):  R EN L
+                                                     R L AN L
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ { s(1,3),     0 ,     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : R+EN/AN    */ { s(2,3),     0 ,     1 ,     1 ,     2 , s(4,0),     0 ,  1 },
+/* 2 : R+EN/AN+ON */ { s(2,3),     0 ,     1 ,     1 ,     2 , s(4,0),     0 ,  0 },
+/* 3 : L          */ {     3 ,     0 ,     3 , s(3,6), s(1,4), s(4,0),     0 ,  1 },
+/* 4 : L+ON       */ { s(5,3), s(4,0),     5 , s(3,6),     4 , s(4,0), s(4,0),  0 },
+/* 5 : L+ON+EN    */ { s(5,3), s(4,0),     5 , s(3,6),     4 , s(4,0), s(4,0),  1 },
+/* 6 : L+AN       */ { s(5,3), s(4,0),     6 ,     6 ,     4 , s(4,0), s(4,0),  3 }
+};
+static const ImpAct impAct2 = {0,1,2,5,6,7,8};
+static const ImpAct impAct3 = {0,1,9,10,11,12};
+static const ImpTabPair impTab_INVERSE_LIKE_DIRECT_WITH_MARKS = {
+                        {&impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS,
+                         &impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS},
+                        {&impAct2, &impAct3}};
+
+static const ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL = {
+                        {&impTabL_NUMBERS_SPECIAL,
+                         &impTabR_INVERSE_LIKE_DIRECT},
+                        {&impAct0, &impAct1}};
+
+static const ImpTab impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS =
+/*  The case handled in this table is (visually):  R EN L
+*/
+{
+/*                         L ,     R ,    EN ,    AN ,    ON ,     S ,     B , Res */
+/* 0 : init       */ {     0 , s(6,2),     1 ,     1 ,     0 ,     0 ,     0 ,  0 },
+/* 1 : L+EN/AN    */ {     0 , s(6,2),     1 ,     1 ,     0 , s(3,0),     0 ,  4 },
+/* 2 : R          */ {     0 , s(6,2), s(5,4), s(5,4), s(1,3), s(3,0),     0 ,  3 },
+/* 3 : R+ON       */ { s(3,0), s(4,2), s(5,4), s(5,4),     3 , s(3,0), s(3,0),  3 },
+/* 4 : R+EN/AN    */ { s(3,0), s(4,2),     4 ,     4 , s(1,3), s(3,0), s(3,0),  4 }
+};
+static const ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS = {
+                        {&impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS,
+                         &impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS},
+                        {&impAct2, &impAct3}};
+
+#undef s
+
+typedef struct {
+    const ImpTab * pImpTab;             /* level table pointer          */
+    const ImpAct * pImpAct;             /* action map array             */
+    int32_t startON;                    /* start of ON sequence         */
+    int32_t startL2EN;                  /* start of level 2 sequence    */
+    int32_t lastStrongRTL;              /* index of last found R or AL  */
+    int32_t state;                      /* current state                */
+    int32_t runStart;                   /* start position of the run    */
+    UBiDiLevel runLevel;                /* run level before implicit solving */
+} LevState;
+
+/*------------------------------------------------------------------------*/
+
+static void
+addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag)
+  /* param pos:     position where to insert
+     param flag:    one of LRM_BEFORE, LRM_AFTER, RLM_BEFORE, RLM_AFTER
+  */
+{
+#define FIRSTALLOC  10
+    Point point;
+    InsertPoints * pInsertPoints=&(pBiDi->insertPoints);
+
+    if (pInsertPoints->capacity == 0)
+    {
+        pInsertPoints->points=uprv_malloc(sizeof(Point)*FIRSTALLOC);
+        if (pInsertPoints->points == NULL)
+        {
+            pInsertPoints->errorCode=U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+        pInsertPoints->capacity=FIRSTALLOC;
+    }
+    if (pInsertPoints->size >= pInsertPoints->capacity) /* no room for new point */
+    {
+        void * savePoints=pInsertPoints->points;
+        pInsertPoints->points=uprv_realloc(pInsertPoints->points,
+                                           pInsertPoints->capacity*2*sizeof(Point));
+        if (pInsertPoints->points == NULL)
+        {
+            pInsertPoints->points=savePoints;
+            pInsertPoints->errorCode=U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+        else  pInsertPoints->capacity*=2;
+    }
+    point.pos=pos;
+    point.flag=flag;
+    pInsertPoints->points[pInsertPoints->size]=point;
+    pInsertPoints->size++;
+#undef FIRSTALLOC
+}
+
+static void
+setLevelsOutsideIsolates(UBiDi *pBiDi, int32_t start, int32_t limit, UBiDiLevel level)
+{
+    DirProp *dirProps=pBiDi->dirProps, dirProp;
+    UBiDiLevel *levels=pBiDi->levels;
+    int32_t isolateCount=0, k;
+    for(k=start; k<limit; k++) {
+        dirProp=dirProps[k];
+        if(dirProp==PDI)
+            isolateCount--;
+        if(isolateCount==0)
+            levels[k]=level;
+        if(dirProp==LRI || dirProp==RLI)
+            isolateCount++;
+    }
+}
+
+/* perform rules (Wn), (Nn), and (In) on a run of the text ------------------ */
+
+/*
+ * This implementation of the (Wn) rules applies all rules in one pass.
+ * In order to do so, it needs a look-ahead of typically 1 character
+ * (except for W5: sequences of ET) and keeps track of changes
+ * in a rule Wp that affect a later Wq (p<q).
+ *
+ * The (Nn) and (In) rules are also performed in that same single loop,
+ * but effectively one iteration behind for white space.
+ *
+ * Since all implicit rules are performed in one step, it is not necessary
+ * to actually store the intermediate directional properties in dirProps[].
+ */
+
+static void
+processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop,
+                   int32_t start, int32_t limit) {
+    uint8_t cell, oldStateSeq, actionSeq;
+    const ImpTab * pImpTab=pLevState->pImpTab;
+    const ImpAct * pImpAct=pLevState->pImpAct;
+    UBiDiLevel * levels=pBiDi->levels;
+    UBiDiLevel level, addLevel;
+    InsertPoints * pInsertPoints;
+    int32_t start0, k;
+
+    start0=start;                           /* save original start position */
+    oldStateSeq=(uint8_t)pLevState->state;
+    cell=(*pImpTab)[oldStateSeq][_prop];
+    pLevState->state=GET_STATE(cell);       /* isolate the new state */
+    actionSeq=(*pImpAct)[GET_ACTION(cell)]; /* isolate the action */
+    addLevel=(*pImpTab)[pLevState->state][IMPTABLEVELS_RES];
+
+    if(actionSeq) {
+        switch(actionSeq) {
+        case 1:                         /* init ON seq */
+            pLevState->startON=start0;
+            break;
+
+        case 2:                         /* prepend ON seq to current seq */
+            start=pLevState->startON;
+            break;
+
+        case 3:                         /* EN/AN after R+ON */
+            level=pLevState->runLevel+1;
+            setLevelsOutsideIsolates(pBiDi, pLevState->startON, start0, level);
+            break;
+
+        case 4:                         /* EN/AN before R for NUMBERS_SPECIAL */
+            level=pLevState->runLevel+2;
+            setLevelsOutsideIsolates(pBiDi, pLevState->startON, start0, level);
+            break;
+
+        case 5:                         /* L or S after possible relevant EN/AN */
+            /* check if we had EN after R/AL */
+            if (pLevState->startL2EN >= 0) {
+                addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE);
+            }
+            pLevState->startL2EN=-1;  /* not within previous if since could also be -2 */
+            /* check if we had any relevant EN/AN after R/AL */
+            pInsertPoints=&(pBiDi->insertPoints);
+            if ((pInsertPoints->capacity == 0) ||
+                (pInsertPoints->size <= pInsertPoints->confirmed))
+            {
+                /* nothing, just clean up */
+                pLevState->lastStrongRTL=-1;
+                /* check if we have a pending conditional segment */
+                level=(*pImpTab)[oldStateSeq][IMPTABLEVELS_RES];
+                if ((level & 1) && (pLevState->startON > 0)) {  /* after ON */
+                    start=pLevState->startON;   /* reset to basic run level */
+                }
+                if (_prop == DirProp_S)                /* add LRM before S */
+                {
+                    addPoint(pBiDi, start0, LRM_BEFORE);
+                    pInsertPoints->confirmed=pInsertPoints->size;
+                }
+                break;
+            }
+            /* reset previous RTL cont to level for LTR text */
+            for (k=pLevState->lastStrongRTL+1; k<start0; k++)
+            {
+                /* reset odd level, leave runLevel+2 as is */
+                levels[k]=(levels[k] - 2) & ~1;
+            }
+            /* mark insert points as confirmed */
+            pInsertPoints->confirmed=pInsertPoints->size;
+            pLevState->lastStrongRTL=-1;
+            if (_prop == DirProp_S)            /* add LRM before S */
+            {
+                addPoint(pBiDi, start0, LRM_BEFORE);
+                pInsertPoints->confirmed=pInsertPoints->size;
+            }
+            break;
+
+        case 6:                         /* R/AL after possible relevant EN/AN */
+            /* just clean up */
+            pInsertPoints=&(pBiDi->insertPoints);
+            if (pInsertPoints->capacity > 0)
+                /* remove all non confirmed insert points */
+                pInsertPoints->size=pInsertPoints->confirmed;
+            pLevState->startON=-1;
+            pLevState->startL2EN=-1;
+            pLevState->lastStrongRTL=limit - 1;
+            break;
+
+        case 7:                         /* EN/AN after R/AL + possible cont */
+            /* check for real AN */
+            if ((_prop == DirProp_AN) && (pBiDi->dirProps[start0] == AN) &&
+                (pBiDi->reorderingMode!=UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))
+            {
+                /* real AN */
+                if (pLevState->startL2EN == -1) /* if no relevant EN already found */
+                {
+                    /* just note the righmost digit as a strong RTL */
+                    pLevState->lastStrongRTL=limit - 1;
+                    break;
+                }
+                if (pLevState->startL2EN >= 0)  /* after EN, no AN */
+                {
+                    addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE);
+                    pLevState->startL2EN=-2;
+                }
+                /* note AN */
+                addPoint(pBiDi, start0, LRM_BEFORE);
+                break;
+            }
+            /* if first EN/AN after R/AL */
+            if (pLevState->startL2EN == -1) {
+                pLevState->startL2EN=start0;
+            }
+            break;
+
+        case 8:                         /* note location of latest R/AL */
+            pLevState->lastStrongRTL=limit - 1;
+            pLevState->startON=-1;
+            break;
+
+        case 9:                         /* L after R+ON/EN/AN */
+            /* include possible adjacent number on the left */
+            for (k=start0-1; k>=0 && !(levels[k]&1); k--);
+            if(k>=0) {
+                addPoint(pBiDi, k, RLM_BEFORE);             /* add RLM before */
+                pInsertPoints=&(pBiDi->insertPoints);
+                pInsertPoints->confirmed=pInsertPoints->size;   /* confirm it */
+            }
+            pLevState->startON=start0;
+            break;
+
+        case 10:                        /* AN after L */
+            /* AN numbers between L text on both sides may be trouble. */
+            /* tentatively bracket with LRMs; will be confirmed if followed by L */
+            addPoint(pBiDi, start0, LRM_BEFORE);    /* add LRM before */
+            addPoint(pBiDi, start0, LRM_AFTER);     /* add LRM after  */
+            break;
+
+        case 11:                        /* R after L+ON/EN/AN */
+            /* false alert, infirm LRMs around previous AN */
+            pInsertPoints=&(pBiDi->insertPoints);
+            pInsertPoints->size=pInsertPoints->confirmed;
+            if (_prop == DirProp_S)            /* add RLM before S */
+            {
+                addPoint(pBiDi, start0, RLM_BEFORE);
+                pInsertPoints->confirmed=pInsertPoints->size;
+            }
+            break;
+
+        case 12:                        /* L after L+ON/AN */
+            level=pLevState->runLevel + addLevel;
+            for(k=pLevState->startON; k<start0; k++) {
+                if (levels[k]<level)
+                    levels[k]=level;
+            }
+            pInsertPoints=&(pBiDi->insertPoints);
+            pInsertPoints->confirmed=pInsertPoints->size;   /* confirm inserts */
+            pLevState->startON=start0;
+            break;
+
+        case 13:                        /* L after L+ON+EN/AN/ON */
+            level=pLevState->runLevel;
+            for(k=start0-1; k>=pLevState->startON; k--) {
+                if(levels[k]==level+3) {
+                    while(levels[k]==level+3) {
+                        levels[k--]-=2;
+                    }
+                    while(levels[k]==level) {
+                        k--;
+                    }
+                }
+                if(levels[k]==level+2) {
+                    levels[k]=level;
+                    continue;
+                }
+                levels[k]=level+1;
+            }
+            break;
+
+        case 14:                        /* R after L+ON+EN/AN/ON */
+            level=pLevState->runLevel+1;
+            for(k=start0-1; k>=pLevState->startON; k--) {
+                if(levels[k]>level) {
+                    levels[k]-=2;
+                }
+            }
+            break;
+
+        default:                        /* we should never get here */
+            U_ASSERT(FALSE);
+            break;
+        }
+    }
+    if((addLevel) || (start < start0)) {
+        level=pLevState->runLevel + addLevel;
+        if(start>=pLevState->runStart) {
+            for(k=start; k<limit; k++) {
+                levels[k]=level;
+            }
+        } else {
+            setLevelsOutsideIsolates(pBiDi, start, limit, level);
+        }
+    }
+}
+
+/**
+ * Returns the directionality of the last strong character at the end of the prologue, if any.
+ * Requires prologue!=null.
+ */
+static DirProp
+lastL_R_AL(UBiDi *pBiDi) {
+    const UChar *text=pBiDi->prologue;
+    int32_t length=pBiDi->proLength;
+    int32_t i;
+    UChar32 uchar;
+    DirProp dirProp;
+    for(i=length; i>0; ) {
+        /* i is decremented by U16_PREV */
+        U16_PREV(text, 0, i, uchar);
+        dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
+        if(dirProp==L) {
+            return DirProp_L;
+        }
+        if(dirProp==R || dirProp==AL) {
+            return DirProp_R;
+        }
+        if(dirProp==B) {
+            return DirProp_ON;
+        }
+    }
+    return DirProp_ON;
+}
+
+/**
+ * Returns the directionality of the first strong character, or digit, in the epilogue, if any.
+ * Requires epilogue!=null.
+ */
+static DirProp
+firstL_R_AL_EN_AN(UBiDi *pBiDi) {
+    const UChar *text=pBiDi->epilogue;
+    int32_t length=pBiDi->epiLength;
+    int32_t i;
+    UChar32 uchar;
+    DirProp dirProp;
+    for(i=0; i<length; ) {
+        /* i is incremented by U16_NEXT */
+        U16_NEXT(text, i, length, uchar);
+        dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
+        if(dirProp==L) {
+            return DirProp_L;
+        }
+        if(dirProp==R || dirProp==AL) {
+            return DirProp_R;
+        }
+        if(dirProp==EN) {
+            return DirProp_EN;
+        }
+        if(dirProp==AN) {
+            return DirProp_AN;
+        }
+    }
+    return DirProp_ON;
+}
+
+static void
+resolveImplicitLevels(UBiDi *pBiDi,
+                      int32_t start, int32_t limit,
+                      DirProp sor, DirProp eor) {
+    const DirProp *dirProps=pBiDi->dirProps;
+    DirProp dirProp;
+    LevState levState;
+    int32_t i, start1, start2;
+    uint16_t oldStateImp, stateImp, actionImp;
+    uint8_t gprop, resProp, cell;
+    UBool inverseRTL;
+    DirProp nextStrongProp=R;
+    int32_t nextStrongPos=-1;
+
+    /* check for RTL inverse BiDi mode */
+    /* FOOD FOR THOUGHT: in case of RTL inverse BiDi, it would make sense to
+     * loop on the text characters from end to start.
+     * This would need a different properties state table (at least different
+     * actions) and different levels state tables (maybe very similar to the
+     * LTR corresponding ones.
+     */
+    inverseRTL=(UBool)
+        ((start<pBiDi->lastArabicPos) && (GET_PARALEVEL(pBiDi, start) & 1) &&
+         (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT  ||
+          pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL));
+
+    /* initialize for property and levels state tables */
+    levState.startL2EN=-1;              /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
+    levState.lastStrongRTL=-1;          /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
+    levState.runStart=start;
+    levState.runLevel=pBiDi->levels[start];
+    levState.pImpTab=(const ImpTab*)((pBiDi->pImpTabPair)->pImpTab)[levState.runLevel&1];
+    levState.pImpAct=(const ImpAct*)((pBiDi->pImpTabPair)->pImpAct)[levState.runLevel&1];
+    if(start==0 && pBiDi->proLength>0) {
+        DirProp lastStrong=lastL_R_AL(pBiDi);
+        if(lastStrong!=DirProp_ON) {
+            sor=lastStrong;
+        }
+    }
+    /* The isolates[] entries contain enough information to
+       resume the bidi algorithm in the same state as it was
+       when it was interrupted by an isolate sequence. */
+    if(dirProps[start]==PDI  && pBiDi->isolateCount >= 0) {
+        levState.startON=pBiDi->isolates[pBiDi->isolateCount].startON;
+        start1=pBiDi->isolates[pBiDi->isolateCount].start1;
+        stateImp=pBiDi->isolates[pBiDi->isolateCount].stateImp;
+        levState.state=pBiDi->isolates[pBiDi->isolateCount].state;
+        pBiDi->isolateCount--;
+    } else {
+        levState.startON=-1;
+        start1=start;
+        if(dirProps[start]==NSM)
+            stateImp = 1 + sor;
+        else
+            stateImp=0;
+        levState.state=0;
+        processPropertySeq(pBiDi, &levState, sor, start, start);
+    }
+    start2=start;                       /* to make Java compiler happy */
+
+    for(i=start; i<=limit; i++) {
+        if(i>=limit) {
+            int32_t k;
+            for(k=limit-1; k>start&&(DIRPROP_FLAG(dirProps[k])&MASK_BN_EXPLICIT); k--);
+            dirProp=dirProps[k];
+            if(dirProp==LRI || dirProp==RLI)
+                break;      /* no forced closing for sequence ending with LRI/RLI */
+            gprop=eor;
+        } else {
+            DirProp prop, prop1;
+            prop=dirProps[i];
+            if(prop==B) {
+                pBiDi->isolateCount=-1; /* current isolates stack entry == none */
+            }
+            if(inverseRTL) {
+                if(prop==AL) {
+                    /* AL before EN does not make it AN */
+                    prop=R;
+                } else if(prop==EN) {
+                    if(nextStrongPos<=i) {
+                        /* look for next strong char (L/R/AL) */
+                        int32_t j;
+                        nextStrongProp=R;   /* set default */
+                        nextStrongPos=limit;
+                        for(j=i+1; j<limit; j++) {
+                            prop1=dirProps[j];
+                            if(prop1==L || prop1==R || prop1==AL) {
+                                nextStrongProp=prop1;
+                                nextStrongPos=j;
+                                break;
+                            }
+                        }
+                    }
+                    if(nextStrongProp==AL) {
+                        prop=AN;
+                    }
+                }
+            }
+            gprop=groupProp[prop];
+        }
+        oldStateImp=stateImp;
+        cell=impTabProps[oldStateImp][gprop];
+        stateImp=GET_STATEPROPS(cell);      /* isolate the new state */
+        actionImp=GET_ACTIONPROPS(cell);    /* isolate the action */
+        if((i==limit) && (actionImp==0)) {
+            /* there is an unprocessed sequence if its property == eor   */
+            actionImp=1;                    /* process the last sequence */
+        }
+        if(actionImp) {
+            resProp=impTabProps[oldStateImp][IMPTABPROPS_RES];
+            switch(actionImp) {
+            case 1:             /* process current seq1, init new seq1 */
+                processPropertySeq(pBiDi, &levState, resProp, start1, i);
+                start1=i;
+                break;
+            case 2:             /* init new seq2 */
+                start2=i;
+                break;
+            case 3:             /* process seq1, process seq2, init new seq1 */
+                processPropertySeq(pBiDi, &levState, resProp, start1, start2);
+                processPropertySeq(pBiDi, &levState, DirProp_ON, start2, i);
+                start1=i;
+                break;
+            case 4:             /* process seq1, set seq1=seq2, init new seq2 */
+                processPropertySeq(pBiDi, &levState, resProp, start1, start2);
+                start1=start2;
+                start2=i;
+                break;
+            default:            /* we should never get here */
+                U_ASSERT(FALSE);
+                break;
+            }
+        }
+    }
+
+    /* flush possible pending sequence, e.g. ON */
+    if(limit==pBiDi->length && pBiDi->epiLength>0) {
+        DirProp firstStrong=firstL_R_AL_EN_AN(pBiDi);
+        if(firstStrong!=DirProp_ON) {
+            eor=firstStrong;
+        }
+    }
+
+    /* look for the last char not a BN or LRE/RLE/LRO/RLO/PDF */
+    for(i=limit-1; i>start&&(DIRPROP_FLAG(dirProps[i])&MASK_BN_EXPLICIT); i--);
+    dirProp=dirProps[i];
+    if((dirProp==LRI || dirProp==RLI) && limit<pBiDi->length) {
+        pBiDi->isolateCount++;
+        pBiDi->isolates[pBiDi->isolateCount].stateImp=stateImp;
+        pBiDi->isolates[pBiDi->isolateCount].state=levState.state;
+        pBiDi->isolates[pBiDi->isolateCount].start1=start1;
+        pBiDi->isolates[pBiDi->isolateCount].startON=levState.startON;
+    }
+    else
+        processPropertySeq(pBiDi, &levState, eor, limit, limit);
+}
+
+/* perform (L1) and (X9) ---------------------------------------------------- */
+
+/*
+ * Reset the embedding levels for some non-graphic characters (L1).
+ * This function also sets appropriate levels for BN, and
+ * explicit embedding types that are supposed to have been removed
+ * from the paragraph in (X9).
+ */
+static void
+adjustWSLevels(UBiDi *pBiDi) {
+    const DirProp *dirProps=pBiDi->dirProps;
+    UBiDiLevel *levels=pBiDi->levels;
+    int32_t i;
+
+    if(pBiDi->flags&MASK_WS) {
+        UBool orderParagraphsLTR=pBiDi->orderParagraphsLTR;
+        Flags flag;
+
+        i=pBiDi->trailingWSStart;
+        while(i>0) {
+            /* reset a sequence of WS/BN before eop and B/S to the paragraph paraLevel */
+            while(i>0 && (flag=DIRPROP_FLAG(dirProps[--i]))&MASK_WS) {
+                if(orderParagraphsLTR&&(flag&DIRPROP_FLAG(B))) {
+                    levels[i]=0;
+                } else {
+                    levels[i]=GET_PARALEVEL(pBiDi, i);
+                }
+            }
+
+            /* reset BN to the next character's paraLevel until B/S, which restarts above loop */
+            /* here, i+1 is guaranteed to be <length */
+            while(i>0) {
+                flag=DIRPROP_FLAG(dirProps[--i]);
+                if(flag&MASK_BN_EXPLICIT) {
+                    levels[i]=levels[i+1];
+                } else if(orderParagraphsLTR&&(flag&DIRPROP_FLAG(B))) {
+                    levels[i]=0;
+                    break;
+                } else if(flag&MASK_B_S) {
+                    levels[i]=GET_PARALEVEL(pBiDi, i);
+                    break;
+                }
+            }
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_setContext(UBiDi *pBiDi,
+                 const UChar *prologue, int32_t proLength,
+                 const UChar *epilogue, int32_t epiLength,
+                 UErrorCode *pErrorCode) {
+    /* check the argument values */
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    if(pBiDi==NULL || proLength<-1 || epiLength<-1 ||
+       (prologue==NULL && proLength!=0) || (epilogue==NULL && epiLength!=0)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    if(proLength==-1) {
+        pBiDi->proLength=u_strlen(prologue);
+    } else {
+        pBiDi->proLength=proLength;
+    }
+    if(epiLength==-1) {
+        pBiDi->epiLength=u_strlen(epilogue);
+    } else {
+        pBiDi->epiLength=epiLength;
+    }
+    pBiDi->prologue=prologue;
+    pBiDi->epilogue=epilogue;
+}
+
+static void
+setParaSuccess(UBiDi *pBiDi) {
+    pBiDi->proLength=0;                 /* forget the last context */
+    pBiDi->epiLength=0;
+    pBiDi->pParaBiDi=pBiDi;             /* mark successful setPara */
+}
+
+#define BIDI_MIN(x, y)   ((x)<(y) ? (x) : (y))
+#define BIDI_ABS(x)      ((x)>=0  ? (x) : (-(x)))
+
+static void
+setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
+                UBiDiLevel paraLevel, UErrorCode *pErrorCode) {
+    void *runsOnlyMemory = NULL;
+    int32_t *visualMap;
+    UChar *visualText;
+    int32_t saveLength, saveTrailingWSStart;
+    const UBiDiLevel *levels;
+    UBiDiLevel *saveLevels;
+    UBiDiDirection saveDirection;
+    UBool saveMayAllocateText;
+    Run *runs;
+    int32_t visualLength, i, j, visualStart, logicalStart,
+            runCount, runLength, addedRuns, insertRemove,
+            start, limit, step, indexOddBit, logicalPos,
+            index0, index1;
+    uint32_t saveOptions;
+
+    pBiDi->reorderingMode=UBIDI_REORDER_DEFAULT;
+    if(length==0) {
+        ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
+        goto cleanup3;
+    }
+    /* obtain memory for mapping table and visual text */
+    runsOnlyMemory=uprv_malloc(length*(sizeof(int32_t)+sizeof(UChar)+sizeof(UBiDiLevel)));
+    if(runsOnlyMemory==NULL) {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        goto cleanup3;
+    }
+    visualMap=runsOnlyMemory;
+    visualText=(UChar *)&visualMap[length];
+    saveLevels=(UBiDiLevel *)&visualText[length];
+    saveOptions=pBiDi->reorderingOptions;
+    if(saveOptions & UBIDI_OPTION_INSERT_MARKS) {
+        pBiDi->reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS;
+        pBiDi->reorderingOptions|=UBIDI_OPTION_REMOVE_CONTROLS;
+    }
+    paraLevel&=1;                       /* accept only 0 or 1 */
+    ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        goto cleanup3;
+    }
+    /* we cannot access directly pBiDi->levels since it is not yet set if
+     * direction is not MIXED
+     */
+    levels=ubidi_getLevels(pBiDi, pErrorCode);
+    uprv_memcpy(saveLevels, levels, (size_t)pBiDi->length*sizeof(UBiDiLevel));
+    saveTrailingWSStart=pBiDi->trailingWSStart;
+    saveLength=pBiDi->length;
+    saveDirection=pBiDi->direction;
+
+    /* FOOD FOR THOUGHT: instead of writing the visual text, we could use
+     * the visual map and the dirProps array to drive the second call
+     * to ubidi_setPara (but must make provision for possible removal of
+     * BiDi controls.  Alternatively, only use the dirProps array via
+     * customized classifier callback.
+     */
+    visualLength=ubidi_writeReordered(pBiDi, visualText, length,
+                                      UBIDI_DO_MIRRORING, pErrorCode);
+    ubidi_getVisualMap(pBiDi, visualMap, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        goto cleanup2;
+    }
+    pBiDi->reorderingOptions=saveOptions;
+
+    pBiDi->reorderingMode=UBIDI_REORDER_INVERSE_LIKE_DIRECT;
+    paraLevel^=1;
+    /* Because what we did with reorderingOptions, visualText may be shorter
+     * than the original text. But we don't want the levels memory to be
+     * reallocated shorter than the original length, since we need to restore
+     * the levels as after the first call to ubidi_setpara() before returning.
+     * We will force mayAllocateText to FALSE before the second call to
+     * ubidi_setpara(), and will restore it afterwards.
+     */
+    saveMayAllocateText=pBiDi->mayAllocateText;
+    pBiDi->mayAllocateText=FALSE;
+    ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, NULL, pErrorCode);
+    pBiDi->mayAllocateText=saveMayAllocateText;
+    ubidi_getRuns(pBiDi, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        goto cleanup1;
+    }
+    /* check if some runs must be split, count how many splits */
+    addedRuns=0;
+    runCount=pBiDi->runCount;
+    runs=pBiDi->runs;
+    visualStart=0;
+    for(i=0; i<runCount; i++, visualStart+=runLength) {
+        runLength=runs[i].visualLimit-visualStart;
+        if(runLength<2) {
+            continue;
+        }
+        logicalStart=GET_INDEX(runs[i].logicalStart);
+        for(j=logicalStart+1; j<logicalStart+runLength; j++) {
+            index0=visualMap[j];
+            index1=visualMap[j-1];
+            if((BIDI_ABS(index0-index1)!=1) || (saveLevels[index0]!=saveLevels[index1])) {
+                addedRuns++;
+            }
+        }
+    }
+    if(addedRuns) {
+        if(getRunsMemory(pBiDi, runCount+addedRuns)) {
+            if(runCount==1) {
+                /* because we switch from UBiDi.simpleRuns to UBiDi.runs */
+                pBiDi->runsMemory[0]=runs[0];
+            }
+            runs=pBiDi->runs=pBiDi->runsMemory;
+            pBiDi->runCount+=addedRuns;
+        } else {
+            goto cleanup1;
+        }
+    }
+    /* split runs which are not consecutive in source text */
+    for(i=runCount-1; i>=0; i--) {
+        runLength= i==0 ? runs[0].visualLimit :
+                          runs[i].visualLimit-runs[i-1].visualLimit;
+        logicalStart=runs[i].logicalStart;
+        indexOddBit=GET_ODD_BIT(logicalStart);
+        logicalStart=GET_INDEX(logicalStart);
+        if(runLength<2) {
+            if(addedRuns) {
+                runs[i+addedRuns]=runs[i];
+            }
+            logicalPos=visualMap[logicalStart];
+            runs[i+addedRuns].logicalStart=MAKE_INDEX_ODD_PAIR(logicalPos,
+                                            saveLevels[logicalPos]^indexOddBit);
+            continue;
+        }
+        if(indexOddBit) {
+            start=logicalStart;
+            limit=logicalStart+runLength-1;
+            step=1;
+        } else {
+            start=logicalStart+runLength-1;
+            limit=logicalStart;
+            step=-1;
+        }
+        for(j=start; j!=limit; j+=step) {
+            index0=visualMap[j];
+            index1=visualMap[j+step];
+            if((BIDI_ABS(index0-index1)!=1) || (saveLevels[index0]!=saveLevels[index1])) {
+                logicalPos=BIDI_MIN(visualMap[start], index0);
+                runs[i+addedRuns].logicalStart=MAKE_INDEX_ODD_PAIR(logicalPos,
+                                            saveLevels[logicalPos]^indexOddBit);
+                runs[i+addedRuns].visualLimit=runs[i].visualLimit;
+                runs[i].visualLimit-=BIDI_ABS(j-start)+1;
+                insertRemove=runs[i].insertRemove&(LRM_AFTER|RLM_AFTER);
+                runs[i+addedRuns].insertRemove=insertRemove;
+                runs[i].insertRemove&=~insertRemove;
+                start=j+step;
+                addedRuns--;
+            }
+        }
+        if(addedRuns) {
+            runs[i+addedRuns]=runs[i];
+        }
+        logicalPos=BIDI_MIN(visualMap[start], visualMap[limit]);
+        runs[i+addedRuns].logicalStart=MAKE_INDEX_ODD_PAIR(logicalPos,
+                                            saveLevels[logicalPos]^indexOddBit);
+    }
+
+  cleanup1:
+    /* restore initial paraLevel */
+    pBiDi->paraLevel^=1;
+  cleanup2:
+    /* restore real text */
+    pBiDi->text=text;
+    pBiDi->length=saveLength;
+    pBiDi->originalLength=length;
+    pBiDi->direction=saveDirection;
+    /* the saved levels should never excess levelsSize, but we check anyway */
+    if(saveLength>pBiDi->levelsSize) {
+        saveLength=pBiDi->levelsSize;
+    }
+    uprv_memcpy(pBiDi->levels, saveLevels, (size_t)saveLength*sizeof(UBiDiLevel));
+    pBiDi->trailingWSStart=saveTrailingWSStart;
+    if(pBiDi->runCount>1) {
+        pBiDi->direction=UBIDI_MIXED;
+    }
+  cleanup3:
+    /* free memory for mapping table and visual text */
+    uprv_free(runsOnlyMemory);
+
+    pBiDi->reorderingMode=UBIDI_REORDER_RUNS_ONLY;
+}
+
+/* ubidi_setPara ------------------------------------------------------------ */
+
+U_CAPI void U_EXPORT2
+ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
+              UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
+              UErrorCode *pErrorCode) {
+    UBiDiDirection direction;
+    DirProp *dirProps;
+
+    /* check the argument values */
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    if(pBiDi==NULL || text==NULL || length<-1 ||
+       (paraLevel>UBIDI_MAX_EXPLICIT_LEVEL && paraLevel<UBIDI_DEFAULT_LTR)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    if(length==-1) {
+        length=u_strlen(text);
+    }
+
+    /* special treatment for RUNS_ONLY mode */
+    if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) {
+        setParaRunsOnly(pBiDi, text, length, paraLevel, pErrorCode);
+        return;
+    }
+
+    /* initialize the UBiDi structure */
+    pBiDi->pParaBiDi=NULL;          /* mark unfinished setPara */
+    pBiDi->text=text;
+    pBiDi->length=pBiDi->originalLength=pBiDi->resultLength=length;
+    pBiDi->paraLevel=paraLevel;
+    pBiDi->direction=paraLevel&1;
+    pBiDi->paraCount=1;
+
+    pBiDi->dirProps=NULL;
+    pBiDi->levels=NULL;
+    pBiDi->runs=NULL;
+    pBiDi->insertPoints.size=0;         /* clean up from last call */
+    pBiDi->insertPoints.confirmed=0;    /* clean up from last call */
+
+    /*
+     * Save the original paraLevel if contextual; otherwise, set to 0.
+     */
+    pBiDi->defaultParaLevel=IS_DEFAULT_LEVEL(paraLevel);
+
+    if(length==0) {
+        /*
+         * For an empty paragraph, create a UBiDi object with the paraLevel and
+         * the flags and the direction set but without allocating zero-length arrays.
+         * There is nothing more to do.
+         */
+        if(IS_DEFAULT_LEVEL(paraLevel)) {
+            pBiDi->paraLevel&=1;
+            pBiDi->defaultParaLevel=0;
+        }
+        pBiDi->flags=DIRPROP_FLAG_LR(paraLevel);
+        pBiDi->runCount=0;
+        pBiDi->paraCount=0;
+        setParaSuccess(pBiDi);          /* mark successful setPara */
+        return;
+    }
+
+    pBiDi->runCount=-1;
+
+    /* allocate paras memory */
+    if(pBiDi->parasMemory)
+        pBiDi->paras=pBiDi->parasMemory;
+    else
+        pBiDi->paras=pBiDi->simpleParas;
+
+    /*
+     * Get the directional properties,
+     * the flags bit-set, and
+     * determine the paragraph level if necessary.
+     */
+    if(getDirPropsMemory(pBiDi, length)) {
+        pBiDi->dirProps=pBiDi->dirPropsMemory;
+        if(!getDirProps(pBiDi)) {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    } else {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    dirProps=pBiDi->dirProps;
+    /* the processed length may have changed if UBIDI_OPTION_STREAMING */
+    length= pBiDi->length;
+    pBiDi->trailingWSStart=length;  /* the levels[] will reflect the WS run */
+
+    /* are explicit levels specified? */
+    if(embeddingLevels==NULL) {
+        /* no: determine explicit levels according to the (Xn) rules */\
+        if(getLevelsMemory(pBiDi, length)) {
+            pBiDi->levels=pBiDi->levelsMemory;
+            direction=resolveExplicitLevels(pBiDi, pErrorCode);
+            if(U_FAILURE(*pErrorCode)) {
+                return;
+            }
+        } else {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    } else {
+        /* set BN for all explicit codes, check that all levels are 0 or paraLevel..UBIDI_MAX_EXPLICIT_LEVEL */
+        pBiDi->levels=embeddingLevels;
+        direction=checkExplicitLevels(pBiDi, pErrorCode);
+        if(U_FAILURE(*pErrorCode)) {
+            return;
+        }
+    }
+
+    /* allocate isolate memory */
+    if(pBiDi->isolateCount<=SIMPLE_ISOLATES_COUNT)
+        pBiDi->isolates=pBiDi->simpleIsolates;
+    else
+        if((int32_t)(pBiDi->isolateCount*sizeof(Isolate))<=pBiDi->isolatesSize)
+            pBiDi->isolates=pBiDi->isolatesMemory;
+        else {
+            if(getInitialIsolatesMemory(pBiDi, pBiDi->isolateCount)) {
+                pBiDi->isolates=pBiDi->isolatesMemory;
+            } else {
+                *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+                return;
+            }
+        }
+    pBiDi->isolateCount=-1;             /* current isolates stack entry == none */
+
+    /*
+     * The steps after (X9) in the UBiDi algorithm are performed only if
+     * the paragraph text has mixed directionality!
+     */
+    pBiDi->direction=direction;
+    switch(direction) {
+    case UBIDI_LTR:
+        /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
+        pBiDi->trailingWSStart=0;
+        break;
+    case UBIDI_RTL:
+        /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
+        pBiDi->trailingWSStart=0;
+        break;
+    default:
+        /*
+         *  Choose the right implicit state table
+         */
+        switch(pBiDi->reorderingMode) {
+        case UBIDI_REORDER_DEFAULT:
+            pBiDi->pImpTabPair=&impTab_DEFAULT;
+            break;
+        case UBIDI_REORDER_NUMBERS_SPECIAL:
+            pBiDi->pImpTabPair=&impTab_NUMBERS_SPECIAL;
+            break;
+        case UBIDI_REORDER_GROUP_NUMBERS_WITH_R:
+            pBiDi->pImpTabPair=&impTab_GROUP_NUMBERS_WITH_R;
+            break;
+        case UBIDI_REORDER_INVERSE_NUMBERS_AS_L:
+            pBiDi->pImpTabPair=&impTab_INVERSE_NUMBERS_AS_L;
+            break;
+        case UBIDI_REORDER_INVERSE_LIKE_DIRECT:
+            if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
+                pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT_WITH_MARKS;
+            } else {
+                pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT;
+            }
+            break;
+        case UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL:
+            if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
+                pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS;
+            } else {
+                pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL;
+            }
+            break;
+        default:
+            /* we should never get here */
+            U_ASSERT(FALSE);
+            break;
+        }
+        /*
+         * If there are no external levels specified and there
+         * are no significant explicit level codes in the text,
+         * then we can treat the entire paragraph as one run.
+         * Otherwise, we need to perform the following rules on runs of
+         * the text with the same embedding levels. (X10)
+         * "Significant" explicit level codes are ones that actually
+         * affect non-BN characters.
+         * Examples for "insignificant" ones are empty embeddings
+         * LRE-PDF, LRE-RLE-PDF-PDF, etc.
+         */
+        if(embeddingLevels==NULL && pBiDi->paraCount<=1 &&
+                                   !(pBiDi->flags&DIRPROP_FLAG_MULTI_RUNS)) {
+            resolveImplicitLevels(pBiDi, 0, length,
+                                    GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, 0)),
+                                    GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, length-1)));
+        } else {
+            /* sor, eor: start and end types of same-level-run */
+            UBiDiLevel *levels=pBiDi->levels;
+            int32_t start, limit=0;
+            UBiDiLevel level, nextLevel;
+            DirProp sor, eor;
+
+            /* determine the first sor and set eor to it because of the loop body (sor=eor there) */
+            level=GET_PARALEVEL(pBiDi, 0);
+            nextLevel=levels[0];
+            if(level<nextLevel) {
+                eor=GET_LR_FROM_LEVEL(nextLevel);
+            } else {
+                eor=GET_LR_FROM_LEVEL(level);
+            }
+
+            do {
+                /* determine start and limit of the run (end points just behind the run) */
+
+                /* the values for this run's start are the same as for the previous run's end */
+                start=limit;
+                level=nextLevel;
+                if((start>0) && (dirProps[start-1]==B)) {
+                    /* except if this is a new paragraph, then set sor = para level */
+                    sor=GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, start));
+                } else {
+                    sor=eor;
+                }
+
+                /* search for the limit of this run */
+                while((++limit<length) &&
+                      ((levels[limit]==level) ||
+                       (DIRPROP_FLAG(dirProps[limit])&MASK_BN_EXPLICIT))) {}
+
+                /* get the correct level of the next run */
+                if(limit<length) {
+                    nextLevel=levels[limit];
+                } else {
+                    nextLevel=GET_PARALEVEL(pBiDi, length-1);
+                }
+
+                /* determine eor from max(level, nextLevel); sor is last run's eor */
+                if(NO_OVERRIDE(level)<NO_OVERRIDE(nextLevel)) {
+                    eor=GET_LR_FROM_LEVEL(nextLevel);
+                } else {
+                    eor=GET_LR_FROM_LEVEL(level);
+                }
+
+                /* if the run consists of overridden directional types, then there
+                   are no implicit types to be resolved */
+                if(!(level&UBIDI_LEVEL_OVERRIDE)) {
+                    resolveImplicitLevels(pBiDi, start, limit, sor, eor);
+                } else {
+                    /* remove the UBIDI_LEVEL_OVERRIDE flags */
+                    do {
+                        levels[start++]&=~UBIDI_LEVEL_OVERRIDE;
+                    } while(start<limit);
+                }
+            } while(limit<length);
+        }
+        /* check if we got any memory shortage while adding insert points */
+        if (U_FAILURE(pBiDi->insertPoints.errorCode))
+        {
+            *pErrorCode=pBiDi->insertPoints.errorCode;
+            return;
+        }
+        /* reset the embedding levels for some non-graphic characters (L1), (X9) */
+        adjustWSLevels(pBiDi);
+        break;
+    }
+    /* add RLM for inverse Bidi with contextual orientation resolving
+     * to RTL which would not round-trip otherwise
+     */
+    if((pBiDi->defaultParaLevel>0) &&
+       (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) &&
+       ((pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT) ||
+        (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) {
+        int32_t i, j, start, last;
+        UBiDiLevel level;
+        DirProp dirProp;
+        for(i=0; i<pBiDi->paraCount; i++) {
+            last=(pBiDi->paras[i].limit)-1;
+            level=pBiDi->paras[i].level;
+            if(level==0)
+                continue;           /* LTR paragraph */
+            start= i==0 ? 0 : pBiDi->paras[i-1].limit;
+            for(j=last; j>=start; j--) {
+                dirProp=dirProps[j];
+                if(dirProp==L) {
+                    if(j<last) {
+                        while(dirProps[last]==B) {
+                            last--;
+                        }
+                    }
+                    addPoint(pBiDi, last, RLM_BEFORE);
+                    break;
+                }
+                if(DIRPROP_FLAG(dirProp) & MASK_R_AL) {
+                    break;
+                }
+            }
+        }
+    }
+
+    if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
+        pBiDi->resultLength -= pBiDi->controlCount;
+    } else {
+        pBiDi->resultLength += pBiDi->insertPoints.size;
+    }
+    setParaSuccess(pBiDi);              /* mark successful setPara */
+}
+
+U_CAPI void U_EXPORT2
+ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) {
+    if(pBiDi!=NULL) {
+        pBiDi->orderParagraphsLTR=orderParagraphsLTR;
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) {
+    if(pBiDi!=NULL) {
+        return pBiDi->orderParagraphsLTR;
+    } else {
+        return FALSE;
+    }
+}
+
+U_CAPI UBiDiDirection U_EXPORT2
+ubidi_getDirection(const UBiDi *pBiDi) {
+    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return pBiDi->direction;
+    } else {
+        return UBIDI_LTR;
+    }
+}
+
+U_CAPI const UChar * U_EXPORT2
+ubidi_getText(const UBiDi *pBiDi) {
+    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return pBiDi->text;
+    } else {
+        return NULL;
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_getLength(const UBiDi *pBiDi) {
+    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return pBiDi->originalLength;
+    } else {
+        return 0;
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_getProcessedLength(const UBiDi *pBiDi) {
+    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return pBiDi->length;
+    } else {
+        return 0;
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_getResultLength(const UBiDi *pBiDi) {
+    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return pBiDi->resultLength;
+    } else {
+        return 0;
+    }
+}
+
+/* paragraphs API functions ------------------------------------------------- */
+
+U_CAPI UBiDiLevel U_EXPORT2
+ubidi_getParaLevel(const UBiDi *pBiDi) {
+    if(IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return pBiDi->paraLevel;
+    } else {
+        return 0;
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_countParagraphs(UBiDi *pBiDi) {
+    if(!IS_VALID_PARA_OR_LINE(pBiDi)) {
+        return 0;
+    } else {
+        return pBiDi->paraCount;
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
+                          int32_t *pParaStart, int32_t *pParaLimit,
+                          UBiDiLevel *pParaLevel, UErrorCode *pErrorCode) {
+    int32_t paraStart;
+
+    /* check the argument values */
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode);
+    RETURN_VOID_IF_BAD_RANGE(paraIndex, 0, pBiDi->paraCount, *pErrorCode);
+
+    pBiDi=pBiDi->pParaBiDi;             /* get Para object if Line object */
+    if(paraIndex) {
+        paraStart=pBiDi->paras[paraIndex-1].limit;
+    } else {
+        paraStart=0;
+    }
+    if(pParaStart!=NULL) {
+        *pParaStart=paraStart;
+    }
+    if(pParaLimit!=NULL) {
+        *pParaLimit=pBiDi->paras[paraIndex].limit;
+    }
+    if(pParaLevel!=NULL) {
+        *pParaLevel=GET_PARALEVEL(pBiDi, paraStart);
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex,
+                          int32_t *pParaStart, int32_t *pParaLimit,
+                          UBiDiLevel *pParaLevel, UErrorCode *pErrorCode) {
+    int32_t paraIndex;
+
+    /* check the argument values */
+    /* pErrorCode will be checked by the call to ubidi_getParagraphByIndex */
+    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
+    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
+    pBiDi=pBiDi->pParaBiDi;             /* get Para object if Line object */
+    RETURN_IF_BAD_RANGE(charIndex, 0, pBiDi->length, *pErrorCode, -1);
+
+    for(paraIndex=0; charIndex>=pBiDi->paras[paraIndex].limit; paraIndex++);
+    ubidi_getParagraphByIndex(pBiDi, paraIndex, pParaStart, pParaLimit, pParaLevel, pErrorCode);
+    return paraIndex;
+}
+
+U_CAPI void U_EXPORT2
+ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
+                       const void *newContext, UBiDiClassCallback **oldFn,
+                       const void **oldContext, UErrorCode *pErrorCode)
+{
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    if(pBiDi==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if( oldFn )
+    {
+        *oldFn = pBiDi->fnClassCallback;
+    }
+    if( oldContext )
+    {
+        *oldContext = pBiDi->coClassCallback;
+    }
+    pBiDi->fnClassCallback = newFn;
+    pBiDi->coClassCallback = newContext;
+}
+
+U_CAPI void U_EXPORT2
+ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context)
+{
+    if(pBiDi==NULL) {
+        return;
+    }
+    if( fn )
+    {
+        *fn = pBiDi->fnClassCallback;
+    }
+    if( context )
+    {
+        *context = pBiDi->coClassCallback;
+    }
+}
+
+U_CAPI UCharDirection U_EXPORT2
+ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c)
+{
+    UCharDirection dir;
+
+    if( pBiDi->fnClassCallback == NULL ||
+        (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_CLASS_DEFAULT )
+    {
+        dir = ubidi_getClass(pBiDi->bdp, c);
+    }
+    if(dir >= U_CHAR_DIRECTION_COUNT) {
+        dir = ON;
+    }
+    return dir;
+}
diff --git a/source/common/ubidi_props.c b/source/common/ubidi_props.c
new file mode 100644 (file)
index 0000000..7c7a6ce
--- /dev/null
@@ -0,0 +1,265 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ubidi_props.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2004dec30
+*   created by: Markus W. Scherer
+*
+*   Low-level Unicode bidi/shaping properties access.
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/uset.h"
+#include "unicode/udata.h" /* UDataInfo */
+#include "ucmndata.h" /* DataHeader */
+#include "udatamem.h"
+#include "uassert.h"
+#include "cmemory.h"
+#include "utrie2.h"
+#include "ubidi_props.h"
+#include "ucln_cmn.h"
+
+struct UBiDiProps {
+    UDataMemory *mem;
+    const int32_t *indexes;
+    const uint32_t *mirrors;
+    const uint8_t *jgArray;
+    const uint8_t *jgArray2;
+
+    UTrie2 trie;
+    uint8_t formatVersion[4];
+};
+
+/* ubidi_props_data.h is machine-generated by genbidi --csource */
+#define INCLUDED_FROM_UBIDI_PROPS_C
+#include "ubidi_props_data.h"
+
+/* UBiDiProps singleton ----------------------------------------------------- */
+
+U_CFUNC const UBiDiProps *
+ubidi_getSingleton() {
+    return &ubidi_props_singleton;
+}
+
+/* set of property starts for UnicodeSet ------------------------------------ */
+
+static UBool U_CALLCONV
+_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) {
+    /* add the start code point to the USet */
+    const USetAdder *sa=(const USetAdder *)context;
+    sa->add(sa->set, start);
+    return TRUE;
+}
+
+U_CFUNC void
+ubidi_addPropertyStarts(const UBiDiProps *bdp, const USetAdder *sa, UErrorCode *pErrorCode) {
+    int32_t i, length;
+    UChar32 c, start, limit;
+
+    const uint8_t *jgArray;
+    uint8_t prev, jg;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    /* add the start code point of each same-value range of the trie */
+    utrie2_enum(&bdp->trie, NULL, _enumPropertyStartsRange, sa);
+
+    /* add the code points from the bidi mirroring table */
+    length=bdp->indexes[UBIDI_IX_MIRROR_LENGTH];
+    for(i=0; i<length; ++i) {
+        c=UBIDI_GET_MIRROR_CODE_POINT(bdp->mirrors[i]);
+        sa->addRange(sa->set, c, c+1);
+    }
+
+    /* add the code points from the Joining_Group array where the value changes */
+    start=bdp->indexes[UBIDI_IX_JG_START];
+    limit=bdp->indexes[UBIDI_IX_JG_LIMIT];
+    jgArray=bdp->jgArray;
+    for(;;) {
+        prev=0;
+        while(start<limit) {
+            jg=*jgArray++;
+            if(jg!=prev) {
+                sa->add(sa->set, start);
+                prev=jg;
+            }
+            ++start;
+        }
+        if(prev!=0) {
+            /* add the limit code point if the last value was not 0 (it is now start==limit) */
+            sa->add(sa->set, limit);
+        }
+        if(limit==bdp->indexes[UBIDI_IX_JG_LIMIT]) {
+            /* switch to the second Joining_Group range */
+            start=bdp->indexes[UBIDI_IX_JG_START2];
+            limit=bdp->indexes[UBIDI_IX_JG_LIMIT2];
+            jgArray=bdp->jgArray2;
+        } else {
+            break;
+        }
+    }
+
+    /* add code points with hardcoded properties, plus the ones following them */
+
+    /* (none right now) */
+}
+
+/* property access functions ------------------------------------------------ */
+
+U_CFUNC int32_t
+ubidi_getMaxValue(const UBiDiProps *bdp, UProperty which) {
+    int32_t max;
+
+    if(bdp==NULL) {
+        return -1;
+    }
+
+    max=bdp->indexes[UBIDI_MAX_VALUES_INDEX];
+    switch(which) {
+    case UCHAR_BIDI_CLASS:
+        return (max&UBIDI_CLASS_MASK);
+    case UCHAR_JOINING_GROUP:
+        return (max&UBIDI_MAX_JG_MASK)>>UBIDI_MAX_JG_SHIFT;
+    case UCHAR_JOINING_TYPE:
+        return (max&UBIDI_JT_MASK)>>UBIDI_JT_SHIFT;
+    case UCHAR_BIDI_PAIRED_BRACKET_TYPE:
+        return (max&UBIDI_BPT_MASK)>>UBIDI_BPT_SHIFT;
+    default:
+        return -1; /* undefined */
+    }
+}
+
+U_CAPI UCharDirection
+ubidi_getClass(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return (UCharDirection)UBIDI_GET_CLASS(props);
+}
+
+U_CFUNC UBool
+ubidi_isMirrored(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return (UBool)UBIDI_GET_FLAG(props, UBIDI_IS_MIRRORED_SHIFT);
+}
+
+static UChar32
+getMirror(const UBiDiProps *bdp, UChar32 c, uint16_t props) {
+    int32_t delta=UBIDI_GET_MIRROR_DELTA(props);
+    if(delta!=UBIDI_ESC_MIRROR_DELTA) {
+        return c+delta;
+    } else {
+        /* look for mirror code point in the mirrors[] table */
+        const uint32_t *mirrors;
+        uint32_t m;
+        int32_t i, length;
+        UChar32 c2;
+
+        mirrors=bdp->mirrors;
+        length=bdp->indexes[UBIDI_IX_MIRROR_LENGTH];
+
+        /* linear search */
+        for(i=0; i<length; ++i) {
+            m=mirrors[i];
+            c2=UBIDI_GET_MIRROR_CODE_POINT(m);
+            if(c==c2) {
+                /* found c, return its mirror code point using the index in m */
+                return UBIDI_GET_MIRROR_CODE_POINT(mirrors[UBIDI_GET_MIRROR_INDEX(m)]);
+            } else if(c<c2) {
+                break;
+            }
+        }
+
+        /* c not found, return it itself */
+        return c;
+    }
+}
+
+U_CFUNC UChar32
+ubidi_getMirror(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return getMirror(bdp, c, props);
+}
+
+U_CFUNC UBool
+ubidi_isBidiControl(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return (UBool)UBIDI_GET_FLAG(props, UBIDI_BIDI_CONTROL_SHIFT);
+}
+
+U_CFUNC UBool
+ubidi_isJoinControl(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return (UBool)UBIDI_GET_FLAG(props, UBIDI_JOIN_CONTROL_SHIFT);
+}
+
+U_CFUNC UJoiningType
+ubidi_getJoiningType(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return (UJoiningType)((props&UBIDI_JT_MASK)>>UBIDI_JT_SHIFT);
+}
+
+U_CFUNC UJoiningGroup
+ubidi_getJoiningGroup(const UBiDiProps *bdp, UChar32 c) {
+    UChar32 start, limit;
+
+    start=bdp->indexes[UBIDI_IX_JG_START];
+    limit=bdp->indexes[UBIDI_IX_JG_LIMIT];
+    if(start<=c && c<limit) {
+        return (UJoiningGroup)bdp->jgArray[c-start];
+    }
+    start=bdp->indexes[UBIDI_IX_JG_START2];
+    limit=bdp->indexes[UBIDI_IX_JG_LIMIT2];
+    if(start<=c && c<limit) {
+        return (UJoiningGroup)bdp->jgArray2[c-start];
+    }
+    return U_JG_NO_JOINING_GROUP;
+}
+
+U_CFUNC UBidiPairedBracketType
+ubidi_getPairedBracketType(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    return (UBidiPairedBracketType)((props&UBIDI_BPT_MASK)>>UBIDI_BPT_SHIFT);
+}
+
+U_CFUNC UChar32
+ubidi_getPairedBracket(const UBiDiProps *bdp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&bdp->trie, c);
+    if((props&UBIDI_BPT_MASK)==0) {
+        return c;
+    } else {
+        return getMirror(bdp, c, props);
+    }
+}
+
+/* public API (see uchar.h) ------------------------------------------------- */
+
+U_CFUNC UCharDirection
+u_charDirection(UChar32 c) {   
+    return ubidi_getClass(&ubidi_props_singleton, c);
+}
+
+U_CFUNC UBool
+u_isMirrored(UChar32 c) {
+    return ubidi_isMirrored(&ubidi_props_singleton, c);
+}
+
+U_CFUNC UChar32
+u_charMirror(UChar32 c) {
+    return ubidi_getMirror(&ubidi_props_singleton, c);
+}
+
+U_STABLE UChar32 U_EXPORT2
+u_getBidiPairedBracket(UChar32 c) {
+    return ubidi_getPairedBracket(&ubidi_props_singleton, c);
+}
index 69e8853..4312230 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ubidi_props.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8d6856d..685d2b1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
 
 static const UVersionInfo ubidi_props_dataVersion={9,0,0,0};
 
-static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x6060,0x5ce8,0x1a,0x620,0x8c0,0x10ac0,0x10af0,0,0,0,0,0,0,0,0x5802b6};
+static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x5df0,0x5a78,0x1a,0x620,0x8c0,0x10ac0,0x10af0,0,0,0,0,0,0,0,0x5802b6};
 
-static const uint16_t ubidi_props_trieIndex[11884]={
+static const uint16_t ubidi_props_trieIndex[11572]={
 0x36a,0x372,0x37a,0x382,0x39a,0x3a2,0x3aa,0x3b2,0x38a,0x392,0x38a,0x392,0x38a,0x392,0x38a,0x392,
 0x38a,0x392,0x38a,0x392,0x3b8,0x3c0,0x3c8,0x3d0,0x3d8,0x3e0,0x3dc,0x3e4,0x3ec,0x3f4,0x3ef,0x3f7,
 0x38a,0x392,0x38a,0x392,0x3ff,0x407,0x38a,0x392,0x38a,0x392,0x38a,0x392,0x40d,0x415,0x41d,0x425,
 0x42d,0x435,0x43d,0x445,0x44b,0x453,0x45b,0x463,0x46b,0x473,0x479,0x481,0x489,0x491,0x499,0x4a1,
-0x4ad,0x4a9,0x4b5,0x4bd,0x41f,0x4cd,0x4d5,0x4c5,0x4dd,0x4df,0x4e7,0x4ef,0x4f7,0x4f8,0x500,0x508,
-0x510,0x4f8,0x518,0x51d,0x510,0x4f8,0x525,0x52d,0x4f7,0x535,0x53d,0x4ef,0x542,0x38a,0x54a,0x54e,
-0x556,0x557,0x55f,0x567,0x4f7,0x56f,0x577,0x4ef,0x57f,0x581,0x500,0x4ef,0x38a,0x38a,0x589,0x38a,
-0x38a,0x58f,0x597,0x38a,0x38a,0x59b,0x5a3,0x38a,0x5a7,0x5ae,0x38a,0x5b6,0x5be,0x5c5,0x541,0x38a,
-0x38a,0x5cd,0x5d5,0x5dd,0x5e5,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x5ed,0x38a,0x5f5,0x38a,0x38a,0x38a,
-0x5fd,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x605,0x38a,0x38a,0x38a,0x60d,0x60d,0x504,0x504,0x38a,0x613,0x61b,0x5f5,
-0x631,0x623,0x623,0x639,0x640,0x629,0x38a,0x38a,0x38a,0x648,0x650,0x38a,0x38a,0x38a,0x652,0x65a,
-0x662,0x38a,0x669,0x671,0x38a,0x679,0x38a,0x38a,0x681,0x684,0x542,0x68c,0x401,0x694,0x38a,0x69b,
-0x38a,0x6a0,0x38a,0x38a,0x38a,0x38a,0x6a6,0x6ae,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0x6b6,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x6be,0x6c6,0x6ca,
-0x6e2,0x6e8,0x6d2,0x6da,0x6f0,0x6f8,0x6fc,0x5c8,0x704,0x70c,0x714,0x38a,0x71c,0x65a,0x65a,0x65a,
-0x72c,0x734,0x73c,0x744,0x749,0x751,0x759,0x724,0x761,0x769,0x38a,0x76f,0x776,0x65a,0x65a,0x65a,
-0x65a,0x56d,0x77c,0x65a,0x784,0x38a,0x38a,0x657,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
-0x65a,0x65a,0x65a,0x65a,0x65a,0x78c,0x65a,0x65a,0x65a,0x65a,0x65a,0x792,0x65a,0x65a,0x79a,0x7a2,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,0x65a,0x65a,0x65a,0x7b2,0x7b9,0x7c1,0x7aa,
-0x7d1,0x7d9,0x7e1,0x7e8,0x7f0,0x7f8,0x7ff,0x7c9,0x65a,0x65a,0x65a,0x807,0x80d,0x813,0x81b,0x820,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x827,0x38a,0x38a,0x38a,0x82f,0x38a,0x38a,0x38a,0x3d8,
-0x837,0x83f,0x76c,0x38a,0x842,0x65a,0x65a,0x65d,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x849,0x84f,
-0x85f,0x857,0x38a,0x38a,0x867,0x5fd,0x38a,0x3b1,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,0x82e,
-0x3bf,0x38a,0x86f,0x877,0x38a,0x87f,0x820,0x38a,0x38a,0x38a,0x38a,0x887,0x38a,0x38a,0x652,0x3b0,
+0x4ad,0x4a9,0x4b5,0x41f,0x41f,0x4c5,0x4cd,0x4bd,0x4d5,0x4d7,0x4df,0x4e7,0x4ef,0x4f0,0x4f8,0x500,
+0x508,0x4f0,0x510,0x515,0x508,0x4f0,0x51d,0x525,0x4ef,0x52a,0x532,0x4e7,0x537,0x38a,0x53f,0x543,
+0x54b,0x54c,0x554,0x55c,0x4ef,0x564,0x56c,0x4e7,0x4ef,0x38a,0x4f8,0x4e7,0x38a,0x38a,0x572,0x38a,
+0x38a,0x578,0x580,0x38a,0x38a,0x584,0x58c,0x38a,0x590,0x597,0x38a,0x59f,0x5a7,0x5ae,0x536,0x38a,
+0x38a,0x5b6,0x5be,0x5c6,0x5ce,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x5d6,0x38a,0x5de,0x38a,0x38a,0x38a,
+0x5e6,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x5ee,0x38a,0x38a,0x38a,0x5f6,0x5f6,0x4fc,0x4fc,0x38a,0x5fc,0x604,0x5de,
+0x61a,0x60c,0x60c,0x622,0x629,0x612,0x38a,0x38a,0x38a,0x631,0x639,0x38a,0x38a,0x38a,0x63b,0x643,
+0x64b,0x38a,0x652,0x65a,0x38a,0x662,0x38a,0x38a,0x66a,0x66d,0x537,0x675,0x401,0x67d,0x38a,0x684,
+0x38a,0x689,0x38a,0x38a,0x38a,0x38a,0x68f,0x697,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0x69f,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x6a7,0x6af,0x6b3,
+0x6cb,0x6d1,0x6bb,0x6c3,0x6d9,0x6e1,0x6e5,0x5b1,0x6ed,0x6f5,0x6fd,0x38a,0x705,0x643,0x643,0x643,
+0x715,0x71d,0x725,0x72d,0x732,0x73a,0x742,0x70d,0x74a,0x752,0x38a,0x758,0x75f,0x643,0x643,0x765,
+0x643,0x562,0x76a,0x643,0x772,0x38a,0x38a,0x640,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,
+0x643,0x643,0x643,0x643,0x643,0x77a,0x643,0x643,0x643,0x643,0x643,0x780,0x643,0x643,0x788,0x790,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,0x643,0x643,0x7a0,0x7a7,0x7af,0x798,
+0x7bf,0x7c7,0x7cf,0x7d6,0x7de,0x7e6,0x7ed,0x7b7,0x643,0x643,0x643,0x7f5,0x7fb,0x801,0x809,0x80e,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x815,0x38a,0x38a,0x38a,0x81d,0x38a,0x38a,0x38a,0x3d8,
+0x825,0x82d,0x834,0x38a,0x83c,0x643,0x643,0x646,0x643,0x643,0x643,0x643,0x643,0x643,0x843,0x849,
+0x859,0x851,0x38a,0x38a,0x861,0x5e6,0x38a,0x3b1,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x81c,
+0x3bf,0x38a,0x838,0x869,0x38a,0x871,0x80e,0x38a,0x38a,0x38a,0x38a,0x879,0x38a,0x38a,0x63b,0x3b0,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
@@ -54,7 +54,7 @@ static const uint16_t ubidi_props_trieIndex[11884]={
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,0x65a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
@@ -98,10 +98,10 @@ static const uint16_t ubidi_props_trieIndex[11884]={
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x86f,0x65a,0x56d,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x88e,0x38a,0x38a,0x893,0x557,0x38a,0x38a,0x5a9,0x65a,0x651,0x38a,0x38a,0x89b,0x38a,0x38a,0x38a,
-0x8a3,0x8aa,0x623,0x8b2,0x38a,0x38a,0x8b9,0x8c1,0x38a,0x8c8,0x8cf,0x38a,0x4dd,0x8d4,0x38a,0x4f6,
-0x38a,0x8dc,0x8e4,0x4f8,0x38a,0x8e8,0x4f7,0x8f0,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x8f7,
+0x38a,0x38a,0x38a,0x38a,0x838,0x643,0x562,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x880,0x38a,0x38a,0x885,0x54c,0x38a,0x38a,0x592,0x643,0x63a,0x38a,0x38a,0x88d,0x38a,0x38a,0x38a,
+0x895,0x89c,0x60c,0x8a4,0x38a,0x38a,0x8ab,0x8b3,0x38a,0x8ba,0x8c1,0x38a,0x4d5,0x8c6,0x38a,0x4ee,
+0x38a,0x8ce,0x8d6,0x4f0,0x38a,0x8da,0x4ef,0x8e2,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x8e9,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
@@ -141,100 +141,100 @@ static const uint16_t ubidi_props_trieIndex[11884]={
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x90b,0x8ff,0x903,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x913,0x489,0x489,0x489,0x489,0x91b,0x91f,
-0x927,0x92f,0x933,0x93b,0x489,0x489,0x489,0x93f,0x947,0x37a,0x94f,0x957,0x38a,0x38a,0x38a,0x95f,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x8fd,0x8f1,0x8f5,0x489,0x489,0x489,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x905,0x489,0x489,0x489,0x489,0x90d,0x911,
+0x919,0x921,0x925,0x92d,0x489,0x489,0x489,0x931,0x939,0x37a,0x941,0x949,0x38a,0x38a,0x38a,0x951,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0xe28,0xe28,0xe68,0xea8,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xee0,0xf20,0xf60,0xf70,0xfb0,0xfbc,
 0xe28,0xe28,0xffc,0xe28,0xe28,0xe28,0x1034,0x1074,0x10b4,0x10f4,0x112c,0x116c,0x11ac,0x11e4,0x1224,0x1264,
-0xa40,0xa80,0xac0,0xafa,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb25,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb62,0x1a0,0x1a0,0xb97,0xbd7,0xc17,0xc57,0xc97,0xcd7,
+0xa40,0xa80,0xac0,0xafa,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb23,0x1a0,0x1a0,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb60,0x1a0,0x1a0,0xb95,0xbd5,0xc15,0xc55,0xc95,0xcd5,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
-0xd57,0xd67,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
+0xd55,0xd65,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
-0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd17,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x967,0x38a,0x65a,0x65a,0x96f,0x5fd,0x38a,0x4f0,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x977,0x38a,0x38a,0x38a,0x97e,0x38a,0x38a,0x38a,0x38a,
+0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd15,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x959,0x38a,0x643,0x643,0x961,0x5e6,0x38a,0x4e8,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x969,0x38a,0x38a,0x38a,0x970,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x986,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x98e,0x992,0x41f,0x41f,0x41f,0x41f,0x9a2,0x99a,0x41f,0x9aa,0x41f,0x41f,0x9b2,0x9b8,0x41f,0x41f,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x978,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
+0x980,0x984,0x41f,0x41f,0x41f,0x41f,0x994,0x98c,0x41f,0x99c,0x41f,0x41f,0x9a4,0x9aa,0x41f,0x41f,
 0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x41f,0x41f,0x41f,0x9c0,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x4f7,0x8bb,0x9c8,0x9cf,0x401,0x9d2,0x38a,0x38a,0x4dd,0x9da,0x38a,0x9e0,0x401,0x9e5,0x60f,0x38a,
-0x38a,0x9ed,0x38a,0x38a,0x38a,0x38a,0x82f,0x9f5,0x401,0x4f8,0x556,0x9fc,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x8bb,0xa04,0x38a,0x38a,0xa08,0xa10,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa14,0xa1c,0x38a,
-0x38a,0xa24,0x556,0xa2c,0x38a,0xa32,0x38a,0x38a,0x5ed,0xa3a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa42,0xa46,0xa4e,0x38a,0xa55,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa5c,0x38a,0x38a,0xa64,0xa6a,
-0x38a,0x38a,0x38a,0xa70,0xa78,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa7c,0x38a,0xa82,0x38a,
+0x41f,0x41f,0x41f,0x9b2,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
+0x4ef,0x8ad,0x9ba,0x9c1,0x401,0x9c4,0x38a,0x38a,0x4d5,0x9cc,0x38a,0x9d2,0x401,0x9d7,0x5f8,0x38a,
+0x38a,0x9df,0x38a,0x38a,0x38a,0x38a,0x81d,0x9e7,0x401,0x4f0,0x54b,0x9ee,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x8ad,0x9f6,0x38a,0x38a,0x9fa,0xa02,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa06,0xa0e,0x38a,
+0x38a,0xa16,0x54b,0x832,0x38a,0xa1e,0x38a,0x38a,0x5d6,0xa26,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa2a,0x38a,0x38a,0xa32,0xa38,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0xa88,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa3e,0x38a,0xa44,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x511,0xa90,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa4a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0xa97,0xa9f,0xaa5,0x38a,0x38a,0x65a,0x65a,0xaad,0x38a,0x38a,0x38a,0x38a,0x38a,0x65a,
-0x65a,0xab5,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xabb,0x38a,0xac2,
-0x38a,0xabe,0x38a,0xac5,0x38a,0xacd,0xad1,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0xad9,0x3d8,0xae0,0xae7,0xaef,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x509,0xa52,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xaf7,0xaff,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0xa59,0xa61,0xa67,0x38a,0x38a,0x643,0x643,0xa6f,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,0x767,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xa71,0x38a,0xa78,0x38a,0xa74,
+0x38a,0xa7b,0x38a,0xa83,0xa87,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x3d8,0xa8f,0x3d8,0xa96,0xa9d,0xaa5,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0xb07,0x41f,0xb0f,
-0xb0f,0xb16,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
+0x38a,0x38a,0x38a,0x38a,0x38a,0xaad,0xab5,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0x38a,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0xabd,0x41f,0xac5,0xac5,0xacc,
 0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0xb1e,0x41f,
-0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x65a,0xb26,0x65a,0x65a,0x65d,0xb2b,0xb2f,0x849,0xb37,
-0x38a,0x38a,0xb3d,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x76d,0x38a,0x38a,0x38a,0x38a,0x65a,
-0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,
-0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0x65a,0xb45,0xb4d,0x65a,
-0x65a,0x65a,0x65d,0x65a,0x65a,0xb45,0x38a,0xb26,0x65a,0xb55,0x65a,0xb5d,0x84b,0x38a,0x38a,0xb26,
-0xb61,0xb69,0x65f,0x65c,0x38a,0xb71,0x56d,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,0x41f,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0xad4,0x41f,0x41f,0x41f,
+0x41f,0x41f,0x41f,0x41f,0x41f,0x643,0xadc,0x643,0x643,0x646,0xae1,0xae5,0x843,0xaed,0x38a,0x38a,
+0xaf3,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x643,0x643,0x643,
+0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,
+0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x643,0x768,0xafb,0x643,0x643,0x643,
+0x646,0x643,0x643,0x830,0x38a,0xadc,0x643,0xb03,0x643,0xb0b,0x845,0x38a,0x38a,0xb1b,0xb23,0xb2b,
+0x38a,0x844,0x38a,0x5e6,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xb79,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
+0x38a,0x38a,0x38a,0x38a,0xb13,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
 0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,
-0x38a,0x38a,0x38a,0x38a,0x38a,0x38a,0xb79,0xb89,0xb81,0xb81,0xb81,0xb8a,0xb8a,0xb8a,0xb8a,0x3d8,
-0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0xb92,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
-0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
-0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
-0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,
-0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0xb8a,0x369,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0x38a,0x38a,0x38a,0x38a,0xb13,0xb3b,0xb33,0xb33,0xb33,0xb3c,0xb3c,0xb3c,0xb3c,0x3d8,0x3d8,0x3d8,
+0x3d8,0x3d8,0x3d8,0x3d8,0xb44,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
+0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
+0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
+0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,
+0xb3c,0xb3c,0xb3c,0xb3c,0xb3c,0x369,0x369,0x369,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
 0x12,8,7,8,9,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
 0x12,0x12,0x12,0x12,7,7,7,8,9,0xa,0xa,4,4,4,0xa,0xa,
 0x310a,0xf20a,0xa,3,6,3,6,6,2,2,2,2,2,2,2,2,
@@ -319,8 +319,6 @@ static const uint16_t ubidi_props_trieIndex[11884]={
 1,1,1,1,1,1,1,1,1,1,0xb1,0xb1,0xb1,0xb1,1,0xb1,
 0xb1,0xb1,0xb1,0xb1,0x81,0x41,0x41,0x41,0x41,0x41,0x81,0x81,0x41,0x81,0x41,0x41,
 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x81,0x41,1,1,1,0xb1,0xb1,0xb1,
-1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,1,1,1,1,1,1,1,1,1,1,1,1,
 1,1,1,1,0xb1,0xb1,5,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
 0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,
@@ -348,417 +346,400 @@ static const uint16_t ubidi_props_trieIndex[11884]={
 0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,
 0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,4,0,0,0,0,0,0,0,0,0x11,0x11,
-0x11,0x11,0x11,0x11,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xb1,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,
-0,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,
+0,0,0,0,0xb1,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,
+0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0xb1,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,
-0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,
-0xa,4,0xa,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,
+0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,
+0xa,0xa,0xa,0xa,0xa,4,0xa,0,0,0,0,0,0xb1,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,
-0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,
-0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
+0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
+0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0xa0,
+0,0,0,0,0,0,0xa0,0,0,0,0,0,0xb1,0xb1,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xb1,0,0,0xa0,0,0,0,0,
-0,0,0xa0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x11,0xb1,0,0,
+0,0,0xb1,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x11,
-0x11,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,
-0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,4,0,0,0,0,
-0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,
-0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,
+0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,4,
+0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,
-0,0xb1,0x310a,0xf20a,0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,
-0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,
-0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,
-0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,
-0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
-0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x310a,
-0xf20a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,
+0,0xb1,0,0xb1,0,0xb1,0x310a,0xf20a,0x310a,0xf20a,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,
+0xb1,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,
-0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0,0,0,0,0,0,0,4,0,0xb1,0,0,0x40,0x40,0x40,0x40,
-0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0x40,0,
+0xb1,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0,
+0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x4a,0xa,0xa,0x2a,0xb1,
-0xb1,0xb1,0x12,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0,0,
-0,0,0,0,0,0xb1,0xb1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-0xb1,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,
-0,0,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,
-0xa,0,0,0,0xa,0xa,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,
-0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0,0,
+0,0,0,0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0xb1,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0xb1,0,0,0,
-0xb1,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x11,0x11,
-0x11,0x11,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,0,0,0,
-0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0xa,0xa,0,0xa,0xa,0xa,0xa,6,0x310a,0xf20a,0xa,
+0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,4,0,0xb1,0,0,
+0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0x40,0xb1,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x4a,
+0xa,0xa,0x2a,0xb1,0xb1,0xb1,0x12,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0,0,0,0,0,0,0,0,0,0xb1,0xb1,0x40,0x40,0x40,0x40,0x40,
+0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0x40,0x40,0x40,0x40,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0,0,0,
+0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,
+0,0,0,0,0xa,0,0,0,0xa,0xa,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,0xb2,0xb2,0xb2,0xb2,0xb2,0x12,0x814,0x815,
-0x813,0x816,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,2,0,0,0,2,2,2,2,
-2,2,3,3,0xa,0x310a,0xf20a,0,9,9,9,9,9,9,9,9,
-9,9,9,0xb2,0x412,0x432,0x8a0,0x8a1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,7,0x8ab,0x8ae,0x8b0,0x8ac,0x8af,6,
-4,4,4,4,4,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
-2,2,2,2,2,2,2,2,2,2,3,3,0xa,0x310a,0xf20a,0,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+0,0,0,0xb1,0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,
+0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0xb1,
+0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1,
+0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,
+0xb1,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,
 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xa,0xa,0,0xa,0xa,0xa,0xa,0,0xa,0xa,0,0,0,0,0,0,
-0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,
-0xa,0xa,0xa,0xa,0,0xa,0,0xa,0,0xa,0,0,0,0,4,0,
-0,0,0,0,0,0,0,0,0,0,0xa,0xa,0,0,0,0,
-0x100a,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,0xa,0,0,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,
+0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0xa,0xa,0,0xa,0xa,0xa,0xa,
+6,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,0xb2,0xb2,0xb2,0xb2,
+0xb2,0x12,0x814,0x815,0x813,0x816,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,2,0,0,0,
+2,2,2,2,2,2,3,3,0xa,0x310a,0xf20a,0,9,9,9,9,
+9,9,9,9,9,9,9,0xb2,0x412,0x432,0x8a0,0x8a1,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,7,0x8ab,0x8ae,
+0x8b0,0x8ac,0x8af,6,4,4,4,4,4,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,
+0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2,2,2,3,3,
+0xa,0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xa,0xa,0,0xa,0xa,0xa,0xa,0,0xa,0xa,0,0,
+0,0,0,0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,
+0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0,0xa,0,0xa,0,0,
+0,0,4,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,
+0,0,0,0,0x100a,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,
+0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,
+0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
+0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x900a,0x900a,0x900a,0x100a,0x900a,0x900a,0x100a,0x100a,0x900a,0x900a,
+0x900a,0x900a,0x900a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0x700a,0x700a,0x700a,0xb00a,
+0xb00a,0xb00a,0xa,0xa,0xa,0x100a,3,4,0xa,0x900a,0x100a,0xa,0xa,0xa,0x100a,0x100a,
+0x100a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,
+0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a,
+0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
+0x100a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0x100a,0x100a,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
+0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
+0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
+0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x900a,0x100a,
+0x900a,0x900a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
+0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0x300a,0xf00a,0x300a,0xf00a,0x900a,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x300a,0xf00a,
+0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,
-0x300a,0xf00a,0x900a,0x900a,0x900a,0x100a,0x900a,0x900a,0x100a,0x100a,0x900a,0x900a,0x900a,0x900a,0x900a,0x100a,
-0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0x700a,0x700a,0x700a,0xb00a,0xb00a,0xb00a,0xa,0xa,
-0xa,0x100a,3,4,0xa,0x900a,0x100a,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,
-0x100a,0x100a,0x100a,0xa,0x100a,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a,0x300a,0xf00a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,
-0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,
-0x100a,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,
-0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
-0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x900a,0x100a,0x900a,0x900a,0x100a,0x900a,
-0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0xa,
-0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,
-0xf00a,0x900a,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,
-0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,
+0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,
+0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,
+0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0x100a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0xa,0x300a,0xf00a,0xa,0x500a,0x100a,0xd00a,0xa,0xa,
+0xa,0xa,0xa,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0xa,
+0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0xa,
-0x300a,0xf00a,0xa,0x500a,0x100a,0xd00a,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0x300a,0xf00a,0xa,
-0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x310a,0xf20a,
-0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a,0x100a,0x100a,0xa,0xa,
-0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,0x100a,0x100a,
-0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,
-0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x710a,0x320a,0xf10a,0xb20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,
-0xf20a,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0x100a,0xa,0xa,
-0xa,0xa,0x100a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,
-0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,0x900a,0x900a,0x100a,0xa,0xa,0xa,0xa,0xa,
-0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x100a,
-0xa,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,
-0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
-0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0x100a,0xa,0x100a,0xa,0xa,0x100a,0xa,0x300a,
-0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,
-0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,
-0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x300a,
-0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,
-0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,
-0x100a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,
-0xf00a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,
-0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,
-0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,
+0xa,0x100a,0xa,0x100a,0x100a,0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0x100a,0x900a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0xa,0xa,
+0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x710a,0x320a,0xf10a,
+0xb20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,
+0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,
+0x300a,0xf00a,0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0x300a,0xf00a,0xa,
+0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,
+0x900a,0x900a,0x100a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0x100a,
+0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,
+0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,
+0x100a,0xa,0x100a,0xa,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
+0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0xa,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,
+0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,
+0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,
+0x100a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,
+0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,
+0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,
+0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,
+0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,
+0x100a,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xb1,0xb1,0xb1,0,0,
-0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
+0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
+0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,
+0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0xb1,0xa,0xa,0x300a,0xf00a,
-0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,
-0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0,0,0,0xb1,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0xa,
+0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xa,0,0,0,
-0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xa,0,0,0,
-0,0,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,9,0xa,0xa,0xa,
-0xa,0,0,0,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,
-0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0,0,0,0,
+0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
+0xb1,0xb1,0,0,0xa,0,0,0,0,0,0xa,0xa,0,0,0,0,
+0,0xa,0xa,0xa,9,0xa,0xa,0xa,0xa,0,0,0,0x310a,0xf20a,0x310a,0xf20a,
+0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xa,
+0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,
+0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xa,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0,0,0,0,
-0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,
-0,0,0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,
-0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,
-4,4,0,0,0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0,0xa,0xa,0xa,0xa,
-0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,
+0,0,0,0xb1,0xb1,0xb1,0xb1,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0,0,0xb1,0,0,0,0xb1,0,0,0,0,0xb1,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0,0xb1,0xb1,0,0xa,0xa,0xa,0xa,0,0,0,0,
+0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,
+0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+0x40,0x40,0x60,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
+0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,
+0xb1,0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,
+0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0xb1,0xb1,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,
+0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0,0,0xb1,
+0xb1,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,
+0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,
+0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0,0,0,
+0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,1,1,1,1,1,1,1,1,1,3,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0,0,0,
-0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
-0,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xb1,0,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,
-0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,
-0,0xb1,0,0,0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
-1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,1,0xb1,1,0xd,0xd,0xd,0xd,
+0,1,0xb1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x12,0x12,0x12,0x12,
-0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xd,0xd,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,0xa,6,0,
-0xa,6,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,4,0xa,0xa,3,3,
-0x300a,0xf00a,0xa,0,0xa,4,4,0xa,0,0,0,0,0xd,0xd,0xd,0xd,
+0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xd,0xd,0xd,0xd,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0x12,0x12,0x12,0x12,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xd,0xa,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
+0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,6,0xa,6,0,0xa,6,0xa,0xa,0xa,0x310a,0xf20a,0x310a,
+0xf20a,0x310a,0xf20a,4,0xa,0xa,3,3,0x300a,0xf00a,0xa,0,0xa,4,4,0xa,
+0,0,0,0,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xb2,0,0xa,0xa,4,
-4,4,0xa,0xa,0x310a,0xf20a,0xa,3,6,3,6,6,2,2,2,2,
-2,2,2,2,2,2,6,0xa,0x500a,0xa,0xd00a,0xa,0xa,0,0,0,
+0xd,0xd,0xd,0xb2,0,0xa,0xa,4,4,4,0xa,0xa,0x310a,0xf20a,0xa,3,
+6,3,6,6,2,2,2,2,2,2,2,2,2,2,6,0xa,
+0x500a,0xa,0xd00a,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x510a,
+0xa,0xd20a,0xa,0x310a,0xf20a,0xa,0x310a,0xf20a,0xa,0xa,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0x310a,0xf20a,0xa,0x310a,0xf20a,
-0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,4,4,0xa,0xa,
-0xa,4,4,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0x12,0x12,0x12,0x12,
-0x12,0x12,0x12,0x12,0x12,0xaa,0xaa,0xaa,0xa,0xa,0x12,0x12,0,0xa,0,0,
+0,0,0,0,4,4,0xa,0xa,0xa,4,4,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xaa,0xaa,0xaa,
+0xa,0xa,0x12,0x12,0,0xa,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xb1,2,2,2,
+0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0,0,0,0,0xb1,2,2,2,2,2,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
-0xb1,0xb1,0xb1,0,0,0,0,0,1,1,1,1,1,1,1,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0xa,1,0xb1,0xb1,0xb1,1,0xb1,0xb1,1,
-1,1,1,1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xa,
+1,0xb1,0xb1,0xb1,1,0xb1,0xb1,1,1,1,1,1,0xb1,0xb1,0xb1,0xb1,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-0xb1,0xb1,0xb1,1,1,1,1,0xb1,0x41,0x81,1,1,0x81,0xb1,0xb1,1,
-1,1,1,0x41,0x41,0x41,0x41,0x81,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x81,1,0x81,
-1,0x81,0x81,1,1,0x61,0x81,0x81,0x81,0x81,0x81,0x41,0x41,0x41,0x41,0x61,
-0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x41,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,0xb1,0xb1,0xb1,1,1,1,1,0xb1,
+0x41,0x81,1,1,0x81,0xb1,0xb1,1,1,1,1,0x41,0x41,0x41,0x41,0x81,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x41,0x81,0x41,0x81,0x81,0x81,0x41,0x41,
-0x41,0x81,0x41,0x41,0x81,0x41,0x81,0x81,0x41,0x81,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,0x81,0x81,0x81,0x81,0x41,0x41,1,
+0x41,0x41,0x41,0x41,0x41,0x81,1,0x81,1,0x81,0x81,1,1,0x61,0x81,0x81,
+0x81,0x81,0x81,0x41,0x41,0x41,0x41,0x61,0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x41,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0x41,0x81,0x41,0x81,0x81,0x81,0x41,0x41,0x41,0x81,0x41,0x41,0x81,0x41,0x81,0x81,
+0x41,0x81,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,0x81,0x81,0x81,0x81,0x41,0x41,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
-0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,
-0,0xb1,0xb1,0,0,0xa0,0,0,0,0,0,0,0,0,0,0xb1,
-0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,0xb1,0,0,0,0,
-0,0,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
+5,5,5,5,5,5,5,1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
+0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,
+0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0xa0,0,0,
+0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,
 0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0xb1,
-0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,
+0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0,0,0,0,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0xb1,0xb1,0,0xb1,
-0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0,0xb1,0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,0,0,0,0,0,0,0,0,
 0,0,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,
 0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0xb1,
 0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0,
-0,0x11,0x11,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,
-0x11,0,0,0x11,0x11,0x11,0x11,0,0,0,0,0,0,0,0,0x11,
-0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0,
-0,0x11,0x11,0x11,0,0,0,0,0,0,0,0,0,0,0x11,0x11,
-0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0x11,0x11,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xa0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0x11,0x11,0x11,0x11,0x11,0x11,0,0,0,0x11,0,0x11,0x11,0,0x11,
-0x11,0x11,0x11,0x11,0x11,0x11,0,0x11,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,
-0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0xb2,0xb2,0xb2,0xb2,0,0,0,0,0,0,0,0,0,0,0,0,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xa0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0xb2,
-0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,
-0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,
-0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xb1,0xb1,0xb1,0xa,0,0,0,0,0,0,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,
+0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0x100a,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0x100a,0,0,
+0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xb1,0xb1,
+0xb1,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x100a,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0x100a,0,0,0,0,0,0,0,0,
-0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+0,0,0,0,0,0x100a,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x100a,
+0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,
-0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,
-0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,
-0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,1,1,1,1,1,1,1,1,1,0x41,0x41,0x41,0x41,
-0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
-0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,
-0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,2,2,2,2,
-2,2,2,2,2,2,2,0xa,0xa,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,
+2,2,2,2,2,2,2,2,2,2,2,2,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,
+0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,
+0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,
+1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,
+0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2,2,2,2,0xa,
+0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0xa,0xa,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0x12,0x12,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+0,0,0,0,0,0,0,0,0,0,0x12,0x12,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0,0,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xa,0xa,0xa,0xa,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xb2,0xb2,0xb2,0xb2,
 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
-0xb2,0xb2,0xb2,0xb2,0x12,0xb2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0x12,0xb2,0x12,0x12,
+0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
-0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
-0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0,0,0
+0,0,0,0
 };
 
 static const uint32_t ubidi_props_mirrors[26]={
@@ -828,13 +809,13 @@ static const UBiDiProps ubidi_props_singleton={
     ubidi_props_trieIndex+3496,
     NULL,
     3496,
-    8388,
+    8076,
     0x1a0,
     0xe28,
     0x0,
     0x0,
     0x110000,
-    0x2e68,
+    0x2d30,
     NULL, 0, FALSE, FALSE, 0, NULL
   },
   { 2,2,0,0 }
index fd64fac..a62d8b2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ubidiimp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ubidiln.c b/source/common/ubidiln.c
new file mode 100644 (file)
index 0000000..688ca4c
--- /dev/null
@@ -0,0 +1,1349 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  ubidiln.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 1999aug06
+*   created by: Markus W. Scherer, updated by Matitiahu Allouche
+*/
+
+#include "cmemory.h"
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "unicode/uchar.h"
+#include "unicode/ubidi.h"
+#include "ubidiimp.h"
+#include "uassert.h"
+
+/*
+ * General remarks about the functions in this file:
+ *
+ * These functions deal with the aspects of potentially mixed-directional
+ * text in a single paragraph or in a line of a single paragraph
+ * which has already been processed according to
+ * the Unicode 6.3 BiDi algorithm as defined in
+ * http://www.unicode.org/unicode/reports/tr9/ , version 28,
+ * also described in The Unicode Standard, Version 6.3.0 .
+ *
+ * This means that there is a UBiDi object with a levels
+ * and a dirProps array.
+ * paraLevel and direction are also set.
+ * Only if the length of the text is zero, then levels==dirProps==NULL.
+ *
+ * The overall directionality of the paragraph
+ * or line is used to bypass the reordering steps if possible.
+ * Even purely RTL text does not need reordering there because
+ * the ubidi_getLogical/VisualIndex() functions can compute the
+ * index on the fly in such a case.
+ *
+ * The implementation of the access to same-level-runs and of the reordering
+ * do attempt to provide better performance and less memory usage compared to
+ * a direct implementation of especially rule (L2) with an array of
+ * one (32-bit) integer per text character.
+ *
+ * Here, the levels array is scanned as soon as necessary, and a vector of
+ * same-level-runs is created. Reordering then is done on this vector.
+ * For each run of text positions that were resolved to the same level,
+ * only 8 bytes are stored: the first text position of the run and the visual
+ * position behind the run after reordering.
+ * One sign bit is used to hold the directionality of the run.
+ * This is inefficient if there are many very short runs. If the average run
+ * length is <2, then this uses more memory.
+ *
+ * In a further attempt to save memory, the levels array is never changed
+ * after all the resolution rules (Xn, Wn, Nn, In).
+ * Many functions have to consider the field trailingWSStart:
+ * if it is less than length, then there is an implicit trailing run
+ * at the paraLevel,
+ * which is not reflected in the levels array.
+ * This allows a line UBiDi object to use the same levels array as
+ * its paragraph parent object.
+ *
+ * When a UBiDi object is created for a line of a paragraph, then the
+ * paragraph's levels and dirProps arrays are reused by way of setting
+ * a pointer into them, not by copying. This again saves memory and forbids to
+ * change the now shared levels for (L1).
+ */
+
+/* handle trailing WS (L1) -------------------------------------------------- */
+
+/*
+ * setTrailingWSStart() sets the start index for a trailing
+ * run of WS in the line. This is necessary because we do not modify
+ * the paragraph's levels array that we just point into.
+ * Using trailingWSStart is another form of performing (L1).
+ *
+ * To make subsequent operations easier, we also include the run
+ * before the WS if it is at the paraLevel - we merge the two here.
+ *
+ * This function is called only from ubidi_setLine(), so pBiDi->paraLevel is
+ * set correctly for the line even when contextual multiple paragraphs.
+ */
+static void
+setTrailingWSStart(UBiDi *pBiDi) {
+    /* pBiDi->direction!=UBIDI_MIXED */
+
+    const DirProp *dirProps=pBiDi->dirProps;
+    UBiDiLevel *levels=pBiDi->levels;
+    int32_t start=pBiDi->length;
+    UBiDiLevel paraLevel=pBiDi->paraLevel;
+
+    /* If the line is terminated by a block separator, all preceding WS etc...
+       are already set to paragraph level.
+       Setting trailingWSStart to pBidi->length will avoid changing the
+       level of B chars from 0 to paraLevel in ubidi_getLevels when
+       orderParagraphsLTR==TRUE.
+     */
+    if(dirProps[start-1]==B) {
+        pBiDi->trailingWSStart=start;   /* currently == pBiDi->length */
+        return;
+    }
+    /* go backwards across all WS, BN, explicit codes */
+    while(start>0 && DIRPROP_FLAG(dirProps[start-1])&MASK_WS) {
+        --start;
+    }
+
+    /* if the WS run can be merged with the previous run then do so here */
+    while(start>0 && levels[start-1]==paraLevel) {
+        --start;
+    }
+
+    pBiDi->trailingWSStart=start;
+}
+
+/* ubidi_setLine ------------------------------------------------------------ */
+
+U_CAPI void U_EXPORT2
+ubidi_setLine(const UBiDi *pParaBiDi,
+              int32_t start, int32_t limit,
+              UBiDi *pLineBiDi,
+              UErrorCode *pErrorCode) {
+    int32_t length;
+
+    /* check the argument values */
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    RETURN_VOID_IF_NOT_VALID_PARA(pParaBiDi, *pErrorCode);
+    RETURN_VOID_IF_BAD_RANGE(start, 0, limit, *pErrorCode);
+    RETURN_VOID_IF_BAD_RANGE(limit, 0, pParaBiDi->length+1, *pErrorCode);
+    if(pLineBiDi==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if(ubidi_getParagraph(pParaBiDi, start, NULL, NULL, NULL, pErrorCode) !=
+       ubidi_getParagraph(pParaBiDi, limit-1, NULL, NULL, NULL, pErrorCode)) {
+        /* the line crosses a paragraph boundary */
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    /* set the values in pLineBiDi from its pParaBiDi parent */
+    pLineBiDi->pParaBiDi=NULL;          /* mark unfinished setLine */
+    pLineBiDi->text=pParaBiDi->text+start;
+    length=pLineBiDi->length=limit-start;
+    pLineBiDi->resultLength=pLineBiDi->originalLength=length;
+    pLineBiDi->paraLevel=GET_PARALEVEL(pParaBiDi, start);
+    pLineBiDi->paraCount=pParaBiDi->paraCount;
+    pLineBiDi->runs=NULL;
+    pLineBiDi->flags=0;
+    pLineBiDi->reorderingMode=pParaBiDi->reorderingMode;
+    pLineBiDi->reorderingOptions=pParaBiDi->reorderingOptions;
+    pLineBiDi->controlCount=0;
+    if(pParaBiDi->controlCount>0) {
+        int32_t j;
+        for(j=start; j<limit; j++) {
+            if(IS_BIDI_CONTROL_CHAR(pParaBiDi->text[j])) {
+                pLineBiDi->controlCount++;
+            }
+        }
+        pLineBiDi->resultLength-=pLineBiDi->controlCount;
+    }
+
+    pLineBiDi->dirProps=pParaBiDi->dirProps+start;
+    pLineBiDi->levels=pParaBiDi->levels+start;
+    pLineBiDi->runCount=-1;
+
+    if(pParaBiDi->direction!=UBIDI_MIXED) {
+        /* the parent is already trivial */
+        pLineBiDi->direction=pParaBiDi->direction;
+
+        /*
+         * The parent's levels are all either
+         * implicitly or explicitly ==paraLevel;
+         * do the same here.
+         */
+        if(pParaBiDi->trailingWSStart<=start) {
+            pLineBiDi->trailingWSStart=0;
+        } else if(pParaBiDi->trailingWSStart<limit) {
+            pLineBiDi->trailingWSStart=pParaBiDi->trailingWSStart-start;
+        } else {
+            pLineBiDi->trailingWSStart=length;
+        }
+    } else {
+        const UBiDiLevel *levels=pLineBiDi->levels;
+        int32_t i, trailingWSStart;
+        UBiDiLevel level;
+
+        setTrailingWSStart(pLineBiDi);
+        trailingWSStart=pLineBiDi->trailingWSStart;
+
+        /* recalculate pLineBiDi->direction */
+        if(trailingWSStart==0) {
+            /* all levels are at paraLevel */
+            pLineBiDi->direction=(UBiDiDirection)(pLineBiDi->paraLevel&1);
+        } else {
+            /* get the level of the first character */
+            level=(UBiDiLevel)(levels[0]&1);
+
+            /* if there is anything of a different level, then the line is mixed */
+            if(trailingWSStart<length && (pLineBiDi->paraLevel&1)!=level) {
+                /* the trailing WS is at paraLevel, which differs from levels[0] */
+                pLineBiDi->direction=UBIDI_MIXED;
+            } else {
+                /* see if levels[1..trailingWSStart-1] have the same direction as levels[0] and paraLevel */
+                i=1;
+                for(;;) {
+                    if(i==trailingWSStart) {
+                        /* the direction values match those in level */
+                        pLineBiDi->direction=(UBiDiDirection)level;
+                        break;
+                    } else if((levels[i]&1)!=level) {
+                        pLineBiDi->direction=UBIDI_MIXED;
+                        break;
+                    }
+                    ++i;
+                }
+            }
+        }
+
+        switch(pLineBiDi->direction) {
+        case UBIDI_LTR:
+            /* make sure paraLevel is even */
+            pLineBiDi->paraLevel=(UBiDiLevel)((pLineBiDi->paraLevel+1)&~1);
+
+            /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
+            pLineBiDi->trailingWSStart=0;
+            break;
+        case UBIDI_RTL:
+            /* make sure paraLevel is odd */
+            pLineBiDi->paraLevel|=1;
+
+            /* all levels are implicitly at paraLevel (important for ubidi_getLevels()) */
+            pLineBiDi->trailingWSStart=0;
+            break;
+        default:
+            break;
+        }
+    }
+    pLineBiDi->pParaBiDi=pParaBiDi;     /* mark successful setLine */
+    return;
+}
+
+U_CAPI UBiDiLevel U_EXPORT2
+ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex) {
+    /* return paraLevel if in the trailing WS run, otherwise the real level */
+    if(!IS_VALID_PARA_OR_LINE(pBiDi) || charIndex<0 || pBiDi->length<=charIndex) {
+        return 0;
+    } else if(pBiDi->direction!=UBIDI_MIXED || charIndex>=pBiDi->trailingWSStart) {
+        return GET_PARALEVEL(pBiDi, charIndex);
+    } else {
+        return pBiDi->levels[charIndex];
+    }
+}
+
+U_CAPI const UBiDiLevel * U_EXPORT2
+ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
+    int32_t start, length;
+
+    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, NULL);
+    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, NULL);
+    if((length=pBiDi->length)<=0) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    if((start=pBiDi->trailingWSStart)==length) {
+        /* the current levels array reflects the WS run */
+        return pBiDi->levels;
+    }
+
+    /*
+     * After the previous if(), we know that the levels array
+     * has an implicit trailing WS run and therefore does not fully
+     * reflect itself all the levels.
+     * This must be a UBiDi object for a line, and
+     * we need to create a new levels array.
+     */
+    if(getLevelsMemory(pBiDi, length)) {
+        UBiDiLevel *levels=pBiDi->levelsMemory;
+
+        if(start>0 && levels!=pBiDi->levels) {
+            uprv_memcpy(levels, pBiDi->levels, start);
+        }
+        /* pBiDi->paraLevel is ok even if contextual multiple paragraphs,
+           since pBidi is a line object                                     */
+        uprv_memset(levels+start, pBiDi->paraLevel, length-start);
+
+        /* this new levels array is set for the line and reflects the WS run */
+        pBiDi->trailingWSStart=length;
+        return pBiDi->levels=levels;
+    } else {
+        /* out of memory */
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
+                    int32_t *pLogicalLimit, UBiDiLevel *pLevel) {
+    UErrorCode errorCode;
+    int32_t runCount, visualStart, logicalLimit, logicalFirst, i;
+    Run iRun;
+
+    errorCode=U_ZERO_ERROR;
+    RETURN_VOID_IF_BAD_RANGE(logicalPosition, 0, pBiDi->length, errorCode);
+    /* ubidi_countRuns will check VALID_PARA_OR_LINE */
+    runCount=ubidi_countRuns((UBiDi *)pBiDi, &errorCode);
+    if(U_FAILURE(errorCode)) {
+        return;
+    }
+    /* this is done based on runs rather than on levels since levels have
+       a special interpretation when UBIDI_REORDER_RUNS_ONLY
+     */
+    visualStart=logicalLimit=0;
+    iRun=pBiDi->runs[0];
+
+    for(i=0; i<runCount; i++) {
+        iRun = pBiDi->runs[i];
+        logicalFirst=GET_INDEX(iRun.logicalStart);
+        logicalLimit=logicalFirst+iRun.visualLimit-visualStart;
+        if((logicalPosition>=logicalFirst) &&
+           (logicalPosition<logicalLimit)) {
+            break;
+        }
+        visualStart = iRun.visualLimit;
+    }
+    if(pLogicalLimit) {
+        *pLogicalLimit=logicalLimit;
+    }
+    if(pLevel) {
+        if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) {
+            *pLevel=(UBiDiLevel)GET_ODD_BIT(iRun.logicalStart);
+        }
+        else if(pBiDi->direction!=UBIDI_MIXED || logicalPosition>=pBiDi->trailingWSStart) {
+            *pLevel=GET_PARALEVEL(pBiDi, logicalPosition);
+        } else {
+        *pLevel=pBiDi->levels[logicalPosition];
+        }
+    }
+}
+
+/* runs API functions ------------------------------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode) {
+    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
+    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
+    ubidi_getRuns(pBiDi, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return -1;
+    }
+    return pBiDi->runCount;
+}
+
+U_CAPI UBiDiDirection U_EXPORT2
+ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
+                   int32_t *pLogicalStart, int32_t *pLength)
+{
+    int32_t start;
+    UErrorCode errorCode = U_ZERO_ERROR;
+    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, errorCode, UBIDI_LTR);
+    ubidi_getRuns(pBiDi, &errorCode);
+    if(U_FAILURE(errorCode)) {
+        return UBIDI_LTR;
+    }
+    RETURN_IF_BAD_RANGE(runIndex, 0, pBiDi->runCount, errorCode, UBIDI_LTR);
+
+    start=pBiDi->runs[runIndex].logicalStart;
+    if(pLogicalStart!=NULL) {
+        *pLogicalStart=GET_INDEX(start);
+    }
+    if(pLength!=NULL) {
+        if(runIndex>0) {
+            *pLength=pBiDi->runs[runIndex].visualLimit-
+                     pBiDi->runs[runIndex-1].visualLimit;
+        } else {
+            *pLength=pBiDi->runs[0].visualLimit;
+        }
+    }
+    return (UBiDiDirection)GET_ODD_BIT(start);
+}
+
+/* in trivial cases there is only one trivial run; called by ubidi_getRuns() */
+static void
+getSingleRun(UBiDi *pBiDi, UBiDiLevel level) {
+    /* simple, single-run case */
+    pBiDi->runs=pBiDi->simpleRuns;
+    pBiDi->runCount=1;
+
+    /* fill and reorder the single run */
+    pBiDi->runs[0].logicalStart=MAKE_INDEX_ODD_PAIR(0, level);
+    pBiDi->runs[0].visualLimit=pBiDi->length;
+    pBiDi->runs[0].insertRemove=0;
+}
+
+/* reorder the runs array (L2) ---------------------------------------------- */
+
+/*
+ * Reorder the same-level runs in the runs array.
+ * Here, runCount>1 and maxLevel>=minLevel>=paraLevel.
+ * All the visualStart fields=logical start before reordering.
+ * The "odd" bits are not set yet.
+ *
+ * Reordering with this data structure lends itself to some handy shortcuts:
+ *
+ * Since each run is moved but not modified, and since at the initial maxLevel
+ * each sequence of same-level runs consists of only one run each, we
+ * don't need to do anything there and can predecrement maxLevel.
+ * In many simple cases, the reordering is thus done entirely in the
+ * index mapping.
+ * Also, reordering occurs only down to the lowest odd level that occurs,
+ * which is minLevel|1. However, if the lowest level itself is odd, then
+ * in the last reordering the sequence of the runs at this level or higher
+ * will be all runs, and we don't need the elaborate loop to search for them.
+ * This is covered by ++minLevel instead of minLevel|=1 followed
+ * by an extra reorder-all after the reorder-some loop.
+ * About a trailing WS run:
+ * Such a run would need special treatment because its level is not
+ * reflected in levels[] if this is not a paragraph object.
+ * Instead, all characters from trailingWSStart on are implicitly at
+ * paraLevel.
+ * However, for all maxLevel>paraLevel, this run will never be reordered
+ * and does not need to be taken into account. maxLevel==paraLevel is only reordered
+ * if minLevel==paraLevel is odd, which is done in the extra segment.
+ * This means that for the main reordering loop we don't need to consider
+ * this run and can --runCount. If it is later part of the all-runs
+ * reordering, then runCount is adjusted accordingly.
+ */
+static void
+reorderLine(UBiDi *pBiDi, UBiDiLevel minLevel, UBiDiLevel maxLevel) {
+    Run *runs, tempRun;
+    UBiDiLevel *levels;
+    int32_t firstRun, endRun, limitRun, runCount;
+
+    /* nothing to do? */
+    if(maxLevel<=(minLevel|1)) {
+        return;
+    }
+
+    /*
+     * Reorder only down to the lowest odd level
+     * and reorder at an odd minLevel in a separate, simpler loop.
+     * See comments above for why minLevel is always incremented.
+     */
+    ++minLevel;
+
+    runs=pBiDi->runs;
+    levels=pBiDi->levels;
+    runCount=pBiDi->runCount;
+
+    /* do not include the WS run at paraLevel<=old minLevel except in the simple loop */
+    if(pBiDi->trailingWSStart<pBiDi->length) {
+        --runCount;
+    }
+
+    while(--maxLevel>=minLevel) {
+        firstRun=0;
+
+        /* loop for all sequences of runs */
+        for(;;) {
+            /* look for a sequence of runs that are all at >=maxLevel */
+            /* look for the first run of such a sequence */
+            while(firstRun<runCount && levels[runs[firstRun].logicalStart]<maxLevel) {
+                ++firstRun;
+            }
+            if(firstRun>=runCount) {
+                break;  /* no more such runs */
+            }
+
+            /* look for the limit run of such a sequence (the run behind it) */
+            for(limitRun=firstRun; ++limitRun<runCount && levels[runs[limitRun].logicalStart]>=maxLevel;) {}
+
+            /* Swap the entire sequence of runs from firstRun to limitRun-1. */
+            endRun=limitRun-1;
+            while(firstRun<endRun) {
+                tempRun = runs[firstRun];
+                runs[firstRun]=runs[endRun];
+                runs[endRun]=tempRun;
+                ++firstRun;
+                --endRun;
+            }
+
+            if(limitRun==runCount) {
+                break;  /* no more such runs */
+            } else {
+                firstRun=limitRun+1;
+            }
+        }
+    }
+
+    /* now do maxLevel==old minLevel (==odd!), see above */
+    if(!(minLevel&1)) {
+        firstRun=0;
+
+        /* include the trailing WS run in this complete reordering */
+        if(pBiDi->trailingWSStart==pBiDi->length) {
+            --runCount;
+        }
+
+        /* Swap the entire sequence of all runs. (endRun==runCount) */
+        while(firstRun<runCount) {
+            tempRun=runs[firstRun];
+            runs[firstRun]=runs[runCount];
+            runs[runCount]=tempRun;
+            ++firstRun;
+            --runCount;
+        }
+    }
+}
+
+/* compute the runs array --------------------------------------------------- */
+
+static int32_t getRunFromLogicalIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode) {
+    Run *runs=pBiDi->runs;
+    int32_t runCount=pBiDi->runCount, visualStart=0, i, length, logicalStart;
+
+    for(i=0; i<runCount; i++) {
+        length=runs[i].visualLimit-visualStart;
+        logicalStart=GET_INDEX(runs[i].logicalStart);
+        if((logicalIndex>=logicalStart) && (logicalIndex<(logicalStart+length))) {
+            return i;
+        }
+        visualStart+=length;
+    }
+    /* we should never get here */
+    U_ASSERT(FALSE);
+    *pErrorCode = U_INVALID_STATE_ERROR;
+    return 0;
+}
+
+/*
+ * Compute the runs array from the levels array.
+ * After ubidi_getRuns() returns TRUE, runCount is guaranteed to be >0
+ * and the runs are reordered.
+ * Odd-level runs have visualStart on their visual right edge and
+ * they progress visually to the left.
+ * If option UBIDI_OPTION_INSERT_MARKS is set, insertRemove will contain the
+ * sum of appropriate LRM/RLM_BEFORE/AFTER flags.
+ * If option UBIDI_OPTION_REMOVE_CONTROLS is set, insertRemove will contain the
+ * negative number of BiDi control characters within this run.
+ */
+U_CFUNC UBool
+ubidi_getRuns(UBiDi *pBiDi, UErrorCode *pErrorCode) {
+    /*
+     * This method returns immediately if the runs are already set. This
+     * includes the case of length==0 (handled in setPara)..
+     */
+    if (pBiDi->runCount>=0) {
+        return TRUE;
+    }
+
+    if(pBiDi->direction!=UBIDI_MIXED) {
+        /* simple, single-run case - this covers length==0 */
+        /* pBiDi->paraLevel is ok even for contextual multiple paragraphs */
+        getSingleRun(pBiDi, pBiDi->paraLevel);
+    } else /* UBIDI_MIXED, length>0 */ {
+        /* mixed directionality */
+        int32_t length=pBiDi->length, limit;
+        UBiDiLevel *levels=pBiDi->levels;
+        int32_t i, runCount;
+        UBiDiLevel level=UBIDI_DEFAULT_LTR;   /* initialize with no valid level */
+        /*
+         * If there are WS characters at the end of the line
+         * and the run preceding them has a level different from
+         * paraLevel, then they will form their own run at paraLevel (L1).
+         * Count them separately.
+         * We need some special treatment for this in order to not
+         * modify the levels array which a line UBiDi object shares
+         * with its paragraph parent and its other line siblings.
+         * In other words, for the trailing WS, it may be
+         * levels[]!=paraLevel but we have to treat it like it were so.
+         */
+        limit=pBiDi->trailingWSStart;
+        /* count the runs, there is at least one non-WS run, and limit>0 */
+        runCount=0;
+        for(i=0; i<limit; ++i) {
+            /* increment runCount at the start of each run */
+            if(levels[i]!=level) {
+                ++runCount;
+                level=levels[i];
+            }
+        }
+
+        /*
+         * We don't need to see if the last run can be merged with a trailing
+         * WS run because setTrailingWSStart() would have done that.
+         */
+        if(runCount==1 && limit==length) {
+            /* There is only one non-WS run and no trailing WS-run. */
+            getSingleRun(pBiDi, levels[0]);
+        } else /* runCount>1 || limit<length */ {
+            /* allocate and set the runs */
+            Run *runs;
+            int32_t runIndex, start;
+            UBiDiLevel minLevel=UBIDI_MAX_EXPLICIT_LEVEL+1, maxLevel=0;
+
+            /* now, count a (non-mergeable) WS run */
+            if(limit<length) {
+                ++runCount;
+            }
+
+            /* runCount>1 */
+            if(getRunsMemory(pBiDi, runCount)) {
+                runs=pBiDi->runsMemory;
+            } else {
+                return FALSE;
+            }
+
+            /* set the runs */
+            /* FOOD FOR THOUGHT: this could be optimized, e.g.:
+             * 464->444, 484->444, 575->555, 595->555
+             * However, that would take longer. Check also how it would
+             * interact with BiDi control removal and inserting Marks.
+             */
+            runIndex=0;
+
+            /* search for the run limits and initialize visualLimit values with the run lengths */
+            i=0;
+            do {
+                /* prepare this run */
+                start=i;
+                level=levels[i];
+                if(level<minLevel) {
+                    minLevel=level;
+                }
+                if(level>maxLevel) {
+                    maxLevel=level;
+                }
+
+                /* look for the run limit */
+                while(++i<limit && levels[i]==level) {}
+
+                /* i is another run limit */
+                runs[runIndex].logicalStart=start;
+                runs[runIndex].visualLimit=i-start;
+                runs[runIndex].insertRemove=0;
+                ++runIndex;
+            } while(i<limit);
+
+            if(limit<length) {
+                /* there is a separate WS run */
+                runs[runIndex].logicalStart=limit;
+                runs[runIndex].visualLimit=length-limit;
+                /* For the trailing WS run, pBiDi->paraLevel is ok even
+                   if contextual multiple paragraphs.                   */
+                if(pBiDi->paraLevel<minLevel) {
+                    minLevel=pBiDi->paraLevel;
+                }
+            }
+
+            /* set the object fields */
+            pBiDi->runs=runs;
+            pBiDi->runCount=runCount;
+
+            reorderLine(pBiDi, minLevel, maxLevel);
+
+            /* now add the direction flags and adjust the visualLimit's to be just that */
+            /* this loop will also handle the trailing WS run */
+            limit=0;
+            for(i=0; i<runCount; ++i) {
+                ADD_ODD_BIT_FROM_LEVEL(runs[i].logicalStart, levels[runs[i].logicalStart]);
+                limit+=runs[i].visualLimit;
+                runs[i].visualLimit=limit;
+            }
+
+            /* Set the "odd" bit for the trailing WS run. */
+            /* For a RTL paragraph, it will be the *first* run in visual order. */
+            /* For the trailing WS run, pBiDi->paraLevel is ok even if
+               contextual multiple paragraphs.                          */
+            if(runIndex<runCount) {
+                int32_t trailingRun = ((pBiDi->paraLevel & 1) != 0)? 0 : runIndex;
+
+                ADD_ODD_BIT_FROM_LEVEL(runs[trailingRun].logicalStart, pBiDi->paraLevel);
+            }
+        }
+    }
+
+    /* handle insert LRM/RLM BEFORE/AFTER run */
+    if(pBiDi->insertPoints.size>0) {
+        Point *point, *start=pBiDi->insertPoints.points,
+                      *limit=start+pBiDi->insertPoints.size;
+        int32_t runIndex;
+        for(point=start; point<limit; point++) {
+            runIndex=getRunFromLogicalIndex(pBiDi, point->pos, pErrorCode);
+            pBiDi->runs[runIndex].insertRemove|=point->flag;
+        }
+    }
+
+    /* handle remove BiDi control characters */
+    if(pBiDi->controlCount>0) {
+        int32_t runIndex;
+        const UChar *start=pBiDi->text, *limit=start+pBiDi->length, *pu;
+        for(pu=start; pu<limit; pu++) {
+            if(IS_BIDI_CONTROL_CHAR(*pu)) {
+                runIndex=getRunFromLogicalIndex(pBiDi, (int32_t)(pu-start), pErrorCode);
+                pBiDi->runs[runIndex].insertRemove--;
+            }
+        }
+    }
+
+    return TRUE;
+}
+
+static UBool
+prepareReorder(const UBiDiLevel *levels, int32_t length,
+               int32_t *indexMap,
+               UBiDiLevel *pMinLevel, UBiDiLevel *pMaxLevel) {
+    int32_t start;
+    UBiDiLevel level, minLevel, maxLevel;
+
+    if(levels==NULL || length<=0) {
+        return FALSE;
+    }
+
+    /* determine minLevel and maxLevel */
+    minLevel=UBIDI_MAX_EXPLICIT_LEVEL+1;
+    maxLevel=0;
+    for(start=length; start>0;) {
+        level=levels[--start];
+        if(level>UBIDI_MAX_EXPLICIT_LEVEL+1) {
+            return FALSE;
+        }
+        if(level<minLevel) {
+            minLevel=level;
+        }
+        if(level>maxLevel) {
+            maxLevel=level;
+        }
+    }
+    *pMinLevel=minLevel;
+    *pMaxLevel=maxLevel;
+
+    /* initialize the index map */
+    for(start=length; start>0;) {
+        --start;
+        indexMap[start]=start;
+    }
+
+    return TRUE;
+}
+
+/* reorder a line based on a levels array (L2) ------------------------------ */
+
+U_CAPI void U_EXPORT2
+ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap) {
+    int32_t start, limit, sumOfSosEos;
+    UBiDiLevel minLevel = 0, maxLevel = 0;
+
+    if(indexMap==NULL || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
+        return;
+    }
+
+    /* nothing to do? */
+    if(minLevel==maxLevel && (minLevel&1)==0) {
+        return;
+    }
+
+    /* reorder only down to the lowest odd level */
+    minLevel|=1;
+
+    /* loop maxLevel..minLevel */
+    do {
+        start=0;
+
+        /* loop for all sequences of levels to reorder at the current maxLevel */
+        for(;;) {
+            /* look for a sequence of levels that are all at >=maxLevel */
+            /* look for the first index of such a sequence */
+            while(start<length && levels[start]<maxLevel) {
+                ++start;
+            }
+            if(start>=length) {
+                break;  /* no more such sequences */
+            }
+
+            /* look for the limit of such a sequence (the index behind it) */
+            for(limit=start; ++limit<length && levels[limit]>=maxLevel;) {}
+
+            /*
+             * sos=start of sequence, eos=end of sequence
+             *
+             * The closed (inclusive) interval from sos to eos includes all the logical
+             * and visual indexes within this sequence. They are logically and
+             * visually contiguous and in the same range.
+             *
+             * For each run, the new visual index=sos+eos-old visual index;
+             * we pre-add sos+eos into sumOfSosEos ->
+             * new visual index=sumOfSosEos-old visual index;
+             */
+            sumOfSosEos=start+limit-1;
+
+            /* reorder each index in the sequence */
+            do {
+                indexMap[start]=sumOfSosEos-indexMap[start];
+            } while(++start<limit);
+
+            /* start==limit */
+            if(limit==length) {
+                break;  /* no more such sequences */
+            } else {
+                start=limit+1;
+            }
+        }
+    } while(--maxLevel>=minLevel);
+}
+
+U_CAPI void U_EXPORT2
+ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap) {
+    int32_t start, end, limit, temp;
+    UBiDiLevel minLevel = 0, maxLevel = 0;
+
+    if(indexMap==NULL || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
+        return;
+    }
+
+    /* nothing to do? */
+    if(minLevel==maxLevel && (minLevel&1)==0) {
+        return;
+    }
+
+    /* reorder only down to the lowest odd level */
+    minLevel|=1;
+
+    /* loop maxLevel..minLevel */
+    do {
+        start=0;
+
+        /* loop for all sequences of levels to reorder at the current maxLevel */
+        for(;;) {
+            /* look for a sequence of levels that are all at >=maxLevel */
+            /* look for the first index of such a sequence */
+            while(start<length && levels[start]<maxLevel) {
+                ++start;
+            }
+            if(start>=length) {
+                break;  /* no more such runs */
+            }
+
+            /* look for the limit of such a sequence (the index behind it) */
+            for(limit=start; ++limit<length && levels[limit]>=maxLevel;) {}
+
+            /*
+             * Swap the entire interval of indexes from start to limit-1.
+             * We don't need to swap the levels for the purpose of this
+             * algorithm: the sequence of levels that we look at does not
+             * move anyway.
+             */
+            end=limit-1;
+            while(start<end) {
+                temp=indexMap[start];
+                indexMap[start]=indexMap[end];
+                indexMap[end]=temp;
+
+                ++start;
+                --end;
+            }
+
+            if(limit==length) {
+                break;  /* no more such sequences */
+            } else {
+                start=limit+1;
+            }
+        }
+    } while(--maxLevel>=minLevel);
+}
+
+/* API functions for logical<->visual mapping ------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode) {
+    int32_t visualIndex=UBIDI_MAP_NOWHERE;
+    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
+    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
+    RETURN_IF_BAD_RANGE(logicalIndex, 0, pBiDi->length, *pErrorCode, -1);
+
+    /* we can do the trivial cases without the runs array */
+    switch(pBiDi->direction) {
+    case UBIDI_LTR:
+        visualIndex=logicalIndex;
+        break;
+    case UBIDI_RTL:
+        visualIndex=pBiDi->length-logicalIndex-1;
+        break;
+    default:
+        if(!ubidi_getRuns(pBiDi, pErrorCode)) {
+            *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+            return -1;
+        } else {
+            Run *runs=pBiDi->runs;
+            int32_t i, visualStart=0, offset, length;
+
+            /* linear search for the run, search on the visual runs */
+            for(i=0; i<pBiDi->runCount; ++i) {
+                length=runs[i].visualLimit-visualStart;
+                offset=logicalIndex-GET_INDEX(runs[i].logicalStart);
+                if(offset>=0 && offset<length) {
+                    if(IS_EVEN_RUN(runs[i].logicalStart)) {
+                        /* LTR */
+                        visualIndex=visualStart+offset;
+                    } else {
+                        /* RTL */
+                        visualIndex=visualStart+length-offset-1;
+                    }
+                    break;          /* exit for loop */
+                }
+                visualStart+=length;
+            }
+            if(i>=pBiDi->runCount) {
+                return UBIDI_MAP_NOWHERE;
+            }
+        }
+    }
+
+    if(pBiDi->insertPoints.size>0) {
+        /* add the number of added marks until the calculated visual index */
+        Run *runs=pBiDi->runs;
+        int32_t i, length, insertRemove;
+        int32_t visualStart=0, markFound=0;
+        for(i=0; ; i++, visualStart+=length) {
+            length=runs[i].visualLimit-visualStart;
+            insertRemove=runs[i].insertRemove;
+            if(insertRemove & (LRM_BEFORE|RLM_BEFORE)) {
+                markFound++;
+            }
+            /* is it the run containing the visual index? */
+            if(visualIndex<runs[i].visualLimit) {
+                return visualIndex+markFound;
+            }
+            if(insertRemove & (LRM_AFTER|RLM_AFTER)) {
+                markFound++;
+            }
+        }
+    }
+    else if(pBiDi->controlCount>0) {
+        /* subtract the number of controls until the calculated visual index */
+        Run *runs=pBiDi->runs;
+        int32_t i, j, start, limit, length, insertRemove;
+        int32_t visualStart=0, controlFound=0;
+        UChar uchar=pBiDi->text[logicalIndex];
+        /* is the logical index pointing to a control ? */
+        if(IS_BIDI_CONTROL_CHAR(uchar)) {
+            return UBIDI_MAP_NOWHERE;
+        }
+        /* loop on runs */
+        for(i=0; ; i++, visualStart+=length) {
+            length=runs[i].visualLimit-visualStart;
+            insertRemove=runs[i].insertRemove;
+            /* calculated visual index is beyond this run? */
+            if(visualIndex>=runs[i].visualLimit) {
+                controlFound-=insertRemove;
+                continue;
+            }
+            /* calculated visual index must be within current run */
+            if(insertRemove==0) {
+                return visualIndex-controlFound;
+            }
+            if(IS_EVEN_RUN(runs[i].logicalStart)) {
+                /* LTR: check from run start to logical index */
+                start=runs[i].logicalStart;
+                limit=logicalIndex;
+            } else {
+                /* RTL: check from logical index to run end */
+                start=logicalIndex+1;
+                limit=GET_INDEX(runs[i].logicalStart)+length;
+            }
+            for(j=start; j<limit; j++) {
+                uchar=pBiDi->text[j];
+                if(IS_BIDI_CONTROL_CHAR(uchar)) {
+                    controlFound++;
+                }
+            }
+            return visualIndex-controlFound;
+        }
+    }
+
+    return visualIndex;
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode) {
+    Run *runs;
+    int32_t i, runCount, start;
+    RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, -1);
+    RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
+    RETURN_IF_BAD_RANGE(visualIndex, 0, pBiDi->resultLength, *pErrorCode, -1);
+    /* we can do the trivial cases without the runs array */
+    if(pBiDi->insertPoints.size==0 && pBiDi->controlCount==0) {
+        if(pBiDi->direction==UBIDI_LTR) {
+            return visualIndex;
+        }
+        else if(pBiDi->direction==UBIDI_RTL) {
+            return pBiDi->length-visualIndex-1;
+        }
+    }
+    if(!ubidi_getRuns(pBiDi, pErrorCode)) {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return -1;
+    }
+
+    runs=pBiDi->runs;
+    runCount=pBiDi->runCount;
+    if(pBiDi->insertPoints.size>0) {
+        /* handle inserted LRM/RLM */
+        int32_t markFound=0, insertRemove;
+        int32_t visualStart=0, length;
+        runs=pBiDi->runs;
+        /* subtract number of marks until visual index */
+        for(i=0; ; i++, visualStart+=length) {
+            length=runs[i].visualLimit-visualStart;
+            insertRemove=runs[i].insertRemove;
+            if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
+                if(visualIndex<=(visualStart+markFound)) {
+                    return UBIDI_MAP_NOWHERE;
+                }
+                markFound++;
+            }
+            /* is adjusted visual index within this run? */
+            if(visualIndex<(runs[i].visualLimit+markFound)) {
+                visualIndex-=markFound;
+                break;
+            }
+            if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
+                if(visualIndex==(visualStart+length+markFound)) {
+                    return UBIDI_MAP_NOWHERE;
+                }
+                markFound++;
+            }
+        }
+    }
+    else if(pBiDi->controlCount>0) {
+        /* handle removed BiDi control characters */
+        int32_t controlFound=0, insertRemove, length;
+        int32_t logicalStart, logicalEnd, visualStart=0, j, k;
+        UChar uchar;
+        UBool evenRun;
+        /* add number of controls until visual index */
+        for(i=0; ; i++, visualStart+=length) {
+            length=runs[i].visualLimit-visualStart;
+            insertRemove=runs[i].insertRemove;
+            /* is adjusted visual index beyond current run? */
+            if(visualIndex>=(runs[i].visualLimit-controlFound+insertRemove)) {
+                controlFound-=insertRemove;
+                continue;
+            }
+            /* adjusted visual index is within current run */
+            if(insertRemove==0) {
+                visualIndex+=controlFound;
+                break;
+            }
+            /* count non-control chars until visualIndex */
+            logicalStart=runs[i].logicalStart;
+            evenRun=IS_EVEN_RUN(logicalStart);
+            REMOVE_ODD_BIT(logicalStart);
+            logicalEnd=logicalStart+length-1;
+            for(j=0; j<length; j++) {
+                k= evenRun ? logicalStart+j : logicalEnd-j;
+                uchar=pBiDi->text[k];
+                if(IS_BIDI_CONTROL_CHAR(uchar)) {
+                    controlFound++;
+                }
+                if((visualIndex+controlFound)==(visualStart+j)) {
+                    break;
+                }
+            }
+            visualIndex+=controlFound;
+            break;
+        }
+    }
+    /* handle all cases */
+    if(runCount<=10) {
+        /* linear search for the run */
+        for(i=0; visualIndex>=runs[i].visualLimit; ++i) {}
+    } else {
+        /* binary search for the run */
+        int32_t begin=0, limit=runCount;
+
+        /* the middle if() is guaranteed to find the run, we don't need a loop limit */
+        for(;;) {
+            i=(begin+limit)/2;
+            if(visualIndex>=runs[i].visualLimit) {
+                begin=i+1;
+            } else if(i==0 || visualIndex>=runs[i-1].visualLimit) {
+                break;
+            } else {
+                limit=i;
+            }
+        }
+    }
+
+    start=runs[i].logicalStart;
+    if(IS_EVEN_RUN(start)) {
+        /* LTR */
+        /* the offset in runs[i] is visualIndex-runs[i-1].visualLimit */
+        if(i>0) {
+            visualIndex-=runs[i-1].visualLimit;
+        }
+        return start+visualIndex;
+    } else {
+        /* RTL */
+        return GET_INDEX(start)+runs[i].visualLimit-visualIndex-1;
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    /* ubidi_countRuns() checks for VALID_PARA_OR_LINE */
+    ubidi_countRuns(pBiDi, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        /* no op */
+    } else if(indexMap==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+    } else {
+        /* fill a logical-to-visual index map using the runs[] */
+        int32_t visualStart, visualLimit, i, j, k;
+        int32_t logicalStart, logicalLimit;
+        Run *runs=pBiDi->runs;
+        if (pBiDi->length<=0) {
+            return;
+        }
+        if (pBiDi->length>pBiDi->resultLength) {
+            uprv_memset(indexMap, 0xFF, pBiDi->length*sizeof(int32_t));
+        }
+
+        visualStart=0;
+        for(j=0; j<pBiDi->runCount; ++j) {
+            logicalStart=GET_INDEX(runs[j].logicalStart);
+            visualLimit=runs[j].visualLimit;
+            if(IS_EVEN_RUN(runs[j].logicalStart)) {
+                do { /* LTR */
+                    indexMap[logicalStart++]=visualStart++;
+                } while(visualStart<visualLimit);
+            } else {
+                logicalStart+=visualLimit-visualStart;  /* logicalLimit */
+                do { /* RTL */
+                    indexMap[--logicalStart]=visualStart++;
+                } while(visualStart<visualLimit);
+            }
+            /* visualStart==visualLimit; */
+        }
+
+        if(pBiDi->insertPoints.size>0) {
+            int32_t markFound=0, runCount=pBiDi->runCount;
+            int32_t length, insertRemove;
+            visualStart=0;
+            /* add number of marks found until each index */
+            for(i=0; i<runCount; i++, visualStart+=length) {
+                length=runs[i].visualLimit-visualStart;
+                insertRemove=runs[i].insertRemove;
+                if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
+                    markFound++;
+                }
+                if(markFound>0) {
+                    logicalStart=GET_INDEX(runs[i].logicalStart);
+                    logicalLimit=logicalStart+length;
+                    for(j=logicalStart; j<logicalLimit; j++) {
+                        indexMap[j]+=markFound;
+                    }
+                }
+                if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
+                    markFound++;
+                }
+            }
+        }
+        else if(pBiDi->controlCount>0) {
+            int32_t controlFound=0, runCount=pBiDi->runCount;
+            int32_t length, insertRemove;
+            UBool evenRun;
+            UChar uchar;
+            visualStart=0;
+            /* subtract number of controls found until each index */
+            for(i=0; i<runCount; i++, visualStart+=length) {
+                length=runs[i].visualLimit-visualStart;
+                insertRemove=runs[i].insertRemove;
+                /* no control found within previous runs nor within this run */
+                if((controlFound-insertRemove)==0) {
+                    continue;
+                }
+                logicalStart=runs[i].logicalStart;
+                evenRun=IS_EVEN_RUN(logicalStart);
+                REMOVE_ODD_BIT(logicalStart);
+                logicalLimit=logicalStart+length;
+                /* if no control within this run */
+                if(insertRemove==0) {
+                    for(j=logicalStart; j<logicalLimit; j++) {
+                        indexMap[j]-=controlFound;
+                    }
+                    continue;
+                }
+                for(j=0; j<length; j++) {
+                    k= evenRun ? logicalStart+j : logicalLimit-j-1;
+                    uchar=pBiDi->text[k];
+                    if(IS_BIDI_CONTROL_CHAR(uchar)) {
+                        controlFound++;
+                        indexMap[k]=UBIDI_MAP_NOWHERE;
+                        continue;
+                    }
+                    indexMap[k]-=controlFound;
+                }
+            }
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
+    RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
+    if(indexMap==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    /* ubidi_countRuns() checks for VALID_PARA_OR_LINE */
+    ubidi_countRuns(pBiDi, pErrorCode);
+    if(U_SUCCESS(*pErrorCode)) {
+        /* fill a visual-to-logical index map using the runs[] */
+        Run *runs=pBiDi->runs, *runsLimit=runs+pBiDi->runCount;
+        int32_t logicalStart, visualStart, visualLimit, *pi=indexMap;
+
+        if (pBiDi->resultLength<=0) {
+            return;
+        }
+        visualStart=0;
+        for(; runs<runsLimit; ++runs) {
+            logicalStart=runs->logicalStart;
+            visualLimit=runs->visualLimit;
+            if(IS_EVEN_RUN(logicalStart)) {
+                do { /* LTR */
+                    *pi++ = logicalStart++;
+                } while(++visualStart<visualLimit);
+            } else {
+                REMOVE_ODD_BIT(logicalStart);
+                logicalStart+=visualLimit-visualStart;  /* logicalLimit */
+                do { /* RTL */
+                    *pi++ = --logicalStart;
+                } while(++visualStart<visualLimit);
+            }
+            /* visualStart==visualLimit; */
+        }
+
+        if(pBiDi->insertPoints.size>0) {
+            int32_t markFound=0, runCount=pBiDi->runCount;
+            int32_t insertRemove, i, j, k;
+            runs=pBiDi->runs;
+            /* count all inserted marks */
+            for(i=0; i<runCount; i++) {
+                insertRemove=runs[i].insertRemove;
+                if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
+                    markFound++;
+                }
+                if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
+                    markFound++;
+                }
+            }
+            /* move back indexes by number of preceding marks */
+            k=pBiDi->resultLength;
+            for(i=runCount-1; i>=0 && markFound>0; i--) {
+                insertRemove=runs[i].insertRemove;
+                if(insertRemove&(LRM_AFTER|RLM_AFTER)) {
+                    indexMap[--k]= UBIDI_MAP_NOWHERE;
+                    markFound--;
+                }
+                visualStart= i>0 ? runs[i-1].visualLimit : 0;
+                for(j=runs[i].visualLimit-1; j>=visualStart && markFound>0; j--) {
+                    indexMap[--k]=indexMap[j];
+                }
+                if(insertRemove&(LRM_BEFORE|RLM_BEFORE)) {
+                    indexMap[--k]= UBIDI_MAP_NOWHERE;
+                    markFound--;
+                }
+            }
+        }
+        else if(pBiDi->controlCount>0) {
+            int32_t runCount=pBiDi->runCount, logicalEnd;
+            int32_t insertRemove, length, i, j, k, m;
+            UChar uchar;
+            UBool evenRun;
+            runs=pBiDi->runs;
+            visualStart=0;
+            /* move forward indexes by number of preceding controls */
+            k=0;
+            for(i=0; i<runCount; i++, visualStart+=length) {
+                length=runs[i].visualLimit-visualStart;
+                insertRemove=runs[i].insertRemove;
+                /* if no control found yet, nothing to do in this run */
+                if((insertRemove==0)&&(k==visualStart)) {
+                    k+=length;
+                    continue;
+                }
+                /* if no control in this run */
+                if(insertRemove==0) {
+                    visualLimit=runs[i].visualLimit;
+                    for(j=visualStart; j<visualLimit; j++) {
+                        indexMap[k++]=indexMap[j];
+                    }
+                    continue;
+                }
+                logicalStart=runs[i].logicalStart;
+                evenRun=IS_EVEN_RUN(logicalStart);
+                REMOVE_ODD_BIT(logicalStart);
+                logicalEnd=logicalStart+length-1;
+                for(j=0; j<length; j++) {
+                    m= evenRun ? logicalStart+j : logicalEnd-j;
+                    uchar=pBiDi->text[m];
+                    if(!IS_BIDI_CONTROL_CHAR(uchar)) {
+                        indexMap[k++]=m;
+                    }
+                }
+            }
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length) {
+    if(srcMap!=NULL && destMap!=NULL && length>0) {
+        const int32_t *pi;
+        int32_t destLength=-1, count=0;
+        /* find highest value and count positive indexes in srcMap */
+        pi=srcMap+length;
+        while(pi>srcMap) {
+            if(*--pi>destLength) {
+                destLength=*pi;
+            }
+            if(*pi>=0) {
+                count++;
+            }
+        }
+        destLength++;           /* add 1 for origin 0 */
+        if(count<destLength) {
+            /* we must fill unmatched destMap entries with -1 */
+            uprv_memset(destMap, 0xFF, destLength*sizeof(int32_t));
+        }
+        pi=srcMap+length;
+        while(length>0) {
+            if(*--pi>=0) {
+                destMap[*pi]=--length;
+            } else {
+                --length;
+            }
+        }
+    }
+}
diff --git a/source/common/ubiditransform.c b/source/common/ubiditransform.c
new file mode 100644 (file)
index 0000000..5f83a2b
--- /dev/null
@@ -0,0 +1,528 @@
+/*
+******************************************************************************
+*
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
+* License & terms of use: http://www.unicode.org/copyright.html
+*
+******************************************************************************
+*   file name:  ubiditransform.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2016jul24
+*   created by: Lina Kemmel
+*
+*/
+
+#include "cmemory.h"
+#include "unicode/ubidi.h"
+#include "unicode/ustring.h"
+#include "unicode/ushape.h"
+#include "unicode/utf16.h"
+#include "ustr_imp.h"
+#include "unicode/ubiditransform.h"
+
+/* Some convenience defines */
+#define LTR                     UBIDI_LTR
+#define RTL                     UBIDI_RTL
+#define LOGICAL                 UBIDI_LOGICAL
+#define VISUAL                  UBIDI_VISUAL
+#define SHAPE_LOGICAL           U_SHAPE_TEXT_DIRECTION_LOGICAL
+#define SHAPE_VISUAL            U_SHAPE_TEXT_DIRECTION_VISUAL_LTR
+
+#define CHECK_LEN(STR, LEN, ERROR) { \
+        if (LEN == 0) return 0; \
+        if (LEN < -1) { *(ERROR) = U_ILLEGAL_ARGUMENT_ERROR; return 0; } \
+        if (LEN == -1) LEN = u_strlen(STR); \
+    } 
+
+#define MAX_ACTIONS     7
+
+/**
+ * Typedef for a pointer to a function, which performs some operation (such as
+ * reordering, setting "inverse" mode, character mirroring, etc.). Return value
+ * indicates whether the text was changed in the course of this operation or
+ * not.
+ */
+typedef UBool (*UBiDiAction)(UBiDiTransform *, UErrorCode *);
+
+/**
+ * Structure that holds a predefined reordering scheme, including the following
+ * information:
+ * <ul>
+ * <li>an input base direction,</li>
+ * <li>an input order,</li>
+ * <li>an output base direction,</li>
+ * <li>an output order,</li>
+ * <li>a digit shaping direction,</li>
+ * <li>a letter shaping direction,</li>
+ * <li>a base direction that should be applied when the reordering engine is
+ *     invoked (which can not always be derived from the caller-defined
+ *     options),</li>
+ * <li>an array of pointers to functions that accomplish the bidi layout
+ *     transformation.</li>
+ * </ul>
+ */
+typedef struct {
+    UBiDiLevel        inLevel;               /* input level */
+    UBiDiOrder        inOrder;               /* input order */
+    UBiDiLevel        outLevel;              /* output level */
+    UBiDiOrder        outOrder;              /* output order */
+    uint32_t          digitsDir;             /* digit shaping direction */
+    uint32_t          lettersDir;            /* letter shaping direction */
+    UBiDiLevel        baseLevel;             /* paragraph level to be used with setPara */
+    const UBiDiAction actions[MAX_ACTIONS];  /* array of pointers to functions carrying out the transformation */
+} ReorderingScheme;
+
+struct UBiDiTransform {
+    UBiDi                   *pBidi;             /* pointer to a UBiDi object */
+    const ReorderingScheme  *pActiveScheme;     /* effective reordering scheme */
+    UChar                   *src;               /* input text */
+    UChar                   *dest;              /* output text */
+    uint32_t                srcLength;          /* input text length - not really needed as we are zero-terminated and can u_strlen */
+    uint32_t                srcSize;            /* input text capacity excluding the trailing zero */
+    uint32_t                destSize;           /* output text capacity */
+    uint32_t                *pDestLength;       /* number of UChars written to dest */
+    uint32_t                reorderingOptions;  /* reordering options - currently only suppot DO_MIRRORING */
+    uint32_t                digits;             /* digit option for ArabicShaping */
+    uint32_t                letters;            /* letter option for ArabicShaping */
+};
+
+U_DRAFT UBiDiTransform* U_EXPORT2
+ubiditransform_open(UErrorCode *pErrorCode)
+{
+    UBiDiTransform *pBiDiTransform = NULL;
+    if (U_SUCCESS(*pErrorCode)) {
+        pBiDiTransform = (UBiDiTransform*) uprv_calloc(1, sizeof(UBiDiTransform));
+        if (pBiDiTransform == NULL) {
+            *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
+        }
+    }
+    return pBiDiTransform;
+}
+
+U_DRAFT void U_EXPORT2
+ubiditransform_close(UBiDiTransform *pBiDiTransform)
+{
+    if (pBiDiTransform != NULL) {
+        if (pBiDiTransform->pBidi != NULL) {
+            ubidi_close(pBiDiTransform->pBidi);
+        }
+        if (pBiDiTransform->src != NULL) {
+            uprv_free(pBiDiTransform->src);
+        }
+        uprv_free(pBiDiTransform);
+    }
+}
+
+/**
+ * Performs Bidi resolution of text.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_resolve(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    ubidi_setPara(pTransform->pBidi, pTransform->src, pTransform->srcLength,
+            pTransform->pActiveScheme->baseLevel, NULL, pErrorCode);
+    return FALSE;
+}
+
+/**
+ * Performs basic reordering of text (Logical -> Visual LTR).
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_reorder(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    ubidi_writeReordered(pTransform->pBidi, pTransform->dest, pTransform->destSize,
+            pTransform->reorderingOptions, pErrorCode);
+
+    *pTransform->pDestLength = pTransform->srcLength;
+    pTransform->reorderingOptions = UBIDI_REORDER_DEFAULT;
+    return TRUE;
+}
+
+/**
+ * Sets "inverse" mode on the <code>UBiDi</code> object.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_setInverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    ubidi_setInverse(pTransform->pBidi, TRUE);
+    ubidi_setReorderingMode(pTransform->pBidi, UBIDI_REORDER_INVERSE_LIKE_DIRECT);
+    return FALSE;
+}
+
+/**
+ * Sets "runs only" reordering mode indicating a Logical LTR <-> Logical RTL
+ * transformation.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_setRunsOnly(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    ubidi_setReorderingMode(pTransform->pBidi, UBIDI_REORDER_RUNS_ONLY);
+    return FALSE;
+}
+
+/**
+ * Performs string reverse.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_reverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    ubidi_writeReverse(pTransform->src, pTransform->srcLength,
+            pTransform->dest, pTransform->destSize,
+            UBIDI_REORDER_DEFAULT, pErrorCode);
+    *pTransform->pDestLength = pTransform->srcLength;
+    return TRUE;
+}
+
+/**
+ * Applies a new value to the text that serves as input at the current
+ * processing step. This value is identical to the original one when we begin
+ * the processing, but usually changes as the transformation progresses.
+ * 
+ * @param pTransform A pointer to the <code>UBiDiTransform</code> structure.
+ * @param newSrc A pointer whose value is to be used as input text.
+ * @param newLength A length of the new text in <code>UChar</code>s.
+ * @param newSize A new source capacity in <code>UChar</code>s.
+ * @param pErrorCode Pointer to the error code value.
+ */
+static void
+updateSrc(UBiDiTransform *pTransform, const UChar *newSrc, uint32_t newLength,
+        uint32_t newSize, UErrorCode *pErrorCode)
+{
+    if (newSize < newLength) {
+        *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
+        return;
+    }
+    if (newSize > pTransform->srcSize) {
+        newSize += 50; // allocate slightly more than needed right now
+        if (pTransform->src != NULL) {
+            uprv_free(pTransform->src);
+            pTransform->src = NULL;
+        }
+        pTransform->src = (UChar *)uprv_malloc(newSize * sizeof(UChar));
+        if (pTransform->src == NULL) {
+            *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
+            //pTransform->srcLength = pTransform->srcSize = 0;
+            return;
+        }
+        pTransform->srcSize = newSize;
+    }
+    u_strncpy(pTransform->src, newSrc, newLength);
+    pTransform->srcLength = u_terminateUChars(pTransform->src,
+               pTransform->srcSize, newLength, pErrorCode);
+}
+
+/**
+ * Calls a lower level shaping function.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param options Shaping options.
+ * @param pErrorCode Pointer to the error code value.
+ */
+static void
+doShape(UBiDiTransform *pTransform, uint32_t options, UErrorCode *pErrorCode)
+{
+    *pTransform->pDestLength = u_shapeArabic(pTransform->src,
+            pTransform->srcLength, pTransform->dest, pTransform->destSize,
+            options, pErrorCode);
+}
+
+/**
+ * Performs digit and letter shaping.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_shapeArabic(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    if ((pTransform->letters | pTransform->digits) == 0) {
+        return FALSE;
+    }
+    if (pTransform->pActiveScheme->lettersDir == pTransform->pActiveScheme->digitsDir) {
+        doShape(pTransform, pTransform->letters | pTransform->digits | pTransform->pActiveScheme->lettersDir,
+                pErrorCode);
+    } else {
+        doShape(pTransform, pTransform->digits | pTransform->pActiveScheme->digitsDir, pErrorCode);
+        if (U_SUCCESS(*pErrorCode)) {
+            updateSrc(pTransform, pTransform->dest, *pTransform->pDestLength,
+                    *pTransform->pDestLength, pErrorCode);
+            doShape(pTransform, pTransform->letters | pTransform->pActiveScheme->lettersDir,
+                    pErrorCode);
+        }
+    }
+    return TRUE;
+}
+
+/**
+ * Performs character mirroring.
+ * 
+ * @param pTransform Pointer to the <code>UBiDiTransform</code> structure.
+ * @param pErrorCode Pointer to the error code value.
+ *
+ * @return Whether or not this function modifies the text. Besides the return
+ * value, the caller should also check <code>U_SUCCESS(*pErrorCode)</code>.
+ */
+static UBool
+action_mirror(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
+{
+    UChar32 c;
+    uint32_t i = 0, j = 0;
+    if (0 == (pTransform->reorderingOptions & UBIDI_DO_MIRRORING)) {
+        return FALSE;
+    }
+    if (pTransform->destSize < pTransform->srcLength) {
+        *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
+        return FALSE;
+    }
+    do {
+        UBool isOdd = ubidi_getLevelAt(pTransform->pBidi, i) & 1;
+        U16_NEXT(pTransform->src, i, pTransform->srcLength, c); 
+        U16_APPEND_UNSAFE(pTransform->dest, j, isOdd ? u_charMirror(c) : c);
+    } while (i < pTransform->srcLength);
+    
+    *pTransform->pDestLength = pTransform->srcLength;
+    pTransform->reorderingOptions = UBIDI_REORDER_DEFAULT;
+    return TRUE;
+}
+
+/**
+ * All possible reordering schemes.
+ *
+ */
+static const ReorderingScheme Schemes[] =
+{
+    /* 0: Logical LTR => Visual LTR */
+    {LTR, LOGICAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
+            {action_shapeArabic, action_resolve, action_reorder, NULL}},
+    /* 1: Logical RTL => Visual LTR */
+    {RTL, LOGICAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
+            {action_resolve, action_reorder, action_shapeArabic, NULL}},
+    /* 2: Logical LTR => Visual RTL */
+    {LTR, LOGICAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
+            {action_shapeArabic, action_resolve, action_reorder, action_reverse, NULL}},
+    /* 3: Logical RTL => Visual RTL */
+    {RTL, LOGICAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
+            {action_resolve, action_reorder, action_shapeArabic, action_reverse, NULL}},
+    /* 4: Visual LTR => Logical RTL */
+    {LTR, VISUAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
+            {action_shapeArabic, action_setInverse, action_resolve, action_reorder, NULL}},
+    /* 5: Visual RTL => Logical RTL */
+    {RTL, VISUAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
+            {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_reorder, NULL}},
+    /* 6: Visual LTR => Logical LTR */
+    {LTR, VISUAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
+            {action_setInverse, action_resolve, action_reorder, action_shapeArabic, NULL}},
+    /* 7: Visual RTL => Logical LTR */
+    {RTL, VISUAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
+            {action_reverse, action_setInverse, action_resolve, action_reorder, action_shapeArabic, NULL}},
+    /* 8: Logical LTR => Logical RTL */
+    {LTR, LOGICAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
+            {action_shapeArabic, action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, NULL}},
+    /* 9: Logical RTL => Logical LTR */
+    {RTL, LOGICAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, RTL,
+            {action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, action_shapeArabic, NULL}},
+    /* 10: Visual LTR => Visual RTL */
+    {LTR, VISUAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
+            {action_shapeArabic, action_setInverse, action_resolve, action_mirror, action_reverse, NULL}},
+    /* 11: Visual RTL => Visual LTR */
+    {RTL, VISUAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
+            {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_mirror, NULL}},
+    /* 12: Logical LTR => Logical LTR */
+    {LTR, LOGICAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
+            {action_resolve, action_mirror, action_shapeArabic, NULL}},
+    /* 13: Logical RTL => Logical RTL */
+    {RTL, LOGICAL, RTL, LOGICAL, SHAPE_VISUAL, SHAPE_LOGICAL, RTL,
+            {action_resolve, action_mirror, action_shapeArabic, NULL}},
+    /* 14: Visual LTR => Visual LTR */
+    {LTR, VISUAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
+            {action_resolve, action_mirror, action_shapeArabic, NULL}},
+    /* 15: Visual RTL => Visual RTL */
+    {RTL, VISUAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
+            {action_reverse, action_resolve, action_mirror, action_shapeArabic, action_reverse, NULL}}
+};
+
+static const uint32_t nSchemes = sizeof(Schemes) / sizeof(*Schemes);
+
+/**
+ * When the direction option is <code>UBIDI_DEFAULT_LTR</code> or
+ * <code>UBIDI_DEFAULT_RTL</code>, resolve the base direction according to that
+ * of the first strong bidi character.
+ */
+static void
+resolveBaseDirection(const UChar *text, uint32_t length,
+        UBiDiLevel *pInLevel, UBiDiLevel *pOutLevel)
+{
+    switch (*pInLevel) {
+        case UBIDI_DEFAULT_LTR:
+        case UBIDI_DEFAULT_RTL: {
+            UBiDiLevel level = ubidi_getBaseDirection(text, length);
+            *pInLevel = level != UBIDI_NEUTRAL ? level
+                    : *pInLevel == UBIDI_DEFAULT_RTL ? RTL : LTR;
+            break;
+        }
+        default:
+            *pInLevel &= 1;
+            break;
+    }
+    switch (*pOutLevel) {
+        case UBIDI_DEFAULT_LTR:
+        case UBIDI_DEFAULT_RTL:
+            *pOutLevel = *pInLevel;
+            break;
+        default:
+            *pOutLevel &= 1;
+            break;
+    }
+}
+
+/**
+ * Finds a valid <code>ReorderingScheme</code> matching the
+ * caller-defined scheme.
+ * 
+ * @return A valid <code>ReorderingScheme</code> object or NULL
+ */
+static const ReorderingScheme*
+findMatchingScheme(UBiDiLevel inLevel, UBiDiLevel outLevel,
+        UBiDiOrder inOrder, UBiDiOrder outOrder)
+{
+    uint32_t i;
+    for (i = 0; i < nSchemes; i++) {
+        const ReorderingScheme *pScheme = Schemes + i;
+        if (inLevel == pScheme->inLevel && outLevel == pScheme->outLevel
+                && inOrder == pScheme->inOrder && outOrder == pScheme->outOrder) {
+            return pScheme;
+        }
+    }
+    return NULL;
+}
+
+U_DRAFT uint32_t U_EXPORT2
+ubiditransform_transform(UBiDiTransform *pBiDiTransform,
+            const UChar *src, int32_t srcLength,
+            UChar *dest, int32_t destSize,
+            UBiDiLevel inParaLevel, UBiDiOrder inOrder,
+            UBiDiLevel outParaLevel, UBiDiOrder outOrder,
+            UBiDiMirroring doMirroring, uint32_t shapingOptions,
+            UErrorCode *pErrorCode)
+{
+    uint32_t destLength = 0;
+    UBool textChanged = FALSE;
+    const UBiDiTransform *pOrigTransform = pBiDiTransform;
+    const UBiDiAction *action = NULL;
+
+    if (U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if (src == NULL || dest == NULL) {
+        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    CHECK_LEN(src, srcLength, pErrorCode);
+    CHECK_LEN(dest, destSize, pErrorCode);
+
+    if (pBiDiTransform == NULL) {
+        pBiDiTransform = ubiditransform_open(pErrorCode);
+        if (U_FAILURE(*pErrorCode)) {
+            return 0;
+        }
+    }
+    /* Current limitation: in multiple paragraphs will be resolved according
+       to the 1st paragraph */
+    resolveBaseDirection(src, srcLength, &inParaLevel, &outParaLevel);
+
+    pBiDiTransform->pActiveScheme = findMatchingScheme(inParaLevel, outParaLevel,
+            inOrder, outOrder);
+    if (pBiDiTransform->pActiveScheme == NULL) {
+        goto cleanup;
+    }
+    pBiDiTransform->reorderingOptions = doMirroring ? UBIDI_DO_MIRRORING
+            : UBIDI_REORDER_DEFAULT;
+
+    /* Ignore TEXT_DIRECTION_* flags, as we apply our own depending on the text
+       scheme at the time shaping is invoked. */
+    shapingOptions &= ~U_SHAPE_TEXT_DIRECTION_MASK;
+    pBiDiTransform->digits = shapingOptions & ~U_SHAPE_LETTERS_MASK;
+    pBiDiTransform->letters = shapingOptions & ~U_SHAPE_DIGITS_MASK;
+
+    updateSrc(pBiDiTransform, src, srcLength, destSize > srcLength ? destSize : srcLength, pErrorCode);
+    if (U_FAILURE(*pErrorCode)) {
+        goto cleanup;
+    }
+    if (pBiDiTransform->pBidi == NULL) {
+        pBiDiTransform->pBidi = ubidi_openSized(0, 0, pErrorCode);
+        if (U_FAILURE(*pErrorCode)) {
+            goto cleanup;
+        }
+    }
+    pBiDiTransform->dest = dest;
+    pBiDiTransform->destSize = destSize;
+    pBiDiTransform->pDestLength = &destLength;
+
+    /* Checking for U_SUCCESS() within the loop to bail out on first failure. */
+    for (action = pBiDiTransform->pActiveScheme->actions; *action && U_SUCCESS(*pErrorCode); action++) {
+        if ((*action)(pBiDiTransform, pErrorCode)) {
+            if (action + 1) {
+                updateSrc(pBiDiTransform, pBiDiTransform->dest, *pBiDiTransform->pDestLength,
+                        *pBiDiTransform->pDestLength, pErrorCode);
+            }
+            textChanged = TRUE;
+        }
+    }
+    ubidi_setInverse(pBiDiTransform->pBidi, FALSE);
+
+    if (!textChanged && U_SUCCESS(*pErrorCode)) {
+        /* Text was not changed - just copy src to dest */
+        if (destSize < srcLength) {
+            *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
+        } else {
+            u_strncpy(dest, src, srcLength);
+            destLength = srcLength;
+        }
+    }
+cleanup:
+    if (pOrigTransform != pBiDiTransform) {
+        ubiditransform_close(pBiDiTransform);
+    } else {
+        pBiDiTransform->dest = NULL;
+        pBiDiTransform->pDestLength = NULL;
+        pBiDiTransform->srcLength = 0;
+        pBiDiTransform->destSize = 0;
+    }
+    return U_FAILURE(*pErrorCode) ? 0 : destLength;
+}
diff --git a/source/common/ubidiwrt.c b/source/common/ubidiwrt.c
new file mode 100644 (file)
index 0000000..1d0c36a
--- /dev/null
@@ -0,0 +1,640 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 2000-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  ubidiwrt.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 1999aug06
+*   created by: Markus W. Scherer, updated by Matitiahu Allouche
+*
+* This file contains implementations for BiDi functions that use
+* the core algorithm and core API to write reordered text.
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "unicode/uchar.h"
+#include "unicode/ubidi.h"
+#include "unicode/utf16.h"
+#include "cmemory.h"
+#include "ustr_imp.h"
+#include "ubidiimp.h"
+
+/*
+ * The function implementations in this file are designed
+ * for UTF-16 and UTF-32, not for UTF-8.
+ *
+ * Assumptions that are not true for UTF-8:
+ * - Any code point always needs the same number of code units
+ *   ("minimum-length-problem" of UTF-8)
+ * - The BiDi control characters need only one code unit each
+ *
+ * Further assumptions for all UTFs:
+ * - u_charMirror(c) needs the same number of code units as c
+ */
+#if UTF_SIZE==8
+# error reimplement ubidi_writeReordered() for UTF-8, see comment above
+#endif
+
+#define IS_COMBINING(type) ((1UL<<(type))&(1UL<<U_NON_SPACING_MARK|1UL<<U_COMBINING_SPACING_MARK|1UL<<U_ENCLOSING_MARK))
+
+/*
+ * When we have UBIDI_OUTPUT_REVERSE set on ubidi_writeReordered(), then we
+ * semantically write RTL runs in reverse and later reverse them again.
+ * Instead, we actually write them in forward order to begin with.
+ * However, if the RTL run was to be mirrored, we need to mirror here now
+ * since the implicit second reversal must not do it.
+ * It looks strange to do mirroring in LTR output, but it is only because
+ * we are writing RTL output in reverse.
+ */
+static int32_t
+doWriteForward(const UChar *src, int32_t srcLength,
+               UChar *dest, int32_t destSize,
+               uint16_t options,
+               UErrorCode *pErrorCode) {
+    /* optimize for several combinations of options */
+    switch(options&(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING)) {
+    case 0: {
+        /* simply copy the LTR run to the destination */
+        int32_t length=srcLength;
+        if(destSize<length) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            return srcLength;
+        }
+        do {
+            *dest++=*src++;
+        } while(--length>0);
+        return srcLength;
+    }
+    case UBIDI_DO_MIRRORING: {
+        /* do mirroring */
+        int32_t i=0, j=0;
+        UChar32 c;
+
+        if(destSize<srcLength) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            return srcLength;
+        }
+        do {
+            U16_NEXT(src, i, srcLength, c);
+            c=u_charMirror(c);
+            U16_APPEND_UNSAFE(dest, j, c);
+        } while(i<srcLength);
+        return srcLength;
+    }
+    case UBIDI_REMOVE_BIDI_CONTROLS: {
+        /* copy the LTR run and remove any BiDi control characters */
+        int32_t remaining=destSize;
+        UChar c;
+        do {
+            c=*src++;
+            if(!IS_BIDI_CONTROL_CHAR(c)) {
+                if(--remaining<0) {
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+
+                    /* preflight the length */
+                    while(--srcLength>0) {
+                        c=*src++;
+                        if(!IS_BIDI_CONTROL_CHAR(c)) {
+                            --remaining;
+                        }
+                    }
+                    return destSize-remaining;
+                }
+                *dest++=c;
+            }
+        } while(--srcLength>0);
+        return destSize-remaining;
+    }
+    default: {
+        /* remove BiDi control characters and do mirroring */
+        int32_t remaining=destSize;
+        int32_t i, j=0;
+        UChar32 c;
+        do {
+            i=0;
+            U16_NEXT(src, i, srcLength, c);
+            src+=i;
+            srcLength-=i;
+            if(!IS_BIDI_CONTROL_CHAR(c)) {
+                remaining-=i;
+                if(remaining<0) {
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+
+                    /* preflight the length */
+                    while(srcLength>0) {
+                        c=*src++;
+                        if(!IS_BIDI_CONTROL_CHAR(c)) {
+                            --remaining;
+                        }
+                        --srcLength;
+                    }
+                    return destSize-remaining;
+                }
+                c=u_charMirror(c);
+                U16_APPEND_UNSAFE(dest, j, c);
+            }
+        } while(srcLength>0);
+        return j;
+    }
+    } /* end of switch */
+}
+
+static int32_t
+doWriteReverse(const UChar *src, int32_t srcLength,
+               UChar *dest, int32_t destSize,
+               uint16_t options,
+               UErrorCode *pErrorCode) {
+    /*
+     * RTL run -
+     *
+     * RTL runs need to be copied to the destination in reverse order
+     * of code points, not code units, to keep Unicode characters intact.
+     *
+     * The general strategy for this is to read the source text
+     * in backward order, collect all code units for a code point
+     * (and optionally following combining characters, see below),
+     * and copy all these code units in ascending order
+     * to the destination for this run.
+     *
+     * Several options request whether combining characters
+     * should be kept after their base characters,
+     * whether BiDi control characters should be removed, and
+     * whether characters should be replaced by their mirror-image
+     * equivalent Unicode characters.
+     */
+    int32_t i, j;
+    UChar32 c;
+
+    /* optimize for several combinations of options */
+    switch(options&(UBIDI_REMOVE_BIDI_CONTROLS|UBIDI_DO_MIRRORING|UBIDI_KEEP_BASE_COMBINING)) {
+    case 0:
+        /*
+         * With none of the "complicated" options set, the destination
+         * run will have the same length as the source run,
+         * and there is no mirroring and no keeping combining characters
+         * with their base characters.
+         */
+        if(destSize<srcLength) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            return srcLength;
+        }
+        destSize=srcLength;
+
+        /* preserve character integrity */
+        do {
+            /* i is always after the last code unit known to need to be kept in this segment */
+            i=srcLength;
+
+            /* collect code units for one base character */
+            U16_BACK_1(src, 0, srcLength);
+
+            /* copy this base character */
+            j=srcLength;
+            do {
+                *dest++=src[j++];
+            } while(j<i);
+        } while(srcLength>0);
+        break;
+    case UBIDI_KEEP_BASE_COMBINING:
+        /*
+         * Here, too, the destination
+         * run will have the same length as the source run,
+         * and there is no mirroring.
+         * We do need to keep combining characters with their base characters.
+         */
+        if(destSize<srcLength) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            return srcLength;
+        }
+        destSize=srcLength;
+
+        /* preserve character integrity */
+        do {
+            /* i is always after the last code unit known to need to be kept in this segment */
+            i=srcLength;
+
+            /* collect code units and modifier letters for one base character */
+            do {
+                U16_PREV(src, 0, srcLength, c);
+            } while(srcLength>0 && IS_COMBINING(u_charType(c)));
+
+            /* copy this "user character" */
+            j=srcLength;
+            do {
+                *dest++=src[j++];
+            } while(j<i);
+        } while(srcLength>0);
+        break;
+    default:
+        /*
+         * With several "complicated" options set, this is the most
+         * general and the slowest copying of an RTL run.
+         * We will do mirroring, remove BiDi controls, and
+         * keep combining characters with their base characters
+         * as requested.
+         */
+        if(!(options&UBIDI_REMOVE_BIDI_CONTROLS)) {
+            i=srcLength;
+        } else {
+            /* we need to find out the destination length of the run,
+               which will not include the BiDi control characters */
+            int32_t length=srcLength;
+            UChar ch;
+
+            i=0;
+            do {
+                ch=*src++;
+                if(!IS_BIDI_CONTROL_CHAR(ch)) {
+                    ++i;
+                }
+            } while(--length>0);
+            src-=srcLength;
+        }
+
+        if(destSize<i) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            return i;
+        }
+        destSize=i;
+
+        /* preserve character integrity */
+        do {
+            /* i is always after the last code unit known to need to be kept in this segment */
+            i=srcLength;
+
+            /* collect code units for one base character */
+            U16_PREV(src, 0, srcLength, c);
+            if(options&UBIDI_KEEP_BASE_COMBINING) {
+                /* collect modifier letters for this base character */
+                while(srcLength>0 && IS_COMBINING(u_charType(c))) {
+                    U16_PREV(src, 0, srcLength, c);
+                }
+            }
+
+            if(options&UBIDI_REMOVE_BIDI_CONTROLS && IS_BIDI_CONTROL_CHAR(c)) {
+                /* do not copy this BiDi control character */
+                continue;
+            }
+
+            /* copy this "user character" */
+            j=srcLength;
+            if(options&UBIDI_DO_MIRRORING) {
+                /* mirror only the base character */
+                int32_t k=0;
+                c=u_charMirror(c);
+                U16_APPEND_UNSAFE(dest, k, c);
+                dest+=k;
+                j+=k;
+            }
+            while(j<i) {
+                *dest++=src[j++];
+            }
+        } while(srcLength>0);
+        break;
+    } /* end of switch */
+
+    return destSize;
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_writeReverse(const UChar *src, int32_t srcLength,
+                   UChar *dest, int32_t destSize,
+                   uint16_t options,
+                   UErrorCode *pErrorCode) {
+    int32_t destLength;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    /* more error checking */
+    if( src==NULL || srcLength<-1 ||
+        destSize<0 || (destSize>0 && dest==NULL))
+    {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* do input and output overlap? */
+    if( dest!=NULL &&
+        ((src>=dest && src<dest+destSize) ||
+         (dest>=src && dest<src+srcLength)))
+    {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(srcLength==-1) {
+        srcLength=u_strlen(src);
+    }
+    if(srcLength>0) {
+        destLength=doWriteReverse(src, srcLength, dest, destSize, options, pErrorCode);
+    } else {
+        /* nothing to do */
+        destLength=0;
+    }
+
+    return u_terminateUChars(dest, destSize, destLength, pErrorCode);
+}
+
+U_CAPI int32_t U_EXPORT2
+ubidi_writeReordered(UBiDi *pBiDi,
+                     UChar *dest, int32_t destSize,
+                     uint16_t options,
+                     UErrorCode *pErrorCode) {
+    const UChar *text;
+    UChar *saveDest;
+    int32_t length, destCapacity;
+    int32_t run, runCount, logicalStart, runLength;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    /* more error checking */
+    if( pBiDi==NULL ||
+        (text=pBiDi->text)==NULL || (length=pBiDi->length)<0 ||
+        destSize<0 || (destSize>0 && dest==NULL))
+    {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* do input and output overlap? */
+    if( dest!=NULL &&
+        ((text>=dest && text<dest+destSize) ||
+         (dest>=text && dest<text+pBiDi->originalLength)))
+    {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(length==0) {
+        /* nothing to do */
+        return u_terminateUChars(dest, destSize, 0, pErrorCode);
+    }
+
+    runCount=ubidi_countRuns(pBiDi, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    /* destSize shrinks, later destination length=destCapacity-destSize */
+    saveDest=dest;
+    destCapacity=destSize;
+
+    /*
+     * Option "insert marks" implies UBIDI_INSERT_LRM_FOR_NUMERIC if the
+     * reordering mode (checked below) is appropriate.
+     */
+    if(pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
+        options|=UBIDI_INSERT_LRM_FOR_NUMERIC;
+        options&=~UBIDI_REMOVE_BIDI_CONTROLS;
+    }
+    /*
+     * Option "remove controls" implies UBIDI_REMOVE_BIDI_CONTROLS
+     * and cancels UBIDI_INSERT_LRM_FOR_NUMERIC.
+     */
+    if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
+        options|=UBIDI_REMOVE_BIDI_CONTROLS;
+        options&=~UBIDI_INSERT_LRM_FOR_NUMERIC;
+    }
+    /*
+     * If we do not perform the "inverse BiDi" algorithm, then we
+     * don't need to insert any LRMs, and don't need to test for it.
+     */
+    if((pBiDi->reorderingMode != UBIDI_REORDER_INVERSE_NUMBERS_AS_L) &&
+       (pBiDi->reorderingMode != UBIDI_REORDER_INVERSE_LIKE_DIRECT)  &&
+       (pBiDi->reorderingMode != UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL) &&
+       (pBiDi->reorderingMode != UBIDI_REORDER_RUNS_ONLY)) {
+        options&=~UBIDI_INSERT_LRM_FOR_NUMERIC;
+    }
+    /*
+     * Iterate through all visual runs and copy the run text segments to
+     * the destination, according to the options.
+     *
+     * The tests for where to insert LRMs ignore the fact that there may be
+     * BN codes or non-BMP code points at the beginning and end of a run;
+     * they may insert LRMs unnecessarily but the tests are faster this way
+     * (this would have to be improved for UTF-8).
+     *
+     * Note that the only errors that are set by doWriteXY() are buffer overflow
+     * errors. Ignore them until the end, and continue for preflighting.
+     */
+    if(!(options&UBIDI_OUTPUT_REVERSE)) {
+        /* forward output */
+        if(!(options&UBIDI_INSERT_LRM_FOR_NUMERIC)) {
+            /* do not insert BiDi controls */
+            for(run=0; run<runCount; ++run) {
+                if(UBIDI_LTR==ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength)) {
+                    runLength=doWriteForward(text+logicalStart, runLength,
+                                             dest, destSize,
+                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
+                } else {
+                    runLength=doWriteReverse(text+logicalStart, runLength,
+                                             dest, destSize,
+                                             options, pErrorCode);
+                }
+                if(dest!=NULL) {
+                  dest+=runLength;
+                }
+                destSize-=runLength;
+            }
+        } else {
+            /* insert BiDi controls for "inverse BiDi" */
+            const DirProp *dirProps=pBiDi->dirProps;
+            const UChar *src;
+            UChar uc;
+            UBiDiDirection dir;
+            int32_t markFlag;
+
+            for(run=0; run<runCount; ++run) {
+                dir=ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength);
+                src=text+logicalStart;
+                /* check if something relevant in insertPoints */
+                markFlag=pBiDi->runs[run].insertRemove;
+                if(markFlag<0) {        /* BiDi controls count */
+                    markFlag=0;
+                }
+
+                if(UBIDI_LTR==dir) {
+                    if((pBiDi->isInverse) &&
+                       (/*run>0 &&*/ dirProps[logicalStart]!=L)) {
+                        markFlag |= LRM_BEFORE;
+                    }
+                    if (markFlag & LRM_BEFORE) {
+                        uc=LRM_CHAR;
+                    }
+                    else if (markFlag & RLM_BEFORE) {
+                        uc=RLM_CHAR;
+                    }
+                    else  uc=0;
+                    if(uc) {
+                        if(destSize>0) {
+                            *dest++=uc;
+                        }
+                        --destSize;
+                    }
+
+                    runLength=doWriteForward(src, runLength,
+                                             dest, destSize,
+                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
+                    if(dest!=NULL) {
+                      dest+=runLength;
+                    }
+                    destSize-=runLength;
+
+                    if((pBiDi->isInverse) &&
+                       (/*run<runCount-1 &&*/ dirProps[logicalStart+runLength-1]!=L)) {
+                        markFlag |= LRM_AFTER;
+                    }
+                    if (markFlag & LRM_AFTER) {
+                        uc=LRM_CHAR;
+                    }
+                    else if (markFlag & RLM_AFTER) {
+                        uc=RLM_CHAR;
+                    }
+                    else  uc=0;
+                    if(uc) {
+                        if(destSize>0) {
+                            *dest++=uc;
+                        }
+                        --destSize;
+                    }
+                } else {                /* RTL run */
+                    if((pBiDi->isInverse) &&
+                       (/*run>0 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1])))) {
+                        markFlag |= RLM_BEFORE;
+                    }
+                    if (markFlag & LRM_BEFORE) {
+                        uc=LRM_CHAR;
+                    }
+                    else if (markFlag & RLM_BEFORE) {
+                        uc=RLM_CHAR;
+                    }
+                    else  uc=0;
+                    if(uc) {
+                        if(destSize>0) {
+                            *dest++=uc;
+                        }
+                        --destSize;
+                    }
+
+                    runLength=doWriteReverse(src, runLength,
+                                             dest, destSize,
+                                             options, pErrorCode);
+                    if(dest!=NULL) {
+                      dest+=runLength;
+                    }
+                    destSize-=runLength;
+
+                    if((pBiDi->isInverse) &&
+                       (/*run<runCount-1 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart])))) {
+                        markFlag |= RLM_AFTER;
+                    }
+                    if (markFlag & LRM_AFTER) {
+                        uc=LRM_CHAR;
+                    }
+                    else if (markFlag & RLM_AFTER) {
+                        uc=RLM_CHAR;
+                    }
+                    else  uc=0;
+                    if(uc) {
+                        if(destSize>0) {
+                            *dest++=uc;
+                        }
+                        --destSize;
+                    }
+                }
+            }
+        }
+    } else {
+        /* reverse output */
+        if(!(options&UBIDI_INSERT_LRM_FOR_NUMERIC)) {
+            /* do not insert BiDi controls */
+            for(run=runCount; --run>=0;) {
+                if(UBIDI_LTR==ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength)) {
+                    runLength=doWriteReverse(text+logicalStart, runLength,
+                                             dest, destSize,
+                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
+                } else {
+                    runLength=doWriteForward(text+logicalStart, runLength,
+                                             dest, destSize,
+                                             options, pErrorCode);
+                }
+                if(dest!=NULL) {
+                  dest+=runLength;
+                }
+                destSize-=runLength;
+            }
+        } else {
+            /* insert BiDi controls for "inverse BiDi" */
+            const DirProp *dirProps=pBiDi->dirProps;
+            const UChar *src;
+            UBiDiDirection dir;
+
+            for(run=runCount; --run>=0;) {
+                /* reverse output */
+                dir=ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength);
+                src=text+logicalStart;
+
+                if(UBIDI_LTR==dir) {
+                    if(/*run<runCount-1 &&*/ dirProps[logicalStart+runLength-1]!=L) {
+                        if(destSize>0) {
+                            *dest++=LRM_CHAR;
+                        }
+                        --destSize;
+                    }
+
+                    runLength=doWriteReverse(src, runLength,
+                                             dest, destSize,
+                                             (uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
+                    if(dest!=NULL) {
+                      dest+=runLength;
+                    }
+                    destSize-=runLength;
+
+                    if(/*run>0 &&*/ dirProps[logicalStart]!=L) {
+                        if(destSize>0) {
+                            *dest++=LRM_CHAR;
+                        }
+                        --destSize;
+                    }
+                } else {
+                    if(/*run<runCount-1 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart]))) {
+                        if(destSize>0) {
+                            *dest++=RLM_CHAR;
+                        }
+                        --destSize;
+                    }
+
+                    runLength=doWriteForward(src, runLength,
+                                             dest, destSize,
+                                             options, pErrorCode);
+                    if(dest!=NULL) {
+                      dest+=runLength;
+                    }
+                    destSize-=runLength;
+
+                    if(/*run>0 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1]))) {
+                        if(destSize>0) {
+                            *dest++=RLM_CHAR;
+                        }
+                        --destSize;
+                    }
+                }
+            }
+        }
+    }
+
+    return u_terminateUChars(saveDest, destCapacity, destCapacity-destSize, pErrorCode);
+}
index f8bdf5a..b02c966 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -20,7 +20,6 @@
 #include "unicode/rbbi.h"
 #include "rbbirb.h"
 #include "uassert.h"
-#include "cmemory.h"
 
 U_NAMESPACE_USE
 
@@ -120,28 +119,7 @@ ubrk_openRules(  const UChar        *rules,
 }
 
 
-U_CAPI UBreakIterator* U_EXPORT2
-ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
-                     const UChar *  text, int32_t textLength,
-                     UErrorCode *   status)
-{
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-    if (rulesLength < 0) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-    LocalPointer<RuleBasedBreakIterator> lpRBBI(new RuleBasedBreakIterator(binaryRules, rulesLength, *status), *status);
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-    UBreakIterator *uBI = reinterpret_cast<UBreakIterator *>(lpRBBI.orphan());
-    if (text != NULL) {
-        ubrk_setText(uBI, text, textLength, status);
-    }
-    return uBI;
-}
+
 
 
 U_CAPI UBreakIterator * U_EXPORT2
@@ -310,8 +288,7 @@ ubrk_getLocaleByType(const UBreakIterator *bi,
 }
 
 
-U_CAPI void U_EXPORT2
-ubrk_refreshUText(UBreakIterator *bi,
+void ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status)
 {
@@ -319,39 +296,6 @@ ubrk_refreshUText(UBreakIterator *bi,
     bii->refreshInputText(text, *status);
 }
 
-U_CAPI int32_t U_EXPORT2
-ubrk_getBinaryRules(UBreakIterator *bi,
-                    uint8_t *       binaryRules, int32_t rulesCapacity,
-                    UErrorCode *    status)
-{
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-    if ((binaryRules == NULL && rulesCapacity > 0) || rulesCapacity < 0) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    RuleBasedBreakIterator* rbbi;
-    if ((rbbi = dynamic_cast<RuleBasedBreakIterator*>(reinterpret_cast<BreakIterator*>(bi))) == NULL) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    uint32_t rulesLength;
-    const uint8_t * returnedRules = rbbi->getBinaryRules(rulesLength);
-    if (rulesLength > INT32_MAX) {
-        *status = U_INDEX_OUTOFBOUNDS_ERROR;
-        return 0;
-    }
-    if (binaryRules != NULL) { // if not preflighting
-        // Here we know rulesLength <= INT32_MAX and rulesCapacity >= 0, can cast safely
-        if ((int32_t)rulesLength > rulesCapacity) {
-            *status = U_BUFFER_OVERFLOW_ERROR;
-        } else {
-            uprv_memcpy(binaryRules, returnedRules, rulesLength);
-        }
-    }
-    return (int32_t)rulesLength;
-}
 
 
 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
index 8197f66..36ca668 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 706d728..97ded9e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucase.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -46,6 +46,13 @@ struct UCaseProps {
 #define INCLUDED_FROM_UCASE_CPP
 #include "ucase_props_data.h"
 
+/* UCaseProps singleton ----------------------------------------------------- */
+
+U_CAPI const UCaseProps * U_EXPORT2
+ucase_getSingleton() {
+    return &ucase_props_singleton;
+}
+
 /* set of property starts for UnicodeSet ------------------------------------ */
 
 static UBool U_CALLCONV
@@ -57,13 +64,13 @@ _enumPropertyStartsRange(const void *context, UChar32 start, UChar32 /*end*/, ui
 }
 
 U_CFUNC void U_EXPORT2
-ucase_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
+ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode *pErrorCode) {
     if(U_FAILURE(*pErrorCode)) {
         return;
     }
 
     /* add the start code point of each same-value range of the trie */
-    utrie2_enum(&ucase_props_singleton.trie, NULL, _enumPropertyStartsRange, sa);
+    utrie2_enum(&csp->trie, NULL, _enumPropertyStartsRange, sa);
 
     /* add code points with hardcoded properties, plus the ones following them */
 
@@ -126,14 +133,14 @@ static const uint8_t flagsOffset[256]={
 /* simple case mappings ----------------------------------------------------- */
 
 U_CAPI UChar32 U_EXPORT2
-ucase_tolower(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_tolower(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
         uint16_t excWord=*pe++;
         if(HAS_SLOT(excWord, UCASE_EXC_LOWER)) {
             GET_SLOT_VALUE(excWord, UCASE_EXC_LOWER, pe, c);
@@ -143,14 +150,14 @@ ucase_tolower(UChar32 c) {
 }
 
 U_CAPI UChar32 U_EXPORT2
-ucase_toupper(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_toupper(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)==UCASE_LOWER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
         uint16_t excWord=*pe++;
         if(HAS_SLOT(excWord, UCASE_EXC_UPPER)) {
             GET_SLOT_VALUE(excWord, UCASE_EXC_UPPER, pe, c);
@@ -160,14 +167,14 @@ ucase_toupper(UChar32 c) {
 }
 
 U_CAPI UChar32 U_EXPORT2
-ucase_totitle(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_totitle(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)==UCASE_LOWER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
         uint16_t excWord=*pe++;
         int32_t idx;
         if(HAS_SLOT(excWord, UCASE_EXC_TITLE)) {
@@ -191,7 +198,7 @@ static const UChar iDotTilde[3] = { 0x69, 0x307, 0x303 };
 
 
 U_CFUNC void U_EXPORT2
-ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
+ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa) {
     uint16_t props;
 
     /*
@@ -222,7 +229,7 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
         break;
     }
 
-    props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+    props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)!=UCASE_NONE) {
             /* add the one simple case mapping, no matter what type it is */
@@ -236,7 +243,7 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
          * c has exceptions, so there may be multiple simple and/or
          * full case mappings. Add them all.
          */
-        const uint16_t *pe0, *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+        const uint16_t *pe0, *pe=GET_EXCEPTIONS(csp, props);
         const UChar *closure;
         uint16_t excWord=*pe++;
         int32_t idx, closureLength, fullLength, length;
@@ -331,10 +338,10 @@ strcmpMax(const UChar *s, int32_t length, const UChar *t, int32_t max) {
 }
 
 U_CFUNC UBool U_EXPORT2
-ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa) {
+ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length, const USetAdder *sa) {
     int32_t i, start, limit, result, unfoldRows, unfoldRowWidth, unfoldStringWidth;
 
-    if(ucase_props_singleton.unfold==NULL || s==NULL) {
+    if(csp->unfold==NULL || s==NULL) {
         return FALSE; /* no reverse case folding data, or no string */
     }
     if(length<=1) {
@@ -348,7 +355,7 @@ ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa)
         return FALSE;
     }
 
-    const uint16_t *unfold=ucase_props_singleton.unfold;
+    const uint16_t *unfold=csp->unfold;
     unfoldRows=unfold[UCASE_UNFOLD_ROWS];
     unfoldRowWidth=unfold[UCASE_UNFOLD_ROW_WIDTH];
     unfoldStringWidth=unfold[UCASE_UNFOLD_STRING_WIDTH];
@@ -374,7 +381,7 @@ ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa)
             for(i=unfoldStringWidth; i<unfoldRowWidth && p[i]!=0;) {
                 U16_NEXT_UNSAFE(p, i, c);
                 sa->add(sa->set, c);
-                ucase_addCaseClosure(c, sa);
+                ucase_addCaseClosure(csp, c, sa);
             }
             return TRUE;
         } else if(result<0) {
@@ -423,38 +430,38 @@ U_NAMESPACE_END
 
 /** @return UCASE_NONE, UCASE_LOWER, UCASE_UPPER, UCASE_TITLE */
 U_CAPI int32_t U_EXPORT2
-ucase_getType(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_getType(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     return UCASE_GET_TYPE(props);
 }
 
 /** @return same as ucase_getType() and set bit 2 if c is case-ignorable */
 U_CAPI int32_t U_EXPORT2
-ucase_getTypeOrIgnorable(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_getTypeOrIgnorable(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     return UCASE_GET_TYPE_AND_IGNORABLE(props);
 }
 
 /** @return UCASE_NO_DOT, UCASE_SOFT_DOTTED, UCASE_ABOVE, UCASE_OTHER_ACCENT */
 static inline int32_t
-getDotType(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+getDotType(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         return props&UCASE_DOT_MASK;
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
         return (*pe>>UCASE_EXC_DOT_SHIFT)&UCASE_DOT_MASK;
     }
 }
 
 U_CAPI UBool U_EXPORT2
-ucase_isSoftDotted(UChar32 c) {
-    return (UBool)(getDotType(c)==UCASE_SOFT_DOTTED);
+ucase_isSoftDotted(const UCaseProps *csp, UChar32 c) {
+    return (UBool)(getDotType(csp, c)==UCASE_SOFT_DOTTED);
 }
 
 U_CAPI UBool U_EXPORT2
-ucase_isCaseSensitive(UChar32 c) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     return (UBool)((props&UCASE_SENSITIVE)!=0);
 }
 
@@ -538,10 +545,12 @@ ucase_isCaseSensitive(UChar32 c) {
  *     zero or more case-ignorable characters.
  */
 
+#define is_a(c) ((c)=='a' || (c)=='A')
 #define is_d(c) ((c)=='d' || (c)=='D')
 #define is_e(c) ((c)=='e' || (c)=='E')
 #define is_i(c) ((c)=='i' || (c)=='I')
 #define is_l(c) ((c)=='l' || (c)=='L')
+#define is_n(c) ((c)=='n' || (c)=='N')
 #define is_r(c) ((c)=='r' || (c)=='R')
 #define is_t(c) ((c)=='t' || (c)=='T')
 #define is_u(c) ((c)=='u' || (c)=='U')
@@ -556,7 +565,16 @@ ucase_isCaseSensitive(UChar32 c) {
  * Accepts both 2- and 3-letter codes and accepts case variants.
  */
 U_CFUNC int32_t
-ucase_getCaseLocale(const char *locale) {
+ucase_getCaseLocale(const char *locale, int32_t *locCache) {
+    int32_t result;
+    char c;
+
+    if(locCache!=NULL && (result=*locCache)!=UCASE_LOC_UNKNOWN) {
+        return result;
+    }
+
+    result=UCASE_LOC_ROOT;
+
     /*
      * This function used to use uloc_getLanguage(), but the current code
      * removes the dependency of this low-level code on uloc implementation code
@@ -566,149 +584,73 @@ ucase_getCaseLocale(const char *locale) {
      * Because this code does not want to depend on uloc, the caller must
      * pass in a non-NULL locale, i.e., may need to call uloc_getDefault().
      */
-    char c=*locale++;
-    // Fastpath for English "en" which is often used for default (=root locale) case mappings,
-    // and for Chinese "zh": Very common but no special case mapping behavior.
-    // Then check lowercase vs. uppercase to reduce the number of comparisons
-    // for other locales without special behavior.
-    if(c=='e') {
-        /* el or ell? */
+    c=*locale++;
+    if(is_t(c)) {
+        /* tr or tur? */
         c=*locale++;
-        if(is_l(c)) {
+        if(is_u(c)) {
             c=*locale++;
-            if(is_l(c)) {
-                c=*locale;
-            }
+        }
+        if(is_r(c)) {
+            c=*locale;
             if(is_sep(c)) {
-                return UCASE_LOC_GREEK;
+                result=UCASE_LOC_TURKISH;
             }
         }
-        // en, es, ... -> root
-    } else if(c=='z') {
-        return UCASE_LOC_ROOT;
-#if U_CHARSET_FAMILY==U_ASCII_FAMILY
-    } else if(c>='a') {  // ASCII a-z = 0x61..0x7a, after A-Z
-#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
-    } else if(c<='z') {  // EBCDIC a-z = 0x81..0xa9 with two gaps, before A-Z
-#else
-#   error Unknown charset family!
-#endif
-        // lowercase c
-        if(c=='t') {
-            /* tr or tur? */
+    } else if(is_a(c)) {
+        /* az or aze? */
+        c=*locale++;
+        if(is_z(c)) {
             c=*locale++;
-            if(is_u(c)) {
-                c=*locale++;
-            }
-            if(is_r(c)) {
+            if(is_e(c)) {
                 c=*locale;
-                if(is_sep(c)) {
-                    return UCASE_LOC_TURKISH;
-                }
             }
-        } else if(c=='a') {
-            /* az or aze? */
-            c=*locale++;
-            if(is_z(c)) {
-                c=*locale++;
-                if(is_e(c)) {
-                    c=*locale;
-                }
-                if(is_sep(c)) {
-                    return UCASE_LOC_TURKISH;
-                }
-            }
-        } else if(c=='l') {
-            /* lt or lit? */
-            c=*locale++;
-            if(is_i(c)) {
-                c=*locale++;
-            }
-            if(is_t(c)) {
-                c=*locale;
-                if(is_sep(c)) {
-                    return UCASE_LOC_LITHUANIAN;
-                }
+            if(is_sep(c)) {
+                result=UCASE_LOC_TURKISH;
             }
-        } else if(c=='n') {
-            /* nl or nld? */
+        }
+    } else if(is_l(c)) {
+        /* lt or lit? */
+        c=*locale++;
+        if(is_i(c)) {
             c=*locale++;
-            if(is_l(c)) {
-                c=*locale++;
-                if(is_d(c)) {
-                    c=*locale;
-                }
-                if(is_sep(c)) {
-                    return UCASE_LOC_DUTCH;
-                }
+        }
+        if(is_t(c)) {
+            c=*locale;
+            if(is_sep(c)) {
+                result=UCASE_LOC_LITHUANIAN;
             }
         }
-    } else {
-        // uppercase c
-        // Same code as for lowercase c but also check for 'E'.
-        if(c=='T') {
-            /* tr or tur? */
+    } else if(is_e(c)) {
+        /* el or ell? */
+        c=*locale++;
+        if(is_l(c)) {
             c=*locale++;
-            if(is_u(c)) {
-                c=*locale++;
-            }
-            if(is_r(c)) {
+            if(is_l(c)) {
                 c=*locale;
-                if(is_sep(c)) {
-                    return UCASE_LOC_TURKISH;
-                }
             }
-        } else if(c=='A') {
-            /* az or aze? */
-            c=*locale++;
-            if(is_z(c)) {
-                c=*locale++;
-                if(is_e(c)) {
-                    c=*locale;
-                }
-                if(is_sep(c)) {
-                    return UCASE_LOC_TURKISH;
-                }
+            if(is_sep(c)) {
+                result=UCASE_LOC_GREEK;
             }
-        } else if(c=='L') {
-            /* lt or lit? */
+        }
+    } else if(is_n(c)) {
+        /* nl or nld? */
+        c=*locale++;
+        if(is_l(c)) {
             c=*locale++;
-            if(is_i(c)) {
-                c=*locale++;
-            }
-            if(is_t(c)) {
+            if(is_d(c)) {
                 c=*locale;
-                if(is_sep(c)) {
-                    return UCASE_LOC_LITHUANIAN;
-                }
             }
-        } else if(c=='E') {
-            /* el or ell? */
-            c=*locale++;
-            if(is_l(c)) {
-                c=*locale++;
-                if(is_l(c)) {
-                    c=*locale;
-                }
-                if(is_sep(c)) {
-                    return UCASE_LOC_GREEK;
-                }
-            }
-        } else if(c=='N') {
-            /* nl or nld? */
-            c=*locale++;
-            if(is_l(c)) {
-                c=*locale++;
-                if(is_d(c)) {
-                    c=*locale;
-                }
-                if(is_sep(c)) {
-                    return UCASE_LOC_DUTCH;
-                }
+            if(is_sep(c)) {
+                result=UCASE_LOC_DUTCH;
             }
         }
     }
-    return UCASE_LOC_ROOT;
+
+    if(locCache!=NULL) {
+        *locCache=result;
+    }
+    return result;
 }
 
 /*
@@ -720,7 +662,7 @@ ucase_getCaseLocale(const char *locale) {
  * it is also cased or not.
  */
 static UBool
-isFollowedByCasedLetter(UCaseContextIterator *iter, void *context, int8_t dir) {
+isFollowedByCasedLetter(const UCaseProps *csp, UCaseContextIterator *iter, void *context, int8_t dir) {
     UChar32 c;
 
     if(iter==NULL) {
@@ -728,7 +670,7 @@ isFollowedByCasedLetter(UCaseContextIterator *iter, void *context, int8_t dir) {
     }
 
     for(/* dir!=0 sets direction */; (c=iter(context, dir))>=0; dir=0) {
-        int32_t type=ucase_getTypeOrIgnorable(c);
+        int32_t type=ucase_getTypeOrIgnorable(csp, c);
         if(type&4) {
             /* case-ignorable, continue with the loop */
         } else if(type!=UCASE_NONE) {
@@ -743,7 +685,7 @@ isFollowedByCasedLetter(UCaseContextIterator *iter, void *context, int8_t dir) {
 
 /* Is preceded by Soft_Dotted character with no intervening cc=230 ? */
 static UBool
-isPrecededBySoftDotted(UCaseContextIterator *iter, void *context) {
+isPrecededBySoftDotted(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -753,7 +695,7 @@ isPrecededBySoftDotted(UCaseContextIterator *iter, void *context) {
     }
 
     for(dir=-1; (c=iter(context, dir))>=0; dir=0) {
-        dotType=getDotType(c);
+        dotType=getDotType(csp, c);
         if(dotType==UCASE_SOFT_DOTTED) {
             return TRUE; /* preceded by TYPE_i */
         } else if(dotType!=UCASE_OTHER_ACCENT) {
@@ -800,7 +742,7 @@ isPrecededBySoftDotted(UCaseContextIterator *iter, void *context) {
 
 /* Is preceded by base character 'I' with no intervening cc=230 ? */
 static UBool
-isPrecededBy_I(UCaseContextIterator *iter, void *context) {
+isPrecededBy_I(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -813,7 +755,7 @@ isPrecededBy_I(UCaseContextIterator *iter, void *context) {
         if(c==0x49) {
             return TRUE; /* preceded by I */
         }
-        dotType=getDotType(c);
+        dotType=getDotType(csp, c);
         if(dotType!=UCASE_OTHER_ACCENT) {
             return FALSE; /* preceded by different base character (not I), or intervening cc==230 */
         }
@@ -824,7 +766,7 @@ isPrecededBy_I(UCaseContextIterator *iter, void *context) {
 
 /* Is followed by one or more cc==230 ? */
 static UBool
-isFollowedByMoreAbove(UCaseContextIterator *iter, void *context) {
+isFollowedByMoreAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -834,7 +776,7 @@ isFollowedByMoreAbove(UCaseContextIterator *iter, void *context) {
     }
 
     for(dir=1; (c=iter(context, dir))>=0; dir=0) {
-        dotType=getDotType(c);
+        dotType=getDotType(csp, c);
         if(dotType==UCASE_ABOVE) {
             return TRUE; /* at least one cc==230 following */
         } else if(dotType!=UCASE_OTHER_ACCENT) {
@@ -847,7 +789,7 @@ isFollowedByMoreAbove(UCaseContextIterator *iter, void *context) {
 
 /* Is followed by a dot above (without cc==230 in between) ? */
 static UBool
-isFollowedByDotAbove(UCaseContextIterator *iter, void *context) {
+isFollowedByDotAbove(const UCaseProps *csp, UCaseContextIterator *iter, void *context) {
     UChar32 c;
     int32_t dotType;
     int8_t dir;
@@ -860,7 +802,7 @@ isFollowedByDotAbove(UCaseContextIterator *iter, void *context) {
         if(c==0x307) {
             return TRUE;
         }
-        dotType=getDotType(c);
+        dotType=getDotType(csp, c);
         if(dotType!=UCASE_OTHER_ACCENT) {
             return FALSE; /* next base character or cc==230 in between */
         }
@@ -870,20 +812,20 @@ isFollowedByDotAbove(UCaseContextIterator *iter, void *context) {
 }
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullLower(UChar32 c,
+ucase_toFullLower(const UCaseProps *csp, UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  int32_t loc) {
+                  const char *locale, int32_t *locCache) {
     // The sign of the result has meaning, input must be non-negative so that it can be returned as is.
     U_ASSERT(c >= 0);
     UChar32 result=c;
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             result=c+UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props), *pe2;
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props), *pe2;
         uint16_t excWord=*pe++;
         int32_t full;
 
@@ -891,6 +833,7 @@ ucase_toFullLower(UChar32 c,
 
         if(excWord&UCASE_EXC_CONDITIONAL_SPECIAL) {
             /* use hardcoded conditions and mappings */
+            int32_t loc=ucase_getCaseLocale(locale, locCache);
 
             /*
              * Test for conditional mappings first
@@ -901,7 +844,7 @@ ucase_toFullLower(UChar32 c,
             if( loc==UCASE_LOC_LITHUANIAN &&
                     /* base characters, find accents above */
                     (((c==0x49 || c==0x4a || c==0x12e) &&
-                        isFollowedByMoreAbove(iter, context)) ||
+                        isFollowedByMoreAbove(csp, iter, context)) ||
                     /* precomposed with accent above, no need to find one */
                     (c==0xcc || c==0xcd || c==0x128))
             ) {
@@ -953,7 +896,7 @@ ucase_toFullLower(UChar32 c,
                     0130; 0069; 0130; 0130; az # LATIN CAPITAL LETTER I WITH DOT ABOVE
                  */
                 return 0x69;
-            } else if(loc==UCASE_LOC_TURKISH && c==0x307 && isPrecededBy_I(iter, context)) {
+            } else if(loc==UCASE_LOC_TURKISH && c==0x307 && isPrecededBy_I(csp, iter, context)) {
                 /*
                     # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
                     # This matches the behavior of the canonically equivalent I-dot_above
@@ -962,7 +905,7 @@ ucase_toFullLower(UChar32 c,
                     0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
                  */
                 return 0; /* remove the dot (continue without output) */
-            } else if(loc==UCASE_LOC_TURKISH && c==0x49 && !isFollowedByDotAbove(iter, context)) {
+            } else if(loc==UCASE_LOC_TURKISH && c==0x49 && !isFollowedByDotAbove(csp, iter, context)) {
                 /*
                     # When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
 
@@ -979,8 +922,8 @@ ucase_toFullLower(UChar32 c,
                 *pString=iDot;
                 return 2;
             } else if(  c==0x3a3 &&
-                        !isFollowedByCasedLetter(iter, context, 1) &&
-                        isFollowedByCasedLetter(iter, context, -1) /* -1=preceded */
+                        !isFollowedByCasedLetter(csp, iter, context, 1) &&
+                        isFollowedByCasedLetter(csp, iter, context, -1) /* -1=preceded */
             ) {
                 /* greek capital sigma maps depending on surrounding cased letters (see SpecialCasing.txt) */
                 /*
@@ -1014,21 +957,21 @@ ucase_toFullLower(UChar32 c,
 
 /* internal */
 static int32_t
-toUpperOrTitle(UChar32 c,
+toUpperOrTitle(const UCaseProps *csp, UChar32 c,
                UCaseContextIterator *iter, void *context,
                const UChar **pString,
-               int32_t loc,
+               const char *locale, int32_t *locCache,
                UBool upperNotTitle) {
     // The sign of the result has meaning, input must be non-negative so that it can be returned as is.
     U_ASSERT(c >= 0);
     UChar32 result=c;
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)==UCASE_LOWER) {
             result=c+UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props), *pe2;
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props), *pe2;
         uint16_t excWord=*pe++;
         int32_t full, idx;
 
@@ -1036,6 +979,8 @@ toUpperOrTitle(UChar32 c,
 
         if(excWord&UCASE_EXC_CONDITIONAL_SPECIAL) {
             /* use hardcoded conditions and mappings */
+            int32_t loc=ucase_getCaseLocale(locale, locCache);
+
             if(loc==UCASE_LOC_TURKISH && c==0x69) {
                 /*
                     # Turkish and Azeri
@@ -1049,7 +994,7 @@ toUpperOrTitle(UChar32 c,
                     0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
                 */
                 return 0x130;
-            } else if(loc==UCASE_LOC_LITHUANIAN && c==0x307 && isPrecededBySoftDotted(iter, context)) {
+            } else if(loc==UCASE_LOC_LITHUANIAN && c==0x307 && isPrecededBySoftDotted(csp, iter, context)) {
                 /*
                     # Lithuanian
 
@@ -1107,19 +1052,19 @@ toUpperOrTitle(UChar32 c,
 }
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullUpper(UChar32 c,
+ucase_toFullUpper(const UCaseProps *csp, UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  int32_t caseLocale) {
-    return toUpperOrTitle(c, iter, context, pString, caseLocale, TRUE);
+                  const char *locale, int32_t *locCache) {
+    return toUpperOrTitle(csp, c, iter, context, pString, locale, locCache, TRUE);
 }
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullTitle(UChar32 c,
+ucase_toFullTitle(const UCaseProps *csp, UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  int32_t caseLocale) {
-    return toUpperOrTitle(c, iter, context, pString, caseLocale, FALSE);
+                  const char *locale, int32_t *locCache) {
+    return toUpperOrTitle(csp, c, iter, context, pString, locale, locCache, FALSE);
 }
 
 /* case folding ------------------------------------------------------------- */
@@ -1165,14 +1110,14 @@ ucase_toFullTitle(UChar32 c,
 
 /* return the simple case folding mapping for c */
 U_CAPI UChar32 U_EXPORT2
-ucase_fold(UChar32 c, uint32_t options) {
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options) {
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             c+=UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props);
         uint16_t excWord=*pe++;
         int32_t idx;
         if(excWord&UCASE_EXC_CONDITIONAL_FOLD) {
@@ -1225,19 +1170,19 @@ ucase_fold(UChar32 c, uint32_t options) {
  */
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullFolding(UChar32 c,
+ucase_toFullFolding(const UCaseProps *csp, UChar32 c,
                     const UChar **pString,
                     uint32_t options) {
     // The sign of the result has meaning, input must be non-negative so that it can be returned as is.
     U_ASSERT(c >= 0);
     UChar32 result=c;
-    uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+    uint16_t props=UTRIE2_GET16(&csp->trie, c);
     if(!PROPS_HAS_EXCEPTION(props)) {
         if(UCASE_GET_TYPE(props)>=UCASE_UPPER) {
             result=c+UCASE_GET_DELTA(props);
         }
     } else {
-        const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props), *pe2;
+        const uint16_t *pe=GET_EXCEPTIONS(csp, props), *pe2;
         uint16_t excWord=*pe++;
         int32_t full, idx;
 
@@ -1299,59 +1244,66 @@ ucase_toFullFolding(UChar32 c,
 
 /* case mapping properties API ---------------------------------------------- */
 
+#define GET_CASE_PROPS() &ucase_props_singleton
+
 /* public API (see uchar.h) */
 
 U_CAPI UBool U_EXPORT2
 u_isULowercase(UChar32 c) {
-    return (UBool)(UCASE_LOWER==ucase_getType(c));
+    return (UBool)(UCASE_LOWER==ucase_getType(GET_CASE_PROPS(), c));
 }
 
 U_CAPI UBool U_EXPORT2
 u_isUUppercase(UChar32 c) {
-    return (UBool)(UCASE_UPPER==ucase_getType(c));
+    return (UBool)(UCASE_UPPER==ucase_getType(GET_CASE_PROPS(), c));
 }
 
 /* Transforms the Unicode character to its lower case equivalent.*/
 U_CAPI UChar32 U_EXPORT2
 u_tolower(UChar32 c) {
-    return ucase_tolower(c);
+    return ucase_tolower(GET_CASE_PROPS(), c);
 }
     
 /* Transforms the Unicode character to its upper case equivalent.*/
 U_CAPI UChar32 U_EXPORT2
 u_toupper(UChar32 c) {
-    return ucase_toupper(c);
+    return ucase_toupper(GET_CASE_PROPS(), c);
 }
 
 /* Transforms the Unicode character to its title case equivalent.*/
 U_CAPI UChar32 U_EXPORT2
 u_totitle(UChar32 c) {
-    return ucase_totitle(c);
+    return ucase_totitle(GET_CASE_PROPS(), c);
 }
 
 /* return the simple case folding mapping for c */
 U_CAPI UChar32 U_EXPORT2
 u_foldCase(UChar32 c, uint32_t options) {
-    return ucase_fold(c, options);
+    return ucase_fold(GET_CASE_PROPS(), c, options);
 }
 
 U_CFUNC int32_t U_EXPORT2
 ucase_hasBinaryProperty(UChar32 c, UProperty which) {
     /* case mapping properties */
     const UChar *resultString;
+    int32_t locCache;
+    const UCaseProps *csp=GET_CASE_PROPS();
+    if(csp==NULL) {
+        return FALSE;
+    }
     switch(which) {
     case UCHAR_LOWERCASE:
-        return (UBool)(UCASE_LOWER==ucase_getType(c));
+        return (UBool)(UCASE_LOWER==ucase_getType(csp, c));
     case UCHAR_UPPERCASE:
-        return (UBool)(UCASE_UPPER==ucase_getType(c));
+        return (UBool)(UCASE_UPPER==ucase_getType(csp, c));
     case UCHAR_SOFT_DOTTED:
-        return ucase_isSoftDotted(c);
+        return ucase_isSoftDotted(csp, c);
     case UCHAR_CASE_SENSITIVE:
-        return ucase_isCaseSensitive(c);
+        return ucase_isCaseSensitive(csp, c);
     case UCHAR_CASED:
-        return (UBool)(UCASE_NONE!=ucase_getType(c));
+        return (UBool)(UCASE_NONE!=ucase_getType(csp, c));
     case UCHAR_CASE_IGNORABLE:
-        return (UBool)(ucase_getTypeOrIgnorable(c)>>2);
+        return (UBool)(ucase_getTypeOrIgnorable(csp, c)>>2);
     /*
      * Note: The following Changes_When_Xyz are defined as testing whether
      * the NFD form of the input changes when Xyz-case-mapped.
@@ -1365,17 +1317,21 @@ ucase_hasBinaryProperty(UChar32 c, UProperty which) {
      * start sets for normalization and case mappings.
      */
     case UCHAR_CHANGES_WHEN_LOWERCASED:
-        return (UBool)(ucase_toFullLower(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+        locCache=UCASE_LOC_ROOT;
+        return (UBool)(ucase_toFullLower(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
     case UCHAR_CHANGES_WHEN_UPPERCASED:
-        return (UBool)(ucase_toFullUpper(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+        locCache=UCASE_LOC_ROOT;
+        return (UBool)(ucase_toFullUpper(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
     case UCHAR_CHANGES_WHEN_TITLECASED:
-        return (UBool)(ucase_toFullTitle(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+        locCache=UCASE_LOC_ROOT;
+        return (UBool)(ucase_toFullTitle(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
     /* case UCHAR_CHANGES_WHEN_CASEFOLDED: -- in uprops.c */
     case UCHAR_CHANGES_WHEN_CASEMAPPED:
+        locCache=UCASE_LOC_ROOT;
         return (UBool)(
-            ucase_toFullLower(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0 ||
-            ucase_toFullUpper(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0 ||
-            ucase_toFullTitle(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+            ucase_toFullLower(csp, c, NULL, NULL, &resultString, "", &locCache)>=0 ||
+            ucase_toFullUpper(csp, c, NULL, NULL, &resultString, "", &locCache)>=0 ||
+            ucase_toFullTitle(csp, c, NULL, NULL, &resultString, "", &locCache)>=0);
     default:
         return FALSE;
     }
index e15bae6..29ea71a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucase.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -37,8 +37,18 @@ U_NAMESPACE_END
 
 /* library API -------------------------------------------------------------- */
 
+U_CDECL_BEGIN
+
+struct UCaseProps;
+typedef struct UCaseProps UCaseProps;
+
+U_CDECL_END
+
+U_CAPI const UCaseProps * U_EXPORT2
+ucase_getSingleton(void);
+
 U_CFUNC void U_EXPORT2
-ucase_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode);
+ucase_addPropertyStarts(const UCaseProps *csp, const USetAdder *sa, UErrorCode *pErrorCode);
 
 /**
  * Requires non-NULL locale ID but otherwise does the equivalent of
@@ -46,7 +56,7 @@ ucase_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode);
  * Accepts both 2- and 3-letter codes and accepts case variants.
  */
 U_CFUNC int32_t
-ucase_getCaseLocale(const char *locale);
+ucase_getCaseLocale(const char *locale, int32_t *locCache);
 
 /* Casing locale types for ucase_getCaseLocale */
 enum {
@@ -77,16 +87,16 @@ enum {
 /* single-code point functions */
 
 U_CAPI UChar32 U_EXPORT2
-ucase_tolower(UChar32 c);
+ucase_tolower(const UCaseProps *csp, UChar32 c);
 
 U_CAPI UChar32 U_EXPORT2
-ucase_toupper(UChar32 c);
+ucase_toupper(const UCaseProps *csp, UChar32 c);
 
 U_CAPI UChar32 U_EXPORT2
-ucase_totitle(UChar32 c);
+ucase_totitle(const UCaseProps *csp, UChar32 c);
 
 U_CAPI UChar32 U_EXPORT2
-ucase_fold(UChar32 c, uint32_t options);
+ucase_fold(const UCaseProps *csp, UChar32 c, uint32_t options);
 
 /**
  * Adds all simple case mappings and the full case folding for c to sa,
@@ -98,7 +108,7 @@ ucase_fold(UChar32 c, uint32_t options);
  * - for k include the Kelvin sign
  */
 U_CFUNC void U_EXPORT2
-ucase_addCaseClosure(UChar32 c, const USetAdder *sa);
+ucase_addCaseClosure(const UCaseProps *csp, UChar32 c, const USetAdder *sa);
 
 /**
  * Maps the string to single code points and adds the associated case closure
@@ -113,7 +123,7 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa);
  * @return TRUE if the string was found
  */
 U_CFUNC UBool U_EXPORT2
-ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa);
+ucase_addStringCaseClosure(const UCaseProps *csp, const UChar *s, int32_t length, const USetAdder *sa);
 
 #ifdef __cplusplus
 U_NAMESPACE_BEGIN
@@ -147,17 +157,17 @@ U_NAMESPACE_END
 
 /** @return UCASE_NONE, UCASE_LOWER, UCASE_UPPER, UCASE_TITLE */
 U_CAPI int32_t U_EXPORT2
-ucase_getType(UChar32 c);
+ucase_getType(const UCaseProps *csp, UChar32 c);
 
 /** @return like ucase_getType() but also sets UCASE_IGNORABLE if c is case-ignorable */
 U_CAPI int32_t U_EXPORT2
-ucase_getTypeOrIgnorable(UChar32 c);
+ucase_getTypeOrIgnorable(const UCaseProps *csp, UChar32 c);
 
 U_CAPI UBool U_EXPORT2
-ucase_isSoftDotted(UChar32 c);
+ucase_isSoftDotted(const UCaseProps *csp, UChar32 c);
 
 U_CAPI UBool U_EXPORT2
-ucase_isCaseSensitive(UChar32 c);
+ucase_isCaseSensitive(const UCaseProps *csp, UChar32 c);
 
 /* string case mapping functions */
 
@@ -230,7 +240,10 @@ enum {
  * @param context Pointer to be passed into iter.
  * @param pString If the mapping result is a string, then the pointer is
  *                written to *pString.
- * @param caseLocale Case locale value from ucase_getCaseLocale().
+ * @param locale Locale ID for locale-dependent mappings.
+ * @param locCache Initialize to 0; may be used to cache the result of parsing
+ *                 the locale ID for subsequent calls.
+ *                 Can be NULL.
  * @return Output code point or string length, see UCASE_MAX_STRING_LENGTH.
  *
  * @see UCaseContextIterator
@@ -238,25 +251,25 @@ enum {
  * @internal
  */
 U_CAPI int32_t U_EXPORT2
-ucase_toFullLower(UChar32 c,
+ucase_toFullLower(const UCaseProps *csp, UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  int32_t caseLocale);
+                  const char *locale, int32_t *locCache);
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullUpper(UChar32 c,
+ucase_toFullUpper(const UCaseProps *csp, UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  int32_t caseLocale);
+                  const char *locale, int32_t *locCache);
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullTitle(UChar32 c,
+ucase_toFullTitle(const UCaseProps *csp, UChar32 c,
                   UCaseContextIterator *iter, void *context,
                   const UChar **pString,
-                  int32_t caseLocale);
+                  const char *locale, int32_t *locCache);
 
 U_CAPI int32_t U_EXPORT2
-ucase_toFullFolding(UChar32 c,
+ucase_toFullFolding(const UCaseProps *csp, UChar32 c,
                     const UChar **pString,
                     uint32_t options);
 
@@ -270,10 +283,10 @@ U_CDECL_BEGIN
  * @internal
  */
 typedef int32_t U_CALLCONV
-UCaseMapFull(UChar32 c,
+UCaseMapFull(const UCaseProps *csp, UChar32 c,
              UCaseContextIterator *iter, void *context,
              const UChar **pString,
-             int32_t caseLocale);
+             const char *locale, int32_t *locCache);
 
 U_CDECL_END
 
index 3663592..aa51bac 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
index 391140d..0576a26 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucasemap.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -20,8 +20,6 @@
 
 #include "unicode/utypes.h"
 #include "unicode/brkiter.h"
-#include "unicode/casemap.h"
-#include "unicode/edits.h"
 #include "unicode/ubrk.h"
 #include "unicode/uloc.h"
 #include "unicode/ustring.h"
 #include "unicode/utf16.h"
 #include "cmemory.h"
 #include "cstring.h"
-#include "uassert.h"
 #include "ucase.h"
-#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 
-U_NAMESPACE_BEGIN
-
-namespace {
-
-// TODO: share with UTF-16? inline in ucasemap_imp.h?
-int32_t checkOverflowAndEditsError(int32_t destIndex, int32_t destCapacity,
-                                   Edits *edits, UErrorCode &errorCode) {
-    if (U_SUCCESS(errorCode)) {
-        if (destIndex > destCapacity) {
-            errorCode = U_BUFFER_OVERFLOW_ERROR;
-        } else if (edits != NULL) {
-            edits->copyErrorTo(errorCode);
-        }
-    }
-    return destIndex;
-}
-
-}  // namespace
-
-U_NAMESPACE_END
-
 U_NAMESPACE_USE
 
 /* UCaseMap service object -------------------------------------------------- */
 
-UCaseMap::UCaseMap(const char *localeID, uint32_t opts, UErrorCode *pErrorCode) :
-#if !UCONFIG_NO_BREAK_ITERATION
-        iter(NULL),
-#endif
-        caseLocale(UCASE_LOC_UNKNOWN), options(opts) {
-    ucasemap_setLocale(this, localeID, pErrorCode);
-}
-
-UCaseMap::~UCaseMap() {
-#if !UCONFIG_NO_BREAK_ITERATION
-    delete iter;
-#endif
-}
-
 U_CAPI UCaseMap * U_EXPORT2
 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode) {
+    UCaseMap *csm;
+
     if(U_FAILURE(*pErrorCode)) {
         return NULL;
     }
-    UCaseMap *csm = new UCaseMap(locale, options, pErrorCode);
+
+    csm=(UCaseMap *)uprv_malloc(sizeof(UCaseMap));
     if(csm==NULL) {
-        *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
         return NULL;
-    } else if (U_FAILURE(*pErrorCode)) {
-        delete csm;
+    }
+    uprv_memset(csm, 0, sizeof(UCaseMap));
+
+    csm->csp=ucase_getSingleton();
+    ucasemap_setLocale(csm, locale, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        uprv_free(csm);
         return NULL;
     }
+
+    csm->options=options;
     return csm;
 }
 
 U_CAPI void U_EXPORT2
 ucasemap_close(UCaseMap *csm) {
-    delete csm;
+    if(csm!=NULL) {
+#if !UCONFIG_NO_BREAK_ITERATION
+        // Do not call ubrk_close() so that we do not depend on all of the BreakIterator code.
+        delete reinterpret_cast<BreakIterator *>(csm->iter);
+#endif
+        uprv_free(csm);
+    }
 }
 
 U_CAPI const char * U_EXPORT2
@@ -111,16 +87,13 @@ ucasemap_getOptions(const UCaseMap *csm) {
 
 U_CAPI void U_EXPORT2
 ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode) {
+    int32_t length;
+
     if(U_FAILURE(*pErrorCode)) {
         return;
     }
-    if (locale != NULL && *locale == 0) {
-        csm->locale[0] = 0;
-        csm->caseLocale = UCASE_LOC_ROOT;
-        return;
-    }
 
-    int32_t length=uloc_getName(locale, csm->locale, (int32_t)sizeof(csm->locale), pErrorCode);
+    length=uloc_getName(locale, csm->locale, (int32_t)sizeof(csm->locale), pErrorCode);
     if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR || length==sizeof(csm->locale)) {
         *pErrorCode=U_ZERO_ERROR;
         /* we only really need the language code for case mappings */
@@ -129,32 +102,27 @@ ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode) {
     if(length==sizeof(csm->locale)) {
         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
     }
+    csm->locCache=0;
     if(U_SUCCESS(*pErrorCode)) {
-        csm->caseLocale=UCASE_LOC_UNKNOWN;
-        csm->caseLocale = ucase_getCaseLocale(csm->locale);
+        ucase_getCaseLocale(csm->locale, &csm->locCache);
     } else {
         csm->locale[0]=0;
-        csm->caseLocale = UCASE_LOC_ROOT;
     }
 }
 
 U_CAPI void U_EXPORT2
-ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode) {
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
+ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode * /*pErrorCode*/) {
     csm->options=options;
 }
 
 /* UTF-8 string case mappings ----------------------------------------------- */
 
-/* TODO(markus): Move to a new, separate utf8case.cpp file. */
+/* TODO(markus): Move to a new, separate utf8case.c file. */
 
 /* append a full case mapping result, see UCASE_MAX_STRING_LENGTH */
 static inline int32_t
 appendResult(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
-             int32_t result, const UChar *s,
-             int32_t cpLength, uint32_t options, icu::Edits *edits) {
+             int32_t result, const UChar *s) {
     UChar32 c;
     int32_t length;
     UErrorCode errorCode;
@@ -162,126 +130,86 @@ appendResult(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
     /* decode the result */
     if(result<0) {
         /* (not) original code point */
-        if(edits!=NULL) {
-            edits->addUnchanged(cpLength);
-            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
-                return destIndex;
-            }
-        }
         c=~result;
-        if(destIndex<destCapacity && c<=0x7f) {  // ASCII slightly-fastpath
-            dest[destIndex++]=(uint8_t)c;
-            return destIndex;
-        }
-        length=cpLength;
+        length=U8_LENGTH(c);
+    } else if(result<=UCASE_MAX_STRING_LENGTH) {
+        c=U_SENTINEL;
+        length=result;
     } else {
-        if(result<=UCASE_MAX_STRING_LENGTH) {
-            // string: "result" is the UTF-16 length
-            errorCode=U_ZERO_ERROR;
-            if(destIndex<destCapacity) {
-                u_strToUTF8((char *)(dest+destIndex), destCapacity-destIndex, &length,
-                            s, result, &errorCode);
-            } else {
-                u_strToUTF8(NULL, 0, &length, s, result, &errorCode);
-            }
-            if(U_FAILURE(errorCode) && errorCode != U_BUFFER_OVERFLOW_ERROR) {
-                return -1;
-            }
-            if(length>(INT32_MAX-destIndex)) {
-                return -1;  // integer overflow
-            }
-            if(edits!=NULL) {
-                edits->addReplace(cpLength, length);
-            }
-            // We might have an overflow, but we know the actual length.
-            return destIndex+length;
-        } else if(destIndex<destCapacity && result<=0x7f) {  // ASCII slightly-fastpath
-            dest[destIndex++]=(uint8_t)result;
-            if(edits!=NULL) {
-                edits->addReplace(cpLength, 1);
-            }
-            return destIndex;
-        } else {
-            c=result;
-            length=U8_LENGTH(c);
-            if(edits!=NULL) {
-                edits->addReplace(cpLength, length);
-            }
-        }
+        c=result;
+        length=U8_LENGTH(c);
     }
-    // c>=0 single code point
     if(length>(INT32_MAX-destIndex)) {
         return -1;  // integer overflow
     }
 
     if(destIndex<destCapacity) {
         /* append the result */
-        UBool isError=FALSE;
-        U8_APPEND(dest, destIndex, destCapacity, c, isError);
-        if(isError) {
-            /* overflow, nothing written */
-            destIndex+=length;
+        if(c>=0) {
+            /* code point */
+            UBool isError=FALSE;
+            U8_APPEND(dest, destIndex, destCapacity, c, isError);
+            if(isError) {
+                /* overflow, nothing written */
+                destIndex+=length;
+            }
+        } else {
+            /* string */
+            int32_t destLength;
+            errorCode=U_ZERO_ERROR;
+            u_strToUTF8(
+                (char *)(dest+destIndex), destCapacity-destIndex, &destLength,
+                s, length,
+                &errorCode);
+            if(U_FAILURE(errorCode) && errorCode != U_BUFFER_OVERFLOW_ERROR) {
+                return -1;
+            }
+            if(destLength>(INT32_MAX-destIndex)) {
+                return -1;  // integer overflow
+            }
+            destIndex+=destLength;
+            /* we might have an overflow, but we know the actual length */
         }
     } else {
         /* preflight */
-        destIndex+=length;
+        if(c>=0) {
+            destIndex+=length;
+        } else {
+            int32_t destLength;
+            errorCode=U_ZERO_ERROR;
+            u_strToUTF8(
+                NULL, 0, &destLength,
+                s, length,
+                &errorCode);
+            if(U_FAILURE(errorCode) && errorCode != U_BUFFER_OVERFLOW_ERROR) {
+                return -1;
+            }
+            if(destLength>(INT32_MAX-destIndex)) {
+                return -1;  // integer overflow
+            }
+            destIndex+=destLength;
+        }
     }
     return destIndex;
 }
 
 static inline int32_t
-appendASCII(uint8_t *dest, int32_t destIndex, int32_t destCapacity, uint8_t c) {
-    if(destIndex<destCapacity) {
-        dest[destIndex]=c;
-    } else if(destIndex==INT32_MAX) {
-        return -1;  // integer overflow
-    }
-    return destIndex+1;
-}
-
-// See unicode/utf8.h U8_APPEND_UNSAFE().
-static inline uint8_t getTwoByteLead(UChar32 c) { return (uint8_t)((c >> 6) | 0xc0); }
-static inline uint8_t getTwoByteTrail(UChar32 c) { return (uint8_t)((c & 0x3f) | 0x80); }
-
-static inline int32_t
-appendTwoBytes(uint8_t *dest, int32_t destIndex, int32_t destCapacity, UChar32 c) {
-    U_ASSERT(0x370 <= c && c <= 0x3ff);  // 2-byte UTF-8, main Greek block
-    if(2>(INT32_MAX-destIndex)) {
-        return -1;  // integer overflow
-    }
-    int32_t limit=destIndex+2;
-    if(limit<=destCapacity) {
-        dest+=destIndex;
-        dest[0]=getTwoByteLead(c);
-        dest[1]=getTwoByteTrail(c);
-    }
-    return limit;
-}
-
-static inline int32_t
-appendTwoBytes(uint8_t *dest, int32_t destIndex, int32_t destCapacity, const char *s) {
-    if(2>(INT32_MAX-destIndex)) {
+appendUChar(uint8_t *dest, int32_t destIndex, int32_t destCapacity, UChar c) {
+    int32_t length=U8_LENGTH(c);
+    if(length>(INT32_MAX-destIndex)) {
         return -1;  // integer overflow
     }
-    int32_t limit=destIndex+2;
+    int32_t limit=destIndex+length;
     if(limit<=destCapacity) {
-        dest+=destIndex;
-        dest[0]=(uint8_t)s[0];
-        dest[1]=(uint8_t)s[1];
+        U8_APPEND_UNSAFE(dest, destIndex, c);
     }
     return limit;
 }
 
 static inline int32_t
-appendUnchanged(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
-                const uint8_t *s, int32_t length, uint32_t options, icu::Edits *edits) {
+appendString(uint8_t *dest, int32_t destIndex, int32_t destCapacity,
+             const uint8_t *s, int32_t length) {
     if(length>0) {
-        if(edits!=NULL) {
-            edits->addUnchanged(length);
-            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
-                return destIndex;
-            }
-        }
         if(length>(INT32_MAX-destIndex)) {
             return -1;  // integer overflow
         }
@@ -330,77 +258,93 @@ utf8_caseContextIterator(void *context, int8_t dir) {
  * context [0..srcLength[ into account.
  */
 static int32_t
-_caseMap(int32_t caseLocale, uint32_t options, UCaseMapFull *map,
+_caseMap(const UCaseMap *csm, UCaseMapFull *map,
          uint8_t *dest, int32_t destCapacity,
          const uint8_t *src, UCaseContext *csc,
          int32_t srcStart, int32_t srcLimit,
-         icu::Edits *edits,
-         UErrorCode &errorCode) {
+         UErrorCode *pErrorCode) {
+    const UChar *s = NULL;
+    UChar32 c, c2 = 0;
+    int32_t srcIndex, destIndex;
+    int32_t locCache;
+
+    locCache=csm->locCache;
+
     /* case mapping loop */
-    int32_t srcIndex=srcStart;
-    int32_t destIndex=0;
+    srcIndex=srcStart;
+    destIndex=0;
     while(srcIndex<srcLimit) {
-        int32_t cpStart;
-        csc->cpStart=cpStart=srcIndex;
-        UChar32 c;
+        csc->cpStart=srcIndex;
         U8_NEXT(src, srcIndex, srcLimit, c);
         csc->cpLimit=srcIndex;
         if(c<0) {
             // Malformed UTF-8.
-            destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                      src+cpStart, srcIndex-cpStart, options, edits);
+            destIndex=appendString(dest, destIndex, destCapacity, src+csc->cpStart, srcIndex-csc->cpStart);
             if(destIndex<0) {
-                errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                 return 0;
             }
             continue;
         }
-        const UChar *s;
-        c=map(c, utf8_caseContextIterator, csc, &s, caseLocale);
-        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
-                                 srcIndex - cpStart, options, edits);
-        if (destIndex < 0) {
-            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
-            return 0;
+        c=map(csm->csp, c, utf8_caseContextIterator, csc, &s, csm->locale, &locCache);
+        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0x7f : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0x7f)) {
+            /* fast path version of appendResult() for ASCII results */
+            dest[destIndex++]=(uint8_t)c2;
+        } else {
+            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+            if(destIndex<0) {
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
+            }
         }
     }
 
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
     return destIndex;
 }
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
 U_CFUNC int32_t U_CALLCONV
-ucasemap_internalUTF8ToTitle(
-        int32_t caseLocale, uint32_t options, BreakIterator *iter,
-        uint8_t *dest, int32_t destCapacity,
-        const uint8_t *src, int32_t srcLength,
-        icu::Edits *edits,
-        UErrorCode &errorCode) {
-    if(U_FAILURE(errorCode)) {
+ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
+         uint8_t *dest, int32_t destCapacity,
+         const uint8_t *src, int32_t srcLength,
+         UErrorCode *pErrorCode) {
+    const UChar *s;
+    UChar32 c;
+    int32_t prev, titleStart, titleLimit, idx, destIndex;
+    UBool isFirstIndex;
+
+    if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
 
+    // Use the C++ abstract base class to minimize dependencies.
+    // TODO: Change UCaseMap.iter to store a BreakIterator directly.
+    BreakIterator *bi=reinterpret_cast<BreakIterator *>(csm->iter);
+
     /* set up local variables */
+    int32_t locCache=csm->locCache;
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    int32_t destIndex=0;
-    int32_t prev=0;
-    UBool isFirstIndex=TRUE;
+    destIndex=0;
+    prev=0;
+    isFirstIndex=TRUE;
 
     /* titlecasing loop */
     while(prev<srcLength) {
         /* find next index where to titlecase */
-        int32_t index;
         if(isFirstIndex) {
             isFirstIndex=FALSE;
-            index=iter->first();
+            idx=bi->first();
         } else {
-            index=iter->next();
+            idx=bi->next();
         }
-        if(index==UBRK_DONE || index>srcLength) {
-            index=srcLength;
+        if(idx==UBRK_DONE || idx>srcLength) {
+            idx=srcLength;
         }
 
         /*
@@ -416,32 +360,29 @@ ucasemap_internalUTF8ToTitle(
          * b) first case letter (titlecase)         [titleStart..titleLimit[
          * c) subsequent characters (lowercase)                 [titleLimit..index[
          */
-        if(prev<index) {
+        if(prev<idx) {
             /* find and copy uncased characters [prev..titleStart[ */
-            int32_t titleStart=prev;
-            int32_t titleLimit=prev;
-            UChar32 c;
-            U8_NEXT(src, titleLimit, index, c);
-            if((options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(c)) {
+            titleStart=titleLimit=prev;
+            U8_NEXT(src, titleLimit, idx, c);
+            if((csm->options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(csm->csp, c)) {
                 /* Adjust the titlecasing index (titleStart) to the next cased character. */
                 for(;;) {
                     titleStart=titleLimit;
-                    if(titleLimit==index) {
+                    if(titleLimit==idx) {
                         /*
                          * only uncased characters in [prev..index[
                          * stop with titleStart==titleLimit==index
                          */
                         break;
                     }
-                    U8_NEXT(src, titleLimit, index, c);
-                    if(UCASE_NONE!=ucase_getType(c)) {
+                    U8_NEXT(src, titleLimit, idx, c);
+                    if(UCASE_NONE!=ucase_getType(csm->csp, c)) {
                         break; /* cased letter at [titleStart..titleLimit[ */
                     }
                 }
-                destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                          src+prev, titleStart-prev, options, edits);
+                destIndex=appendString(dest, destIndex, destCapacity, src+prev, titleStart-prev);
                 if(destIndex<0) {
-                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
             }
@@ -451,69 +392,47 @@ ucasemap_internalUTF8ToTitle(
                 if(c>=0) {
                     csc.cpStart=titleStart;
                     csc.cpLimit=titleLimit;
-                    const UChar *s;
-                    c=ucase_toFullTitle(c, utf8_caseContextIterator, &csc, &s, caseLocale);
-                    destIndex=appendResult(dest, destIndex, destCapacity, c, s,
-                                           titleLimit-titleStart, options, edits);
+                    c=ucase_toFullTitle(csm->csp, c, utf8_caseContextIterator, &csc, &s, csm->locale, &locCache);
+                    destIndex=appendResult(dest, destIndex, destCapacity, c, s);
                 } else {
                     // Malformed UTF-8.
-                    destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                              src+titleStart, titleLimit-titleStart, options, edits);
+                    destIndex=appendString(dest, destIndex, destCapacity, src+titleStart, titleLimit-titleStart);
                 }
                 if(destIndex<0) {
-                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
 
                 /* Special case Dutch IJ titlecasing */
-                if (titleStart+1 < index &&
-                        caseLocale == UCASE_LOC_DUTCH &&
-                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069)) {
-                    if (src[titleStart+1] == 0x006A) {
-                        destIndex=appendASCII(dest, destIndex, destCapacity, 0x004A);
-                        if(destIndex<0) {
-                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                            return 0;
-                        }
-                        if(edits!=NULL) {
-                            edits->addReplace(1, 1);
-                        }
-                        titleLimit++;
-                    } else if (src[titleStart+1] == 0x004A) {
-                        // Keep the capital J from getting lowercased.
-                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                                  src+titleStart+1, 1, options, edits);
-                        if(destIndex<0) {
-                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                            return 0;
-                        }
-                        titleLimit++;
-                    }
+                if (titleStart+1 < idx &&
+                        ucase_getCaseLocale(csm->locale, &locCache) == UCASE_LOC_DUTCH &&
+                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069) &&
+                        (src[titleStart+1] == 0x004A || src[titleStart+1] == 0x006A)) {
+                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x004A);
+                    titleLimit++;
                 }
-
                 /* lowercase [titleLimit..index[ */
-                if(titleLimit<index) {
-                    if((options&U_TITLECASE_NO_LOWERCASE)==0) {
+                if(titleLimit<idx) {
+                    if((csm->options&U_TITLECASE_NO_LOWERCASE)==0) {
                         /* Normal operation: Lowercase the rest of the word. */
                         destIndex+=
                             _caseMap(
-                                caseLocale, options, ucase_toFullLower,
+                                csm, ucase_toFullLower,
                                 dest+destIndex, destCapacity-destIndex,
                                 src, &csc,
-                                titleLimit, index,
-                                edits, errorCode);
-                        if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
-                            errorCode=U_ZERO_ERROR;
+                                titleLimit, idx,
+                                pErrorCode);
+                        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+                            *pErrorCode=U_ZERO_ERROR;
                         }
-                        if(U_FAILURE(errorCode)) {
+                        if(U_FAILURE(*pErrorCode)) {
                             return destIndex;
                         }
                     } else {
                         /* Optionally just copy the rest of the word unchanged. */
-                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                                  src+titleLimit, index-titleLimit, options, edits);
+                        destIndex=appendString(dest, destIndex, destCapacity, src+titleLimit, idx-titleLimit);
                         if(destIndex<0) {
-                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                             return 0;
                         }
                     }
@@ -521,10 +440,13 @@ ucasemap_internalUTF8ToTitle(
             }
         }
 
-        prev=index;
+        prev=idx;
     }
 
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+    return destIndex;
 }
 
 #endif
@@ -532,11 +454,11 @@ ucasemap_internalUTF8ToTitle(
 U_NAMESPACE_BEGIN
 namespace GreekUpper {
 
-UBool isFollowedByCasedLetter(const uint8_t *s, int32_t i, int32_t length) {
+UBool isFollowedByCasedLetter(const UCaseProps *csp, const uint8_t *s, int32_t i, int32_t length) {
     while (i < length) {
         UChar32 c;
         U8_NEXT(s, i, length, c);
-        int32_t type = ucase_getTypeOrIgnorable(c);
+        int32_t type = ucase_getTypeOrIgnorable(csp, c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // Case-ignorable, continue with the loop.
         } else if (type != UCASE_NONE) {
@@ -549,11 +471,11 @@ UBool isFollowedByCasedLetter(const uint8_t *s, int32_t i, int32_t length) {
 }
 
 // Keep this consistent with the UTF-16 version in ustrcase.cpp and the Java version in CaseMap.java.
-int32_t toUpper(uint32_t options,
+int32_t toUpper(const UCaseMap *csm,
                 uint8_t *dest, int32_t destCapacity,
                 const uint8_t *src, int32_t srcLength,
-                Edits *edits,
-                UErrorCode &errorCode) {
+                UErrorCode *pErrorCode) {
+    int32_t locCache = UCASE_LOC_GREEK;
     int32_t destIndex=0;
     uint32_t state = 0;
     for (int32_t i = 0; i < srcLength;) {
@@ -561,7 +483,7 @@ int32_t toUpper(uint32_t options,
         UChar32 c;
         U8_NEXT(src, nextIndex, srcLength, c);
         uint32_t nextState = 0;
-        int32_t type = ucase_getTypeOrIgnorable(c);
+        int32_t type = ucase_getTypeOrIgnorable(csm->csp, c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // c is case-ignorable
             nextState |= (state & AFTER_CASED);
@@ -611,7 +533,7 @@ int32_t toUpper(uint32_t options,
                     (data & HAS_ACCENT) != 0 &&
                     numYpogegrammeni == 0 &&
                     (state & AFTER_CASED) == 0 &&
-                    !isFollowedByCasedLetter(src, nextIndex, srcLength)) {
+                    !isFollowedByCasedLetter(csm->csp, src, nextIndex, srcLength)) {
                 // Keep disjunctive "or" with (only) a tonos.
                 // We use the same "word boundary" conditions as for the Final_Sigma test.
                 if (i == nextIndex) {
@@ -629,75 +551,40 @@ int32_t toUpper(uint32_t options,
                     data &= ~HAS_EITHER_DIALYTIKA;
                 }
             }
-
-            UBool change = TRUE;
-            if (edits != NULL) {
-                // Find out first whether we are changing the text.
-                U_ASSERT(0x370 <= upper && upper <= 0x3ff);  // 2-byte UTF-8, main Greek block
-                change = (i + 2) > nextIndex ||
-                        src[i] != getTwoByteLead(upper) || src[i + 1] != getTwoByteTrail(upper) ||
-                        numYpogegrammeni > 0;
-                int32_t i2 = i + 2;
-                if ((data & HAS_EITHER_DIALYTIKA) != 0) {
-                    change |= (i2 + 2) > nextIndex ||
-                            src[i2] != (uint8_t)u8"\u0308"[0] ||
-                            src[i2 + 1] != (uint8_t)u8"\u0308"[1];
-                    i2 += 2;
-                }
-                if (addTonos) {
-                    change |= (i2 + 2) > nextIndex ||
-                            src[i2] != (uint8_t)u8"\u0301"[0] ||
-                            src[i2 + 1] != (uint8_t)u8"\u0301"[1];
-                    i2 += 2;
-                }
-                int32_t oldLength = nextIndex - i;
-                int32_t newLength = (i2 - i) + numYpogegrammeni * 2;  // 2 bytes per U+0399
-                change |= oldLength != newLength;
-                if (change) {
-                    if (edits != NULL) {
-                        edits->addReplace(oldLength, newLength);
-                    }
-                } else {
-                    if (edits != NULL) {
-                        edits->addUnchanged(oldLength);
-                    }
-                    // Write unchanged text?
-                    change = (options & UCASEMAP_OMIT_UNCHANGED_TEXT) == 0;
-                }
+            destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
+            if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, 0x308);  // restore or add a dialytika
             }
-
-            if (change) {
-                destIndex=appendTwoBytes(dest, destIndex, destCapacity, upper);
-                if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
-                    destIndex=appendTwoBytes(dest, destIndex, destCapacity, u8"\u0308");  // restore or add a dialytika
-                }
-                if (destIndex >= 0 && addTonos) {
-                    destIndex=appendTwoBytes(dest, destIndex, destCapacity, u8"\u0301");
-                }
-                while (destIndex >= 0 && numYpogegrammeni > 0) {
-                    destIndex=appendTwoBytes(dest, destIndex, destCapacity, u8"\u0399");
-                    --numYpogegrammeni;
-                }
-                if(destIndex<0) {
-                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                    return 0;
-                }
+            if (destIndex >= 0 && addTonos) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, 0x301);
+            }
+            while (destIndex >= 0 && numYpogegrammeni > 0) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, 0x399);
+                --numYpogegrammeni;
+            }
+            if(destIndex<0) {
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
             }
         } else if(c>=0) {
             const UChar *s;
-            c=ucase_toFullUpper(c, NULL, NULL, &s, UCASE_LOC_GREEK);
-            destIndex = appendResult(dest, destIndex, destCapacity, c, s,
-                                     nextIndex - i, options, edits);
-            if (destIndex < 0) {
-                errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
+            UChar32 c2 = 0;
+            c=ucase_toFullUpper(csm->csp, c, NULL, NULL, &s, csm->locale, &locCache);
+            if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0x7f : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0x7f)) {
+                /* fast path version of appendResult() for ASCII results */
+                dest[destIndex++]=(uint8_t)c2;
+            } else {
+                destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+                if(destIndex<0) {
+                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    return 0;
+                }
             }
         } else {
             // Malformed UTF-8.
-            destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                      src+i, nextIndex-i, options, edits);
+            destIndex=appendString(dest, destIndex, destCapacity, src+i, nextIndex-i);
             if(destIndex<0) {
-                errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                 return 0;
             }
         }
@@ -705,6 +592,9 @@ int32_t toUpper(uint32_t options,
         state = nextState;
     }
 
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
     return destIndex;
 }
 
@@ -712,92 +602,102 @@ int32_t toUpper(uint32_t options,
 U_NAMESPACE_END
 
 static int32_t U_CALLCONV
-ucasemap_internalUTF8ToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
+ucasemap_internalUTF8ToLower(const UCaseMap *csm,
                              uint8_t *dest, int32_t destCapacity,
                              const uint8_t *src, int32_t srcLength,
-                             icu::Edits *edits,
-                             UErrorCode &errorCode) {
+                             UErrorCode *pErrorCode) {
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    int32_t destIndex = _caseMap(
-        caseLocale, options, ucase_toFullLower,
+    return _caseMap(
+        csm, ucase_toFullLower,
         dest, destCapacity,
         src, &csc, 0, srcLength,
-        edits, errorCode);
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+        pErrorCode);
 }
 
 static int32_t U_CALLCONV
-ucasemap_internalUTF8ToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
+ucasemap_internalUTF8ToUpper(const UCaseMap *csm,
                              uint8_t *dest, int32_t destCapacity,
                              const uint8_t *src, int32_t srcLength,
-                             icu::Edits *edits,
-                             UErrorCode &errorCode) {
-    int32_t destIndex;
-    if (caseLocale == UCASE_LOC_GREEK) {
-        destIndex = GreekUpper::toUpper(options, dest, destCapacity,
-                                        src, srcLength, edits, errorCode);
-    } else {
-        UCaseContext csc=UCASECONTEXT_INITIALIZER;
-        csc.p=(void *)src;
-        csc.limit=srcLength;
-        destIndex = _caseMap(
-            caseLocale, options, ucase_toFullUpper,
-            dest, destCapacity,
-            src, &csc, 0, srcLength,
-            edits, errorCode);
+                             UErrorCode *pErrorCode) {
+    int32_t locCache = csm->locCache;
+    if (ucase_getCaseLocale(csm->locale, &locCache) == UCASE_LOC_GREEK) {
+        return GreekUpper::toUpper(csm, dest, destCapacity, src, srcLength, pErrorCode);
     }
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+    UCaseContext csc=UCASECONTEXT_INITIALIZER;
+    csc.p=(void *)src;
+    csc.limit=srcLength;
+    return _caseMap(
+        csm, ucase_toFullUpper,
+        dest, destCapacity,
+        src, &csc, 0, srcLength,
+        pErrorCode);
 }
 
-static int32_t U_CALLCONV
-ucasemap_internalUTF8Fold(int32_t /* caseLocale */, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
-                          uint8_t *dest, int32_t destCapacity,
-                          const uint8_t *src, int32_t srcLength,
-                          icu::Edits *edits,
-                          UErrorCode &errorCode) {
+static int32_t
+utf8_foldCase(const UCaseProps *csp,
+              uint8_t *dest, int32_t destCapacity,
+              const uint8_t *src, int32_t srcLength,
+              uint32_t options,
+              UErrorCode *pErrorCode) {
+    int32_t srcIndex, destIndex;
+
+    const UChar *s;
+    UChar32 c, c2;
+    int32_t start;
+
     /* case mapping loop */
-    int32_t srcIndex = 0;
-    int32_t destIndex = 0;
-    while (srcIndex < srcLength) {
-        int32_t cpStart = srcIndex;
-        UChar32 c;
+    srcIndex=destIndex=0;
+    while(srcIndex<srcLength) {
+        start=srcIndex;
         U8_NEXT(src, srcIndex, srcLength, c);
         if(c<0) {
             // Malformed UTF-8.
-            destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                      src+cpStart, srcIndex-cpStart, options, edits);
+            destIndex=appendString(dest, destIndex, destCapacity, src+start, srcIndex-start);
             if(destIndex<0) {
-                errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                 return 0;
             }
             continue;
         }
-        const UChar *s;
-        c = ucase_toFullFolding(c, &s, options);
-        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
-                                 srcIndex - cpStart, options, edits);
-        if (destIndex < 0) {
-            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
-            return 0;
+        c=ucase_toFullFolding(csp, c, &s, options);
+        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0x7f : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0x7f)) {
+            /* fast path version of appendResult() for ASCII results */
+            dest[destIndex++]=(uint8_t)c2;
+        } else {
+            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+            if(destIndex<0) {
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
+            }
         }
     }
 
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+    return destIndex;
+}
+
+static int32_t U_CALLCONV
+ucasemap_internalUTF8Fold(const UCaseMap *csm,
+                          uint8_t *dest, int32_t destCapacity,
+                          const uint8_t *src, int32_t srcLength,
+                          UErrorCode *pErrorCode) {
+    return utf8_foldCase(csm->csp, dest, destCapacity, src, srcLength, csm->options, pErrorCode);
 }
 
 U_CFUNC int32_t
-ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
+ucasemap_mapUTF8(const UCaseMap *csm,
                  uint8_t *dest, int32_t destCapacity,
                  const uint8_t *src, int32_t srcLength,
                  UTF8CaseMapper *stringCaseMapper,
-                 icu::Edits *edits,
-                 UErrorCode &errorCode) {
+                 UErrorCode *pErrorCode) {
     int32_t destLength;
 
     /* check argument values */
-    if(U_FAILURE(errorCode)) {
+    if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
     if( destCapacity<0 ||
@@ -805,7 +705,7 @@ ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_P
         src==NULL ||
         srcLength<-1
     ) {
-        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
 
@@ -819,16 +719,12 @@ ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_P
         ((src>=dest && src<(dest+destCapacity)) ||
          (dest>=src && dest<(src+srcLength)))
     ) {
-        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
 
-    if(edits!=NULL) {
-        edits->reset();
-    }
-    destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
-                                dest, destCapacity, src, srcLength, edits, errorCode);
-    return u_terminateChars((char *)dest, destCapacity, destLength, &errorCode);
+    destLength=stringCaseMapper(csm, dest, destCapacity, src, srcLength, pErrorCode);
+    return u_terminateChars((char *)dest, destCapacity, destLength, pErrorCode);
 }
 
 /* public API functions */
@@ -838,11 +734,10 @@ ucasemap_utf8ToLower(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
                      UErrorCode *pErrorCode) {
-    return ucasemap_mapUTF8(
-        csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8ToLower, NULL, *pErrorCode);
+    return ucasemap_mapUTF8(csm,
+                   (uint8_t *)dest, destCapacity,
+                   (const uint8_t *)src, srcLength,
+                   ucasemap_internalUTF8ToLower, pErrorCode);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -850,11 +745,10 @@ ucasemap_utf8ToUpper(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
                      UErrorCode *pErrorCode) {
-    return ucasemap_mapUTF8(
-        csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8ToUpper, NULL, *pErrorCode);
+    return ucasemap_mapUTF8(csm,
+                   (uint8_t *)dest, destCapacity,
+                   (const uint8_t *)src, srcLength,
+                   ucasemap_internalUTF8ToUpper, pErrorCode);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -862,49 +756,8 @@ ucasemap_utf8FoldCase(const UCaseMap *csm,
                       char *dest, int32_t destCapacity,
                       const char *src, int32_t srcLength,
                       UErrorCode *pErrorCode) {
-    return ucasemap_mapUTF8(
-        UCASE_LOC_ROOT, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8Fold, NULL, *pErrorCode);
-}
-
-U_NAMESPACE_BEGIN
-
-int32_t CaseMap::utf8ToLower(
-        const char *locale, uint32_t options,
-        const char *src, int32_t srcLength,
-        char *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
-    return ucasemap_mapUTF8(
-        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8ToLower, edits, errorCode);
+    return ucasemap_mapUTF8(csm,
+                   (uint8_t *)dest, destCapacity,
+                   (const uint8_t *)src, srcLength,
+                   ucasemap_internalUTF8Fold, pErrorCode);
 }
-
-int32_t CaseMap::utf8ToUpper(
-        const char *locale, uint32_t options,
-        const char *src, int32_t srcLength,
-        char *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
-    return ucasemap_mapUTF8(
-        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8ToUpper, edits, errorCode);
-}
-
-int32_t CaseMap::utf8Fold(
-        uint32_t options,
-        const char *src, int32_t srcLength,
-        char *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
-    return ucasemap_mapUTF8(
-        UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8Fold, edits, errorCode);
-}
-
-U_NAMESPACE_END
index a253850..ab61e21 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucasemap_titlecase_brkiter.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 #include "unicode/brkiter.h"
 #include "unicode/ubrk.h"
-#include "unicode/casemap.h"
 #include "unicode/ucasemap.h"
 #include "cmemory.h"
 #include "ucase.h"
-#include "ucasemap_imp.h"
-
-U_NAMESPACE_BEGIN
-
-int32_t CaseMap::utf8ToTitle(
-        const char *locale, uint32_t options, BreakIterator *iter,
-        const char *src, int32_t srcLength,
-        char *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
-    if (U_FAILURE(errorCode)) {
-        return 0;
-    }
-    UText utext=UTEXT_INITIALIZER;
-    utext_openUTF8(&utext, src, srcLength, &errorCode);
-    LocalPointer<BreakIterator> ownedIter;
-    if(iter==NULL) {
-        iter=BreakIterator::createWordInstance(Locale(locale), errorCode);
-        ownedIter.adoptInstead(iter);
-    }
-    if(U_FAILURE(errorCode)) {
-        utext_close(&utext);
-        return 0;
-    }
-    iter->setText(&utext, errorCode);
-    int32_t length=ucasemap_mapUTF8(
-        ustrcase_getCaseLocale(locale), options, iter,
-        (uint8_t *)dest, destCapacity,
-        (const uint8_t *)src, srcLength,
-        ucasemap_internalUTF8ToTitle, edits, errorCode);
-    utext_close(&utext);
-    return length;
-}
-
-U_NAMESPACE_END
+#include "ustr_imp.h"
 
 U_NAMESPACE_USE
 
 U_CAPI const UBreakIterator * U_EXPORT2
 ucasemap_getBreakIterator(const UCaseMap *csm) {
-    return reinterpret_cast<UBreakIterator *>(csm->iter);
+    return csm->iter;
 }
 
 U_CAPI void U_EXPORT2
-ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode) {
-    if(U_FAILURE(*pErrorCode)) {
-        return;
-    }
-    delete csm->iter;
-    csm->iter=reinterpret_cast<BreakIterator *>(iterToAdopt);
+ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode * /*pErrorCode*/) {
+    // Do not call ubrk_close() so that we do not depend on all of the BreakIterator code.
+    delete reinterpret_cast<BreakIterator *>(csm->iter);
+    csm->iter=iterToAdopt;
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -83,23 +47,21 @@ ucasemap_utf8ToTitle(UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
                      UErrorCode *pErrorCode) {
-    if (U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
     UText utext=UTEXT_INITIALIZER;
     utext_openUTF8(&utext, (const char *)src, srcLength, pErrorCode);
-    if(csm->iter==NULL) {
-        csm->iter=BreakIterator::createWordInstance(Locale(csm->locale), *pErrorCode);
-    }
-    if (U_FAILURE(*pErrorCode)) {
+    if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
-    csm->iter->setText(&utext, *pErrorCode);
-    int32_t length=ucasemap_mapUTF8(
-            csm->caseLocale, csm->options, csm->iter,
-            (uint8_t *)dest, destCapacity,
-            (const uint8_t *)src, srcLength,
-            ucasemap_internalUTF8ToTitle, NULL, *pErrorCode);
+    if(csm->iter==NULL) {
+        csm->iter=ubrk_open(UBRK_WORD, csm->locale,
+                            NULL, 0,
+                            pErrorCode);
+    }
+    ubrk_setUText(csm->iter, &utext, pErrorCode);
+    int32_t length=ucasemap_mapUTF8(csm,
+                   (uint8_t *)dest, destCapacity,
+                   (const uint8_t *)src, srcLength,
+                   ucasemap_internalUTF8ToTitle, pErrorCode);
     utext_close(&utext);
     return length;
 }
diff --git a/source/common/ucat.c b/source/common/ucat.c
new file mode 100644 (file)
index 0000000..cfd8b53
--- /dev/null
@@ -0,0 +1,78 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: March 19 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+#include "unicode/ucat.h"
+#include "unicode/ustring.h"
+#include "cstring.h"
+#include "uassert.h"
+
+/* Separator between set_num and msg_num */
+static const char SEPARATOR = '%';
+
+/* Maximum length of a set_num/msg_num key, incl. terminating zero.
+ * Longest possible key is "-2147483648%-2147483648" */
+#define MAX_KEY_LEN (24)
+
+/**
+ * Fill in buffer with a set_num/msg_num key string, given the numeric
+ * values. Numeric values must be >= 0. Buffer must be of length
+ * MAX_KEY_LEN or more.
+ */
+static char*
+_catkey(char* buffer, int32_t set_num, int32_t msg_num) {
+    int32_t i = 0;
+    i = T_CString_integerToString(buffer, set_num, 10);
+    buffer[i++] = SEPARATOR;
+    T_CString_integerToString(buffer+i, msg_num, 10);
+    return buffer;
+}
+
+U_CAPI u_nl_catd U_EXPORT2
+u_catopen(const char* name, const char* locale, UErrorCode* ec) {
+    return (u_nl_catd) ures_open(name, locale, ec);
+}
+
+U_CAPI void U_EXPORT2
+u_catclose(u_nl_catd catd) {
+    ures_close((UResourceBundle*) catd); /* may be NULL */
+}
+
+U_CAPI const UChar* U_EXPORT2
+u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num,
+          const UChar* s,
+          int32_t* len, UErrorCode* ec) {
+
+    char key[MAX_KEY_LEN];
+    const UChar* result;
+
+    if (ec == NULL || U_FAILURE(*ec)) {
+        goto ERROR;
+    }
+
+    result = ures_getStringByKey((const UResourceBundle*) catd,
+                                 _catkey(key, set_num, msg_num),
+                                 len, ec);
+    if (U_FAILURE(*ec)) {
+        goto ERROR;
+    }
+
+    return result;
+
+ ERROR:
+    /* In case of any failure, return s */
+    if (len != NULL) {
+        *len = u_strlen(s);
+    }
+    return s;
+}
+
+/*eof*/
diff --git a/source/common/uchar.c b/source/common/uchar.c
new file mode 100644 (file)
index 0000000..496df86
--- /dev/null
@@ -0,0 +1,733 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+********************************************************************************
+*   Copyright (C) 1996-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+********************************************************************************
+*
+* File UCHAR.C
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   04/02/97    aliu        Creation.
+*   4/15/99     Madhu       Updated all the function definitions for C Implementation
+*   5/20/99     Madhu       Added the function u_getVersion()
+*   8/19/1999   srl         Upgraded scripts to Unicode3.0 
+*   11/11/1999  weiv        added u_isalnum(), cleaned comments
+*   01/11/2000  helena      Renamed u_getVersion to u_getUnicodeVersion.
+*   06/20/2000  helena      OS/400 port changes; mostly typecast.
+******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/uchar.h"
+#include "unicode/uscript.h"
+#include "unicode/udata.h"
+#include "uassert.h"
+#include "cmemory.h"
+#include "ucln_cmn.h"
+#include "utrie2.h"
+#include "udataswp.h"
+#include "uprops.h"
+#include "ustr_imp.h"
+
+/* uchar_props_data.h is machine-generated by genprops --csource */
+#define INCLUDED_FROM_UCHAR_C
+#include "uchar_props_data.h"
+
+/* constants and macros for access to the data ------------------------------ */
+
+/* getting a uint32_t properties word from the data */
+#define GET_PROPS(c, result) ((result)=UTRIE2_GET16(&propsTrie, c));
+
+U_CFUNC UBool
+uprv_haveProperties(UErrorCode *pErrorCode) {
+    if(U_FAILURE(*pErrorCode)) {
+        return FALSE;
+    }
+    return TRUE;
+}
+
+/* API functions ------------------------------------------------------------ */
+
+/* Gets the Unicode character's general category.*/
+U_CAPI int8_t U_EXPORT2
+u_charType(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (int8_t)GET_CATEGORY(props);
+}
+
+/* Enumerate all code points with their general categories. */
+struct _EnumTypeCallback {
+    UCharEnumTypeRange *enumRange;
+    const void *context;
+};
+
+static uint32_t U_CALLCONV
+_enumTypeValue(const void *context, uint32_t value) {
+    return GET_CATEGORY(value);
+}
+
+static UBool U_CALLCONV
+_enumTypeRange(const void *context, UChar32 start, UChar32 end, uint32_t value) {
+    /* just cast the value to UCharCategory */
+    return ((struct _EnumTypeCallback *)context)->
+        enumRange(((struct _EnumTypeCallback *)context)->context,
+                  start, end+1, (UCharCategory)value);
+}
+
+U_CAPI void U_EXPORT2
+u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context) {
+    struct _EnumTypeCallback callback;
+
+    if(enumRange==NULL) {
+        return;
+    }
+
+    callback.enumRange=enumRange;
+    callback.context=context;
+    utrie2_enum(&propsTrie, _enumTypeValue, _enumTypeRange, &callback);
+}
+
+/* Checks if ch is a lower case letter.*/
+U_CAPI UBool U_EXPORT2
+u_islower(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(GET_CATEGORY(props)==U_LOWERCASE_LETTER);
+}
+
+/* Checks if ch is an upper case letter.*/
+U_CAPI UBool U_EXPORT2
+u_isupper(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(GET_CATEGORY(props)==U_UPPERCASE_LETTER);
+}
+
+/* Checks if ch is a title case letter; usually upper case letters.*/
+U_CAPI UBool U_EXPORT2
+u_istitle(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(GET_CATEGORY(props)==U_TITLECASE_LETTER);
+}
+
+/* Checks if ch is a decimal digit. */
+U_CAPI UBool U_EXPORT2
+u_isdigit(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(GET_CATEGORY(props)==U_DECIMAL_DIGIT_NUMBER);
+}
+
+U_CAPI UBool U_EXPORT2
+u_isxdigit(UChar32 c) {
+    uint32_t props;
+
+    /* check ASCII and Fullwidth ASCII a-fA-F */
+    if(
+        (c<=0x66 && c>=0x41 && (c<=0x46 || c>=0x61)) ||
+        (c>=0xff21 && c<=0xff46 && (c<=0xff26 || c>=0xff41))
+    ) {
+        return TRUE;
+    }
+
+    GET_PROPS(c, props);
+    return (UBool)(GET_CATEGORY(props)==U_DECIMAL_DIGIT_NUMBER);
+}
+
+/* Checks if the Unicode character is a letter.*/
+U_CAPI UBool U_EXPORT2
+u_isalpha(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&U_GC_L_MASK)!=0);
+}
+
+U_CAPI UBool U_EXPORT2
+u_isUAlphabetic(UChar32 c) {
+    return (u_getUnicodeProperties(c, 1)&U_MASK(UPROPS_ALPHABETIC))!=0;
+}
+
+/* Checks if c is a letter or a decimal digit */
+U_CAPI UBool U_EXPORT2
+u_isalnum(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_ND_MASK))!=0);
+}
+
+/**
+ * Checks if c is alphabetic, or a decimal digit; implements UCHAR_POSIX_ALNUM.
+ * @internal
+ */
+U_CFUNC UBool
+u_isalnumPOSIX(UChar32 c) {
+    return (UBool)(u_isUAlphabetic(c) || u_isdigit(c));
+}
+
+/* Checks if ch is a unicode character with assigned character type.*/
+U_CAPI UBool U_EXPORT2
+u_isdefined(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(GET_CATEGORY(props)!=0);
+}
+
+/* Checks if the Unicode character is a base form character that can take a diacritic.*/
+U_CAPI UBool U_EXPORT2
+u_isbase(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_N_MASK|U_GC_MC_MASK|U_GC_ME_MASK))!=0);
+}
+
+/* Checks if the Unicode character is a control character.*/
+U_CAPI UBool U_EXPORT2
+u_iscntrl(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&(U_GC_CC_MASK|U_GC_CF_MASK|U_GC_ZL_MASK|U_GC_ZP_MASK))!=0);
+}
+
+U_CAPI UBool U_EXPORT2
+u_isISOControl(UChar32 c) {
+    return (uint32_t)c<=0x9f && (c<=0x1f || c>=0x7f);
+}
+
+/* Some control characters that are used as space. */
+#define IS_THAT_CONTROL_SPACE(c) \
+    (c<=0x9f && ((c>=TAB && c<=CR) || (c>=0x1c && c <=0x1f) || c==NL))
+
+/* Java has decided that U+0085 New Line is not whitespace any more. */
+#define IS_THAT_ASCII_CONTROL_SPACE(c) \
+    (c<=0x1f && c>=TAB && (c<=CR || c>=0x1c))
+
+/* Checks if the Unicode character is a space character.*/
+U_CAPI UBool U_EXPORT2
+u_isspace(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&U_GC_Z_MASK)!=0 || IS_THAT_CONTROL_SPACE(c));
+}
+
+U_CAPI UBool U_EXPORT2
+u_isJavaSpaceChar(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&U_GC_Z_MASK)!=0);
+}
+
+/* Checks if the Unicode character is a whitespace character.*/
+U_CAPI UBool U_EXPORT2
+u_isWhitespace(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(
+                ((CAT_MASK(props)&U_GC_Z_MASK)!=0 &&
+                    c!=NBSP && c!=FIGURESP && c!=NNBSP) || /* exclude no-break spaces */
+                IS_THAT_ASCII_CONTROL_SPACE(c)
+           );
+}
+
+U_CAPI UBool U_EXPORT2
+u_isblank(UChar32 c) {
+    if((uint32_t)c<=0x9f) {
+        return c==9 || c==0x20; /* TAB or SPACE */
+    } else {
+        /* Zs */
+        uint32_t props;
+        GET_PROPS(c, props);
+        return (UBool)(GET_CATEGORY(props)==U_SPACE_SEPARATOR);
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+u_isUWhiteSpace(UChar32 c) {
+    return (u_getUnicodeProperties(c, 1)&U_MASK(UPROPS_WHITE_SPACE))!=0;
+}
+
+/* Checks if the Unicode character is printable.*/
+U_CAPI UBool U_EXPORT2
+u_isprint(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    /* comparing ==0 returns FALSE for the categories mentioned */
+    return (UBool)((CAT_MASK(props)&U_GC_C_MASK)==0);
+}
+
+/**
+ * Checks if c is in \p{graph}\p{blank} - \p{cntrl}.
+ * Implements UCHAR_POSIX_PRINT.
+ * @internal
+ */
+U_CFUNC UBool
+u_isprintPOSIX(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    /*
+     * The only cntrl character in graph+blank is TAB (in blank).
+     * Here we implement (blank-TAB)=Zs instead of calling u_isblank().
+     */
+    return (UBool)((GET_CATEGORY(props)==U_SPACE_SEPARATOR) || u_isgraphPOSIX(c));
+}
+
+U_CAPI UBool U_EXPORT2
+u_isgraph(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    /* comparing ==0 returns FALSE for the categories mentioned */
+    return (UBool)((CAT_MASK(props)&
+                    (U_GC_CC_MASK|U_GC_CF_MASK|U_GC_CS_MASK|U_GC_CN_MASK|U_GC_Z_MASK))
+                   ==0);
+}
+
+/**
+ * Checks if c is in
+ * [^\p{space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]
+ * with space=\p{Whitespace} and Control=Cc.
+ * Implements UCHAR_POSIX_GRAPH.
+ * @internal
+ */
+U_CFUNC UBool
+u_isgraphPOSIX(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    /* \p{space}\p{gc=Control} == \p{gc=Z}\p{Control} */
+    /* comparing ==0 returns FALSE for the categories mentioned */
+    return (UBool)((CAT_MASK(props)&
+                    (U_GC_CC_MASK|U_GC_CS_MASK|U_GC_CN_MASK|U_GC_Z_MASK))
+                   ==0);
+}
+
+U_CAPI UBool U_EXPORT2
+u_ispunct(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&U_GC_P_MASK)!=0);
+}
+
+/* Checks if the Unicode character can start a Unicode identifier.*/
+U_CAPI UBool U_EXPORT2
+u_isIDStart(UChar32 c) {
+    /* same as u_isalpha() */
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_NL_MASK))!=0);
+}
+
+/* Checks if the Unicode character can be a Unicode identifier part other than starting the
+ identifier.*/
+U_CAPI UBool U_EXPORT2
+u_isIDPart(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(
+           (CAT_MASK(props)&
+            (U_GC_ND_MASK|U_GC_NL_MASK|
+             U_GC_L_MASK|
+             U_GC_PC_MASK|U_GC_MC_MASK|U_GC_MN_MASK)
+           )!=0 ||
+           u_isIDIgnorable(c));
+}
+
+/*Checks if the Unicode character can be ignorable in a Java or Unicode identifier.*/
+U_CAPI UBool U_EXPORT2
+u_isIDIgnorable(UChar32 c) {
+    if(c<=0x9f) {
+        return u_isISOControl(c) && !IS_THAT_ASCII_CONTROL_SPACE(c);
+    } else {
+        uint32_t props;
+        GET_PROPS(c, props);
+        return (UBool)(GET_CATEGORY(props)==U_FORMAT_CHAR);
+    }
+}
+
+/*Checks if the Unicode character can start a Java identifier.*/
+U_CAPI UBool U_EXPORT2
+u_isJavaIDStart(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_SC_MASK|U_GC_PC_MASK))!=0);
+}
+
+/*Checks if the Unicode character can be a Java identifier part other than starting the
+ * identifier.
+ */
+U_CAPI UBool U_EXPORT2
+u_isJavaIDPart(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return (UBool)(
+           (CAT_MASK(props)&
+            (U_GC_ND_MASK|U_GC_NL_MASK|
+             U_GC_L_MASK|
+             U_GC_SC_MASK|U_GC_PC_MASK|
+             U_GC_MC_MASK|U_GC_MN_MASK)
+           )!=0 ||
+           u_isIDIgnorable(c));
+}
+
+U_CAPI int32_t U_EXPORT2
+u_charDigitValue(UChar32 c) {
+    uint32_t props;
+    int32_t value;
+    GET_PROPS(c, props);
+    value=(int32_t)GET_NUMERIC_TYPE_VALUE(props)-UPROPS_NTV_DECIMAL_START;
+    if(value<=9) {
+        return value;
+    } else {
+        return -1;
+    }
+}
+
+U_CAPI double U_EXPORT2
+u_getNumericValue(UChar32 c) {
+    uint32_t props;
+    int32_t ntv;
+    GET_PROPS(c, props);
+    ntv=(int32_t)GET_NUMERIC_TYPE_VALUE(props);
+
+    if(ntv==UPROPS_NTV_NONE) {
+        return U_NO_NUMERIC_VALUE;
+    } else if(ntv<UPROPS_NTV_DIGIT_START) {
+        /* decimal digit */
+        return ntv-UPROPS_NTV_DECIMAL_START;
+    } else if(ntv<UPROPS_NTV_NUMERIC_START) {
+        /* other digit */
+        return ntv-UPROPS_NTV_DIGIT_START;
+    } else if(ntv<UPROPS_NTV_FRACTION_START) {
+        /* small integer */
+        return ntv-UPROPS_NTV_NUMERIC_START;
+    } else if(ntv<UPROPS_NTV_LARGE_START) {
+        /* fraction */
+        int32_t numerator=(ntv>>4)-12;
+        int32_t denominator=(ntv&0xf)+1;
+        return (double)numerator/denominator;
+    } else if(ntv<UPROPS_NTV_BASE60_START) {
+        /* large, single-significant-digit integer */
+        double numValue;
+        int32_t mant=(ntv>>5)-14;
+        int32_t exp=(ntv&0x1f)+2;
+        numValue=mant;
+
+        /* multiply by 10^exp without math.h */
+        while(exp>=4) {
+            numValue*=10000.;
+            exp-=4;
+        }
+        switch(exp) {
+        case 3:
+            numValue*=1000.;
+            break;
+        case 2:
+            numValue*=100.;
+            break;
+        case 1:
+            numValue*=10.;
+            break;
+        case 0:
+        default:
+            break;
+        }
+
+        return numValue;
+    } else if(ntv<UPROPS_NTV_FRACTION20_START) {
+        /* sexagesimal (base 60) integer */
+        int32_t numValue=(ntv>>2)-0xbf;
+        int32_t exp=(ntv&3)+1;
+
+        switch(exp) {
+        case 4:
+            numValue*=60*60*60*60;
+            break;
+        case 3:
+            numValue*=60*60*60;
+            break;
+        case 2:
+            numValue*=60*60;
+            break;
+        case 1:
+            numValue*=60;
+            break;
+        case 0:
+        default:
+            break;
+        }
+
+        return numValue;
+    } else if(ntv<UPROPS_NTV_RESERVED_START) {
+        // fraction-20 e.g. 3/80
+        int32_t frac20=ntv-UPROPS_NTV_FRACTION20_START;  // 0..0x17
+        int32_t numerator=2*(frac20&3)+1;
+        int32_t denominator=20<<(frac20>>2);
+        return (double)numerator/denominator;
+    } else {
+        /* reserved */
+        return U_NO_NUMERIC_VALUE;
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+u_digit(UChar32 ch, int8_t radix) {
+    int8_t value;
+    if((uint8_t)(radix-2)<=(36-2)) {
+        value=(int8_t)u_charDigitValue(ch);
+        if(value<0) {
+            /* ch is not a decimal digit, try latin letters */
+            if(ch>=0x61 && ch<=0x7A) {
+                value=(int8_t)(ch-0x57);  /* ch - 'a' + 10 */
+            } else if(ch>=0x41 && ch<=0x5A) {
+                value=(int8_t)(ch-0x37);  /* ch - 'A' + 10 */
+            } else if(ch>=0xFF41 && ch<=0xFF5A) {
+                value=(int8_t)(ch-0xFF37);  /* fullwidth ASCII a-z */
+            } else if(ch>=0xFF21 && ch<=0xFF3A) {
+                value=(int8_t)(ch-0xFF17);  /* fullwidth ASCII A-Z */
+            }
+        }
+    } else {
+        value=-1;   /* invalid radix */
+    }
+    return (int8_t)((value<radix) ? value : -1);
+}
+
+U_CAPI UChar32 U_EXPORT2
+u_forDigit(int32_t digit, int8_t radix) {
+    if((uint8_t)(radix-2)>(36-2) || (uint32_t)digit>=(uint32_t)radix) {
+        return 0;
+    } else if(digit<10) {
+        return (UChar32)(0x30+digit);
+    } else {
+        return (UChar32)((0x61-10)+digit);
+    }
+}
+
+/* miscellaneous, and support for uprops.cpp -------------------------------- */
+
+U_CAPI void U_EXPORT2
+u_getUnicodeVersion(UVersionInfo versionArray) {
+    if(versionArray!=NULL) {
+        uprv_memcpy(versionArray, dataVersion, U_MAX_VERSION_LENGTH);
+    }
+}
+
+U_CFUNC uint32_t
+u_getMainProperties(UChar32 c) {
+    uint32_t props;
+    GET_PROPS(c, props);
+    return props;
+}
+
+U_CFUNC uint32_t
+u_getUnicodeProperties(UChar32 c, int32_t column) {
+    U_ASSERT(column>=0);
+    if(column>=propsVectorsColumns) {
+        return 0;
+    } else {
+        uint16_t vecIndex=UTRIE2_GET16(&propsVectorsTrie, c);
+        return propsVectors[vecIndex+column];
+    }
+}
+
+U_CFUNC int32_t
+uprv_getMaxValues(int32_t column) {
+    switch(column) {
+    case 0:
+        return indexes[UPROPS_MAX_VALUES_INDEX];
+    case 2:
+        return indexes[UPROPS_MAX_VALUES_2_INDEX];
+    default:
+        return 0;
+    }
+}
+
+U_CAPI void U_EXPORT2
+u_charAge(UChar32 c, UVersionInfo versionArray) {
+    if(versionArray!=NULL) {
+        uint32_t version=u_getUnicodeProperties(c, 0)>>UPROPS_AGE_SHIFT;
+        versionArray[0]=(uint8_t)(version>>4);
+        versionArray[1]=(uint8_t)(version&0xf);
+        versionArray[2]=versionArray[3]=0;
+    }
+}
+
+U_CAPI UScriptCode U_EXPORT2
+uscript_getScript(UChar32 c, UErrorCode *pErrorCode) {
+    uint32_t scriptX;
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return USCRIPT_INVALID_CODE;
+    }
+    if((uint32_t)c>0x10ffff) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return USCRIPT_INVALID_CODE;
+    }
+    scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
+    if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
+        return (UScriptCode)scriptX;
+    } else if(scriptX<UPROPS_SCRIPT_X_WITH_INHERITED) {
+        return USCRIPT_COMMON;
+    } else if(scriptX<UPROPS_SCRIPT_X_WITH_OTHER) {
+        return USCRIPT_INHERITED;
+    } else {
+        return (UScriptCode)scriptExtensions[scriptX&UPROPS_SCRIPT_MASK];
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+uscript_hasScript(UChar32 c, UScriptCode sc) {
+    const uint16_t *scx;
+    uint32_t scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
+    if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
+        return sc==(UScriptCode)scriptX;
+    }
+
+    scx=scriptExtensions+(scriptX&UPROPS_SCRIPT_MASK);
+    if(scriptX>=UPROPS_SCRIPT_X_WITH_OTHER) {
+        scx=scriptExtensions+scx[1];
+    }
+    if(sc>=USCRIPT_CODE_LIMIT) {
+        /* Guard against bogus input that would make us go past the Script_Extensions terminator. */
+        return FALSE;
+    }
+    while(sc>*scx) {
+        ++scx;
+    }
+    return sc==(*scx&0x7fff);
+}
+
+U_CAPI int32_t U_EXPORT2
+uscript_getScriptExtensions(UChar32 c,
+                            UScriptCode *scripts, int32_t capacity,
+                            UErrorCode *pErrorCode) {
+    uint32_t scriptX;
+    int32_t length;
+    const uint16_t *scx;
+    uint16_t sx;
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(capacity<0 || (capacity>0 && scripts==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
+    if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
+        if(capacity==0) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        } else {
+            scripts[0]=(UScriptCode)scriptX;
+        }
+        return 1;
+    }
+
+    scx=scriptExtensions+(scriptX&UPROPS_SCRIPT_MASK);
+    if(scriptX>=UPROPS_SCRIPT_X_WITH_OTHER) {
+        scx=scriptExtensions+scx[1];
+    }
+    length=0;
+    do {
+        sx=*scx++;
+        if(length<capacity) {
+            scripts[length]=(UScriptCode)(sx&0x7fff);
+        }
+        ++length;
+    } while(sx<0x8000);
+    if(length>capacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+    return length;
+}
+
+U_CAPI UBlockCode U_EXPORT2
+ublock_getCode(UChar32 c) {
+    return (UBlockCode)((u_getUnicodeProperties(c, 0)&UPROPS_BLOCK_MASK)>>UPROPS_BLOCK_SHIFT);
+}
+
+/* property starts for UnicodeSet ------------------------------------------- */
+
+static UBool U_CALLCONV
+_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 end, uint32_t value) {
+    /* add the start code point to the USet */
+    const USetAdder *sa=(const USetAdder *)context;
+    sa->add(sa->set, start);
+    return TRUE;
+}
+
+#define USET_ADD_CP_AND_NEXT(sa, cp) sa->add(sa->set, cp); sa->add(sa->set, cp+1)
+
+U_CFUNC void U_EXPORT2
+uchar_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    /* add the start code point of each same-value range of the main trie */
+    utrie2_enum(&propsTrie, NULL, _enumPropertyStartsRange, sa);
+
+    /* add code points with hardcoded properties, plus the ones following them */
+
+    /* add for u_isblank() */
+    USET_ADD_CP_AND_NEXT(sa, TAB);
+
+    /* add for IS_THAT_CONTROL_SPACE() */
+    sa->add(sa->set, CR+1); /* range TAB..CR */
+    sa->add(sa->set, 0x1c);
+    sa->add(sa->set, 0x1f+1);
+    USET_ADD_CP_AND_NEXT(sa, NL);
+
+    /* add for u_isIDIgnorable() what was not added above */
+    sa->add(sa->set, DEL); /* range DEL..NBSP-1, NBSP added below */
+    sa->add(sa->set, HAIRSP);
+    sa->add(sa->set, RLM+1);
+    sa->add(sa->set, INHSWAP);
+    sa->add(sa->set, NOMDIG+1);
+    USET_ADD_CP_AND_NEXT(sa, ZWNBSP);
+
+    /* add no-break spaces for u_isWhitespace() what was not added above */
+    USET_ADD_CP_AND_NEXT(sa, NBSP);
+    USET_ADD_CP_AND_NEXT(sa, FIGURESP);
+    USET_ADD_CP_AND_NEXT(sa, NNBSP);
+
+    /* add for u_digit() */
+    sa->add(sa->set, U_a);
+    sa->add(sa->set, U_z+1);
+    sa->add(sa->set, U_A);
+    sa->add(sa->set, U_Z+1);
+    sa->add(sa->set, U_FW_a);
+    sa->add(sa->set, U_FW_z+1);
+    sa->add(sa->set, U_FW_A);
+    sa->add(sa->set, U_FW_Z+1);
+
+    /* add for u_isxdigit() */
+    sa->add(sa->set, U_f+1);
+    sa->add(sa->set, U_F+1);
+    sa->add(sa->set, U_FW_f+1);
+    sa->add(sa->set, U_FW_F+1);
+
+    /* add for UCHAR_DEFAULT_IGNORABLE_CODE_POINT what was not added above */
+    sa->add(sa->set, WJ); /* range WJ..NOMDIG */
+    sa->add(sa->set, 0xfff0);
+    sa->add(sa->set, 0xfffb+1);
+    sa->add(sa->set, 0xe0000);
+    sa->add(sa->set, 0xe0fff+1);
+
+    /* add for UCHAR_GRAPHEME_BASE and others */
+    USET_ADD_CP_AND_NEXT(sa, CGJ);
+}
+
+U_CFUNC void U_EXPORT2
+upropsvec_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    /* add the start code point of each same-value range of the properties vectors trie */
+    if(propsVectorsColumns>0) {
+        /* if propsVectorsColumns==0 then the properties vectors trie may not be there at all */
+        utrie2_enum(&propsVectorsTrie, NULL, _enumPropertyStartsRange, sa);
+    }
+}
index fd74402..79ba55e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (C) 1999-2016, International Business Machines
@@ -1330,2241 +1330,2199 @@ static const UTrie2 propsTrie={
     NULL, 0, FALSE, FALSE, 0, NULL
 };
 
-static const uint16_t propsVectorsTrie_index[29136]={
-0x4cf,0x4d7,0x4df,0x4e7,0x4ff,0x507,0x50f,0x517,0x51f,0x527,0x52f,0x537,0x53f,0x547,0x54f,0x557,
-0x55e,0x566,0x56e,0x576,0x579,0x581,0x589,0x591,0x599,0x5a1,0x5a9,0x5b1,0x5b9,0x5c1,0x5c9,0x5d1,
-0x5d9,0x5e1,0x5e8,0x5f0,0x5f8,0x600,0x608,0x610,0x618,0x620,0x625,0x62d,0x634,0x63c,0x644,0x64c,
-0x654,0x65c,0x664,0x66c,0x673,0x67b,0x683,0x68b,0x693,0x69b,0x6a3,0x6ab,0x6b3,0x6bb,0x6c3,0x6cb,
-0x195d,0xda7,0xe8f,0x6d3,0x4ef,0xeff,0xf07,0x1aeb,0x124c,0x1264,0x1254,0x125c,0x7cf,0x7d5,0x7dd,0x7e5,
-0x7ed,0x7f3,0x7fb,0x803,0x80b,0x811,0x819,0x821,0x829,0x82f,0x837,0x83f,0x847,0x84f,0x857,0x85e,
-0x866,0x86c,0x874,0x87c,0x884,0x88a,0x892,0x89a,0x8a2,0x8ba,0x8aa,0x8b2,0x8c2,0x8c9,0x8d1,0x8d9,
-0x8e1,0x8e5,0x8ed,0x8f4,0x8fc,0x904,0x90c,0x914,0x156c,0x1574,0x91c,0x924,0x92c,0x934,0x93c,0x943,
-0x15d2,0x15c2,0x15ca,0x18a0,0x18a8,0x1274,0x94b,0x126c,0x14b6,0x14b6,0x14b8,0x1288,0x1289,0x127c,0x127e,0x1280,
-0x15da,0x15dc,0x953,0x15dc,0x95b,0x960,0x968,0x15e1,0x96e,0x15dc,0x974,0x97c,0xc7e,0x15e9,0x15e9,0x984,
-0x15f9,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,0x15fa,
-0x15fa,0x15fa,0x15fa,0x15f1,0x98c,0x1602,0x1602,0x994,0xb8b,0xb93,0xb9b,0xba3,0x1612,0x160a,0x99c,0x9a4,
-0x9ac,0x161c,0x1624,0x9b4,0x161a,0x9bc,0x1965,0xdaf,0xbab,0xbb3,0xbbb,0xbc0,0x1816,0xcb1,0xcb8,0x177e,
-0xc4e,0x196d,0xdb7,0xdbf,0xdc7,0xdcf,0xfb7,0xfb7,0x1866,0x186b,0xceb,0xcf3,0x18dc,0x18e4,0x1a0e,0xe97,
-0x18ec,0xd3b,0xd43,0x18f4,0x6db,0x4ef,0xf97,0xdd7,0x179e,0x1786,0x1796,0x178e,0x182e,0x1826,0x17ee,0xc5e,
-0x1291,0x1291,0x1291,0x1291,0x1294,0x1291,0x1291,0x129c,0x9c4,0x12a4,0x9c8,0x9d0,0x12a4,0x9d8,0x9e0,0x9e8,
-0x12b4,0x12ac,0x12bc,0x9f0,0x9f8,0xa00,0xa08,0xa10,0x12c4,0x12cc,0x12d4,0x12dc,0xa18,0x12e4,0x12eb,0x12f3,
-0x12fb,0x1303,0x130b,0x1313,0x131b,0x1322,0x132a,0x1332,0x133a,0x1342,0x1345,0x1347,0x162c,0x1711,0x1717,0xa20,
-0x134f,0xa28,0xa30,0x1469,0x146e,0x1471,0x1479,0x1357,0x1481,0x1481,0x1367,0x135f,0x136f,0x1377,0x137f,0x1387,
-0x138f,0x1397,0x139f,0x13a7,0x171f,0x1776,0x18b0,0x19ee,0x13b7,0x13be,0x13c6,0x13ce,0x13af,0x13d6,0x1727,0x172e,
-0x1634,0x1634,0x1634,0x1634,0x1634,0x1634,0x1634,0x1634,0x1736,0x1739,0x1736,0x1736,0x1741,0x1748,0x174a,0x1751,
-0x1759,0x175d,0x175d,0x1760,0x175d,0x175d,0x1766,0x175d,0x17a6,0x185e,0x18b8,0xbc8,0xbce,0xbd4,0xbdc,0xbe1,
-0x1806,0xc8e,0xc92,0x1873,0x17f6,0x17f6,0x17f6,0xc66,0x17fe,0xc86,0x1846,0xcdb,0xc6e,0xc76,0xc76,0x18fc,
-0x1836,0x18c0,0xcc8,0xccb,0xa38,0x163c,0x163c,0xa40,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0xa48,0x6df,
-0x149e,0x14c0,0xa50,0x14c8,0xa58,0x14d0,0x14d8,0x14e0,0xa60,0xa65,0x14e8,0x14ef,0xa6a,0xa72,0x1856,0xc56,
-0xa7a,0x1546,0x154d,0x14f7,0x1555,0x155c,0x14ff,0xa82,0x1518,0x1518,0x151a,0x1507,0x150f,0x150f,0x1510,0x1564,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,
-0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x1201,0x17ae,0x17ae,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,
-0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1522,0x1529,0x1211,0x1209,
-0x1654,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,
-0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,0x165a,
-0x165a,0x165a,0x165a,0x165a,0xa8a,0x1662,0xa92,0x1975,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,0x1908,
-0x1904,0xd4b,0x1918,0x1910,0x191a,0x197d,0x197d,0xddf,0x180e,0x187b,0x18d0,0x18d4,0x18c8,0xcfb,0xd01,0xd04,
-0x183e,0xcd3,0x1883,0xd0c,0x1922,0x1925,0xd53,0xde7,0x1935,0x192d,0xd5b,0xdef,0x1985,0x1989,0xdf7,0x105d,
-0x193d,0xd63,0xd6b,0x1991,0x19a1,0x1999,0xdff,0xf5a,0xe9f,0xea7,0x1b5e,0x1015,0x1c03,0x1c03,0x19a9,0xe07,
-0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,
-0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,
-0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,
-0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,
-0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,
-0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,
-0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,
-0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,
-0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,
-0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,
-0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,
-0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,
-0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,
-0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,
-0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,
-0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,
-0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,
-0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,
-0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,
-0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,
-0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,
-0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0x15ba,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8,0x15b9,0xa9a,0xe0f,0xe12,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,
-0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,0x158c,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,
-0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1489,0x1531,0x1531,0x1531,0x1531,0x1531,0x1531,0x1531,0x1531,
-0x1536,0x153e,0x176e,0x1219,0x184e,0x184e,0x121d,0x1224,0xaa2,0xaaa,0xab2,0x13f6,0x13fd,0x1405,0xaba,0x140d,
-0x143e,0x143e,0x13e6,0x13ee,0x1415,0x1435,0x1436,0x1446,0x141d,0x13de,0xac2,0x1425,0xaca,0x142d,0xad2,0xad6,
-0xce3,0x144e,0xade,0xae6,0x1456,0x145c,0x1461,0xaee,0xafe,0x14a6,0x14ae,0x1491,0x1496,0xb06,0xb0e,0xaf6,
-0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,
-0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x157c,0x1584,0x1584,0x1584,0x1584,
-0x13bc,0x13bc,0x13fc,0x143c,0x147c,0x14bc,0x14fc,0x153c,0x1578,0x15b8,0x15e4,0x1624,0x1664,0x16a4,0x16e4,0x1724,
-0x1764,0x17a0,0x17e0,0x1820,0x1860,0x1894,0x18d0,0x1910,0x1950,0x1990,0x19cc,0x1a0c,0x1a4c,0x1a8c,0x1acc,0x1b0c,
-0xa80,0xac0,0xb00,0xb3b,0xb7b,0xa40,0xbbb,0xa40,0xe65,0xa40,0xa40,0xa40,0xa40,0xbfb,0x12fb,0x12fb,
-0xea5,0xee5,0xa40,0xa40,0xa40,0xa40,0xc3b,0xc5b,0xa40,0xa40,0xc9b,0xcdb,0xd1b,0xe2d,0xded,0xd5d,
-0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,0x123b,
-0x123b,0x123b,0x123b,0x123b,0xf25,0x127b,0x10bb,0x10fb,0x12bb,0x1045,0x107b,0x107b,0x107b,0xf65,0xf85,0xfc5,
-0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,
-0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0xf85,0x1005,
+static const uint16_t propsVectorsTrie_index[28540]={
+0x4bb,0x4c3,0x4cb,0x4d3,0x4eb,0x4f3,0x4fb,0x503,0x50b,0x513,0x51b,0x523,0x52b,0x533,0x53b,0x543,
+0x54a,0x552,0x55a,0x562,0x565,0x56d,0x575,0x57d,0x585,0x58d,0x595,0x59d,0x5a5,0x5ad,0x5b5,0x5bd,
+0x5c5,0x5cd,0x5d4,0x5dc,0x5e4,0x5ec,0x5f4,0x5fc,0x604,0x60c,0x611,0x619,0x620,0x628,0x630,0x638,
+0x640,0x648,0x650,0x658,0x65f,0x667,0x66f,0x677,0x67f,0x687,0x68f,0x697,0x69f,0x6a7,0x6af,0x6b7,
+0x18ce,0xd31,0xe19,0x4db,0x4db,0xe89,0xe91,0x1a56,0x11bd,0x11d5,0x11c5,0x11cd,0x75c,0x762,0x76a,0x772,
+0x77a,0x780,0x788,0x790,0x798,0x79e,0x7a6,0x7ae,0x7b6,0x7bc,0x7c4,0x7cc,0x7d4,0x7dc,0x7e4,0x7eb,
+0x7f3,0x7f9,0x801,0x809,0x811,0x817,0x81f,0x827,0x82f,0x835,0x83d,0x845,0x84d,0x854,0x85c,0x864,
+0x86c,0x870,0x878,0x87f,0x887,0x88f,0x897,0x89f,0x14dd,0x14e5,0x8a7,0x8af,0x8b7,0x8bf,0x8c7,0x8ce,
+0x1543,0x1533,0x153b,0x1811,0x1819,0x11e5,0x8d6,0x11dd,0x1427,0x1427,0x1429,0x11f9,0x11fa,0x11ed,0x11ef,0x11f1,
+0x154b,0x154d,0x8de,0x154d,0x8e6,0x8eb,0x8f3,0x1552,0x8f9,0x154d,0x8ff,0x907,0xc09,0x155a,0x155a,0x90f,
+0x156a,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,0x156b,
+0x156b,0x156b,0x156b,0x1562,0x917,0x1573,0x1573,0x91f,0xb16,0xb1e,0xb26,0xb2e,0x1583,0x157b,0x927,0x92f,
+0x937,0x158d,0x1595,0x93f,0x158b,0x947,0x18d6,0xd39,0xb36,0xb3e,0xb46,0xb4b,0x1787,0xc3c,0xc43,0x16ef,
+0xbd9,0x18de,0xd41,0xd49,0xd51,0xd59,0xf41,0xf41,0x17d7,0x17dc,0xc75,0xc7d,0x184d,0x1855,0x197f,0xe21,
+0x185d,0xcc5,0xccd,0x1865,0x6bf,0x4db,0xf21,0xd61,0x170f,0x16f7,0x1707,0x16ff,0x179f,0x1797,0x175f,0xbe9,
+0x1202,0x1202,0x1202,0x1202,0x1205,0x1202,0x1202,0x120d,0x94f,0x1215,0x953,0x95b,0x1215,0x963,0x96b,0x973,
+0x1225,0x121d,0x122d,0x97b,0x983,0x98b,0x993,0x99b,0x1235,0x123d,0x1245,0x124d,0x9a3,0x1255,0x125c,0x1264,
+0x126c,0x1274,0x127c,0x1284,0x128c,0x1293,0x129b,0x12a3,0x12ab,0x12b3,0x12b6,0x12b8,0x159d,0x1682,0x1688,0x9ab,
+0x12c0,0x9b3,0x9bb,0x13da,0x13df,0x13e2,0x13ea,0x12c8,0x13f2,0x13f2,0x12d8,0x12d0,0x12e0,0x12e8,0x12f0,0x12f8,
+0x1300,0x1308,0x1310,0x1318,0x1690,0x16e7,0x1821,0x195f,0x1328,0x132f,0x1337,0x133f,0x1320,0x1347,0x1698,0x169f,
+0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x16a7,0x16aa,0x16a7,0x16a7,0x16b2,0x16b9,0x16bb,0x16c2,
+0x16ca,0x16ce,0x16ce,0x16d1,0x16ce,0x16ce,0x16d7,0x16ce,0x1717,0x17cf,0x1829,0xb53,0xb59,0xb5f,0xb67,0xb6c,
+0x1777,0xc19,0xc1d,0x17e4,0x1767,0x1767,0x1767,0xbf1,0x176f,0xc11,0x17b7,0xc65,0xbf9,0xc01,0xc01,0x186d,
+0x17a7,0x1831,0xc53,0xc55,0x9c3,0x15ad,0x15ad,0x9cb,0x15b5,0x15b5,0x15b5,0x15b5,0x15b5,0x15b5,0x9d3,0x6c3,
+0x140f,0x1431,0x9db,0x1439,0x9e3,0x1441,0x1449,0x1451,0x9eb,0x9f0,0x1459,0x1460,0x9f5,0x9fd,0x17c7,0xbe1,
+0xa05,0x14b7,0x14be,0x1468,0x14c6,0x14cd,0x1470,0xa0d,0x1489,0x1489,0x148b,0x1478,0x1480,0x1480,0x1481,0x14d5,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
+0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x1174,0x171f,0x171f,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,
+0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x1493,0x149a,0x117c,0x1182,
+0x15c5,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,
+0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,0x15cb,
+0x15cb,0x15cb,0x15cb,0x15cb,0xa15,0x15d3,0xa1d,0x18e6,0x1879,0x1879,0x1879,0x1879,0x1879,0x1879,0x1879,0x1879,
+0x1875,0xcd5,0x1889,0x1881,0x188b,0x18ee,0x18ee,0xd69,0x177f,0x17ec,0x1841,0x1845,0x1839,0xc85,0xc8b,0xc8e,
+0x17af,0xc5d,0x17f4,0xc96,0x1893,0x1896,0xcdd,0xd71,0x18a6,0x189e,0xce5,0xd79,0x18f6,0x18fa,0xd81,0xfe7,
+0x18ae,0xced,0xcf5,0x1902,0x1912,0x190a,0xd89,0xee4,0xe29,0xe31,0x1ac9,0xf9f,0x1b6e,0x1b6e,0x191a,0xd91,
+0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,
+0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,
+0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,
+0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,
+0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,
+0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,
+0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,
+0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,
+0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,
+0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,
+0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,
+0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,
+0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,
+0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,
+0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,
+0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,
+0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,
+0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,
+0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,
+0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,
+0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,
+0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0xa25,0xd99,0xd9c,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,
+0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,
+0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x13fa,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,0x14a2,
+0x14a7,0x14af,0x16df,0x118a,0x17bf,0x17bf,0x118e,0x1195,0xa2d,0xa35,0xa3d,0x1367,0x136e,0x1376,0xa45,0x137e,
+0x13af,0x13af,0x1357,0x135f,0x1386,0x13a6,0x13a7,0x13b7,0x138e,0x134f,0xa4d,0x1396,0xa55,0x139e,0xa5d,0xa61,
+0xc6d,0x13bf,0xa69,0xa71,0x13c7,0x13cd,0x13d2,0xa79,0xa89,0x1417,0x141f,0x1402,0x1407,0xa91,0xa99,0xa81,
+0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,
+0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14ed,0x14f5,0x14f5,0x14f5,0x14f5,
+0x136c,0x136c,0x13ac,0x13ec,0x142c,0x146c,0x14ac,0x14ec,0x1528,0x1568,0x1594,0x15d4,0x1614,0x1654,0x1694,0x16d4,
+0x1714,0x1750,0x1790,0x17d0,0x1810,0x1844,0x1880,0x18c0,0x1900,0x1940,0x197c,0x19bc,0x19fc,0x1a3c,0x1a7c,0x1abc,
+0xa80,0xac0,0xb00,0xe4d,0xb40,0xa40,0xb80,0xa40,0xe73,0xa40,0xa40,0xa40,0xa40,0xbc0,0x12a9,0x12a9,
+0xeb3,0xef3,0xa40,0xa40,0xa40,0xa40,0xdd2,0xc00,0xa40,0xa40,0xc40,0xc80,0xcc0,0xe12,0xd92,0xd02,
+0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,0x11e9,
+0x11e9,0x11e9,0x11e9,0x11e9,0xf33,0x1229,0x1069,0x10a9,0x1269,0xf73,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfe9,
+0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,
+0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0xfa9,0x1029,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
-0xd9d,0xdad,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
-0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd1d,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x113b,
-0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,
-0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x11fb,0x117b,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0xbe9,0xbf0,0xbf8,0xc00,0x17b6,0x17b6,0x17b6,0xc08,0xc10,0xc13,0x17e6,0x17de,0xc46,0xd73,0xd77,0xd7b,
-0x4ef,0x4ef,0x4ef,0x4ef,0xd83,0x1945,0xd8b,0xfaf,0x166a,0xb16,0xb1c,0x106d,0xc1b,0x181e,0xcc0,0x4ef,
-0x167f,0x1672,0x1677,0x17be,0xc23,0xc2b,0x11c6,0x11cc,0x1b46,0xfcc,0x1b36,0x6e7,0x4ef,0x4ef,0x4ef,0x4ef,
-0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x1b66,0x101d,0x1025,0x102d,0x4ef,0x4ef,0x4ef,0x4ef,
-0xc33,0xc36,0xe1a,0x1bae,0x1065,0x6ef,0x4ef,0x10fe,0xd14,0xd93,0x4ef,0x4ef,0x1afb,0xf62,0xf6a,0x1bee,
-0xc9a,0xca1,0xca9,0x19b1,0x1b8e,0x4ef,0x1b6e,0x103d,0x19b9,0xe22,0xe2a,0xe32,0x108d,0x6f7,0x4ef,0x4ef,
-0x19c1,0x19c1,0x6ff,0x4ef,0x1c1b,0x1116,0x1c13,0x111e,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0xe3a,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x1a16,0x1a18,0xeaf,0xeb6,0x19d1,0x19c9,0xe42,0xf8f,0x1af3,0xf4a,0xf52,0x1035,0x1b0b,0x1b0f,0xf87,0x10ad,
-0x1000,0x1005,0x707,0x4ef,0x1106,0x110e,0x1b56,0x100d,0xfe2,0xfe8,0xff0,0xff8,0x4ef,0x4ef,0x4ef,0x4ef,
-0x1c5b,0x1c53,0x11b6,0x11be,0x1bd6,0x1bce,0x10d4,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1bbe,0x1095,0x109d,0x10a5,
-0x1b86,0x1b7e,0x104d,0x11ae,0x1b17,0xf9f,0x70f,0x4ef,0x10e4,0x10ec,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x1be6,0x1bde,0x10dc,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x79a,0x79e,0x717,0x7a6,0x71e,
-0x726,0x1bb6,0x1085,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1174,0x1179,0x1181,0x1188,0x11a0,
-0x11a6,0x4ef,0x4ef,0x72e,0x732,0x73a,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x188b,0x188b,0x188b,0x188b,0x188b,
-0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,
-0x188b,0x188b,0x188b,0x188b,0x188b,0x188b,0x1890,0xd1c,0xd23,0xd23,0xd23,0x1898,0x1898,0x1898,0xd2b,0x1c0b,
-0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x742,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,
-0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19db,0x19d9,0x19e3,
-0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x19e6,0x19d9,0x19d9,0x19d9,0x19d9,0x19d9,0x74a,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,
-0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0xebe,0x1055,0x752,0x4ef,
-0x4ef,0x756,0xfa7,0x1ba6,0x1b9e,0x1075,0x107d,0x75e,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x1b03,0x1b03,0xf72,0xf77,0xf7f,0x4ef,0x4ef,0x1198,0xec6,0xec7,0xec7,0xec7,0xec7,
-0xec7,0xec7,0xec7,0x766,0x4ef,0x4ef,0x762,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,0x7b7,
-0x7b7,0x7b7,0x76e,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1b3e,0x1b3e,0x1b3e,0xfbf,0xfc4,
-0x776,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1687,0x1687,0x1687,0x1687,0x1687,
-0x1687,0x1687,0xb24,0x1697,0xb2c,0x1698,0x168f,0x16a0,0x16a6,0x16ae,0xb34,0x17d6,0x17d6,0x77e,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x17c6,0x17c6,0xc3e,0xd33,0x4ef,0x4ef,0x4ef,0x4ef,0x16df,0x16e6,0xb3c,0x16e9,0xb44,
-0xb4c,0xb54,0x16e3,0xb5c,0xb64,0xb6c,0x16e8,0x16f0,0x16df,0x16e6,0x16e2,0x16e9,0x16f1,0x16e0,0x16e7,0x16e3,
-0xb73,0x16b6,0x16be,0x16c5,0x16cc,0x16b9,0x16c1,0x16c8,0x16cf,0xb7b,0x16d7,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,
-0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c33,0x1c23,0x1c26,0x1c23,0x1c2d,0x1164,
-0x786,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1190,0x78e,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x792,0x10b5,0x1bc6,0x10bb,
-0x1bc6,0x10c3,0x10c8,0x10cc,0x10cc,0x1126,0x112e,0x1136,0x113e,0x1146,0x114c,0x1154,0x115c,0x7ae,0x7ae,0x7ae,
-0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,
-0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,
-0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7ae,0x7af,0xb83,0x16f9,0x16f9,
-0x16f9,0x7bf,0x7bf,0x7bf,0x7bf,0x17ce,0x17ce,0x17ce,0x17ce,0x17ce,0x17ce,0x17ce,0x7c7,0x7bf,0x7bf,0x7bf,
-0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
-0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
-0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
-0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x194d,0xd9b,0x1955,
-0x1955,0xd9f,0xecf,0xed7,0xedf,0xe4a,0xe50,0x19fe,0xe58,0x19f6,0xe60,0xe64,0xe6b,0xe73,0xe7a,0xe82,
-0xe87,0xe87,0xe87,0xe87,0xe87,0x1a4f,0x1a57,0x1a5f,0x1a63,0x1a6b,0x1a30,0x1a73,0x1a7b,0x1a5f,0x1a83,0x1a8b,
-0x1a92,0x1a9a,0x1a38,0x1a5f,0x1a9d,0x1a40,0x1a47,0x1aa5,0x1aab,0x1b27,0x1b2e,0x1b1f,0x1ab3,0x1abb,0x1ac3,0x1acb,
-0x1b96,0x1ad3,0x1adb,0xee7,0xeef,0x1a28,0x1a28,0x1a28,0xef7,0x1b4e,0x1b4e,0xfd4,0xfda,0x1b76,0x1b76,0x1b76,
-0x1b76,0x1b76,0x1b76,0x1045,0x4ef,0x1c4b,0x1c43,0x116c,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0xf0f,0xf17,0xf1f,
-0xf27,0xf2f,0xf37,0xf3e,0xf42,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,0x1bf6,
-0x1bf6,0x1bf6,0x1bf6,0x1bfb,0x1bf6,0x1bf6,0x1bf6,0x10f4,0x10f6,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x11d4,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,
-0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x11dc,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,
-0x4ef,0x4ef,0x4ef,0x4ef,0x4ef,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x122c,0x11e4,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
-0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
-0x11f9,0x11f9,0x11f9,0x11f9,0x11ec,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,0x1709,
-0x1709,0x1709,0x1709,0x1709,0x1709,0x1234,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11ed,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,0x11e4,
-0x11e4,0x11e4,0x11e4,0x11e4,0x11ed,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x11f5,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
-0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
-0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
-0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,
-0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x11f9,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x123c,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1244,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x1594,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x159c,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,
-0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15a4,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,
-0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x15ac,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,
-0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1701,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,
-0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1a06,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,
-0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x1c63,0x4ce,0x2c4,0x2c4,0x2c4,0x2c4,
-0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c7,0x2d0,0x2ca,0x2ca,0x2cd,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,
-0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x7f5,0x7ef,0x7d4,0x7cb,
-0x7c2,0x7bf,0x7b6,0x7d1,0x7bc,0x7c8,0x7cb,0x7e6,0x7dd,0x7ce,0x7f2,0x7c5,0x7b3,0x7b3,0x7b3,0x7b3,
-0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7da,0x7d7,0x7e0,0x7e0,0x7e0,0x7ef,0x7b6,0x801,0x801,0x801,
-0x801,0x801,0x801,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,
-0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7fb,0x7bc,0x7c2,0x7c8,0x7ec,0x7b0,0x7e9,0x7fe,0x7fe,0x7fe,
-0x7fe,0x7fe,0x7fe,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
-0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7bc,0x7e3,0x7b9,0x7e0,0x2c4,0,0,0,0,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
+0xd42,0xd52,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
+0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xcc2,
+0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,
+0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x1169,0x10e9,
+0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,
+0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9,0x1129,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0xb74,0xb7b,0xb83,0xb8b,0x1727,0x1727,0x1727,0xb93,0xb9b,0xb9e,0x1757,0x174f,0xbd1,0xcfd,0xd01,0xd05,
+0x4db,0x4db,0x4db,0x4db,0xd0d,0x18b6,0xd15,0xf39,0x15db,0xaa1,0xaa7,0xff7,0xba6,0x178f,0xc4b,0x4db,
+0x15f0,0x15e3,0x15e8,0x172f,0xbae,0xbb6,0x1142,0x1148,0x1ab1,0xf56,0x1aa1,0x6cb,0x4db,0x4db,0x4db,0x4db,
+0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0x1ad1,0xfa7,0xfaf,0xfb7,0x4db,0x4db,0x4db,0x4db,
+0xbbe,0xbc1,0xda4,0x1b19,0xfef,0x6d3,0x4db,0x1088,0xc9e,0xd1d,0x4db,0x4db,0x1a66,0xeec,0xef4,0x1b59,
+0xc25,0xc2c,0xc34,0x1922,0x1af9,0x4db,0x1ad9,0xfc7,0x192a,0xdac,0xdb4,0xdbc,0x1017,0x6db,0x4db,0x4db,
+0x1932,0x1932,0x6e3,0x4db,0x1b86,0x10a0,0x1b7e,0x10a8,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0xdc4,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x1987,0x1989,0xe39,0xe40,0x1942,0x193a,0xdcc,0xf19,0x1a5e,0xed4,0xedc,0xfbf,0x1a76,0x1a7a,0xf11,0x1037,
+0xf8a,0xf8f,0x6eb,0x4db,0x1090,0x1098,0x1ac1,0xf97,0xf6c,0xf72,0xf7a,0xf82,0x4db,0x4db,0x4db,0x4db,
+0x1bc6,0x1bbe,0x1132,0x113a,0x1b41,0x1b39,0x105e,0x4db,0x4db,0x4db,0x4db,0x4db,0x1b29,0x101f,0x1027,0x102f,
+0x1af1,0x1ae9,0xfd7,0x112a,0x1a82,0xf29,0x6f3,0x4db,0x106e,0x1076,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,
+0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x17fc,0x1801,0xca6,0xcad,0xcad,0xcad,
+0x1809,0x1809,0x1809,0xcb5,0x1b76,0x1b76,0x1b76,0x1b76,0x1b76,0x1b76,0x6fb,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,
+0x194a,0x194a,0x194c,0x194a,0x1954,0x194a,0x194a,0x194a,0x194a,0x194a,0x194a,0x1957,0x194a,0x194a,0x194a,0x194a,
+0x194a,0x703,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,0x1991,
+0x1991,0xe48,0xfdf,0x70b,0x4db,0x4db,0x70f,0xf31,0x1b11,0x1b09,0xfff,0x1007,0x717,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x1a6e,0x1a6e,0xefc,0xf01,0xf09,0x4db,0x4db,0x1114,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x1aa9,0x1aa9,0x1aa9,0xf49,0xf4e,0x71f,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x15f8,0x15f8,0x15f8,0x15f8,0x15f8,0x15f8,0x15f8,0xaaf,0x1608,0xab7,0x1609,0x1600,0x1611,0x1617,0x161f,0xabf,
+0x1747,0x1747,0x727,0x4db,0x4db,0x4db,0x4db,0x4db,0x1737,0x1737,0xbc9,0xcbd,0x4db,0x4db,0x4db,0x4db,
+0x1650,0x1657,0xac7,0x165a,0xacf,0xad7,0xadf,0x1654,0xae7,0xaef,0xaf7,0x1659,0x1661,0x1650,0x1657,0x1653,
+0x165a,0x1662,0x1651,0x1658,0x1654,0xafe,0x1627,0x162f,0x1636,0x163d,0x162a,0x1632,0x1639,0x1640,0xb06,0x1648,
+0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,0x1b9e,
+0x1b8e,0x1b91,0x1b8e,0x1b98,0x10e0,0x72f,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x110c,0x737,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x73b,0x103f,0x1b31,0x1045,0x1b31,0x104d,0x1052,0x1056,0x1056,0x10b0,0x10b8,0x10c0,0x10c8,0x10d0,0x10c8,
+0x10d8,0x10c8,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,
+0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,
+0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,0x743,
+0x743,0x744,0xb0e,0x166a,0x166a,0x166a,0x74c,0x74c,0x74c,0x74c,0x173f,0x173f,0x173f,0x173f,0x173f,0x173f,
+0x173f,0x754,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
+0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
+0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
+0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,0x74c,
+0x74c,0x74c,0x18be,0xd25,0x18c6,0x18c6,0xd29,0xe59,0xe61,0xe69,0xdd4,0xdda,0x196f,0xde2,0x1967,0xdea,
+0xdee,0xdf5,0xdfd,0xe04,0xe0c,0xe11,0xe11,0xe11,0xe11,0xe11,0x19c0,0x19c8,0x19c0,0x19ce,0x19d6,0x19a1,
+0x19de,0x19e6,0x19c0,0x19ee,0x19f6,0x19fd,0x1a05,0x19a9,0x19c0,0x1a08,0x19b1,0x19b8,0x1a10,0x1a16,0x1a92,0x1a99,
+0x1a8a,0x1a1e,0x1a26,0x1a2e,0x1a36,0x1b01,0x1a3e,0x1a46,0xe71,0xe79,0x1999,0x1999,0x1999,0xe81,0x1ab9,0x1ab9,
+0xf5e,0xf64,0xe50,0xe51,0xe51,0xe51,0xe51,0xe51,0xe51,0xe51,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0xfcf,0x4db,0x1bb6,0x1bae,0x10e8,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0xe99,0xea1,0xea9,0xeb1,0xeb9,0xec1,0xec8,0xecc,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x1b51,0x1b49,0x1066,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x1b21,0x100f,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x10f0,0x10f5,0x10fd,
+0x1104,0x111c,0x1122,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,
+0x1b61,0x1b66,0x1b61,0x1b61,0x1b61,0x107e,0x1080,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1150,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,
+0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1bd6,0x1158,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,0x4db,
+0x4db,0x4db,0x4db,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x119d,0x1160,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1168,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,
+0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x11a5,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x116c,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,
+0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x1160,0x116c,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x11ad,0x1a4e,0x1a4e,0x1a4e,0x1a4e,0x1a4e,0x1a4e,0x11b5,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1505,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x150d,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,
+0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x1515,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,
+0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x151d,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,
+0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1672,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,
+0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,
+0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1ba6,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,
+0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x1bce,0x4ba,0x4ba,0x4ba,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x276,0x27f,0x279,0x279,0x27c,0x273,0x273,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x7a1,0x79b,0x780,0x777,
+0x76e,0x76b,0x762,0x77d,0x768,0x774,0x777,0x792,0x789,0x77a,0x79e,0x771,0x75f,0x75f,0x75f,0x75f,
+0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x786,0x783,0x78c,0x78c,0x78c,0x79b,0x762,0x7ad,0x7ad,0x7ad,
+0x7ad,0x7ad,0x7ad,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,
+0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x768,0x76e,0x774,0x798,0x75c,0x795,0x7aa,0x7aa,0x7aa,
+0x7aa,0x7aa,0x7aa,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,
+0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x768,0x78f,0x765,0x78c,0x273,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x2d3,0x2d3,0x2d3,0x2d3,
-0x2d3,0x2e2,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,
-0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d6,0x64b,0x80a,0x80d,
-0x651,0x80d,0x807,0x648,0x63f,0x2dc,0x65d,0x2df,0x810,0x636,0x654,0x804,0x64e,0x65a,0x63c,0x63c,
-0x642,0x2d9,0x648,0x645,0x63f,0x63c,0x65d,0x2df,0x639,0x639,0x639,0x64b,0x2e8,0x2e8,0x2e8,0x2e8,
-0x2e8,0x2e8,0x666,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x666,0x2e8,0x2e8,0x2e8,
-0x2e8,0x2e8,0x2e8,0x657,0x666,0x2e8,0x2e8,0x2e8,0x2e8,0x2e8,0x666,0x660,0x663,0x663,0x2e5,0x2e5,
-0x2e5,0x2e5,0x660,0x2e5,0x663,0x663,0x663,0x2e5,0x663,0x663,0x2e5,0x2e5,0x660,0x2e5,0x663,0x663,
-0x2e5,0x2e5,0x2e5,0x657,0x660,0x663,0x663,0x2e5,0x663,0x2e5,0x660,0x2e5,0x2f4,0x66c,0x2f4,0x2eb,
-0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f1,0x669,0x2f4,0x66c,
-0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,
-0x2f4,0x2eb,0x672,0x669,0x2f4,0x2eb,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x669,0x675,0x66f,
-0x2f4,0x2eb,0x2f4,0x2eb,0x669,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x675,0x66f,0x672,0x669,0x2f4,
-0x66c,0x2f4,0x2eb,0x2f4,0x66c,0x678,0x672,0x669,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x672,0x669,
-0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,
-0x2f4,0x2eb,0x672,0x669,0x2f4,0x2eb,0x2f4,0x66c,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,
-0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2f4,0x2eb,0x2f4,0x2eb,0x2f4,0x2eb,0x2ee,0x2f7,0x303,0x303,0x2f7,
-0x303,0x2f7,0x303,0x303,0x2f7,0x303,0x303,0x303,0x2f7,0x2f7,0x303,0x303,0x303,0x303,0x2f7,0x303,
-0x303,0x2f7,0x303,0x303,0x303,0x2f7,0x2f7,0x2f7,0x303,0x303,0x2f7,0x303,0x306,0x2fa,0x303,0x2f7,
-0x303,0x2f7,0x303,0x303,0x2f7,0x303,0x2f7,0x2f7,0x303,0x2f7,0x303,0x306,0x2fa,0x303,0x303,0x303,
-0x2f7,0x303,0x2f7,0x303,0x303,0x2f7,0x2f7,0x300,0x303,0x2f7,0x2f7,0x2f7,0x300,0x300,0x300,0x300,
-0x309,0x309,0x2fd,0x309,0x309,0x2fd,0x309,0x309,0x2fd,0x306,0x67b,0x306,0x67b,0x306,0x67b,0x306,
-0x67b,0x306,0x67b,0x306,0x67b,0x306,0x67b,0x306,0x67b,0x2f7,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,
-0x303,0x2f7,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x2fa,0x309,0x309,0x2fd,
-0x306,0x2fa,0x9e4,0x9e4,0x9e7,0x9e1,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,
-0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,0x306,0x2fa,
-0x9e7,0x9e1,0x9e7,0x9e1,0x9e4,0x9de,0x9e7,0x9e1,0xba3,0xca5,0x9e4,0x9de,0x9e4,0x9de,0x9e7,0x9e1,
-0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0x9e7,0x9e1,0xca5,0xca5,0xca5,0xd9e,
-0xd9e,0xd9e,0xda1,0xda1,0xd9e,0xda1,0xda1,0xd9e,0xd9e,0xda1,0xee5,0xee8,0xee8,0xee8,0xee8,0xee5,
-0xee8,0xee5,0xee8,0xee5,0xee8,0xee5,0xee8,0xee5,0x30c,0x67e,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
-0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x67e,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
-0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
-0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30f,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,
-0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x30c,0x9ea,0x9ea,0x9ea,
-0x9ea,0x9ea,0xca8,0xca8,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x31e,0x31e,0x31e,
-0x31e,0x31e,0x31e,0x31e,0x31b,0x31b,0x318,0x318,0x684,0x318,0x31e,0x687,0x321,0x687,0x687,0x687,
-0x321,0x687,0x31e,0x31e,0x68a,0x324,0x318,0x318,0x318,0x318,0x318,0x318,0x681,0x681,0x681,0x681,
-0x315,0x681,0x318,0xb1c,0x327,0x327,0x327,0x327,0x327,0x312,0x312,0x312,0x312,0x312,0x9f3,0x9f3,
-0x9f0,0x9ed,0x9f0,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,0xcab,
-0xcab,0xcab,0xcab,0xcab,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
-0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
-0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
-0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,0x68d,
-0x68d,0x68d,0x68d,0x68d,0x690,0x690,0x948,0x690,0x690,0x94b,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,
-0xb1f,0xb1f,0xb1f,0xc5d,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xeac,0xeac,0xeac,0xeac,
-0xeaf,0xd71,0xd71,0xd71,0x693,0x693,0xb22,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,
-0xca2,0xca2,0xca2,0xca2,0xf93,0xf90,0xf93,0xf90,0x333,0x33c,0xf93,0xf90,0x27,0x27,0x342,0xeeb,
-0xeeb,0xeeb,0x32a,0x14e8,0x27,0x27,0x27,0x27,0x33f,0x32d,0x351,0x330,0x351,0x351,0x351,0x27,
-0x351,0x27,0x351,0x351,0x348,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,
-0x699,0x699,0x699,0x699,0x699,0x699,0x27,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x351,0x351,
-0x348,0x348,0x348,0x348,0x348,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,
-0x696,0x696,0x696,0x696,0x696,0x696,0x345,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x348,0x348,
-0x348,0x348,0x348,0xf93,0x354,0x354,0x357,0x351,0x351,0x354,0x34b,0x9f6,0xbac,0xba9,0x34e,0x9f6,
-0x34e,0x9f6,0x34e,0x9f6,0x34e,0x9f6,0x339,0x336,0x339,0x336,0x339,0x336,0x339,0x336,0x339,0x336,
-0x339,0x336,0x339,0x336,0x354,0x354,0x34b,0x345,0xb5b,0xb58,0xba6,0xcb1,0xcae,0xcb4,0xcb1,0xcae,
-0xda4,0xda7,0xda7,0xda7,0xa05,0x6a5,0x363,0x366,0x363,0x363,0x363,0x366,0x363,0x363,0x363,0x363,
-0x366,0xa05,0x366,0x363,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a5,0x6a2,0x6a2,
-0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,
-0x6a2,0x6a2,0x6a2,0x6a2,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69f,0x69c,0x69c,
-0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,
-0x9ff,0x69f,0x35d,0x360,0x35d,0x35d,0x35d,0x360,0x35d,0x35d,0x35d,0x35d,0x360,0x9ff,0x360,0x35d,
-0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
-0x363,0x35d,0x363,0x35d,0x363,0x35d,0x366,0x360,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
-0x363,0x35d,0x35a,0x954,0x957,0x939,0x939,0x113d,0x9f9,0x9f9,0xbb2,0xbaf,0xa02,0x9fc,0xa02,0x9fc,
-0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
-0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
-0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,
-0x363,0x366,0x360,0x363,0x35d,0xbb2,0xbaf,0x363,0x35d,0xbb2,0xbaf,0x363,0x35d,0xbb2,0xbaf,0xeee,
-0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360,0x363,0x35d,0x366,0x360,0x366,0x360,0x366,0x360,
-0x363,0x35d,0x366,0x360,0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360,0xa05,0x9ff,0x366,0x360,
-0x366,0x360,0x366,0x360,0x366,0x360,0xdad,0xdaa,0x366,0x360,0xef1,0xeee,0xef1,0xeee,0xef1,0xeee,
-0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,
-0xf1e,0xf1b,0xf1e,0xf1b,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,0x1011,0x100e,
-0x1011,0x100e,0x1011,0x100e,0x1176,0x1173,0x1350,0x134d,0x1521,0x151e,0x1521,0x151e,0x1521,0x151e,0x1521,0x151e,
-0x2a,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,
-0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x375,0x2a,0x2a,0x378,0x369,0x369,
-0x369,0x36c,0x369,0x369,0x2a,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,
-0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,
-0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x36f,0x372,0x2a,0x8be,0xa08,0x2a,0x2a,0x14eb,0x14eb,0x1404,
-0x2d,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
-0x978,0x978,0xdb0,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
-0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0x37b,0xef4,0x37b,0x37b,0x37b,0x387,0x37b,
-0x37e,0x37b,0x37b,0x38a,0x97b,0xdb3,0xdb6,0xdb3,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
-0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
-0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x2d,0x2d,0x2d,0x2d,0x2d,
-0x38d,0x38d,0x38d,0x384,0x381,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
-0xcb7,0xcb7,0xcb7,0xcb7,0x1407,0x14ee,0xf9c,0xf9c,0xf9c,0xf99,0xf99,0xdbf,0x8c4,0xcc6,0xcc3,0xcc3,
-0xcba,0xcba,0xcba,0xcba,0xcba,0xcba,0xf96,0xf96,0xf96,0xf96,0xf96,0x8c1,0x14e2,0x30,0xdbc,0x8c7,
-0x1317,0x3a8,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
-0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,
-0x8ca,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x93f,0x93f,0x93f,0x93f,0x93f,
-0x93f,0x93f,0x93f,0xb52,0xb52,0xb52,0xcba,0xcc0,0xcbd,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0x1314,
-0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x95a,0x3a2,0x39f,0x39c,0x399,0xbb5,0xbb5,
-0x93c,0x3a8,0x3a8,0x3b4,0x3a8,0x3ae,0x3ae,0x3ae,0x3ae,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
-0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
-0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
-0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,
-0x3a8,0x3a8,0x3a8,0x3a8,0xa0e,0xa0e,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0xa0e,0x3ab,0x3a8,0x3ab,0x3a8,
-0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0x3a8,0xa0e,0x3a8,0x3a8,0x3a8,0x3ab,
-0x3b7,0x3a8,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x390,0x399,0x396,0x396,0x393,0x393,0x393,
-0x393,0x3b1,0x3b1,0x393,0x393,0x399,0x396,0x396,0x396,0x393,0xcc9,0xcc9,0x3a5,0x3a5,0x3a5,0x3a5,
-0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0xa0e,0xa0e,0xa0e,0xa0b,0xa0b,0xcc9,0xa26,0xa26,0xa26,0xa20,
-0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa1d,0xa20,0xa1d,0x33,0xa11,0xa23,0xa14,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
-0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xccc,0xccc,0xccc,0xa1a,0xa1a,0xa1a,0xa1a,
-0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa17,0xa17,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x33,0x33,0xccc,0xccc,0xccc,0xe22,0xe22,0xe22,0xe22,
-0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,
-0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,
-0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0x1023,0xa2c,0xa2c,0xa2c,0xa2c,
-0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,
-0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,0xa2c,
-0xa2c,0xa2c,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xbb8,0x36,0x36,
-0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf36,0xf36,0xf36,0xf36,
-0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,
-0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,
-0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,
-0xf3c,0xf3c,0xf30,0xf30,0xf33,0xf42,0xf3f,0x14a,0x14a,0x14a,0x14a,0x14a,6,6,6,6,
-6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1827,0x1827,0x1827,0x1827,
-0x1827,0x1827,0x1827,0x1827,0x1827,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0xb2e,0xb2e,0xb31,0xb31,
-0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0x9f,0x9f,0x9f,0x9f,0x15a5,0x15a5,0x15a5,0x15a5,
-0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x15a2,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x23d,0x23d,0x23d,0x23d,
-0x23d,0x23d,0x23d,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x249,0x249,0x249,0x249,
-0x249,0x249,0x249,0x249,0x249,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x1266,0x1266,0x1266,0x1266,
-0x1266,0x1266,0x1266,0x1266,0x1266,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x21f,0x21f,0x21f,0x21f,
-0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x14be,0x14be,0x14be,0x14be,
-0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,3,0xc,0xf,0xf,
-0xc,0x12,3,0x15,0,0,0,0,0,0,0,0,6,0x15,0x15,0x15,
-0x15,0x15,0x15,0x18,0x18,0x15,0x15,0x15,6,6,6,6,0,0,9,9,
-9,9,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x18,
-0x15,0x15,0xc,0xf,0xf,0,0x12,0x12,0x12,0xc,0xc,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,
-6,6,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,0x15,0x15,0x15,0x15,0x15,0x15,0,
-0,0,0x15,0,0x15,0x15,0,0x15,0x15,0x15,0x15,0x15,0x15,0x15,9,0x15,
-0,0,0,0,0,0,0,0,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
-0x21,0x21,0,0,0,0,0,0,0x1791,0x1791,0x1791,0x1791,0x264,0x264,0x264,0x264,
-0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1c2,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,
-0x164a,0x164a,0x237,0x237,0x237,0x237,0x1650,0x1650,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,
-0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0,0,0,0,0x16fe,0x16fe,0x16fe,0x16fe,0x24c,0x24c,0x24c,0x24c,
-0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xe19,0xe19,0xe16,0xe16,0xe16,0xe19,0x111,0x111,
-0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x27c,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
-0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x182a,0x182a,0x288,0x182a,0x182a,0x288,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x288,0x288,0x288,0x288,0x288,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x282,0x282,0x282,0x282,
+0x282,0x291,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,
+0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x285,0x5fa,0x7b6,0x7b9,
+0x600,0x7b9,0x7b3,0x5f7,0x5ee,0x28b,0x60c,0x28e,0x7bc,0x5e5,0x603,0x7b0,0x5fd,0x609,0x5eb,0x5eb,
+0x5f1,0x288,0x5f7,0x5f4,0x5ee,0x5eb,0x60c,0x28e,0x5e8,0x5e8,0x5e8,0x5fa,0x297,0x297,0x297,0x297,
+0x297,0x297,0x615,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x615,0x297,0x297,0x297,
+0x297,0x297,0x297,0x606,0x615,0x297,0x297,0x297,0x297,0x297,0x615,0x60f,0x612,0x612,0x294,0x294,
+0x294,0x294,0x60f,0x294,0x612,0x612,0x612,0x294,0x612,0x612,0x294,0x294,0x60f,0x294,0x612,0x612,
+0x294,0x294,0x294,0x606,0x60f,0x612,0x612,0x294,0x612,0x294,0x60f,0x294,0x2a3,0x61b,0x2a3,0x29a,
+0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a0,0x618,0x2a3,0x61b,
+0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,
+0x2a3,0x29a,0x621,0x618,0x2a3,0x29a,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x618,0x624,0x61e,
+0x2a3,0x29a,0x2a3,0x29a,0x618,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x624,0x61e,0x621,0x618,0x2a3,
+0x61b,0x2a3,0x29a,0x2a3,0x61b,0x627,0x621,0x618,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x621,0x618,
+0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,
+0x2a3,0x29a,0x621,0x618,0x2a3,0x29a,0x2a3,0x61b,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,
+0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x2a3,0x29a,0x2a3,0x29a,0x2a3,0x29a,0x29d,0x2a6,0x2b2,0x2b2,0x2a6,
+0x2b2,0x2a6,0x2b2,0x2b2,0x2a6,0x2b2,0x2b2,0x2b2,0x2a6,0x2a6,0x2b2,0x2b2,0x2b2,0x2b2,0x2a6,0x2b2,
+0x2b2,0x2a6,0x2b2,0x2b2,0x2b2,0x2a6,0x2a6,0x2a6,0x2b2,0x2b2,0x2a6,0x2b2,0x2b5,0x2a9,0x2b2,0x2a6,
+0x2b2,0x2a6,0x2b2,0x2b2,0x2a6,0x2b2,0x2a6,0x2a6,0x2b2,0x2a6,0x2b2,0x2b5,0x2a9,0x2b2,0x2b2,0x2b2,
+0x2a6,0x2b2,0x2a6,0x2b2,0x2b2,0x2a6,0x2a6,0x2af,0x2b2,0x2a6,0x2a6,0x2a6,0x2af,0x2af,0x2af,0x2af,
+0x2b8,0x2b8,0x2ac,0x2b8,0x2b8,0x2ac,0x2b8,0x2b8,0x2ac,0x2b5,0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2b5,
+0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2b5,0x62a,0x2a6,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,
+0x2b2,0x2a6,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2a9,0x2b8,0x2b8,0x2ac,
+0x2b5,0x2a9,0x990,0x990,0x993,0x98d,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,
+0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,0x2b5,0x2a9,
+0x993,0x98d,0x993,0x98d,0x990,0x98a,0x993,0x98d,0xb4f,0xc51,0x990,0x98a,0x990,0x98a,0x993,0x98d,
+0x993,0x98d,0x993,0x98d,0x993,0x98d,0x993,0x98d,0x993,0x98d,0x993,0x98d,0xc51,0xc51,0xc51,0xd4a,
+0xd4a,0xd4a,0xd4d,0xd4d,0xd4a,0xd4d,0xd4d,0xd4a,0xd4a,0xd4d,0xe8e,0xe91,0xe91,0xe91,0xe91,0xe8e,
+0xe91,0xe8e,0xe91,0xe8e,0xe91,0xe8e,0xe91,0xe8e,0x2bb,0x62d,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x62d,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2be,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x996,0x996,0x996,
+0x996,0x996,0xc54,0xc54,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2cd,0x2cd,0x2cd,
+0x2cd,0x2cd,0x2cd,0x2cd,0x2ca,0x2ca,0x2c1,0x2c1,0x633,0x2c1,0x2cd,0x636,0x2d0,0x636,0x636,0x636,
+0x2d0,0x636,0x2cd,0x2cd,0x639,0x2d3,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c7,0x630,0x630,0x630,0x630,
+0x2c4,0x630,0x2c1,0xac8,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x99f,0x99f,
+0x99c,0x999,0x99c,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,0xc57,
+0xc57,0xc57,0xc57,0xc57,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
+0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
+0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
+0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,0x63c,
+0x63c,0x63c,0x63c,0x63c,0x63f,0x63f,0x8f4,0x63f,0x63f,0x8f7,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
+0xacb,0xacb,0xacb,0xc09,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xe55,0xe55,0xe55,0xe55,
+0xe58,0xd1d,0xd1d,0xd1d,0x642,0x642,0xace,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,
+0xc4e,0xc4e,0xc4e,0xc4e,0xf3c,0xf39,0xf3c,0xf39,0x2e2,0x2eb,0xf3c,0xf39,9,9,0x2f1,0xe94,
+0xe94,0xe94,0x2d9,0x1491,9,9,9,9,0x2ee,0x2dc,0x300,0x2df,0x300,0x300,0x300,9,
+0x300,9,0x300,0x300,0x2f7,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x648,
+0x648,0x648,0x648,0x648,0x648,0x648,9,0x648,0x648,0x648,0x648,0x648,0x648,0x648,0x300,0x300,
+0x2f7,0x2f7,0x2f7,0x2f7,0x2f7,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x645,
+0x645,0x645,0x645,0x645,0x645,0x645,0x2f4,0x645,0x645,0x645,0x645,0x645,0x645,0x645,0x2f7,0x2f7,
+0x2f7,0x2f7,0x2f7,0xf3c,0x303,0x303,0x306,0x300,0x300,0x303,0x2fa,0x9a2,0xb58,0xb55,0x2fd,0x9a2,
+0x2fd,0x9a2,0x2fd,0x9a2,0x2fd,0x9a2,0x2e8,0x2e5,0x2e8,0x2e5,0x2e8,0x2e5,0x2e8,0x2e5,0x2e8,0x2e5,
+0x2e8,0x2e5,0x2e8,0x2e5,0x303,0x303,0x2fa,0x2f4,0xb07,0xb04,0xb52,0xc5d,0xc5a,0xc60,0xc5d,0xc5a,
+0xd50,0xd53,0xd53,0xd53,0x9b1,0x654,0x312,0x315,0x312,0x312,0x312,0x315,0x312,0x312,0x312,0x312,
+0x315,0x9b1,0x315,0x312,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x654,0x651,0x651,
+0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,0x651,
+0x651,0x651,0x651,0x651,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64e,0x64b,0x64b,
+0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,0x64b,
+0x9ab,0x64e,0x30c,0x30f,0x30c,0x30c,0x30c,0x30f,0x30c,0x30c,0x30c,0x30c,0x30f,0x9ab,0x30f,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x315,0x30f,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x309,0x900,0x903,0x8e5,0x8e5,0x10e6,0x9a5,0x9a5,0xb5e,0xb5b,0x9ae,0x9a8,0x9ae,0x9a8,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,0x312,0x30c,
+0x312,0x315,0x30f,0x312,0x30c,0xb5e,0xb5b,0x312,0x30c,0xb5e,0xb5b,0x312,0x30c,0xb5e,0xb5b,0xe97,
+0x315,0x30f,0x315,0x30f,0x312,0x30c,0x315,0x30f,0x312,0x30c,0x315,0x30f,0x315,0x30f,0x315,0x30f,
+0x312,0x30c,0x315,0x30f,0x315,0x30f,0x315,0x30f,0x312,0x30c,0x315,0x30f,0x9b1,0x9ab,0x315,0x30f,
+0x315,0x30f,0x315,0x30f,0x315,0x30f,0xd59,0xd56,0x315,0x30f,0xe9a,0xe97,0xe9a,0xe97,0xe9a,0xe97,
+0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,0xbca,0xbc7,
+0xec7,0xec4,0xec7,0xec4,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,
+0xfba,0xfb7,0xfba,0xfb7,0x111f,0x111c,0x12f9,0x12f6,0x14ca,0x14c7,0x14ca,0x14c7,0x14ca,0x14c7,0x14ca,0x14c7,
+0xc,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,
+0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0x324,0xc,0xc,0x327,0x318,0x318,
+0x318,0x31b,0x318,0x318,0xc,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,
+0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,
+0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x321,0xc,0x86a,0x9b4,0xc,0xc,0x1494,0x1494,0x13ad,
+0xf,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,
+0x924,0x924,0xd5c,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,
+0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0xe9d,0x32a,0x32a,0x32a,0x336,0x32a,
+0x32d,0x32a,0x32a,0x339,0x927,0xd5f,0xd62,0xd5f,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,
+0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0x33c,0xf,0xf,0xf,0xf,0xf,
+0x33c,0x33c,0x33c,0x333,0x330,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0xc63,0xc63,0xc63,0xc63,0x13b0,0x1497,0xf45,0xf45,0xf45,0xf42,0xf42,0xd6b,0x870,0xc72,0xc6f,0xc6f,
+0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xf3f,0xf3f,0xf3f,0xf3f,0xf3f,0x86d,0x148b,0x12,0xd68,0x873,
+0x12c0,0x357,0x35a,0x35a,0x35a,0x35a,0x35a,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
+0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0xf48,0xf48,0xf48,0xf48,0xf48,
+0x876,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x8eb,0x8eb,0x8eb,0x8eb,0x8eb,
+0x8eb,0x8eb,0x8eb,0xafe,0xafe,0xafe,0xc66,0xc6c,0xc69,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0x12bd,
+0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x906,0x351,0x34e,0x34b,0x348,0xb61,0xb61,
+0x8e8,0x357,0x357,0x363,0x357,0x35d,0x35d,0x35d,0x35d,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
+0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
+0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
+0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,
+0x357,0x357,0x357,0x357,0x9ba,0x9ba,0x357,0x357,0x357,0x357,0x357,0x9ba,0x35a,0x357,0x35a,0x357,
+0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x357,0x9ba,0x357,0x357,0x357,0x35a,
+0x366,0x357,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x33f,0x348,0x345,0x345,0x342,0x342,0x342,
+0x342,0x360,0x360,0x342,0x342,0x348,0x345,0x345,0x345,0x342,0xc75,0xc75,0x354,0x354,0x354,0x354,
+0x354,0x354,0x354,0x354,0x354,0x354,0x9ba,0x9ba,0x9ba,0x9b7,0x9b7,0xc75,0x9d2,0x9d2,0x9d2,0x9cc,
+0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9c9,0x9cc,0x9c9,0x15,0x9bd,0x9cf,0x9c0,0x9cf,0x9cf,
+0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
+0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0xc78,0xc78,0xc78,0x9c6,0x9c6,0x9c6,0x9c6,
+0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c3,0x9c3,0x9c3,0x9c3,
+0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x15,0x15,0xc78,0xc78,0xc78,0xdcb,0xdcb,0xdcb,0xdcb,
+0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,
+0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xdcb,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,
+0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0xfcc,0x9d8,0x9d8,0x9d8,0x9d8,
+0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,
+0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,0x9d8,
+0x9d8,0x9d8,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xb64,0x18,0x18,
+0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xedf,0xedf,0xedf,0xedf,
+0xedf,0xedf,0xedf,0xedf,0xedf,0xedf,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,
+0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,
+0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xee2,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,0xed6,
+0xee5,0xee5,0xed9,0xed9,0xedc,0xeeb,0xee8,0x111,0x111,0x111,0x111,0x111,0x17d3,0x17d3,0x17d3,0x17d3,
+0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xada,0xada,0xadd,0xadd,
+0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0x75,0x75,0x75,0x75,0x1551,0x1551,0x1551,0x1551,
+0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x154e,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1fe,0x1fe,0x1fe,0x1fe,
+0x1fe,0x1fe,0x1fe,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x20a,0x20a,0x20a,0x20a,
+0x20a,0x20a,0x20a,0x20a,0x20a,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x120f,0x120f,0x120f,0x120f,
+0x120f,0x120f,0x120f,0x120f,0x120f,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1e0,0x1e0,0x1e0,0x1e0,
+0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1467,0x1467,0x1467,0x1467,
+0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x173d,0x173d,0x173d,0x173d,
+0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1233,0x1233,0x1233,0x1233,
+0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x186,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x15f6,0x15f6,0x15f6,0x15f6,
+0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x1f8,0x1f8,0x1f8,0x1f8,0x15fc,0x15fc,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1548,0x1548,0x1548,0x1548,
+0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1632,0x1632,0x1632,0x1632,
+0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x16aa,0x16aa,0x16aa,0x16aa,
+0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0xdc2,0xdc2,0xdbf,0xdbf,
+0xdbf,0xdc2,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x234,0x1755,0x1755,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x17d6,0x17d6,0x240,0x17d6,
+0x17d6,0x240,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x240,0x240,0x240,0x240,0x240,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0x975,0x975,6,0x15,0x15,0x15,0x15,0x15,0x15,0x18,
-0x18,0x15,0x15,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,0x15,0x15,0x15,0x15,0x15,
-0x15,0x18,9,0x15,0x15,0x15,0x15,0x12,6,6,6,6,6,6,6,6,
+0,0,0,0,0,0,0,0,0,0,0x921,0x921,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,0x921,0x921,
 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x975,0x975,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x24,0x24,0x24,0x24,
-0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
-0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xd77,0xd77,0xd77,0xd77,
-0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0x24,0x24,0x24,0x24,
-0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x14f4,0x3cf,0x3de,0x3de,
-0x39,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x39,0x3e4,0x3e4,0x39,0x39,0x3e4,
-0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x3e4,0x3e4,
-0x3e4,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x3e4,0x39,0x39,0x39,0x3e4,0x3e4,0x3e4,0x3e4,0x39,0x39,
-0x3d2,0xcd2,0x3cf,0x3de,0x3de,0x3cf,0x3cf,0x3cf,0x3cf,0x39,0x39,0x3de,0x3de,0x39,0x39,0x3e1,
-0x3e1,0x3d5,0xdc5,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3cf,0x39,0x39,0x39,0x39,
-0x3e7,0x3e7,0x39,0x3e7,0x3e4,0x3e4,0x3cf,0x3cf,0x39,0x39,0x960,0x960,0x960,0x960,0x960,0x960,
-0x960,0x960,0x960,0x960,0x3e4,0x3e4,0x3db,0x3db,0x3d8,0x3d8,0x3d8,0x3d8,0x3d8,0x3db,0x3d8,0x114c,
-0x3f,0x3c,0x39,0x39,0x42,0xcd5,0x3ea,0xcd8,0x42,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x42,
-0x42,0x42,0x42,0x3f6,0x3f6,0x42,0x42,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,
-0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x42,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x42,0x3f6,0x3f9,
-0x42,0x3f6,0x3f9,0x42,0x3f6,0x3f6,0x42,0x42,0x3ed,0x42,0x3f3,0x3f3,0x3f3,0x3ea,0x3ea,0x42,
-0x42,0x42,0x42,0x3ea,0x3ea,0x42,0x42,0x3ea,0x3ea,0x3f0,0x42,0x42,0x42,0xfa8,0x42,0x42,
-0x42,0x42,0x42,0x42,0x42,0x3f9,0x3f9,0x3f9,0x3f6,0x42,0x3f9,0x42,0x42,0x42,0x42,0x42,
-0x42,0x42,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x3ea,0x3ea,0x3f6,0x3f6,
-0x3f6,0xfa8,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x45,0x3fc,0x3fc,0x405,
-0x45,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0xce1,0x408,0x45,0x408,0x408,0x408,0x45,0x408,
-0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x45,0x408,0x408,
-0x408,0x408,0x408,0x408,0x408,0x45,0x408,0x408,0x45,0x408,0x408,0x408,0x408,0x408,0x45,0x45,
-0x3ff,0x408,0x405,0x405,0x405,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x45,0x3fc,0x3fc,0x405,0x45,0x405,
-0x405,0x402,0x45,0x45,0x408,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
-0x45,0x45,0x45,0x45,0x408,0xce1,0xcdb,0xcdb,0x45,0x45,0x966,0x966,0x966,0x966,0x966,0x966,
-0x966,0x966,0x966,0x966,0x140a,0xcde,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x170d,0x48,0x48,
-0x48,0x48,0x48,0x48,0x4b,0x40b,0x41a,0x41a,0x4b,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
-0x420,0x4b,0x4b,0x420,0x420,0x4b,0x4b,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x420,
-0x420,0x420,0x420,0x420,0x420,0x4b,0x420,0x420,0x420,0x420,0x420,0x420,0x420,0x4b,0x420,0x420,
-0x4b,0xce4,0x420,0x420,0x420,0x420,0x4b,0x4b,0x40e,0x420,0x40b,0x40b,0x41a,0x40b,0x40b,0x40b,
-0xfab,0x4b,0x4b,0x41a,0x41d,0x4b,0x4b,0x41d,0x41d,0x411,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
-0x4b,0x4b,0x40b,0x40b,0x4b,0x4b,0x4b,0x4b,0x423,0x423,0x4b,0x420,0x420,0x420,0xfab,0xfab,
-0x4b,0x4b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x414,0xce4,0x1323,0x1323,
-0x1323,0x1323,0x1323,0x1323,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4e,0x4e,0x426,0x432,
-0x4e,0x432,0x432,0x432,0x432,0x432,0x432,0x4e,0x4e,0x4e,0x432,0x432,0x432,0x4e,0x432,0x432,
-0x435,0x432,0x4e,0x4e,0x4e,0x432,0x432,0x4e,0x432,0x4e,0x432,0x432,0x4e,0x4e,0x4e,0x432,
-0x432,0x4e,0x4e,0x4e,0x432,0x432,0x96f,0x4e,0x4e,0x4e,0x432,0x432,0x432,0x432,0x432,0x432,
-0x432,0x96f,0xdc8,0x432,0x432,0x432,0x4e,0x4e,0x4e,0x4e,0x426,0x42c,0x426,0x42c,0x42c,0x4e,
-0x4e,0x4e,0x42c,0x42c,0x42c,0x4e,0x42f,0x42f,0x42f,0x429,0x4e,0x4e,0xfae,0x4e,0x4e,0x4e,
-0x4e,0x4e,0x4e,0x426,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xee2,0x96c,
-0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x969,0x969,0x969,0xce7,0xce7,0xce7,0xce7,0xce7,
-0xce7,0xcea,0xce7,0x4e,0x4e,0x4e,0x4e,0x4e,0x14f7,0x444,0x444,0x444,0x51,0x447,0x447,0x447,
-0x447,0x447,0x447,0x447,0x447,0x51,0x447,0x447,0x447,0x51,0x447,0x447,0x447,0x447,0x447,0x447,
-0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x51,0x447,0x447,0x447,0x447,0x447,0x447,
-0x447,0x447,0x447,0x447,0x14fa,0x447,0x447,0x447,0x447,0x447,0x51,0x51,0x51,0xfb7,0x438,0x438,
-0x438,0x444,0x444,0x444,0x444,0x51,0x438,0x438,0x43b,0x51,0x438,0x438,0x438,0x43e,0x51,0x51,
-0x51,0x51,0x51,0x51,0x51,0x438,0x438,0x51,0xfb7,0xfb7,0x1710,0x51,0x51,0x51,0x51,0x51,
-0x447,0x447,0xfb1,0xfb1,0x51,0x51,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
-0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,0xfb4,
-0x17cd,0x14fd,0x453,0x453,0x54,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x54,0x459,0x459,
-0x459,0x54,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,
-0x459,0x54,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x54,0x459,0x459,0x459,
-0x459,0x459,0x54,0x54,0xced,0xcf0,0x453,0x44a,0x456,0x453,0x44a,0x453,0x453,0x54,0x44a,0x456,
-0x456,0x54,0x456,0x456,0x44a,0x44d,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x44a,0x44a,0x54,
-0x54,0x54,0x54,0x54,0x54,0x54,0x459,0x54,0x459,0x459,0xefa,0xefa,0x54,0x54,0x450,0x450,
-0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x450,0x54,0xefd,0xefd,0x54,0x54,0x54,0x54,0x54,
-0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5a,0x1500,0x465,0x465,0x57,0x46b,0x46b,0x46b,
-0x46b,0x46b,0x46b,0x46b,0x46b,0x57,0x46b,0x46b,0x46b,0x57,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,
-0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x465,0x45c,0x45c,0x45c,0xfba,0x57,0x465,0x465,
-0x465,0x57,0x468,0x468,0x468,0x45f,0x1329,0x17d0,0x57,0x57,0x57,0x57,0x17d3,0x17d3,0x17d3,0x45c,
-0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x1713,0x46b,0x46b,0xfba,0xfba,0x57,0x57,0x462,0x462,
-0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0xfbd,0x17d0,0x17d0,
-0x17d0,0xfc0,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,
-0x46b,0x1326,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,0x46b,
-0x46b,0x46b,0x1326,0x5a,0x5a,0xfc3,0x45c,0x465,0x5d,0x5d,0xa38,0xa38,0x5d,0xa3e,0xa3e,0xa3e,
-0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0x5d,
-0x5d,0x5d,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,
-0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0x5d,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,
-0x5d,0xa3e,0x5d,0x5d,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0x5d,0x5d,0x5d,0xa32,0x5d,
-0x5d,0x5d,0x5d,0xa2f,0xa38,0xa38,0xa2f,0xa2f,0xa2f,0x5d,0xa2f,0x5d,0xa38,0xa38,0xa3b,0xa38,
-0xa3b,0xa3b,0xa3b,0xa2f,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x1503,0x1503,0x1503,0x1503,0x1503,0x1503,
-0x1503,0x1503,0x1503,0x1503,0x5d,0x5d,0xa38,0xa38,0xa35,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
-0x5d,0x5d,0x5d,0x5d,0x60,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,
-0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,0x486,
-0x486,0x486,0x486,0x486,0x486,0x471,0x486,0x483,0x471,0x471,0x471,0x471,0x471,0x471,0x477,0x60,
-0x60,0x60,0x60,0x46e,0x48c,0x48c,0x48c,0x48c,0x48c,0x486,0x489,0x474,0x474,0x474,0x474,0x474,
-0x474,0x471,0x474,0x47a,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x47d,0x47d,
-0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
-0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
-0x63,0x49b,0x49b,0x63,0x49b,0x63,0x63,0x49b,0x49b,0x63,0x49b,0x63,0x63,0x49b,0x63,0x63,
-0x63,0x63,0x63,0x63,0x49b,0x49b,0x49b,0x49b,0x63,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,
-0x63,0x49b,0x49b,0x49b,0x63,0x49b,0x63,0x49b,0x63,0x63,0x49b,0x49b,0x63,0x49b,0x49b,0x49b,
-0x49b,0x48f,0x49b,0x498,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x63,0x48f,0x48f,0x49b,0x63,0x63,
-0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x63,0x4a1,0x63,0x492,0x492,0x492,0x492,0x492,0x48f,0x63,0x63,
-0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x63,0x63,0x49e,0x49e,0x140d,0x140d,
-0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
-0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
-0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,0x9b1,0x66,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,
-0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0x9b1,0x9b1,0x9b1,
-0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b1,0x9b4,0xa4d,0xfcf,0xfcf,0x66,0x66,0x66,
-0x66,0x97e,0x97e,0x981,0x97e,0x981,0x981,0x98a,0x981,0x98a,0x97e,0x97e,0x97e,0x97e,0x97e,0x9ab,
-0x97e,0x981,0x984,0x984,0x987,0x990,0x984,0x984,0x9b1,0x9b1,0x9b1,0x9b1,0x1332,0x132c,0x132c,0x132c,
-0x97e,0x97e,0x97e,0x981,0x97e,0x97e,0xa41,0x97e,0x66,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0x97e,
-0x97e,0x97e,0x981,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0x97e,0x97e,0x97e,0x981,0x97e,0xa41,0xa41,
-0xa41,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0xa41,0x981,0xa41,0xa41,0xa41,0x66,0xa4a,0xa4a,
-0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0xa44,0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0x66,0xfc6,0xa47,
-0xdcb,0xdcb,0xfc9,0xfcc,0xfc6,0x114f,0x114f,0x114f,0x114f,0x132f,0x132f,0x66,0x66,0x66,0x66,0x66,
-0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
-0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x4aa,0x4aa,0x4aa,0x4aa,
-0x4aa,0x4aa,0x69,0x1413,0x69,0x69,0x69,0x69,0x69,0x1413,0x69,0x69,0x4a7,0x4a7,0x4a7,0x4a7,
-0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xdda,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0x6c,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xdda,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,
-0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0x6c,
-0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,0xa77,0x6c,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0x6c,0x6c,0x1335,0x1335,0xdd4,
-0xdd7,0xa71,0xa7a,0xa6e,0xa6e,0xa6e,0xa6e,0xa7a,0xa7a,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,
-0xa74,0xa74,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0x6c,0x6c,0x6c,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0x1719,0x6f,0x6f,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x6f,0x6f,
-0xa8f,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,
-0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa92,0xa8c,0xa89,0x72,0x72,0x72,
-0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa95,0xa95,0xa95,0xa98,0xa98,
-0xa98,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x75,0x75,0x75,0x75,0x75,0x75,0x75,
-0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xa9b,0xab9,0xab9,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,
-0xa9e,0xa9e,0xaa1,0xa9e,0xab0,0xab0,0xab3,0xabc,0xaaa,0xaa7,0xab0,0xaad,0xabc,0xcf3,0x78,0x78,
-0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0x78,0x78,0x78,0x78,0x78,0x78,
-0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0x78,0x78,0x78,0x78,0x78,0x78,
-0xacb,0xacb,0xb49,0xb4c,0xad1,0xb46,0xace,0xacb,0xad4,0xae3,0xad7,0xae6,0xae6,0xae6,0xac2,0x7b,
-0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
-0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
-0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
-0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xac5,0xff0,0x7b,0x7b,0x7b,0x7b,0x7b,
-0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x7e,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x7e,0x7e,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x4cb,0x7e,0x4cb,0x7e,0x4cb,0x7e,0x4cb,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x7e,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4c2,0x4c8,0x4c2,
-0x4c2,0x4bf,0x4c8,0x4c8,0x4c8,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4bf,0x4bf,0x4bf,
-0x4c8,0x4c8,0x4c8,0x4c8,0x7e,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x7e,0x4bf,0x4bf,0x4bf,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4bf,0x4bf,0x4bf,
-0x7e,0x7e,0x4c8,0x4c8,0x4c8,0x7e,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4c5,0x4c2,0x7e,
-0xbbe,0xbc1,0xbc1,0xbc1,0xff9,0x81,0x14e5,0x14e5,0x14e5,0x14e5,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,
-0x51f,0xbd3,0x84,0x84,0x6db,0x51f,0x51f,0x51f,0x51f,0x51f,0x525,0x537,0x525,0x531,0x52b,0x6de,
-0x51c,0x6d8,0x6d8,0x6d8,0x6d8,0x51c,0x51c,0x51c,0x51c,0x51c,0x522,0x534,0x522,0x52e,0x528,0x84,
-0xde3,0xde3,0xde3,0xde3,0xde3,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x1338,0x84,0x84,0x84,
-0x53d,0x53d,0x53d,0x53d,0x53d,0x53d,0x53d,0x53a,0x540,0x756,0x53d,0x9ba,0x9db,0xaf5,0xaf5,0xaf5,
-0xbd6,0xbd6,0xde6,0xde6,0xde6,0xde6,0x1167,0x116a,0x116a,0x133b,0x14df,0x1509,0x150c,0x150c,0x171c,0x87,
-0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,
-0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x546,0x543,0x543,0x543,
-0x543,0x546,0xaf8,0xaf8,0xbd9,0xbdf,0xbdf,0xbdc,0xbdc,0xbdc,0xbdc,0xde9,0xf00,0xf00,0xf00,0xf00,
-0x113a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
-0x576,0x576,0x576,0xb01,0xf09,0xfff,0xfff,0xfff,0xfff,0x1296,0x171f,0x171f,0x8d,0x8d,0x8d,0x8d,
-0x705,0x705,0x705,0x705,0x708,0x708,0x708,0x708,0x708,0x708,0x582,0x582,0x57f,0x57f,0x57f,0x57f,
-0xf0f,0xf0f,0xf0f,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0x1170,0x13bc,0x13bc,0x13bc,0x13bc,0x133e,0x133e,0x133e,
-0x13bf,0x1341,0x1341,0x13bf,0x150f,0x150f,0x150f,0x150f,0x1512,0x1512,0x1512,0x17d6,0x17d6,0x17d6,0x17d6,0x90,
-0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0xb0a,0xb0a,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
-0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
-0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x96,0x96,0x96,0x96,0x96,
-0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0x99,0xb25,0xb25,0xb25,0xb25,0xb28,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb28,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
-0xa2,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x837,0x83a,0x837,0x83a,0x837,
-0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,
-0x837,0x837,0x837,0x83d,0x837,0x83d,0x837,0x83d,0x837,0x837,0x837,0x837,0x837,0x837,0x83d,0x837,
-0x837,0x837,0x837,0x837,0x83a,0xc81,0xc81,0xa2,0xa2,0x951,0x951,0x91b,0x91b,0x840,0x843,0xc7e,
-0xa5,0xa5,0xa5,0xa5,0xa5,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x1128,0xa8,0xa5,0xab,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0xab,0x924,0x924,0x927,0x927,0x927,0x927,0x927,0x927,
-0x927,0x927,0x927,0x927,0x927,0x927,0x927,0x927,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,
-0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,
-0x13cb,0x13cb,0x13cb,0xae,0xae,0xae,0xae,0xae,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,
-0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,0x861,
-0x861,0x861,0x861,0x861,0x861,0xd83,0xd83,0xb1,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,
-0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,
-0x867,0x867,0x867,0x867,0x867,0x867,0x867,0xb1,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb4,0xb4,0xb4,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,
-0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xc8a,0xb43,0xb43,0xb43,0xc8a,0xb43,0xb7,
-0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,
-0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x9d5,0x9d5,0x9d5,0x9d5,0xba,0xba,0xba,0xba,
-0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,
-0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0xbd,
-0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0x5f4,0x5f4,0x5f4,0x5f4,0x5f4,
-0xbd,0xbd,0xbd,0xbd,0xbd,0xb16,0x5f7,0x5fd,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,
-0x603,0x5fa,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0xbd,
-0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0xbd,0x5fd,0xbd,0x5fd,0x5fd,0xbd,0x5fd,0x5fd,0xbd,0x5fd,0x5fd,
-0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x5fd,0x600,0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,
-0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x134a,0x134a,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
-0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x618,0x612,0x615,0x61b,0x618,
-0x612,0x618,0x612,0x618,0x612,0x618,0x618,0x612,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
-0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x615,0x612,0x615,0x615,0x615,0x615,0x615,0x615,
-0x612,0x615,0x612,0x612,0x615,0x615,0x612,0x612,0x612,0x612,0x612,0x615,0x612,0x612,0x615,0x612,
-0x615,0x615,0x615,0x612,0x615,0x615,0x615,0x615,0xc0,0xc0,0x615,0x615,0x615,0x615,0x612,0x612,
-0x615,0x612,0x612,0x612,0x612,0x615,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x612,0x612,
-0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,
-0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0x618,0x618,0x972,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x60f,0x60f,0xc15,0xd9b,0xc0,0xc0,0x879,0x88b,0x888,0x88b,0x888,0xc9f,0xc9f,0xd8f,
-0xd8c,0x87c,0x87c,0x87c,0x87c,0x88e,0x88e,0x88e,0x8a6,0x8a9,0x8b8,0xc3,0x8ac,0x8af,0x8bb,0x8bb,
-0x8a3,0x89a,0x894,0x89a,0x894,0x89a,0x894,0x897,0x897,0x8b2,0x8b2,0x8b5,0x8b2,0x8b2,0x8b2,0xc3,
-0x8b2,0x8a0,0x89d,0x897,0xc3,0xc3,0xc3,0xc3,0x624,0x630,0x624,0xc18,0x624,0xc6,0x624,0x630,
-0x624,0x630,0x624,0x630,0x624,0x630,0x624,0x630,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,
-0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,
-0x627,0x62d,0x627,0x62d,0x627,0xc6,0xc6,0x621,0x777,0x77a,0x78f,0x792,0x771,0x77a,0x77a,0xcc,
-0x759,0x75c,0x75c,0x75c,0x75c,0x759,0x759,0xcc,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
-0xc9,0xb19,0xb19,0xb19,0x9d8,0x753,0x633,0x633,0xcc,0x7a1,0x780,0x771,0x77a,0x777,0x771,0x783,
-0x774,0x76e,0x771,0x78f,0x786,0x77d,0x79e,0x771,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
-0x79b,0x79b,0x78c,0x789,0x78f,0x78f,0x78f,0x7a1,0x762,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
-0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
-0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0xcc,0xcc,0xcc,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
-0xcc,0xcc,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,0xcc,0xcc,0x75f,0x75f,0x75f,0x75f,0x75f,0x75f,
-0xcc,0xcc,0x75f,0x75f,0x75f,0xcc,0xcc,0xcc,0xb61,0xb61,0xb61,0xb61,0xcf,0xcf,0xcf,0xcf,
-0xcf,0xcf,0xcf,0xcf,0xcf,0xd2,0xd2,0xd2,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xd5,0xd5,0xd5,0xd5,0xd5,
-0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
-0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,
-0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xdb,0xdb,0x100b,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
-0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xde,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb94,0xb94,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb94,0xde,0xb94,0xb94,
-0xde,0xde,0xb94,0xde,0xde,0xb94,0xb94,0xde,0xde,0xb94,0xb94,0xb94,0xb94,0xde,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,0xb91,0xb91,0xde,0xb91,0xde,0xb91,0xb91,0xb91,
-0xb91,0xd14,0xb91,0xb91,0xde,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb91,0xb91,0xb91,0xb91,0xb94,0xb94,0xde,0xb94,0xb94,0xb94,0xb94,0xde,0xde,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xde,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xde,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb94,0xb94,0xde,0xb94,0xb94,0xb94,0xb94,0xde,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xde,0xb94,0xde,0xde,0xde,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xde,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xe01,0xe01,0xde,0xde,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,0xb91,0xb8b,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xf18,0xf15,0xde,0xde,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
-0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xe1,0xb9a,0xe1,0xe1,
-0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
-0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xc27,0xc27,0xc27,0xc27,
-0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xe4,0xc27,0xc27,0xc27,0xc27,0xc21,0xc21,
-0xc24,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xc30,0xc30,0xc30,0xc30,
-0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc2a,0xc2a,
-0xc2d,0xc93,0xc93,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xc36,0xc36,0xc36,0xc36,
-0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc33,0xc33,
-0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xc3c,0xc3c,0xc3c,0xc3c,
-0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xed,0xc3c,0xc3c,0xc3c,0xed,0xc39,0xc39,
-0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xd26,0xd26,0xd26,0xd26,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0x1524,0x1524,0xf0,0xd17,0xd17,0xd17,0xd23,
-0xd23,0xd23,0xd23,0xd17,0xd17,0xd23,0xd23,0xd23,0xf0,0xf0,0xf0,0xf0,0xd23,0xd23,0xd17,0xd23,
-0xd23,0xd23,0xd23,0xd23,0xd23,0xd1a,0xd1a,0xd1a,0xf0,0xf0,0xf0,0xf0,0xd1d,0xf0,0xf0,0xf0,
-0xd29,0xd29,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd20,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xf3,0xf3,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
-0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
-0x1527,0x1527,0x1527,0x1527,0xf6,0xf6,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
-0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0xf6,0xf6,
-0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
-0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0xf6,0xf6,0xf6,0x1527,0x1527,0x1527,
-0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0xf6,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
-0x1527,0x1527,0xf9,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
-0x1728,0x1728,0x1728,0x1728,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
-0xf6,0xf6,0xf6,0xf6,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xfc,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xd53,0xd53,0xfc,0xd53,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xfc,
-0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xfc,0xfc,
-0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
-0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,
-0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xff,0xff,0xff,0xff,0xff,
-0xd98,0xd98,0xd98,0x102,0x102,0x102,0x102,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,
-0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,0xd92,
-0x102,0x102,0x102,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd95,0xd5c,0xd5c,0xd5c,0xd5c,
-0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,
-0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0x105,0xd59,0xd65,0xd65,0xd65,0xd65,
-0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,
-0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0x108,0x108,0xd62,0xd62,0xd62,0xd62,
-0xd62,0xd62,0xd62,0xd62,0xd62,0xd62,0x108,0x108,0x108,0x108,0x108,0x108,0x1860,0x1860,0x1860,0x1860,
-0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0xd68,0xd68,0xd68,0xd68,
-0xd68,0xd68,0x10b,0x10b,0xd68,0x10b,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,
-0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0x10b,0xd68,
-0xd68,0x10b,0x10b,0x10b,0xd68,0x10b,0x10b,0xd68,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
-0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0x10e,
-0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,
-0xe1c,0xe1c,0xe1c,0x152a,0x152a,0x17d9,0x17d9,0x114,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,
-0x1107,0x1107,0x1107,0x1107,0x171,0x171,0x171,0x171,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
-0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe25,
-0xe25,0xe2b,0xe2b,0xe25,0x117,0x117,0xe28,0xe28,0x1137,0x1137,0x1137,0x1137,0x11a,0x11a,0x11a,0x11a,
-0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,
-0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0xc90,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x152d,
-0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x1530,0x120,0x120,
-0x120,0x120,0x11d,0x17dc,0x1356,0x1179,0xf27,0xf27,0xe40,0xe3d,0xe40,0xe3d,0xe3d,0xe34,0xe34,0xe34,
-0xe34,0xe34,0xe34,0x1182,0x117f,0x1182,0x117f,0x117c,0x117c,0x117c,0x141c,0x1419,0x123,0x123,0x123,0x123,
-0x123,0xe3a,0xe37,0xe37,0xe37,0xe34,0xe3a,0xe37,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,
-0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,
-0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,
-0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,
-0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0x126,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,
-0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,
-0xe46,0xe46,0x129,0x129,0x129,0x129,0x129,0x129,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x12c,0x141f,
-0x12c,0x12c,0x12c,0x12c,0x12c,0x141f,0x12c,0x12c,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
-0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,
-0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0x12f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
-0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0x12f,0xe64,0xe58,0xe58,0xe58,0x132,0xe58,0xe58,0x132,
-0x132,0x132,0x132,0x132,0xe58,0xe58,0xe58,0xe58,0xe64,0xe64,0xe64,0xe64,0x132,0xe64,0xe64,0xe64,
-0x132,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,
-0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0x132,0x132,0x132,0x132,0xe55,0xe55,0xe55,0x132,
-0x132,0x132,0x132,0xe5b,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0x132,0x132,0x132,0x132,
-0x132,0x132,0x132,0x132,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe67,0xe67,0xe5e,0x132,0x132,0x132,
-0x132,0x132,0x132,0x132,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0x1188,0x1188,
-0x135,0x135,0x135,0x135,0xe73,0xe73,0xe73,0xe73,0xe73,0xe76,0xe76,0xe76,0xe73,0xe73,0xe76,0xe73,
-0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0x135,0x135,0x135,0x135,0x135,0x135,
-0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0x1185,0x135,0x135,0x135,0xe6d,0xe6d,
-0xe7c,0xe7c,0xe7c,0xe7c,0x138,0x138,0x138,0x138,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe79,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
-0x1539,0x153f,0x153c,0x1884,0x17df,0x13e,0x13e,0x13e,0x13e,0x13e,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
-0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
-0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0xea3,0xea3,0xea3,0xea0,
-0xea0,0xe97,0xe97,0xea0,0xe9d,0xe9d,0xe9d,0xe9d,0x141,0x141,0x141,0x141,0x12f3,0x12f3,0x12f3,0x12f3,
-0x12f3,0x12f3,0x12f6,0x12f6,0x12f9,0x12f6,0x198,0x198,0x198,0x198,0x198,0x198,0xea6,0xea6,0xea6,0xea6,
-0xea6,0xea6,0x142b,0x142b,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0xea9,0x135c,0x144,0x144,0x144,
-0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x1359,0xc63,0xc63,0xc63,0xc63,
-0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xed6,0xec7,0xec1,0xed3,
-0xed0,0xeca,0xeca,0xed9,0xec4,0xecd,0x147,0x147,0x147,0x147,0x147,0x147,0xf5a,0xf5a,0xf45,0xf5a,
-0xf5d,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0x14d,0x14d,0x14d,0x14d,0xf54,0xf54,0xf54,0xf54,
-0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf66,0xf66,0xf4b,0xf51,0xf66,0xf66,0xf4e,0xf4b,0xf4b,0xf4b,
-0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,
-0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0x14d,0x14d,0x14d,0x1362,0x135f,0x1362,0x135f,
-0x1362,0x135f,0x1362,0x135f,0x1362,0x135f,0x1431,0x154b,0x154b,0x154b,0x17e2,0x150,0x154b,0x154b,0x1731,0x1731,
-0x1731,0x172b,0x1731,0x172b,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,
-0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,
-0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x1548,0x1434,0x1434,0x135f,0x1062,0x1062,0x1062,0x1062,0x1062,
-0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,
-0xf75,0xf75,0xf75,0xf75,0xf72,0xf72,0xf78,0xf78,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
-0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,
-0xf81,0xf81,0xf81,0xf81,0xf81,0xf81,0xf7b,0xf7b,0xf7b,0xf7b,0x1191,0x1191,0x156,0x156,0x156,0xf7e,
-0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,
-0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x1734,0x159,0x159,0x159,0x159,0x159,0x159,
-0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,
-0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0x159,0xf8a,0xf8a,0xf8a,0x1554,
-0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x15c,0xf87,0xf87,0xf87,0xf87,
-0x1551,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0x15c,0xf8d,0xf8d,0xf8d,0xf8d,
-0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0x15f,0x15f,
-0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x1089,0x1089,0x1089,0x1089,
-0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,
-0x1086,0x1086,0x107d,0x107a,0x162,0x162,0x162,0x108c,0x108c,0x1080,0x1080,0x1080,0x1083,0x1083,0x1083,0x1083,
-0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x162,0x162,0x162,0x1089,0x1089,0x1089,0x108f,0x108f,0x108f,0x108f,
-0x108f,0x108f,0x108f,0x108f,0x108f,0x108f,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x10a4,0x10a4,0x10a4,0x10a4,
-0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a7,0x10a7,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,
-0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x165,0x10ce,0x10ce,0x10ce,0x10ce,
-0x10c8,0x17e5,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x10d4,0x10d4,0x10cb,0x10cb,0x10cb,0x10cb,
-0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x168,0x168,0x168,0x168,0x168,0x168,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10ec,0x10ef,
-0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x16b,0x10e9,0x1101,0x1101,0x1101,0x1101,
-0x1101,0x1101,0x1101,0x1101,0x1101,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10fe,0x10fe,0x10f5,0x10f5,0x10fe,
-0x10fe,0x10f5,0x10f5,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x16e,0x1101,0x1101,0x1101,0x10f5,
-0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x10f5,0x10fe,0x16e,0x16e,0x10fb,0x10fb,0x10fb,0x10fb,
-0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x16e,0x16e,0x10f8,0x1104,0x1104,0x1104,0x1560,0x171,0x171,0x171,
-0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
-0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x110a,0x110a,0x110a,0x110a,
-0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,
-0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110a,0x110d,0x174,0x174,0x1110,0x1110,0x1110,0x1110,
-0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,
-0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x177,0x177,0x177,0x1113,0x1113,0x1113,0x1113,
-0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x17a,0x17a,0x17a,
-0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x1119,0x1119,0x1119,0x1119,
-0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
-0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x17d,0x17d,0x17d,0x17d,0x17d,0x1116,0x111c,0x111c,0x111c,0x111c,
-0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x180,0x180,0x180,0x180,0x111f,0x111f,0x111f,0x111f,
-0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,
-0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1197,0x1197,0x1197,0x1197,
-0x11a0,0x1197,0x1197,0x1197,0x11a0,0x1197,0x1197,0x1197,0x1197,0x1194,0x186,0x186,0x119d,0x119d,0x119d,0x119d,
-0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x186,0x11a3,0x11a3,0x11a3,0x11a3,
-0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
-0x11a3,0x11a3,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x11be,0x11be,0x11be,0x11be,
-0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,
-0x11be,0x11bb,0x11a6,0x11bb,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x18c,0x11af,0x11b8,0x11a6,0x11b8,
-0x11b8,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11a6,
-0x11a6,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x18c,0x18c,0x11a9,0x11b5,0x11b5,0x11b5,0x11b5,
-0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x11b5,0x11b5,0x11b5,0x11b5,
-0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x11b2,0x11b2,0x11b2,0x11b2,
-0x11b2,0x11b2,0x11b2,0x11c1,0x11c4,0x11c4,0x11c4,0x11c4,0x11b2,0x11b2,0x18c,0x18c,0x15ab,0x15ab,0x15ab,0x15ab,
-0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15a8,0x210,0x1308,0x12e7,0x1302,0x1302,
-0x1302,0x1302,0x1302,0x1302,0x1302,0x12ea,0x12ea,0x12ea,0x12ea,0x1302,0x12ea,0x12ea,0x12ea,0x12ea,0x12f0,0x14d6,
-0x14dc,0x14d9,0x14d3,0x192,0x1701,0x1701,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x11d9,0x11d9,0x11d9,0x11d9,
-0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d0,0x11d0,0x11d3,0x11dc,
-0x11d6,0x11d6,0x11d6,0x11dc,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x11df,0x11df,0x11df,0x11df,
-0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x130e,0x11e5,0x1311,
-0x11e5,0x11e5,0x11e5,0x11e5,0x11e2,0x11e2,0x11e2,0x11e5,0x173a,0x173d,0x19b,0x19b,0x12d5,0x12d5,0x12d5,0x12d5,
-0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,
-0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x12d5,0x19e,0x19e,0x19e,0x11fa,0x11ee,0x11ee,0x11ee,
-0x11ee,0x11ee,0x11ee,0x11f1,0x1200,0x1200,0x11ee,0x11ee,0x11ee,0x11ee,0x1a1,0x12fc,0x11f4,0x11f4,0x11f4,0x11f4,
-0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x1a1,0x1a1,0x1a1,0x1a1,0x11ee,0x11ee,0x121e,0x1212,0x121e,0x1a4,
-0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
-0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x121b,0x121b,0x1221,0x1215,0x1218,0x1236,0x1236,0x1236,0x1230,
-0x1230,0x1227,0x1230,0x1230,0x1227,0x1230,0x1230,0x1239,0x1233,0x122a,0x1a7,0x1a7,0x122d,0x122d,0x122d,0x122d,
-0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x123f,0x123f,0x123f,0x123f,
-0x123f,0x123f,0x123f,0x1aa,0x1aa,0x1aa,0x1aa,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,
-0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,
-0x123c,0x123c,0x123c,0x123c,0x1aa,0x1aa,0x1aa,0x1aa,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
-0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1ad,0x1245,
-0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
-0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1b0,0x1b0,
-0x1b0,0x1251,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
-0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1b3,0x1b3,
-0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
-0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,
-0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
-0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1bc,0x1287,0x1287,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,
-0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,
-0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x156c,0x156c,0x1c5,0x1c5,0x1c5,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b4,0x12b4,0x12b4,0x1293,0x1c5,
-0x13b6,0x12bd,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x12bd,0x13b6,0x12bd,
-0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x1443,0x1443,0x1c5,0x1c5,0x1c5,0x1c5,
-0x13b9,0x13b9,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x12ba,0x13b3,0x12ba,0x12ba,0x13b3,0x13b9,0x12c0,
-0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1863,0x1c5,0x1c5,0x1c5,
-0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,
-0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,
-0x1c5,0x1c5,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,
-0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x12e1,0x13d4,0x13d1,0x1c8,
-0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x12db,0x12db,0x12db,0x12db,
-0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12de,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,
-0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12db,0x12de,0x12db,0x12db,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d1,
-0x13d4,0x13d4,0x13d4,0x1866,0x1c8,0x1c8,0x1c8,0x1c8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,
-0x12d8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1401,0x1401,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
-0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1374,0x1374,0x1374,0x1374,
-0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,0x1374,
-0x1374,0x1374,0x1374,0x1374,0x1374,0x136e,0x136e,0x136e,0x1cb,0x1cb,0x1371,0x1cb,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1377,0x1380,0x137a,0x137a,0x1380,0x1380,0x1380,0x137a,0x1380,0x137a,0x137a,0x137a,0x1383,0x1383,
-0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x137d,0x137d,0x137d,0x137d,0x1d1,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1d1,0x1d1,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1d1,0x1d1,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1389,0x1389,0x1389,0x1389,
-0x1389,0x1389,0x1389,0x1d1,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1d1,0x1608,0x1608,0x1608,0x1608,
-0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138f,0x13a1,0x13a1,0x1395,0x1395,0x1395,0x1395,0x1395,0x1d4,0x1d4,0x1d4,0x1d4,0x1392,0x1392,
-0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1398,0x1398,
-0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
-0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x156f,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,
-0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,
-0x13a4,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x13da,0x13d7,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0x149d,0x37e,0x38d,0x38d,0x1b,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x1b,0x1b,0x393,
+0x393,0x1b,0x1b,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,
+0x393,0x1b,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x1b,0x393,0x1b,0x1b,0x1b,0x393,0x393,
+0x393,0x393,0x1b,0x1b,0x381,0xc7e,0x37e,0x38d,0x38d,0x37e,0x37e,0x37e,0x37e,0x1b,0x1b,0x38d,
+0x38d,0x1b,0x1b,0x390,0x390,0x384,0xd71,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x37e,
+0x1b,0x1b,0x1b,0x1b,0x396,0x396,0x1b,0x396,0x393,0x393,0x37e,0x37e,0x1b,0x1b,0x90c,0x90c,
+0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x393,0x393,0x38a,0x38a,0x387,0x387,0x387,0x387,
+0x387,0x38a,0x387,0x10f5,0x1b,0x1b,0x1b,0x1b,0x1e,0xc81,0x399,0xc84,0x1e,0x3a5,0x3a5,0x3a5,
+0x3a5,0x3a5,0x3a5,0x1e,0x1e,0x1e,0x1e,0x3a5,0x3a5,0x1e,0x1e,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,
+0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x1e,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,
+0x3a5,0x1e,0x3a5,0x3a8,0x1e,0x3a5,0x3a8,0x1e,0x3a5,0x3a5,0x1e,0x1e,0x39c,0x1e,0x3a2,0x3a2,
+0x3a2,0x399,0x399,0x1e,0x1e,0x1e,0x1e,0x399,0x399,0x1e,0x1e,0x399,0x399,0x39f,0x1e,0x1e,
+0x1e,0xf51,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3a8,0x3a8,0x3a8,0x3a5,0x1e,0x3a8,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,
+0x399,0x399,0x3a5,0x3a5,0x3a5,0xf51,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x21,0x3ab,0x3ab,0x3b4,0x21,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0xc8d,0x3b7,0x21,0x3b7,
+0x3b7,0x3b7,0x21,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,
+0x3b7,0x21,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x21,0x3b7,0x3b7,0x21,0x3b7,0x3b7,0x3b7,
+0x3b7,0x3b7,0x21,0x21,0x3ae,0x3b7,0x3b4,0x3b4,0x3b4,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x21,0x3ab,
+0x3ab,0x3b4,0x21,0x3b4,0x3b4,0x3b1,0x21,0x21,0x3b7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x3b7,0xc8d,0xc87,0xc87,0x21,0x21,0x912,0x912,
+0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x13b3,0xc8a,0x21,0x21,0x21,0x21,0x21,0x21,
+0x21,0x16b9,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x3ba,0x3c9,0x3c9,0x24,0x3cf,0x3cf,0x3cf,
+0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x24,0x24,0x3cf,0x3cf,0x24,0x24,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,
+0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x24,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,
+0x3cf,0x24,0x3cf,0x3cf,0x24,0xc90,0x3cf,0x3cf,0x3cf,0x3cf,0x24,0x24,0x3bd,0x3cf,0x3ba,0x3ba,
+0x3c9,0x3ba,0x3ba,0x3ba,0xf54,0x24,0x24,0x3c9,0x3cc,0x24,0x24,0x3cc,0x3cc,0x3c0,0x24,0x24,
+0x24,0x24,0x24,0x24,0x24,0x24,0x3ba,0x3ba,0x24,0x24,0x24,0x24,0x3d2,0x3d2,0x24,0x3cf,
+0x3cf,0x3cf,0xf54,0xf54,0x24,0x24,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,
+0x3c3,0xc90,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+0x27,0x27,0x3d5,0x3e1,0x27,0x3e1,0x3e1,0x3e1,0x3e1,0x3e1,0x3e1,0x27,0x27,0x27,0x3e1,0x3e1,
+0x3e1,0x27,0x3e1,0x3e1,0x3e4,0x3e1,0x27,0x27,0x27,0x3e1,0x3e1,0x27,0x3e1,0x27,0x3e1,0x3e1,
+0x27,0x27,0x27,0x3e1,0x3e1,0x27,0x27,0x27,0x3e1,0x3e1,0x91b,0x27,0x27,0x27,0x3e1,0x3e1,
+0x3e1,0x3e1,0x3e1,0x3e1,0x3e1,0x91b,0xd74,0x3e1,0x3e1,0x3e1,0x27,0x27,0x27,0x27,0x3d5,0x3db,
+0x3d5,0x3db,0x3db,0x27,0x27,0x27,0x3db,0x3db,0x3db,0x27,0x3de,0x3de,0x3de,0x3d8,0x27,0x27,
+0xf57,0x27,0x27,0x27,0x27,0x27,0x27,0x3d5,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+0x27,0x27,0xe8b,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x918,0x915,0x915,0x915,0xc93,
+0xc93,0xc93,0xc93,0xc93,0xc93,0xc96,0xc93,0x27,0x27,0x27,0x27,0x27,0x14a0,0x3f3,0x3f3,0x3f3,
+0x2a,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x2a,0x3f6,0x3f6,0x3f6,0x2a,0x3f6,0x3f6,
+0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x2a,0x3f6,0x3f6,
+0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x14a3,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x2a,0x2a,
+0x2a,0xf60,0x3e7,0x3e7,0x3e7,0x3f3,0x3f3,0x3f3,0x3f3,0x2a,0x3e7,0x3e7,0x3ea,0x2a,0x3e7,0x3e7,
+0x3e7,0x3ed,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3e7,0x3e7,0x2a,0xf60,0xf60,0x16bc,0x2a,
+0x2a,0x2a,0x2a,0x2a,0x3f6,0x3f6,0xf5a,0xf5a,0x2a,0x2a,0x3f0,0x3f0,0x3f0,0x3f0,0x3f0,0x3f0,
+0x3f0,0x3f0,0x3f0,0x3f0,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0xf5d,0xf5d,0xf5d,0xf5d,
+0xf5d,0xf5d,0xf5d,0xf5d,0x1779,0x14a6,0x402,0x402,0x2d,0x408,0x408,0x408,0x408,0x408,0x408,0x408,
+0x408,0x2d,0x408,0x408,0x408,0x2d,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,
+0x408,0x408,0x408,0x408,0x408,0x2d,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,
+0x2d,0x408,0x408,0x408,0x408,0x408,0x2d,0x2d,0xc99,0xc9c,0x402,0x3f9,0x405,0x402,0x3f9,0x402,
+0x402,0x2d,0x3f9,0x405,0x405,0x2d,0x405,0x405,0x3f9,0x3fc,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+0x2d,0x3f9,0x3f9,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x408,0x2d,0x408,0x408,0xea3,0xea3,
+0x2d,0x2d,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x3ff,0x2d,0xea6,0xea6,0x2d,
+0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x30,0x14a9,0x414,0x414,
+0x30,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x30,0x41a,0x41a,0x41a,0x30,0x41a,0x41a,
+0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x12cf,0x41a,0x41a,
+0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x12cf,0x30,
+0x30,0xf6c,0x40b,0x414,0x414,0x40b,0x40b,0x40b,0xf63,0x30,0x414,0x414,0x414,0x30,0x417,0x417,
+0x417,0x40e,0x12d2,0x177c,0x30,0x30,0x30,0x30,0x177f,0x177f,0x177f,0x40b,0x177c,0x177c,0x177c,0x177c,
+0x177c,0x177c,0x177c,0x16bf,0x41a,0x41a,0xf63,0xf63,0x30,0x30,0x411,0x411,0x411,0x411,0x411,0x411,
+0x411,0x411,0x411,0x411,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0x177c,0x177c,0x177c,0xf69,0xf6c,0xf6c,
+0xf6c,0xf6c,0xf6c,0xf6c,0x33,0x33,0x9e4,0x9e4,0x33,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,
+0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x33,0x33,0x33,0x9ea,0x9ea,
+0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,
+0x9ea,0x9ea,0x33,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x33,0x9ea,0x33,0x33,
+0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x9ea,0x33,0x33,0x33,0x9de,0x33,0x33,0x33,0x33,0x9db,
+0x9e4,0x9e4,0x9db,0x9db,0x9db,0x33,0x9db,0x33,0x9e4,0x9e4,0x9e7,0x9e4,0x9e7,0x9e7,0x9e7,0x9db,
+0x33,0x33,0x33,0x33,0x33,0x33,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,
+0x33,0x33,0x9e4,0x9e4,0x9e1,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+0x36,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,
+0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,0x435,
+0x435,0x420,0x435,0x432,0x420,0x420,0x420,0x420,0x420,0x420,0x426,0x36,0x36,0x36,0x36,0x41d,
+0x43b,0x43b,0x43b,0x43b,0x43b,0x435,0x438,0x423,0x423,0x423,0x423,0x423,0x423,0x420,0x423,0x429,
+0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42f,0x42c,0x42c,0x36,0x36,0x36,0x36,
+0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x39,0x44a,0x44a,0x39,
+0x44a,0x39,0x39,0x44a,0x44a,0x39,0x44a,0x39,0x39,0x44a,0x39,0x39,0x39,0x39,0x39,0x39,
+0x44a,0x44a,0x44a,0x44a,0x39,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x44a,0x39,0x44a,0x44a,0x44a,
+0x39,0x44a,0x39,0x44a,0x39,0x39,0x44a,0x44a,0x39,0x44a,0x44a,0x44a,0x44a,0x43e,0x44a,0x447,
+0x43e,0x43e,0x43e,0x43e,0x43e,0x43e,0x39,0x43e,0x43e,0x44a,0x39,0x39,0x453,0x453,0x453,0x453,
+0x453,0x39,0x450,0x39,0x441,0x441,0x441,0x441,0x441,0x43e,0x39,0x39,0x444,0x444,0x444,0x444,
+0x444,0x444,0x444,0x444,0x444,0x444,0x39,0x39,0x44d,0x44d,0x13b6,0x13b6,0x39,0x39,0x39,0x39,
+0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x95d,0x95d,0x95d,0x960,
+0x95d,0x95d,0x95d,0x95d,0x3c,0x95d,0x95d,0x95d,0x95d,0x960,0x95d,0x95d,0x95d,0x95d,0x960,0x95d,
+0x95d,0x95d,0x95d,0x960,0x95d,0x95d,0x95d,0x95d,0x960,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,
+0x95d,0x95d,0x95d,0x95d,0x95d,0x960,0x9f9,0xf78,0xf78,0x3c,0x3c,0x3c,0x3c,0x92a,0x92a,0x92d,
+0x92a,0x92d,0x92d,0x936,0x92d,0x936,0x92a,0x92a,0x92a,0x92a,0x92a,0x957,0x92a,0x92d,0x930,0x930,
+0x933,0x93c,0x930,0x930,0x95d,0x95d,0x95d,0x95d,0x12db,0x12d5,0x12d5,0x12d5,0x92a,0x92a,0x92a,0x92d,
+0x92a,0x92a,0x9ed,0x92a,0x3c,0x92a,0x92a,0x92a,0x92a,0x92d,0x92a,0x92a,0x92a,0x92a,0x92d,0x92a,
+0x92a,0x92a,0x92a,0x92d,0x92a,0x92a,0x92a,0x92a,0x92d,0x92a,0x9ed,0x9ed,0x9ed,0x92a,0x92a,0x92a,
+0x92a,0x92a,0x92a,0x92a,0x9ed,0x92d,0x9ed,0x9ed,0x9ed,0x3c,0x9f6,0x9f6,0x9f3,0x9f3,0x9f3,0x9f3,
+0x9f3,0x9f3,0x9f0,0x9f3,0x9f3,0x9f3,0x9f3,0x9f3,0x9f3,0x3c,0xf6f,0x9f3,0xd77,0xd77,0xf72,0xf75,
+0xf6f,0x10f8,0x10f8,0x10f8,0x10f8,0x12d8,0x12d8,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x459,0x459,0x459,0x459,0x459,0x459,0x3f,0x13bc,
+0x3f,0x3f,0x3f,0x3f,0x3f,0x13bc,0x3f,0x3f,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,
+0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,
+0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0x42,
+0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,
+0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,0xa23,0x42,0xa23,0xa23,
+0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0x42,0xa23,0x42,0xa23,0xa23,
+0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xd86,0xa23,0x42,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0x42,0x42,0x12de,0x12de,0xd80,0xd83,0xa1d,0xa26,0xa1a,
+0xa1a,0xa1a,0xa1a,0xa26,0xa26,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0xa17,0xa17,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x42,0x42,0x42,0xa29,0xa29,0xa29,0xa29,
+0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
+0xa29,0x16c5,0x45,0x45,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x45,0x45,0xa3b,0xa3e,0xa3e,0xa3e,
+0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,
+0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa3e,0xa38,0xa35,0x48,0x48,0x48,0xa44,0xa44,0xa44,0xa44,
+0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa41,0xa41,0xa41,0xa44,0xa44,0xa44,0x14af,0x14af,0x14af,
+0x14af,0x14af,0x14af,0x14af,0x14af,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xa65,0xa65,0xa65,0xa65,
+0xa65,0xa65,0xa47,0xa65,0xa65,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4a,0xa4d,0xa4a,
+0xa5c,0xa5c,0xa5f,0xa68,0xa56,0xa53,0xa5c,0xa59,0xa68,0xc9f,0x4e,0x4e,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xca2,0xca2,0xca2,0xca2,
+0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xa77,0xa77,0xaf5,0xaf8,
+0xa7d,0xaf2,0xa7a,0xa77,0xa80,0xa8f,0xa83,0xa92,0xa92,0xa92,0xa6e,0x51,0xa86,0xa86,0xa86,0xa86,
+0xa86,0xa86,0xa86,0xa86,0xa86,0xa86,0x51,0x51,0x51,0x51,0x51,0x51,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0xa89,0xa71,0xf99,0x51,0x51,0x51,0x51,0x51,0x114c,0x114c,0x114c,0x114c,
+0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x477,0x477,0x477,0x477,
+0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,
+0x477,0x477,0x54,0x54,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x54,0x54,0x477,0x477,0x477,0x477,
+0x477,0x477,0x477,0x477,0x54,0x47a,0x54,0x47a,0x54,0x47a,0x54,0x47a,0x477,0x477,0x477,0x477,
+0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,
+0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x54,0x54,0x477,0x477,0x477,0x477,
+0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,
+0x477,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x471,0x477,0x471,0x471,0x46e,0x477,0x477,
+0x477,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x46e,0x46e,0x46e,0x477,0x477,0x477,0x477,
+0x54,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x54,0x46e,0x46e,0x46e,0x477,0x477,0x477,0x477,
+0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x46e,0x46e,0x46e,0x54,0x54,0x477,0x477,
+0x477,0x54,0x477,0x477,0x47a,0x47a,0x47a,0x47a,0x47a,0x474,0x471,0x54,0xb6a,0xb6d,0xb6d,0xb6d,
+0xfa2,0x57,0x148e,0x148e,0x148e,0x148e,0x483,0x483,0x483,0x483,0x483,0x483,0x4ce,0xb7f,0x5a,0x5a,
+0x68a,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4d4,0x4e6,0x4d4,0x4e0,0x4da,0x68d,0x4cb,0x687,0x687,0x687,
+0x687,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4d1,0x4e3,0x4d1,0x4dd,0x4d7,0x5a,0xd8f,0xd8f,0xd8f,0xd8f,
+0xd8f,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x5a,0x5a,0x5a,0x4ec,0x4ec,0x4ec,0x4ec,
+0x4ec,0x4ec,0x4ec,0x4e9,0x4ef,0x702,0x4ec,0x966,0x987,0xaa1,0xaa1,0xaa1,0xb82,0xb82,0xd92,0xd92,
+0xd92,0xd92,0x1110,0x1113,0x1113,0x12e4,0x1488,0x14b2,0x14b5,0x14b5,0x16c8,0x5d,0x5d,0x5d,0x5d,0x5d,
+0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x4f5,0x4f5,0x4f5,0x4f5,
+0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f5,0x4f2,0x4f2,0x4f2,0x4f2,0x4f5,0xaa4,0xaa4,
+0xb85,0xb8b,0xb8b,0xb88,0xb88,0xb88,0xb88,0xd95,0xea9,0xea9,0xea9,0xea9,0x10e3,0x60,0x60,0x60,
+0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x525,0x525,0x525,0xaad,
+0xeb2,0xfa8,0xfa8,0xfa8,0xfa8,0x123f,0x16cb,0x16cb,0x63,0x63,0x63,0x63,0x6b4,0x6b4,0x6b4,0x6b4,
+0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x6b7,0x531,0x531,0x52e,0x52e,0x52e,0x52e,0xeb8,0xeb8,0xeb8,0xeb5,
+0xeb5,0xeb5,0xeb5,0xeb5,0x1119,0x1365,0x1365,0x1365,0x1365,0x12e7,0x12e7,0x12e7,0x1368,0x12ea,0x12ea,0x1368,
+0x14b8,0x14b8,0x14b8,0x14b8,0x14bb,0x14bb,0x14bb,0x1782,0x1782,0x1782,0x1782,0x66,0x558,0x558,0x558,0x558,
+0x558,0xab6,0xab6,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x55b,0x55b,0x55b,0x55b,
+0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0xad1,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0x6f,0xad1,0xad1,0xad1,0xad1,0xad4,0xad1,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad4,
+0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xad7,0xad7,0xad7,0xad7,
+0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,
+0xad7,0xad7,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x78,0x7e9,0x7e3,0x7e9,
+0x7e3,0x7e9,0x7e3,0x7e9,0x7e3,0x7e9,0x7e3,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,
+0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e3,0x7e3,0x7e3,0x7e9,
+0x7e3,0x7e9,0x7e3,0x7e9,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e9,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,
+0x7e6,0xc2d,0xc2d,0x78,0x78,0x8fd,0x8fd,0x8c7,0x8c7,0x7ec,0x7ef,0xc2a,0x7b,0x7b,0x7b,0x7b,
+0x7b,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,
+0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x10d1,0x7b,0x7b,
+0x7e,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x7e,0x8d0,0x8d0,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,0x8d3,
+0x8d3,0x8d3,0x8d3,0x8d3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,
+0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0x1374,0x1374,0x1374,0x81,
+0x81,0x81,0x81,0x81,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,
+0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,
+0x80d,0xd2f,0xd2f,0x84,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
+0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
+0x813,0x813,0x813,0x84,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
+0xae9,0x87,0x87,0x87,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
+0xaef,0xaef,0xaef,0xaef,0xaef,0xc36,0xaef,0xaef,0xaef,0xc36,0xaef,0x8a,0x8a,0x8a,0x8a,0x8a,
+0x8a,0x8a,0x8a,0x8a,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x981,0x981,0x981,0x981,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+0x8d,0x8d,0x8d,0x8d,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,
+0x11e8,0x11e8,0x11e8,0x11e8,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x90,0x90,0x90,0x90,0x90,
+0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x90,0x90,0x90,0x90,
+0x90,0xac2,0x5a6,0x5ac,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5a9,0x5ac,0x5ac,
+0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x90,0x5ac,0x5ac,0x5ac,0x5ac,
+0x5ac,0x90,0x5ac,0x90,0x5ac,0x5ac,0x90,0x5ac,0x5ac,0x90,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,
+0x5ac,0x5ac,0x5ac,0x5af,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
+0x5c4,0x5ca,0x5c7,0x5c1,0x12f3,0x12f3,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,
+0x5c1,0x5c7,0x5c7,0x5c1,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+0x93,0x93,0x93,0x93,0x5c4,0x5c1,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,
+0x5c4,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c4,0x5c4,0x5c4,0x5c1,
+0x5c4,0x5c4,0x5c4,0x5c4,0x93,0x93,0x5c4,0x5c4,0x5c4,0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,
+0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c4,0x5c1,0x5c1,0x93,0x93,0x93,0x93,
+0x93,0x93,0x93,0x93,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,
+0xb0a,0xb0a,0xb0a,0xb0a,0x5c7,0x5c7,0x91e,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5be,0x5be,
+0xbc1,0xd47,0x93,0x93,0x825,0x837,0x834,0x837,0x834,0xc4b,0xc4b,0xd3b,0xd38,0x828,0x828,0x828,
+0x828,0x83a,0x83a,0x83a,0x852,0x855,0x864,0x96,0x858,0x85b,0x867,0x867,0x84f,0x846,0x840,0x846,
+0x840,0x846,0x840,0x843,0x843,0x85e,0x85e,0x861,0x85e,0x85e,0x85e,0x96,0x85e,0x84c,0x849,0x843,
+0x96,0x96,0x96,0x96,0x5d3,0x5df,0x5d3,0xbc4,0x5d3,0x99,0x5d3,0x5df,0x5d3,0x5df,0x5d3,0x5df,
+0x5d3,0x5df,0x5d3,0x5df,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,
+0x5df,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,
+0x5d6,0x99,0x99,0x5d0,0x723,0x726,0x73b,0x73e,0x71d,0x726,0x726,0x9f,0x705,0x708,0x708,0x708,
+0x708,0x705,0x705,0x9f,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0xac5,0xac5,0xac5,
+0x984,0x6ff,0x5e2,0x5e2,0x9f,0x74d,0x72c,0x71d,0x726,0x723,0x71d,0x72f,0x720,0x71a,0x71d,0x73b,
+0x732,0x729,0x74a,0x71d,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x738,0x735,
+0x73b,0x73b,0x73b,0x74d,0x70e,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,
+0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,
+0x70b,0x70b,0x70b,0x9f,0x9f,0x9f,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x9f,0x9f,0x70b,0x70b,
+0x70b,0x70b,0x70b,0x70b,0x9f,0x9f,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x9f,0x9f,0x70b,0x70b,
+0x70b,0x9f,0x9f,0x9f,0xb0d,0xb0d,0xb0d,0xb0d,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+0xa2,0xa2,0xa2,0xa2,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
+0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xa5,0xa5,0xa5,0xa5,0xa5,0x161a,0x161a,0x161a,0x161a,
+0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0xb1c,0xb1c,0xb1c,0xb1c,
+0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
+0xb1c,0xb1c,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xab,0xab,0xfb4,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0x16d1,0x16d1,0x16d1,0x16d1,
+0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
+0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xae,0xb40,0xb40,0xae,0xae,0xb40,0xae,
+0xae,0xb40,0xb40,0xae,0xae,0xb40,0xb40,0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xae,0xb3d,0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xcc0,0xb3d,0xb3d,
+0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xae,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xae,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,0xae,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xae,0xb40,0xae,0xae,0xae,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xae,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xdaa,0xdaa,0xae,0xae,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xec1,0xebe,0xae,0xae,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
+0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb1,0xb46,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,
+0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xb4,0xbd3,0xbd3,0xbd3,0xbd3,0xbcd,0xbcd,0xbd0,0xb4,0xb4,0xb4,
+0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,
+0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbd6,0xbd6,0xbd9,0xc3f,0xc3f,0xb7,
+0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,
+0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbdf,0xbdf,0xba,0xba,0xba,0xba,
+0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,
+0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbd,0xbe8,0xbe8,0xbe8,0xbd,0xbe5,0xbe5,0xbd,0xbd,0xbd,0xbd,
+0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,
+0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,
+0xcd2,0xcd2,0xcd2,0xcd2,0xcd2,0x14cd,0x14cd,0xc0,0xcc3,0xcc3,0xcc3,0xccf,0xccf,0xccf,0xccf,0xcc3,
+0xcc3,0xccf,0xccf,0xccf,0xc0,0xc0,0xc0,0xc0,0xccf,0xccf,0xcc3,0xccf,0xccf,0xccf,0xccf,0xccf,
+0xccf,0xcc6,0xcc6,0xcc6,0xc0,0xc0,0xc0,0xc0,0xcc9,0xc0,0xc0,0xc0,0xcd5,0xcd5,0xccc,0xccc,
+0xccc,0xccc,0xccc,0xccc,0xccc,0xccc,0xccc,0xccc,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,
+0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xc3,0xc3,0xcd8,0xcd8,0xcd8,0xcd8,
+0xcd8,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x14d0,0x14d0,0x14d0,0x14d0,
+0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
+0xc6,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
+0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,
+0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
+0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0xc6,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,
+0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0x14d0,0xc6,0xc6,
+0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x16d4,0x16d4,0x16d4,0x16d4,
+0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,
+0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xcff,0xcff,0xcff,
+0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,
+0xcff,0xcff,0xcff,0xc9,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,
+0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xcff,0xcff,0xc9,0xcff,0xcff,0xcff,0xcff,0xcff,
+0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xc9,0xcff,0xcff,0xcff,0xcff,
+0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xd02,0xd02,0xd02,0xd02,
+0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,
+0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xcc,0xcc,0xcc,0xcc,0xcc,0xd44,0xd44,0xd44,0xcf,
+0xcf,0xcf,0xcf,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
+0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xcf,0xcf,0xcf,0xd41,
+0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,
+0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,
+0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd2,0xd05,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,
+0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,
+0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd5,0xd5,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
+0xd0e,0xd0e,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
+0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd8,0xd8,
+0xd14,0xd8,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,
+0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd8,0xd14,0xd14,0xd8,0xd8,0xd8,
+0xd14,0xd8,0xd8,0xd14,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,
+0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xdb,0xdb,0xdb,0xdb,0xdb,
+0xdb,0xdb,0xdb,0xdb,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0x14d3,
+0x14d3,0x1785,0x1785,0xe1,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,
+0x138,0x138,0x138,0x138,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,
+0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdce,0xdce,0xdd4,0xdd4,0xdce,
+0xe4,0xe4,0xdd1,0xdd1,0x10e0,0x10e0,0x10e0,0x10e0,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,
+0xe7,0xe7,0xe7,0xe7,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,0xc3c,
+0xc3c,0xc3c,0xc3c,0xc3c,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,
+0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d9,0xea,0xea,0xea,0xea,0xea,0x1788,
+0x12ff,0x1122,0xed0,0xed0,0xde9,0xde6,0xde9,0xde6,0xde6,0xddd,0xddd,0xddd,0xddd,0xddd,0xddd,0x112b,
+0x1128,0x112b,0x1128,0x1125,0x1125,0x1125,0x13c5,0x13c2,0xed,0xed,0xed,0xed,0xed,0xde3,0xde0,0xde0,
+0xde0,0xddd,0xde3,0xde0,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,
+0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xf0,0xf0,0xf0,0xf0,0xf0,
+0xf0,0xf0,0xf0,0xf0,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xf0,0xdec,0xdec,0xdec,0xdec,
+0xdec,0xdec,0xdec,0xf0,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xf0,0xdec,0xdec,0xdec,0xdec,
+0xdec,0xdec,0xdec,0xf0,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,
+0xdf2,0xdf2,0xdf2,0xdf2,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xdef,0xf3,0xf3,
+0xf3,0xf3,0xf3,0xf3,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xf6,0x13c8,0xf6,0xf6,0xf6,0xf6,
+0xf6,0x13c8,0xf6,0xf6,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
+0xdfb,0xdfb,0xdfb,0xf9,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
+0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
+0xdf8,0xdf8,0xdf8,0xf9,0xe0d,0xe01,0xe01,0xe01,0xfc,0xe01,0xe01,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xe01,0xe01,0xe01,0xe01,0xe0d,0xe0d,0xe0d,0xe0d,0xfc,0xe0d,0xe0d,0xe0d,0xfc,0xe0d,0xe0d,0xe0d,
+0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,
+0xe0d,0xe0d,0xe0d,0xe0d,0xfc,0xfc,0xfc,0xfc,0xdfe,0xdfe,0xdfe,0xfc,0xfc,0xfc,0xfc,0xe04,
+0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe10,0xe10,0xe07,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0x1131,0x1131,0xff,0xff,0xff,0xff,
+0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1c,0xe1c,0xe1f,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,
+0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xff,0xff,0xff,0xff,0xff,0xff,0xe19,0xe19,0xe19,0xe19,
+0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0x112e,0xff,0xff,0xff,0xe16,0xe16,0xe25,0xe25,0xe25,0xe25,
+0x102,0x102,0x102,0x102,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe22,0xe25,0xe25,0xe25,
+0xe25,0xe25,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x14e2,0x14e8,0x14e5,0x1830,
+0x178b,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
+0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
+0x105,0x105,0x105,0x105,0xe4c,0xe4c,0xe4c,0xe49,0xe49,0xe40,0xe40,0xe49,0xe46,0xe46,0xe46,0xe46,
+0x108,0x108,0x108,0x108,0x129c,0x129c,0x129c,0x129c,0x129c,0x129c,0x129f,0x129f,0x12a2,0x129f,0x15c,0x15c,
+0x15c,0x15c,0x15c,0x15c,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0x13d4,0x13d4,0x10b,0x10b,0x10b,0x10b,
+0x10b,0x10b,0x10b,0xe52,0x1305,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,
+0x10b,0x10b,0x10b,0x1302,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,
+0xc0f,0xc0f,0xc0f,0xc0f,0xe7f,0xe70,0xe6a,0xe7c,0xe79,0xe73,0xe73,0xe82,0xe6d,0xe76,0x10e,0x10e,
+0x10e,0x10e,0x10e,0x10e,0xf03,0xf03,0xeee,0xf03,0xf06,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0x114,0x114,0x114,0x114,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xf0f,0xf0f,
+0xef4,0xefa,0xf0f,0xf0f,0xef7,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef1,
+0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,
+0xef4,0x114,0x114,0x114,0x130b,0x1308,0x130b,0x1308,0x130b,0x1308,0x130b,0x1308,0x130b,0x1308,0x13da,0x14f4,
+0x14f4,0x14f4,0x178e,0x117,0x14f4,0x14f4,0x16dd,0x16dd,0x16dd,0x16d7,0x16dd,0x16d7,0x117,0x117,0x117,0x117,
+0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,
+0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x14f1,
+0x13dd,0x13dd,0x1308,0x100b,0x100b,0x100b,0x100b,0x100b,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,
+0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1b,0xf1b,0xf21,0xf21,
+0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,
+0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf24,0xf24,
+0xf24,0xf24,0x113a,0x113a,0x11d,0x11d,0x11d,0xf27,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,
+0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,
+0x14f7,0x16e0,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,
+0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,
+0x120,0x120,0x120,0x120,0xf33,0xf33,0xf33,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,0x14fd,
+0x14fd,0x14fd,0x14fd,0x123,0xf30,0xf30,0xf30,0xf30,0x14fa,0x123,0x123,0x123,0x123,0x123,0x123,0x123,
+0x123,0x123,0x123,0x123,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,
+0xf36,0xf36,0xf36,0xf36,0xf36,0xf36,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
+0x126,0x126,0x126,0x126,0x1032,0x1032,0x1032,0x1032,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,
+0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x102f,0x102f,0x1026,0x1023,0x129,0x129,0x129,0x1035,
+0x1035,0x1029,0x1029,0x1029,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x102c,0x129,0x129,
+0x129,0x1032,0x1032,0x1032,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x103b,0x103b,
+0x103b,0x103b,0x103b,0x103b,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x1050,0x1050,
+0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,
+0x12c,0x12c,0x12c,0x12c,0x1077,0x1077,0x1077,0x1077,0x1071,0x1791,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,
+0x12f,0x12f,0x107d,0x107d,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x12f,0x12f,
+0x12f,0x12f,0x12f,0x12f,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x108f,0x108f,0x108f,0x108f,0x108f,
+0x108f,0x108f,0x108f,0x108f,0x108f,0x108f,0x1095,0x1098,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,
+0x132,0x132,0x132,0x1092,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x109e,0x109e,0x109e,
+0x109e,0x109e,0x109e,0x10a7,0x10a7,0x109e,0x109e,0x10a7,0x10a7,0x109e,0x109e,0x135,0x135,0x135,0x135,0x135,
+0x135,0x135,0x135,0x135,0x10aa,0x10aa,0x10aa,0x109e,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
+0x109e,0x10a7,0x135,0x135,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x135,0x135,
+0x10a1,0x10ad,0x10ad,0x10ad,0x1509,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
+0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,
+0x138,0x138,0x138,0x138,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,
+0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,
+0x10b3,0x10b6,0x13b,0x13b,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,
+0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,
+0x10b9,0x13e,0x13e,0x13e,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
+0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,
+0x141,0x141,0x141,0x141,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,
+0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x144,0x144,
+0x144,0x144,0x144,0x10bf,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,
+0x147,0x147,0x147,0x147,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,
+0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,
+0x14a,0x14a,0x14a,0x14a,0x1140,0x1140,0x1140,0x1140,0x1149,0x1140,0x1140,0x1140,0x1149,0x1140,0x1140,0x1140,
+0x1140,0x113d,0x14d,0x14d,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,0x1146,
+0x1146,0x1146,0x1146,0x14d,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,
+0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x150,0x150,0x150,0x150,0x150,0x150,
+0x150,0x150,0x150,0x150,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,
+0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1164,0x114f,0x1164,0x114f,0x114f,0x114f,0x114f,
+0x114f,0x114f,0x114f,0x153,0x1158,0x1161,0x114f,0x1161,0x1161,0x114f,0x114f,0x114f,0x114f,0x114f,0x114f,0x114f,
+0x114f,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x114f,0x114f,0x1155,0x1155,0x1155,0x1155,0x1155,0x1155,0x1155,
+0x1155,0x153,0x153,0x1152,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x153,0x153,
+0x153,0x153,0x153,0x153,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x115e,0x153,0x153,
+0x153,0x153,0x153,0x153,0x115b,0x115b,0x115b,0x115b,0x115b,0x115b,0x115b,0x116a,0x116d,0x116d,0x116d,0x116d,
+0x115b,0x115b,0x153,0x153,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,0x1557,
+0x1557,0x1557,0x1554,0x1d1,0x12b1,0x1290,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x1293,0x1293,0x1293,
+0x1293,0x12ab,0x1293,0x1293,0x1293,0x1293,0x1299,0x147f,0x1485,0x1482,0x147c,0x156,0x16ad,0x16ad,0x156,0x156,
+0x156,0x156,0x156,0x156,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x1182,0x1182,0x1182,0x1182,0x1179,0x1179,0x117c,0x1185,0x117f,0x117f,0x117f,0x1185,0x159,0x159,0x159,0x159,
+0x159,0x159,0x159,0x159,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,
+0x1188,0x1188,0x1188,0x1188,0x1188,0x12b7,0x118e,0x12ba,0x118e,0x118e,0x118e,0x118e,0x118b,0x118b,0x118b,0x118e,
+0x16e6,0x16e9,0x15f,0x15f,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,
+0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,
+0x127e,0x162,0x162,0x162,0x11a3,0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x119a,0x11a9,0x11a9,0x1197,0x1197,
+0x1197,0x1197,0x165,0x12a5,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x165,0x165,
+0x165,0x165,0x1197,0x1197,0x11c7,0x11bb,0x11c7,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,
+0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x11c4,
+0x11c4,0x11ca,0x11be,0x11c1,0x11df,0x11df,0x11df,0x11d9,0x11d9,0x11d0,0x11d9,0x11d9,0x11d0,0x11d9,0x11d9,0x11e2,
+0x11dc,0x11d3,0x16b,0x16b,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x16b,0x16b,
+0x16b,0x16b,0x16b,0x16b,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x11e8,0x16e,0x16e,0x16e,0x16e,0x11e5,
+0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,
+0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x16e,0x16e,0x16e,0x16e,
+0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,
+0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x11f1,0x171,0x11ee,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,
+0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,
+0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x174,0x174,0x174,0x11fa,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
+0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,
+0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x177,0x177,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,
+0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,0x120c,
+0x120c,0x120c,0x120c,0x17a,0x17a,0x17a,0x17a,0x17a,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
+0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,
+0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x180,
+0x1230,0x1230,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,
+0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
+0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x1515,0x1515,0x189,0x189,0x189,
+0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,0x125a,
+0x125a,0x125a,0x125a,0x125d,0x125d,0x125d,0x123c,0x189,0x135f,0x1266,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,
+0x135f,0x135f,0x135f,0x135f,0x135f,0x1266,0x135f,0x1266,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,
+0x135c,0x135c,0x13ec,0x13ec,0x189,0x189,0x189,0x189,0x1362,0x1362,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,
+0x135c,0x1263,0x135c,0x1263,0x1263,0x135c,0x1362,0x1269,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,
+0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,
+0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,
+0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,0x1314,
+0x1314,0x1314,0x1314,0x1314,0x128a,0x137d,0x137a,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
+0x18c,0x18c,0x18c,0x18c,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1287,0x1284,
+0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1287,
+0x1284,0x1284,0x137d,0x137d,0x137d,0x137d,0x137d,0x137a,0x137d,0x137d,0x137d,0x1812,0x18c,0x18c,0x18c,0x18c,
+0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
+0x13aa,0x13aa,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
+0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c,
+0x18c,0x18c,0x18c,0x18c,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,
+0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x131d,0x1317,0x1317,0x1317,
+0x18f,0x18f,0x131a,0x18f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x1320,0x1329,0x1323,0x1323,0x1329,0x1329,
+0x1329,0x1323,0x1329,0x1323,0x1323,0x1323,0x132c,0x132c,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,
+0x1326,0x1326,0x1326,0x1326,0x195,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x195,0x195,0x1332,0x1332,0x1332,
+0x1332,0x1332,0x1332,0x195,0x195,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x195,0x195,0x195,0x195,0x195,
+0x195,0x195,0x195,0x195,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x195,0x1332,0x1332,0x1332,0x1332,
+0x1332,0x1332,0x1332,0x195,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,
+0x15b4,0x15b4,0x15b4,0x15b4,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1338,0x134a,0x134a,0x133e,0x133e,0x133e,
+0x133e,0x133e,0x198,0x198,0x198,0x198,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,
+0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,0x1341,
+0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x1518,
+0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
+0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,
+0x1383,0x1380,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,
+0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,
+0x19e,0x19e,0x19e,0x19e,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
+0x1350,0x1350,0x1350,0x1a1,0x1a1,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
+0x1350,0x1350,0x1350,0x151b,0x1a1,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
+0x1350,0x1350,0x1350,0x1386,0x1a1,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,
+0x1350,0x1350,0x1350,0x1350,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
+0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,
+0x1a1,0x1a1,0x1a1,0x1a1,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1533,0x1533,0x1533,0x1533,0x1533,0x1536,
+0x16a4,0x1536,0x1536,0x1536,0x176d,0x181b,0x181b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
+0x1a4,0x1a4,0x1a4,0x1a4,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1533,0x1533,0x1533,0x1536,0x1533,0x16a1,
+0x16a1,0x1a4,0x1a4,0x1a4,0x1536,0x1533,0x1533,0x1536,0x181b,0x181b,0x181b,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
+0x1a4,0x1a4,0x1a4,0x1a4,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,
+0x1a7,0x1a7,0x1a7,0x1a7,0x13f8,0x153c,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,
+0x13f8,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x16f2,0x16f2,0x1aa,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,
+0x179d,0x179d,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,
+0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
+0x179a,0x179a,0x179a,0x179a,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x1ad,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,
+0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x13fe,0x1ad,0x1ad,0x1ad,0x1ad,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,
+0x1ad,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x1ad,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,
+0x1ad,0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,0x13fe,0x1ad,0x13fe,0x1ad,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,
+0x13fe,0x1ad,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
+0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x1ad,0x13fe,
+0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
+0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,
+0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,
+0x13fb,0x13fb,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,
+0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1401,0x1401,0x1401,0x1401,0x1401,0x1410,0x1401,0x1404,0x1404,
+0x1401,0x1401,0x1401,0x1407,0x1407,0x1b0,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,
+0x140a,0x1416,0x1416,0x1416,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
+0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
+0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x141f,0x1419,0x1419,0x141f,0x141f,
+0x1428,0x1428,0x1422,0x1425,0x1425,0x141f,0x141c,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,
+0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,
+0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x142b,0x1b6,0x1b6,0x1b6,0x1b6,0x16f5,0x16f5,0x142b,0x142b,
+0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,
+0x1b6,0x1b6,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,
+0x1437,0x1437,0x1437,0x1437,0x1437,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
+0x1437,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
+0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
+0x1434,0x1434,0x1434,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
+0x1b9,0x1b9,0x1b9,0x1431,0x1431,0x1431,0x1431,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,
+0x143a,0x143a,0x143a,0x143a,0x144c,0x144f,0x1452,0x1452,0x144f,0x1455,0x1455,0x1440,0x1443,0x16fb,0x16f8,0x16f8,
+0x16f8,0x1542,0x1bc,0x1bc,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x153f,0x1701,
+0x1704,0x16fe,0x1707,0x1707,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x1bf,0x1bf,0x1bf,
+0x1bf,0x1bf,0x1bf,0x1bf,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1bf,0x1bf,
+0x1bf,0x1bf,0x1bf,0x1bf,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x1c2,0x1c2,0x1c2,0x1c2,
+0x1c2,0x1c2,0x1c2,0x1c2,0x12ae,0x12ab,0x12ae,0x1296,0x12ab,0x12ab,0x12ab,0x12b1,0x12ab,0x12b1,0x12b4,0x12ab,
+0x12b1,0x12b1,0x12ab,0x12ab,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1461,
+0x146a,0x1461,0x146a,0x146a,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x146d,0x1464,0x1c5,0x1c5,0x1c5,0x1c5,
+0x1c5,0x1c5,0x1c5,0x1c5,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,
+0x1548,0x1548,0x1c8,0x1c8,0x1545,0x1545,0x1545,0x1545,0x1545,0x154b,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x16b0,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,
+0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,
+0x1ce,0x1ce,0x1ce,0x1ce,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
+0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
+0x1d1,0x1d1,0x1d1,0x1d1,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1d4,
+0x1d4,0x1d4,0x1d4,0x1d4,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
+0x1563,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
+0x1563,0x1563,0x1d4,0x1d4,0x1560,0x155a,0x155d,0x1566,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,
+0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,
+0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x1da,0x1da,0x1da,
 0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,
-0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x13a7,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1dd,0x1dd,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1572,0x1dd,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13dd,0x1dd,0x13a7,0x13a7,0x13a7,
-0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1572,0x1572,0x1572,0x1572,
-0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,0x1572,
-0x1572,0x1572,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x13fb,0x13f5,0x13f5,0x13f5,
-0x13f5,0x13f5,0x1587,0x1587,0x1587,0x1587,0x1587,0x158a,0x16f8,0x158a,0x158a,0x158a,0x17c1,0x186f,0x186f,0x1e0,
-0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x158a,0x158a,0x158a,0x158a,
-0x158a,0x158a,0x1587,0x1587,0x1587,0x158a,0x1587,0x16f5,0x16f5,0x1e0,0x1e0,0x1e0,0x158a,0x1587,0x1587,0x158a,
-0x186f,0x186f,0x186f,0x1e3,0x1e3,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x13aa,0x13aa,0x13aa,0x13aa,
-0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,
-0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x144f,0x1590,0x144f,0x144f,
-0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1746,
-0x1746,0x1e9,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
-0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
-0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x1455,0x1455,0x1455,0x1455,
-0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1ec,
-0x1455,0x1ec,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,
-0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1455,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1ec,
-0x1455,0x1ec,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1ec,
-0x1455,0x1ec,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,
-0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1455,0x1455,0x1455,
-0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1452,0x1452,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x1458,
-0x1458,0x1458,0x1458,0x1458,0x1467,0x1458,0x145b,0x145b,0x1458,0x1458,0x1458,0x145e,0x145e,0x1ef,0x1464,0x1464,
-0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1461,0x146d,0x146d,0x146d,0x1ef,0x1ef,0x1ef,0x1ef,
-0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,
-0x1479,0x1479,0x1479,0x1476,0x1470,0x1470,0x1476,0x1476,0x147f,0x147f,0x1479,0x147c,0x147c,0x1476,0x1473,0x1f2,
-0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,
-0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,
-0x1f5,0x1f5,0x1f5,0x1f5,0x1749,0x1749,0x1482,0x1482,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
-0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1f5,0x1f5,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
-0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x148e,0x148e,0x148e,0x148e,0x148e,0x1f8,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x148e,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,
-0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,
-0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1488,0x1488,0x1488,0x1488,0x1491,
-0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x14a3,0x14a6,0x14a9,0x14a9,
-0x14a6,0x14ac,0x14ac,0x1497,0x149a,0x174f,0x174c,0x174c,0x174c,0x1596,0x1fb,0x1fb,0x149d,0x149d,0x149d,0x149d,
-0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x1593,0x1755,0x1758,0x1752,0x175b,0x175b,0x14b2,0x14b2,0x14b2,0x14b2,
-0x14b2,0x14b2,0x14b2,0x14b2,0x14b2,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x14af,0x14af,0x14af,0x14af,
-0x14af,0x14af,0x14af,0x14af,0x14af,0x14af,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x14b5,0x14b5,0x14b5,0x14b5,
-0x14b5,0x14b5,0x14b5,0x14b5,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1305,0x1302,0x1305,0x12ed,
-0x1302,0x1302,0x1302,0x1308,0x1302,0x1308,0x130b,0x1302,0x1308,0x1308,0x1302,0x1302,0x14c7,0x14c7,0x14c7,0x14c7,
-0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14b8,0x14c1,0x14b8,0x14c1,0x14c1,0x14b8,0x14b8,0x14b8,0x14b8,
-0x14b8,0x14b8,0x14c4,0x14bb,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x159c,0x159c,0x159c,0x159c,
-0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x159c,0x207,0x207,0x1599,0x1599,0x1599,0x1599,
-0x1599,0x159f,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x1704,0x16fb,0x16fb,0x16fb,
-0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,
-0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x16fb,0x20d,0x20d,0x20d,0x20d,0x210,0x210,0x210,0x210,
+0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,
+0x170a,0x156f,0x1575,0x16b6,0x1dd,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x1dd,0x1dd,0x157e,
+0x157e,0x1dd,0x1dd,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
+0x157e,0x1dd,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x1dd,0x157e,0x157e,0x1dd,0x157e,0x157e,0x157e,
+0x157e,0x157e,0x1dd,0x1dd,0x16b3,0x157e,0x156f,0x1575,0x156f,0x1575,0x1575,0x1575,0x1575,0x1dd,0x1dd,0x1575,
+0x1575,0x1dd,0x1dd,0x1578,0x1578,0x157b,0x1dd,0x1dd,0x170d,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x156f,
+0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1581,0x157e,0x157e,0x157e,0x157e,0x1575,0x1575,0x1dd,0x1dd,0x1572,0x1572,
+0x1572,0x1572,0x1572,0x1572,0x1572,0x1dd,0x1dd,0x1dd,0x1572,0x1572,0x1572,0x1572,0x1572,0x1dd,0x1dd,0x1dd,
+0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,
+0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1e0,0x1596,0x1596,0x1596,0x1596,0x1596,
+0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1590,0x1590,0x1590,0x1584,0x1584,0x1584,0x1590,0x1590,
+0x1584,0x1593,0x1587,0x1584,0x1599,0x1599,0x158d,0x1599,0x1599,0x158a,0x17a0,0x1e0,0x15a8,0x15a8,0x15a8,0x159c,
+0x159c,0x159c,0x159c,0x159c,0x159c,0x159f,0x15a2,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x15a5,0x15a5,0x15a5,0x15a5,
+0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1710,0x1710,0x1710,0x1710,
+0x15b4,0x15b1,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x15ba,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x15ba,0x15ba,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
+0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x15c6,0x15c6,0x15c6,0x15c6,
+0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15bd,
+0x15c0,0x15c3,0x15c6,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x15d5,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15c9,0x15c9,0x1ef,0x1ef,0x1ef,0x1ef,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15d2,0x15d2,0x15d2,0x15d2,
+0x15d2,0x15d2,0x15cf,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x15de,0x15de,0x15de,0x15de,
+0x15de,0x1f2,0x1f2,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15d8,0x15d8,0x15d8,0x15d8,
+0x15d8,0x15d8,0x15d8,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x15e1,0x15f3,0x15f3,0x15e7,
+0x15f0,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x15ea,0x15ea,0x15ea,0x15ea,
+0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x15f9,0x15f9,0x15f9,0x15f9,
+0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
+0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x1f8,0x1605,0x1605,0x1605,0x1605,
+0x1605,0x15ff,0x1608,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1602,0x1602,0x1602,0x1602,
+0x1602,0x1602,0x1602,0x1602,0x1602,0x1602,0x1605,0x1605,0x1605,0x1605,0x1605,0x1fb,0x160e,0x160e,0x160e,0x160e,
+0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
+0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x1fe,0x161a,0x161a,0x161a,0x161a,
+0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
+0x161a,0x161a,0x1617,0x1617,0x1617,0x1617,0x1617,0x201,0x201,0x201,0x201,0x201,0x1632,0x1632,0x1635,0x1635,
+0x1638,0x1629,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x162f,0x162f,0x162f,0x162f,
+0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x204,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x204,0x1632,
+0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
+0x1632,0x1632,0x1632,0x1632,0x204,0x204,0x204,0x204,0x204,0x1632,0x1632,0x1632,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x164a,0x164a,0x164a,0x164a,
+0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x20a,0x20a,
+0x20a,0x20a,0x20a,0x20a,0x20a,0x1647,0x1647,0x1647,0x1647,0x20a,0x20a,0x20a,0x1665,0x1665,0x1665,0x1665,
+0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x164d,0x165f,0x165f,0x164d,0x164d,
+0x164d,0x164d,0x210,0x210,0x165f,0x165f,0x1662,0x1662,0x164d,0x164d,0x165f,0x1653,0x1650,0x1656,0x1668,0x1668,
+0x1659,0x1659,0x165c,0x165c,0x165c,0x1668,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,
+0x1719,0x1719,0x1719,0x1719,0x1716,0x1716,0x1716,0x1716,0x1713,0x1713,0x210,0x210,0x210,0x210,0x210,0x210,
 0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
-0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x213,0x213,0x213,0x213,0x213,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x213,0x213,0x213,0x213,0x213,0x213,0x213,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x213,0x213,0x15b4,0x15ae,0x15b1,0x15ba,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
-0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,
-0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,
-0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x175e,0x15c3,0x15c9,0x170a,0x21c,0x15d2,0x15d2,0x15d2,
-0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x21c,0x21c,0x15d2,0x15d2,0x21c,0x21c,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
-0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x21c,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
-0x15d2,0x21c,0x15d2,0x15d2,0x21c,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x21c,0x21c,0x1707,0x15d2,0x15c3,0x15c9,
-0x15c3,0x15c9,0x15c9,0x15c9,0x15c9,0x21c,0x21c,0x15c9,0x15c9,0x21c,0x21c,0x15cc,0x15cc,0x15cf,0x21c,0x21c,
-0x1761,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x15c3,0x21c,0x21c,0x21c,0x21c,0x21c,0x15d5,0x15d2,0x15d2,
-0x15d2,0x15d2,0x15c9,0x15c9,0x21c,0x21c,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x21c,0x21c,0x21c,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,
-0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,
-0x15ea,0x15ea,0x21f,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,
-0x15e4,0x15e4,0x15e4,0x15d8,0x15d8,0x15d8,0x15e4,0x15e4,0x15d8,0x15e7,0x15db,0x15d8,0x15ed,0x15ed,0x15e1,0x15ed,
-0x15ed,0x15de,0x17f4,0x21f,0x15fc,0x15fc,0x15fc,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f3,0x15f6,0x222,
-0x222,0x222,0x222,0x222,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x222,0x222,
-0x222,0x222,0x222,0x222,0x1764,0x1764,0x1764,0x1764,0x1608,0x1605,0x225,0x225,0x225,0x225,0x225,0x225,
-0x225,0x225,0x225,0x225,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
-0x178e,0x178e,0x178e,0x178e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x228,0x228,0x228,0x228,0x228,
-0x228,0x228,0x228,0x228,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x228,0x228,0x228,0x228,0x228,0x228,
-0x228,0x228,0x228,0x228,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x228,0x228,0x228,0x228,
-0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
-0x228,0x228,0x228,0x228,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x1611,0x1614,0x1617,0x161a,0x22b,0x22b,0x22b,0x22b,0x22b,
-0x22b,0x22b,0x22b,0x22b,0x1629,0x1629,0x1629,0x1629,0x1629,0x161d,0x161d,0x22e,0x22e,0x22e,0x22e,0x1620,
-0x1620,0x1620,0x1620,0x1620,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1623,0x22e,0x22e,0x22e,0x22e,0x22e,
-0x22e,0x22e,0x22e,0x22e,0x1632,0x1632,0x1632,0x1632,0x1632,0x231,0x231,0x162f,0x162f,0x162f,0x162f,0x162f,
-0x162f,0x162f,0x162f,0x162f,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x231,0x231,0x231,0x231,0x231,
-0x231,0x231,0x231,0x231,0x1635,0x1647,0x1647,0x163b,0x1644,0x234,0x234,0x234,0x234,0x234,0x234,0x234,
-0x234,0x234,0x234,0x234,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x234,0x234,
-0x234,0x234,0x234,0x234,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x237,0x1659,0x1659,0x1659,0x1659,0x1659,0x1653,0x165c,0x1659,0x1659,0x1659,0x1659,0x1659,
-0x1659,0x1659,0x1659,0x1659,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1659,0x1659,
-0x1659,0x1659,0x1659,0x23a,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,
-0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,
-0x1662,0x1662,0x1662,0x23d,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
-0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166b,0x166b,0x166b,0x166b,0x166b,0x240,
-0x240,0x240,0x240,0x240,0x1686,0x1686,0x1689,0x1689,0x168c,0x167d,0x243,0x243,0x243,0x243,0x243,0x243,
-0x243,0x243,0x243,0x243,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x243,0x167d,
-0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x243,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x243,0x243,0x243,0x243,
-0x243,0x1686,0x1686,0x1686,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
-0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x246,0x246,0x246,
-0x246,0x246,0x246,0x246,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,
-0x169e,0x169e,0x169e,0x169e,0x169e,0x169e,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x169b,0x169b,0x169b,
-0x169b,0x249,0x249,0x249,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,
-0x16b9,0x16b9,0x16b9,0x16a1,0x16b3,0x16b3,0x16a1,0x16a1,0x16a1,0x16a1,0x24f,0x24f,0x16b3,0x16b3,0x16b6,0x16b6,
-0x16a1,0x16a1,0x16b3,0x16a7,0x16a4,0x16aa,0x16bc,0x16bc,0x16ad,0x16ad,0x16b0,0x16b0,0x16b0,0x16bc,0x176d,0x176d,
-0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176a,0x176a,0x176a,0x176a,
-0x1767,0x1767,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
-0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
-0x24f,0x24f,0x24f,0x24f,0x252,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,
-0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x16bf,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
-0x252,0x252,0x252,0x252,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x255,0x255,
-0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
-0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
-0x16c5,0x16d4,0x16cb,0x16c8,0x16da,0x16da,0x16ce,0x16da,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
-0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x258,0x258,0x258,0x258,0x258,0x258,
-0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16e0,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,0x16dd,
-0x16dd,0x16dd,0x16dd,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x16e6,
-0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,
-0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x177f,0x25e,0x25e,0x25e,0x1770,0x1770,0x1770,
-0x177c,0x177c,0x1770,0x1770,0x1770,0x1770,0x177c,0x1770,0x1770,0x1770,0x1770,0x1773,0x25e,0x25e,0x25e,0x25e,
-0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1776,0x1776,0x1782,0x1782,0x1782,0x1776,
-0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
+0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x213,0x166b,0x166b,0x166b,
+0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,
+0x166b,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x166e,0x166e,0x166e,0x166e,
+0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,
+0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,
+0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,
+0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,
+0x216,0x216,0x216,0x216,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
+0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
+0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,
+0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x1671,0x1680,0x1677,0x1674,0x1686,0x1686,0x167a,0x1686,
+0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,
+0x167d,0x167d,0x219,0x219,0x219,0x219,0x219,0x219,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,
+0x168c,0x168c,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x21c,0x21c,0x21c,0x21c,0x21c,
+0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x1692,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
+0x172b,0x172b,0x21f,0x21f,0x21f,0x171c,0x171c,0x171c,0x1728,0x1728,0x171c,0x171c,0x171c,0x171c,0x1728,0x171c,
+0x171c,0x171c,0x171c,0x171f,0x21f,0x21f,0x21f,0x21f,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,
+0x1725,0x1725,0x1722,0x1722,0x172e,0x172e,0x172e,0x1722,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x222,
+0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
+0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
+0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
+0x1743,0x1743,0x1743,0x228,0x1743,0x1743,0x228,0x228,0x228,0x228,0x228,0x1740,0x1740,0x1740,0x1740,0x1740,
+0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x22b,0x1746,0x22b,0x1746,0x1746,0x1746,0x1746,0x22b,0x1746,
+0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x22b,0x1746,
+0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1749,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,
+0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,
+0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
+0x1752,0x1752,0x1752,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,
+0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
+0x174f,0x174f,0x174f,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x174c,0x174c,0x174c,0x174c,0x174c,0x174c,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1776,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x231,
+0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1824,0x1821,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x1824,0x231,0x231,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1821,0x181e,0x1824,0x1824,0x1824,0x231,
+0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x181e,0x1821,0x1821,0x1821,0x1821,0x1821,0x231,0x231,0x231,0x231,
+0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x231,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x1773,0x1773,0x1773,0x1773,0x1773,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
+0x1821,0x1821,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x1773,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,
+0x1758,0x1758,0x1758,0x1758,0x1755,0x1758,0x1758,0x175b,0x175e,0x175b,0x175b,0x1758,0x234,0x234,0x234,0x234,
+0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1755,0x1755,0x1755,0x1755,0x1755,
+0x17b2,0x17b2,0x17b2,0x17b2,0x17a9,0x17a9,0x17a9,0x17a3,0x17a6,0x17a6,0x17a6,0x237,0x237,0x237,0x237,0x237,
+0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x237,0x237,0x237,0x237,0x17ac,0x17ac,
+0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x23a,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,
+0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,
+0x17cd,0x17cd,0x17cd,0x17ca,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x23a,0x17b8,0x17b8,0x17b8,0x17b8,
+0x17b8,0x17b8,0x17ca,0x17bb,0x17cd,0x17d0,0x17d0,0x17c4,0x17c1,0x17c1,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,
+0x23a,0x23a,0x23a,0x23a,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17be,0x17be,
+0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x23a,0x23a,0x23a,
+0x17dc,0x17df,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
+0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x240,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
+0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x240,0x240,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
+0x1827,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,
+0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,
+0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
+0x246,0x246,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
+0x246,0x17e2,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17e2,0x17d9,0x17d9,0x17e2,0x17d9,0x17d9,0x246,
+0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,
+0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,
+0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x1800,0x1800,0x17f1,0x17eb,0x17eb,0x1800,0x17ee,0x1803,
+0x1803,0x1803,0x1803,0x1806,0x1806,0x17fa,0x17f7,0x17f4,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
+0x17fd,0x17fd,0x24c,0x17fa,0x24c,0x17f4,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
+0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
+0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
+0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x24f,0x24f,0x24f,0x24f,
+0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,
+0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x24f,0x24f,0x24f,0x24f,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x252,0x252,0x252,
+0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
+0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
+0x182d,0x182d,0x182d,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
+0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x1770,0x1770,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
+0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x921,0x921,
+0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,
+0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,
+0x10d4,0x10d4,0x10d4,0x10d4,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1275,0x1473,0x1761,0x1761,0x1761,
+0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
+0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
+0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,
+0xc39,0xc39,0xc39,0x1278,0x1278,0x1278,0x261,0x261,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,
+0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,
+0xe67,0xe67,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
 0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
-0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,
-0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x267,0x1797,0x1797,0x267,0x267,
-0x267,0x267,0x267,0x1794,0x1794,0x1794,0x1794,0x1794,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x26a,
-0x179a,0x26a,0x179a,0x179a,0x179a,0x179a,0x26a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x26a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179d,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,
-0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,
-0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x26d,0x26d,0x26d,0x26d,0x26d,
-0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,
-0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x26d,0x26d,0x26d,0x26d,0x26d,
-0x26d,0x26d,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
-0x270,0x270,0x270,0x270,0x273,0x273,0x273,0x273,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,
-0x17ca,0x1878,0x1878,0x1878,0x1878,0x1875,0x1878,0x279,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1878,0x1875,
-0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1878,0x279,0x279,0x1878,0x1878,0x1878,0x1878,0x1878,
-0x1878,0x1878,0x1875,0x1872,0x1875,0x1878,0x1878,0x273,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1872,0x1875,
-0x1875,0x1875,0x1875,0x1875,0x276,0x273,0x273,0x273,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,
-0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x276,0x276,0x276,0x276,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x1875,0x1875,0x1875,
-0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x1875,0x276,0x276,0x276,0x276,0x276,0x276,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x17c7,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x276,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x276,0x276,
-0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x17ac,0x17ac,0x17ac,0x17ac,0x17a9,0x17ac,0x17ac,0x17af,0x17b2,0x17af,0x17af,0x17ac,0x27c,0x27c,0x27c,0x27c,
-0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
-0x1806,0x1806,0x1806,0x1806,0x17fd,0x17fd,0x17fd,0x17f7,0x17fa,0x17fa,0x17fa,0x27f,0x27f,0x27f,0x27f,0x27f,
-0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x27f,0x27f,0x27f,0x27f,0x1800,0x1800,
-0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x282,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
-0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
-0x1821,0x1821,0x1821,0x181e,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x282,0x180c,0x180c,0x180c,0x180c,
-0x180c,0x180c,0x181e,0x180f,0x1821,0x1824,0x1824,0x1818,0x1815,0x1815,0x282,0x282,0x282,0x282,0x282,0x282,
-0x282,0x282,0x282,0x282,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x1812,0x1812,
-0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x282,0x282,0x282,
-0x1830,0x1833,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x288,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x288,0x288,0x182a,0x182a,0x182a,0x182a,0x182a,
-0x187b,0x28e,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
-0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
-0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,
-0x291,0x291,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
-0x291,0x1836,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1836,0x182d,0x182d,0x1836,0x182d,0x182d,0x291,
-0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,
-0x183c,0x183c,0x183c,0x183c,0x183c,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,
-0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x1854,0x1854,0x1845,0x183f,0x183f,0x1854,0x1842,0x1857,
-0x1857,0x1857,0x1857,0x185a,0x185a,0x184e,0x184b,0x1848,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
-0x1851,0x1851,0x297,0x184e,0x297,0x1848,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
-0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
-0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,
-0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x29a,0x29a,0x29a,0x29a,
-0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,
-0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x29a,0x29a,0x29a,0x29a,
-0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x29d,0x29d,0x29d,
-0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,
-0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,
-0x1881,0x1881,0x1881,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,
-0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x2a6,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x2a3,0x2a3,0x975,0x975,0x17c4,0x17c4,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,
-0x2c1,0x2c1,0x2c1,0x2c1,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
-0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
-0x2a6,0x2a6,0x2a6,0x2a6,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
-0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,
-0x2a9,0x2a9,0x2a9,0x2a9,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2ac,
-0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
-0x2ac,0x2ac,0x2ac,0x2ac,0x112b,0x112b,0x112b,0x112b,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,0x12cc,
-0x14ca,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,
-0x2af,0x2af,0x2af,0x2af,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0x12cf,
-0x12cf,0x12cf,0x2b2,0x2b2,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,
-0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0x2b2,0x2b2,
-0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,
-0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,
-0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
-0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
-0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,
-0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0x2b8,0x2b8,
-0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,
-0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x2be,0x2be,
-0x1143,0x3ba,0x3ba,0x3c6,0xccf,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c6,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3c6,0x3c6,0x3c6,0x3c6,0x3c0,0x1146,0x131d,
-0x3c9,0x942,0x945,0x3bd,0x3bd,0x1143,0x131a,0x131a,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,
-0x3c9,0x3c9,0x3ba,0x3ba,0x8cd,0x8d0,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,0x95d,
-0x3c3,0xfa5,0xfa2,0x1320,0x1320,0x1320,0x1320,0x1320,0x14f1,0x1149,0x1149,0xef7,0xef7,0xdc2,0xef7,0xef7,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3cc,0x3c9,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x131a,0x131d,0x3bd,0x3c9,0x3c6,0x3c6,
-0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,
-0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0xbbb,0xbbb,0xdce,0xdce,0x8d3,0xdd1,0x1410,0x1410,0x1410,
-0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,
-0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,
-0x4b0,0x4b0,0x4b0,0x115e,0x115e,0x115e,0x115e,0x115e,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,
-0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,
-0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x115b,0x115b,0x115b,0x115b,0x115b,0x115b,
-0x4b3,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
-0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,
-0x4b0,0x4b0,0x4b0,0x4b0,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,
-0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,
-0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b9,0x9b7,0xff3,0xff3,0xff6,0xff3,
-0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,
-0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0x4bc,0x4b6,0xff6,0xff3,0xff6,0xff3,0xff6,0xff3,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x6a8,0x6a8,0x6ab,0x4e6,0x6b7,0x6b4,0x6b4,0x6b1,0x510,0x510,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0xae9,
-0x6ba,0x4f2,0x6d2,0x6d5,0x507,0x6ba,0x4f5,0x4f5,0x4e6,0x501,0x501,0x6a8,0x50d,0x50a,0x6ae,0x4e0,
-0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4dd,0x4da,0x4da,0x4da,0x4d1,0x519,0x516,0x513,0x513,
-0x6c6,0x4fb,0x4f8,0x6c3,0x6c0,0x6bd,0x6cf,0x4e9,0x6cc,0x6cc,0x4fe,0x501,0x6c9,0x6c9,0x4fe,0x501,
-0x4e3,0x4e6,0x4e6,0x4e6,0x504,0x4ef,0x4ec,0xbd0,0xaef,0xaf2,0xaec,0xaec,0xaec,0xaec,0xbc7,0xbc7,
-0xbc7,0xbc7,0xbcd,0xcfc,0xcf9,0xddd,0xde0,0xbca,0xde0,0xde0,0xde0,0xde0,0xddd,0xde0,0xde0,0xbc4,
-0x54c,0x54c,0x564,0x6e4,0x549,0x6e1,0x54c,0x561,0x549,0x6e4,0x55b,0x564,0x564,0x564,0x55b,0x55b,
-0x564,0x564,0x564,0x6ed,0x549,0x564,0x6e7,0x549,0x558,0x564,0x564,0x564,0x564,0x564,0x549,0x549,
-0x54f,0x6e1,0x6ea,0x549,0x564,0x549,0x6f0,0x549,0x564,0x552,0x56a,0x6f3,0x564,0x564,0x555,0x55b,
-0x564,0x564,0x567,0x564,0x55b,0x55e,0x55e,0x55e,0x55e,0xafe,0xafb,0xcff,0xdef,0xbeb,0xbee,0xbee,
-0xbe8,0xbe5,0xbe5,0xbe5,0xbe5,0xbee,0xbeb,0xbeb,0xbeb,0xbeb,0xbe2,0xbe5,0xdec,0xf03,0xf06,0xffc,
-0x116d,0x116d,0x116d,0x6f9,0x6f6,0x56d,0x570,0x570,0x570,0x570,0x570,0x6f6,0x6f9,0x6f9,0x6f6,0x570,
-0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x6ff,0x579,0x579,0x579,0x579,
-0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x573,0x573,0x573,0x573,0x573,0x573,
-0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57c,0x585,0x585,0x57f,0x57f,0x57f,0x582,0x57c,
-0x57f,0x57f,0x57c,0x57c,0x57c,0x57c,0x57f,0x57f,0x702,0x702,0x57c,0x57c,0x57f,0x57f,0x57f,0x57f,
-0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x582,0x582,0x582,0x57f,0x57f,0x705,0x57f,
-0x705,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f,0x57c,0x57f,0x57c,0x57c,0x57c,0x57c,0x57c,0x57c,
-0x57f,0x57f,0x57c,0x702,0x57c,0x57c,0x57c,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,
-0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0x70b,0x588,0x70b,0x70b,
-0x58b,0x588,0x588,0x70b,0x70b,0x58b,0x588,0x70b,0x58b,0x588,0x588,0x70b,0x588,0x70b,0x597,0x594,
-0x588,0x70b,0x588,0x588,0x588,0x588,0x70b,0x588,0x588,0x70b,0x70b,0x70b,0x70b,0x588,0x588,0x70b,
-0x58b,0x70b,0x58b,0x70b,0x70b,0x70b,0x70b,0x70b,0x711,0x58e,0x70b,0x58e,0x58e,0x588,0x588,0x588,
-0x70b,0x70b,0x70b,0x70b,0x588,0x588,0x588,0x588,0x70b,0x70b,0x588,0x588,0x588,0x58b,0x588,0x588,
-0x58b,0x588,0x588,0x58b,0x70b,0x58b,0x588,0x588,0x70b,0x588,0x588,0x588,0x588,0x588,0x70b,0x588,
-0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x70e,0x70b,0x58b,0x588,
-0x70b,0x70b,0x70b,0x70b,0x588,0x588,0x70b,0x70b,0x588,0x58b,0x70e,0x70e,0x58b,0x58b,0x588,0x588,
-0x58b,0x58b,0x588,0x588,0x58b,0x58b,0x588,0x588,0x588,0x588,0x588,0x588,0x58b,0x58b,0x70b,0x70b,
-0x58b,0x58b,0x70b,0x70b,0x58b,0x58b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
-0x588,0x70b,0x588,0x588,0x588,0x70b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x70b,0x588,0x588,
-0x588,0x588,0x588,0x588,0x58b,0x58b,0x58b,0x58b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
-0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x70b,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
-0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
-0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x58b,0x58b,0x58b,0x58b,0x588,0x588,0x588,0x588,
-0x588,0x588,0x58b,0x58b,0x58b,0x58b,0x588,0x591,0x588,0x588,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,
-0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0xbf4,0x59a,0xb07,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x5a6,0x5a3,0x5a6,0x5a3,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x714,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x59a,0x59a,0x819,0x819,0x59a,0x59a,0x59a,0x59a,0x5a0,0x5a0,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x59d,0x81f,0x81c,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
-0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0xb07,0xbfa,0xb07,0xb07,0xb07,0x5a9,0x5a9,0x5a9,0x5a9,
-0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,
-0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x5a9,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x5af,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,
-0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xc60,0xd74,0x726,0x726,0x726,0x726,
-0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,
-0x5b2,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x726,0x726,0x726,0x726,
-0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x5b5,0x5b5,0x5b5,0x5b5,0x726,0x726,0x726,0x726,
-0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x729,0x729,0x729,0x729,
-0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x5b8,0x5b8,0x729,0x729,
-0x729,0x729,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0x72f,0x72f,0x5bb,0x72c,
-0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x5be,0x5be,0x5bb,0x5bb,0x5c1,0x5c1,0x5c1,0x5c1,0x72f,0x72f,
-0x5c1,0x5c1,0x732,0x72f,0x5bb,0x5bb,0x5bb,0x5bb,0x72f,0x72f,0x5c1,0x5c1,0x732,0x72f,0x5bb,0x5bb,
-0x5bb,0x5bb,0x72f,0x72f,0x72c,0x5bb,0x5c1,0x72f,0x5bb,0x5bb,0x72c,0x72f,0x72f,0x72f,0x5c1,0x5c1,
-0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x5bb,0x72f,0x72c,
-0x72f,0x72c,0x5bb,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5bb,0x5bb,0x72c,0xb0d,0xb0d,0xb0d,0xb0d,
-0xb0d,0xb0d,0xb0d,0xb0d,0xc00,0xc00,0xc00,0xc03,0xc03,0xc78,0xc78,0xc00,0x5cd,0x5cd,0x5cd,0x5cd,
-0x5ca,0x741,0x741,0x5c4,0x5c4,0x735,0x5c4,0x5c4,0x5c4,0x5c4,0x73b,0x735,0x5c4,0x5ca,0x5c4,0x5c4,
-0xd7d,0xd7d,0xc06,0xc06,0xdfe,0xb10,0x5c7,0x5c7,0x738,0x5d0,0x738,0x5c7,0x5ca,0x5c4,0x5ca,0x5ca,
-0x5c4,0x5c4,0x5ca,0x5c4,0x5c4,0x5c4,0x5ca,0x5c4,0x5c4,0x5c4,0x5ca,0x5ca,0x5c4,0x5c4,0x5c4,0x5c4,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5ca,0x5cd,0x5cd,0x5c7,0x5c4,0x5c4,0x5c4,0x5c4,0x747,0x5c4,0x747,0x5c4,
-0x5c4,0x5c4,0x5c4,0x5c4,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,0x822,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x744,0x741,0x5d3,0x744,
-0x735,0x73b,0x5ca,0x735,0x73e,0x735,0x735,0x5c4,0x735,0x741,0x5d3,0x741,0xb10,0xb10,0xc09,0xc09,
-0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc0c,0xc09,0xc09,0xdf5,0xeb5,0x5d6,0x5d6,0x5d6,0x5d6,
-0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,
-0x5d9,0x13c5,0x13c5,0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x1515,0x5df,0x5eb,0x5df,
-0x5df,0x13c5,0x5d9,0x5d9,0x5ee,0x5eb,0x13c8,0x13c8,0x5f1,0x5f1,0x5d9,0x5e5,0x5d9,0x5d9,0x5e5,0x5d9,
-0x5e5,0x5d9,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5e5,0x5e5,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x74d,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5e5,0x5d9,0x5d9,0x5e5,
-0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x5d9,0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x13c5,0x13c5,0x5d9,0x12c9,
-0x5d9,0x5d9,0x5d9,0x5e2,0x5e2,0x5e2,0x5e2,0x1347,0x1347,0x5d9,0x5dc,0x5e8,0x5ee,0x5d9,0x5d9,0x5d9,
-0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0xc12,0xc0f,0x74a,0x74a,
-0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x74a,0x5d9,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x13c5,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x61b,0x61b,0x61b,
-0x61b,0x61b,0x61b,0x61b,0x612,0x618,0x609,0x60c,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,
-0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,
-0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,
-0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,0x615,0x61b,0x618,0x612,
-0x615,0x61b,0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,0x618,0x612,0x615,0x61b,0x618,0x612,
-0x615,0x61b,0x618,0x612,0x618,0x612,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
-0x134a,0x134a,0x134a,0x134a,0x618,0x612,0x618,0x612,0x618,0x612,0x615,0x61b,0x615,0x61b,0x618,0x612,
-0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x618,0x612,0x615,0x618,0x612,0x615,
-0x618,0x612,0x615,0x61b,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x615,0x615,0x612,0x615,0x612,0x615,0x612,0x612,0x615,0x612,0x612,0x615,
-0x612,0x615,0x612,0x612,0x615,0x612,0x615,0x615,0x612,0x612,0x612,0x615,0x612,0x612,0x612,0x612,
-0x612,0x615,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x612,0x612,0x615,0x612,0x615,0x612,
-0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,
-0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61e,0x61e,0x61e,0x61e,0x1008,0x1008,0x1008,0x1518,
-0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1722,0x1722,0x87f,0x885,0x885,0x891,0x891,0x882,0x879,0x882,
-0x879,0x882,0x879,0x882,0x879,0x882,0x879,0x882,0x62d,0x62d,0x627,0x62d,0x627,0x62d,0x627,0x62d,
-0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62a,
-0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62d,0x627,0x62d,0x627,0x62d,
-0x627,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,
-0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,0x630,0x62d,0x627,0x62a,
-0x630,0x62d,0x627,0x62a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,
-0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x720,0x720,0x720,0x720,0x720,0x720,
-0x720,0x720,0x720,0x720,0x720,0x720,0x723,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,
-0x720,0x720,0x720,0x720,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,
-0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,
-0x726,0x726,0x726,0x726,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,
-0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,
-0x750,0x750,0x750,0x750,0xc66,0x8e5,0x8df,0x8dc,0x8e2,0x8d9,0x765,0x768,0x768,0x768,0x768,0x768,
-0x768,0x768,0x768,0x768,0x8eb,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,
-0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,
-0x765,0x765,0x765,0x765,0x765,0x765,0x8e8,0x8e8,0x76b,0x8fa,0x8fd,0x903,0x825,0x831,0x918,0x82e,
-0x8f1,0x8ee,0x8f1,0x8ee,0x8f7,0x8f4,0x8f7,0x8f4,0x8f1,0x8ee,0x82b,0x903,0x8f1,0x8ee,0x8f1,0x8ee,
-0x8f1,0x8ee,0x8f1,0x8ee,0x906,0x90f,0x90c,0x90c,0x771,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7a7,
-0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,0x7a7,
-0x7a7,0x7a7,0x7a7,0x774,0x78f,0x76e,0x795,0x798,0x792,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7a4,
-0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,0x7a4,
-0x7a4,0x7a4,0x7a4,0x774,0x78f,0x76e,0x78f,0xc69,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
+0x261,0x261,0x261,0x261,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x264,0x264,0x264,0x264,0x264,
+0x264,0x264,0x264,0x264,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
+0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
+0xb4c,0xb4c,0x267,0x267,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,
+0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
+0x26a,0x26a,0x26a,0x26a,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x26d,0x26d,0x10ec,0x369,0x369,0x375,0xc7b,0x378,0x378,0x378,0x378,0x378,0x378,0x378,
+0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,
+0x378,0x378,0x378,0x378,0x375,0x369,0x369,0x369,0x369,0x369,0x369,0x369,0x369,0x375,0x375,0x375,
+0x375,0x36f,0x10ef,0x12c6,0x378,0x8ee,0x8f1,0x36c,0x36c,0x10ec,0x12c3,0x12c3,0x37b,0x37b,0x37b,0x37b,
+0x37b,0x37b,0x37b,0x37b,0x378,0x378,0x369,0x369,0x879,0x87c,0x909,0x909,0x909,0x909,0x909,0x909,
+0x909,0x909,0x909,0x909,0x372,0xf4e,0xf4b,0x12c9,0x12c9,0x12c9,0x12c9,0x12c9,0x149a,0x10f2,0x10f2,0xea0,
+0xea0,0xd6e,0xea0,0xea0,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x37b,0x378,0x378,
+0x378,0x378,0x378,0x378,0x378,0x37b,0x378,0x378,0x37b,0x378,0x378,0x378,0x378,0x378,0x12c3,0x12c6,
+0x36c,0x378,0x375,0x375,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,
+0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0x456,0xb67,0xb67,0xd7a,0xd7a,0x87f,
+0xd7d,0x13b9,0x13b9,0x13b9,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,
+0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,
+0x459,0x459,0x459,0x459,0x45f,0x45f,0x45f,0x1107,0x1107,0x1107,0x1107,0x1107,0x45c,0x45c,0x45c,0x45c,
+0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,
+0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x1104,0x1104,
+0x1104,0x1104,0x1104,0x1104,0x462,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,
+0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,
+0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x45f,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,
+0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,
+0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x465,0x465,0x465,0x465,0x468,0x963,
+0xf9c,0xf9c,0xf9f,0xf9c,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,
+0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0x46b,0x465,0xf9f,0xf9c,
+0xf9f,0xf9c,0xf9f,0xf9c,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,
+0x47a,0x47a,0x47a,0x47a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x47a,0x47a,0x47a,0x47a,
+0x47a,0x47a,0x47a,0x47a,0x657,0x657,0x65a,0x495,0x666,0x663,0x663,0x660,0x4bf,0x4bf,0x47d,0x47d,
+0x47d,0x47d,0x47d,0xa95,0x669,0x4a1,0x681,0x684,0x4b6,0x669,0x4a4,0x4a4,0x495,0x4b0,0x4b0,0x657,
+0x4bc,0x4b9,0x65d,0x48f,0x486,0x486,0x489,0x489,0x489,0x489,0x489,0x48c,0x489,0x489,0x489,0x480,
+0x4c8,0x4c5,0x4c2,0x4c2,0x675,0x4aa,0x4a7,0x672,0x66f,0x66c,0x67e,0x498,0x67b,0x67b,0x4ad,0x4b0,
+0x678,0x678,0x4ad,0x4b0,0x492,0x495,0x495,0x495,0x4b3,0x49e,0x49b,0xb7c,0xa9b,0xa9e,0xa98,0xa98,
+0xa98,0xa98,0xb73,0xb73,0xb73,0xb73,0xb79,0xca8,0xca5,0xd89,0xd8c,0xb76,0xd8c,0xd8c,0xd8c,0xd8c,
+0xd89,0xd8c,0xd8c,0xb70,0x4fb,0x4fb,0x513,0x693,0x4f8,0x690,0x4fb,0x510,0x4f8,0x693,0x50a,0x513,
+0x513,0x513,0x50a,0x50a,0x513,0x513,0x513,0x69c,0x4f8,0x513,0x696,0x4f8,0x507,0x513,0x513,0x513,
+0x513,0x513,0x4f8,0x4f8,0x4fe,0x690,0x699,0x4f8,0x513,0x4f8,0x69f,0x4f8,0x513,0x501,0x519,0x6a2,
+0x513,0x513,0x504,0x50a,0x513,0x513,0x516,0x513,0x50a,0x50d,0x50d,0x50d,0x50d,0xaaa,0xaa7,0xcab,
+0xd9b,0xb97,0xb9a,0xb9a,0xb94,0xb91,0xb91,0xb91,0xb91,0xb9a,0xb97,0xb97,0xb97,0xb97,0xb8e,0xb91,
+0xd98,0xeac,0xeaf,0xfa5,0x1116,0x1116,0x1116,0x6a8,0x6a5,0x51c,0x51f,0x51f,0x51f,0x51f,0x51f,0x6a5,
+0x6a8,0x6a8,0x6a5,0x51f,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,0x6ae,
+0x528,0x528,0x528,0x528,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x6ab,0x522,0x522,
+0x522,0x522,0x522,0x522,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52b,0x534,0x534,0x52e,
+0x52e,0x52e,0x531,0x52b,0x52e,0x52e,0x52b,0x52b,0x52b,0x52b,0x52e,0x52e,0x6b1,0x6b1,0x52b,0x52b,
+0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x531,0x531,0x531,
+0x52e,0x52e,0x6b4,0x52e,0x6b4,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52e,0x52b,0x52e,0x52b,0x52b,
+0x52b,0x52b,0x52b,0x52b,0x52e,0x52e,0x52b,0x6b1,0x52b,0x52b,0x52b,0xab0,0xab0,0xab0,0xab0,0xab0,
+0xab0,0xab0,0xab0,0xab0,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
+0x6ba,0x537,0x6ba,0x6ba,0x53a,0x537,0x537,0x6ba,0x6ba,0x53a,0x537,0x6ba,0x53a,0x537,0x537,0x6ba,
+0x537,0x6ba,0x546,0x543,0x537,0x6ba,0x537,0x537,0x537,0x537,0x6ba,0x537,0x537,0x6ba,0x6ba,0x6ba,
+0x6ba,0x537,0x537,0x6ba,0x53a,0x6ba,0x53a,0x6ba,0x6ba,0x6ba,0x6ba,0x6ba,0x6c0,0x53d,0x6ba,0x53d,
+0x53d,0x537,0x537,0x537,0x6ba,0x6ba,0x6ba,0x6ba,0x537,0x537,0x537,0x537,0x6ba,0x6ba,0x537,0x537,
+0x537,0x53a,0x537,0x537,0x53a,0x537,0x537,0x53a,0x6ba,0x53a,0x537,0x537,0x6ba,0x537,0x537,0x537,
+0x537,0x537,0x6ba,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,
+0x6bd,0x6ba,0x53a,0x537,0x6ba,0x6ba,0x6ba,0x6ba,0x537,0x537,0x6ba,0x6ba,0x537,0x53a,0x6bd,0x6bd,
+0x53a,0x53a,0x537,0x537,0x53a,0x53a,0x537,0x537,0x53a,0x53a,0x537,0x537,0x537,0x537,0x537,0x537,
+0x53a,0x53a,0x6ba,0x6ba,0x53a,0x53a,0x6ba,0x6ba,0x53a,0x53a,0x537,0x537,0x537,0x537,0x537,0x537,
+0x537,0x537,0x537,0x537,0x537,0x6ba,0x537,0x537,0x537,0x6ba,0x537,0x537,0x537,0x537,0x537,0x537,
+0x537,0x6ba,0x537,0x537,0x537,0x537,0x537,0x537,0x53a,0x53a,0x53a,0x53a,0x537,0x537,0x537,0x537,
+0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x6ba,0x537,0x537,0x537,0x537,
+0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,
+0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x537,0x53a,0x53a,0x53a,0x53a,
+0x537,0x537,0x537,0x537,0x537,0x537,0x53a,0x53a,0x53a,0x53a,0x537,0x540,0x537,0x537,0xba0,0xba0,
+0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0x549,0xab3,0x549,0x549,
+0x549,0x549,0x549,0x549,0x555,0x552,0x555,0x552,0x549,0x549,0x549,0x549,0x549,0x549,0x6c3,0x549,
+0x549,0x549,0x549,0x549,0x549,0x549,0x7c5,0x7c5,0x549,0x549,0x549,0x549,0x54f,0x54f,0x549,0x549,
+0x549,0x549,0x549,0x549,0x54c,0x7cb,0x7c8,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,
+0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,
+0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0xab3,0xba6,0xab3,0xab3,0xab3,
+0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,
+0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,0x558,
+0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x55e,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,
+0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xd20,
+0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
+0x6d5,0x6d5,0x6d5,0x6d5,0x561,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,
+0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x564,0x564,0x564,0x564,
+0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
+0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,0x6d8,
+0x567,0x567,0x6d8,0x6d8,0x6d8,0x6d8,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,
+0x6de,0x6de,0x56a,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,0x6db,0x56d,0x56d,0x56a,0x56a,0x570,0x570,
+0x570,0x570,0x6de,0x6de,0x570,0x570,0x6e1,0x6de,0x56a,0x56a,0x56a,0x56a,0x6de,0x6de,0x570,0x570,
+0x6e1,0x6de,0x56a,0x56a,0x56a,0x56a,0x6de,0x6de,0x6db,0x56a,0x570,0x6de,0x56a,0x56a,0x6db,0x6de,
+0x6de,0x6de,0x570,0x570,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,0x56a,
+0x56a,0x56a,0x6de,0x6db,0x6de,0x6db,0x56a,0x570,0x570,0x570,0x570,0x570,0x570,0x56a,0x56a,0x6db,
+0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xab9,0xbac,0xbac,0xbac,0xbaf,0xbaf,0xc24,0xc24,0xbac,
+0x57c,0x57c,0x57c,0x57c,0x579,0x6f0,0x6f0,0x573,0x573,0x6e4,0x573,0x573,0x573,0x573,0x6ea,0x6e4,
+0x573,0x579,0x573,0x573,0xd29,0xd29,0xbb2,0xbb2,0xda7,0xabc,0x576,0x576,0x6e7,0x57f,0x6e7,0x576,
+0x579,0x573,0x579,0x579,0x573,0x573,0x579,0x573,0x573,0x573,0x579,0x573,0x573,0x573,0x579,0x579,
+0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x579,0x57c,0x57c,0x576,0x573,0x573,0x573,0x573,
+0x6f3,0x573,0x6f3,0x573,0x573,0x573,0x573,0x573,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,
+0x7ce,0x7ce,0x7ce,0x7ce,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,0x573,
+0x6f3,0x6f0,0x582,0x6f3,0x6e4,0x6ea,0x579,0x6e4,0x6ed,0x6e4,0x6e4,0x573,0x6e4,0x6f0,0x582,0x6f0,
+0xabc,0xabc,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb8,0xbb5,0xbb5,0xda1,0xe5e,
+0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,0x585,
+0x585,0x585,0x585,0x585,0x588,0x136e,0x136e,0x136e,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,
+0x14be,0x58e,0x59a,0x58e,0x58e,0x136e,0x588,0x588,0x59a,0x59a,0x1371,0x1371,0x5a0,0x5a0,0x588,0x594,
+0x588,0x588,0x594,0x588,0x594,0x588,0x594,0x588,0x588,0x588,0x588,0x588,0x588,0x594,0x588,0x588,
+0x588,0x588,0x588,0x588,0x136e,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x594,
+0x594,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x6f9,0x588,0x588,0x588,0x588,0x588,0x588,
+0x594,0x588,0x588,0x594,0x588,0x588,0x588,0x588,0x136e,0x588,0x136e,0x588,0x588,0x588,0x588,0x136e,
+0x136e,0x136e,0x588,0x1272,0x588,0x588,0x588,0x591,0x591,0x591,0x591,0x12f0,0x12f0,0x588,0x58b,0x597,
+0x59d,0x588,0x588,0x588,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,0xbbe,0xbbb,
+0xbbe,0xbbb,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x6f6,0x588,0x594,0x588,0x588,
+0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x136e,0x588,0x588,0x588,
+0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x588,0x136e,0x5c1,0x5c1,0x5c1,0x5c1,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,
+0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5c1,0x5c7,0x5b8,0x5bb,0x5c7,0x5c7,0x5c7,0x5c7,
+0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,
+0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
+0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
+0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,
+0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,
+0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,
+0x5c4,0x5ca,0x5c7,0x5c1,0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,
+0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x12f3,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c4,0x5ca,
+0x5c4,0x5ca,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,0x5c7,0x5c1,
+0x5c4,0x5c7,0x5c1,0x5c4,0x5c7,0x5c1,0x5c4,0x5ca,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,
+0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,
+0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c1,0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,
+0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,0x5c4,0x5c1,0x5c4,0x5c4,0x5c1,0x5c1,0x5c1,0x5c4,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c1,0x5c1,
+0x5c4,0x5c1,0x5c4,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,
+0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,
+0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5ca,0x5c7,0x5c7,0x5c7,0x5c7,
+0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,
+0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5ca,0x5ca,0x5ca,0x5ca,
+0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,
+0x5ca,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5cd,0x5cd,0x5cd,0x5cd,
+0xfb1,0xfb1,0xfb1,0x14c1,0x14c1,0x14c1,0x14c1,0x14c1,0x14c1,0x14c1,0x16ce,0x16ce,0x82b,0x831,0x831,0x83d,
+0x83d,0x82e,0x825,0x82e,0x825,0x82e,0x825,0x82e,0x825,0x82e,0x825,0x82e,0x5dc,0x5dc,0x5d6,0x5dc,
+0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,
+0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5dc,
+0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,
+0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,
+0x5df,0x5dc,0x5d6,0x5d9,0x5df,0x5dc,0x5d6,0x5d9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,
+0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c9,0x6c6,0x6c6,0x6c6,0x6c6,
+0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,
+0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6c6,0x6cf,0x6cf,
+0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6d2,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,
+0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cf,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,
+0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6cc,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
+0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,
+0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6d5,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,
+0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,
+0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0xc12,0x891,0x88b,0x888,0x88e,0x885,0x711,0x714,
+0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x897,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
+0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
+0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x894,0x894,0x717,0x8a6,0x8a9,0x8af,
+0x7d1,0x7dd,0x8c4,0x7da,0x89d,0x89a,0x89d,0x89a,0x8a3,0x8a0,0x8a3,0x8a0,0x89d,0x89a,0x7d7,0x8af,
+0x89d,0x89a,0x89d,0x89a,0x89d,0x89a,0x89d,0x89a,0x8b2,0x8bb,0x8b8,0x8b8,0x71d,0x759,0x759,0x759,
+0x759,0x759,0x759,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x753,
+0x753,0x753,0x753,0x753,0x753,0x753,0x753,0x720,0x73b,0x71a,0x741,0x744,0x73e,0x756,0x756,0x756,
+0x756,0x756,0x756,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,
+0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x720,0x73b,0x71a,0x73b,0xc15,0x7bf,0x7bf,0x7bf,0x7bf,
+0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,
+0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x7bf,0x126c,0x126c,
+0x126c,0x126c,0x126c,0x7c2,0x7d7,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x7da,0x8fa,0x8fa,
+0x8fa,0x8fa,0x7e0,0x7e0,0x8b5,0x8c1,0x8c1,0x8c1,0x8c1,0x8be,0x7d4,0x8ac,0xae0,0xae0,0xae0,0xc27,
+0xc45,0xc42,0xafb,0x882,0x7e6,0x7e3,0x7e6,0x7e9,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e6,0x7e3,0x7e3,
+0x7e3,0x7e3,0x7e3,0x7e3,0x7e6,0x7e6,0x7e3,0x7e6,0x7e6,0x7e3,0x7e6,0x7e6,0x7e3,0x7e6,0x7e6,0x7e3,
+0x7e6,0x7e6,0x7e3,0x7e3,0xc48,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f2,
+0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,
+0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f8,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f5,0x7f2,0x7f2,
+0x7f2,0x7f2,0x7f2,0x7f2,0x7f5,0x7f5,0x7f2,0x7f5,0x7f5,0x7f2,0x7f5,0x7f5,0x7f2,0x7f5,0x7f5,0x7f2,
+0x7f5,0x7f5,0x7f2,0x7f2,0x7f2,0x7f2,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f8,0x7f2,0x7f2,0x7f2,0x7f2,
+0x7f2,0x7f2,0x7f8,0x7f2,0x7f2,0x7f2,0x7f2,0x7f2,0x7f5,0x7f8,0x7f8,0x7f5,0x7f5,0x7f5,0x7f5,0x8ca,
+0x8cd,0x7fb,0x7fe,0xc30,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x807,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,
+0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,
+0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0x810,0xd32,0xd32,0xe61,0x80a,
+0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0xd2c,0xd2c,0xd2c,0xd2c,
 0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
-0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x12c3,0x12c3,0x12c3,0x12c3,0x12c3,0x816,
-0x82b,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x94e,0x94e,0x94e,0x94e,0x834,0x834,
-0x909,0x915,0x915,0x915,0x915,0x912,0x828,0x900,0xb34,0xb34,0xb34,0xc7b,0xc99,0xc96,0xb4f,0x8d6,
-0x83a,0x837,0x83a,0x83d,0x837,0x83a,0x837,0x83a,0x837,0x83a,0x837,0x837,0x837,0x837,0x837,0x837,
-0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x83a,0x83a,0x837,0x837,
-0xc9c,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x846,0x849,0x846,0x849,0x846,
-0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x849,0x846,
-0x849,0x846,0x849,0x84c,0x846,0x849,0x846,0x849,0x846,0x849,0x846,0x846,0x846,0x846,0x846,0x846,
-0x849,0x849,0x846,0x849,0x849,0x846,0x849,0x849,0x846,0x849,0x849,0x846,0x849,0x849,0x846,0x846,
-0x846,0x846,0x846,0x84c,0x846,0x84c,0x846,0x84c,0x846,0x846,0x846,0x846,0x846,0x846,0x84c,0x846,
-0x846,0x846,0x846,0x846,0x849,0x84c,0x84c,0x849,0x849,0x849,0x849,0x91e,0x921,0x84f,0x852,0xc84,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x85b,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x864,0x864,0x864,0x864,
-0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,
-0x864,0x864,0x864,0x864,0x864,0x864,0x864,0x864,0xd86,0xd86,0xeb8,0x85e,0x92a,0x92a,0x92a,0x92a,
-0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0xd80,0xd80,0xd80,0xd80,0x867,0x867,0x867,0x867,
-0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x933,0x933,0x933,0x933,
-0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x86a,0x86a,0x86a,
-0x86a,0x86a,0x86a,0xd89,0xd89,0xd89,0xd89,0x936,0x936,0x936,0x936,0x936,0x86a,0x86a,0x86a,0x86a,
-0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,
-0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0xd89,0xd89,
-0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,
-0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,
-0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,
-0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,
-0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,
-0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,0xebb,
-0x112b,0x112b,0x112b,0x112b,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,
-0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,
-0x873,0x873,0x873,0x873,0x873,0x873,0x876,0x876,0x873,0x876,0x873,0x876,0x876,0x873,0x873,0x873,
-0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x876,0x873,0x876,0x873,0x876,0x876,0x873,0x873,0x876,
-0x876,0x876,0x873,0x873,0x873,0x873,0x14cd,0x14cd,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
-0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,
-0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,
-0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x12ff,0x12ff,0x12ff,0x12ff,0x12a8,0x12a8,0x12a8,0x12a8,
-0x12a8,0x12a8,0x12a8,0x12a8,0xd80,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,
-0xc87,0xc87,0xc87,0xc87,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,
-0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x930,0x92d,0x930,0x92d,0x92d,
-0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,
-0x92d,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,0xc87,
-0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,
-0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0x933,0xd89,
-0x9b1,0x993,0x993,0x993,0x993,0x98d,0x993,0x993,0x9a5,0x993,0x993,0x990,0x99c,0x9a2,0x9a2,0x9a2,
-0x9a2,0x9a2,0x9a5,0x98d,0x999,0x98d,0x98d,0x98d,0x984,0x984,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,
-0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x98d,0x98d,0x98d,0x98d,0x98d,0x98d,
-0x98d,0x98d,0x98d,0x98d,0x990,0x984,0x98d,0x984,0x98d,0x984,0x99f,0x996,0x99f,0x996,0x9ae,0x9ae,
-0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,
-0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,0x9bd,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,
-0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,
-0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,
-0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9c6,0x9c6,
-0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
-0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9c9,0x9c9,
-0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,
-0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,0x9cc,
-0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
-0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,0x9cf,
-0x9d2,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,
-0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d2,0x9d5,0x9d5,0x9d5,
-0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,
-0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xa62,0xa62,0xfed,0xa62,0xa62,0xa62,0xa65,0xa62,
-0xfed,0xa62,0xa62,0xfe4,0xa5c,0xa50,0xa50,0xa50,0xa50,0xa5f,0xa50,0xfd2,0xfd2,0xfd2,0xa50,0xa53,
-0xa5c,0xa56,0xfd8,0xfe7,0xfe7,0xfd2,0xfd2,0xfed,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
-0xb55,0xb55,0xa68,0xa68,0xa59,0xa59,0xa59,0xa59,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa5f,0xa5f,
-0xa50,0xa50,0xfed,0xfed,0xfed,0xfed,0xfd2,0xfd2,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xdda,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xdda,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,
-0xa77,0xa77,0xa77,0xa77,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa80,0xa86,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0x1164,0x1164,0x1164,0x1164,0x1164,
-0x1164,0x1164,0x1164,0x1164,0x1161,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,
-0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,
-0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xabc,0xabc,0xabc,0xabf,0xabf,0xabc,0xabc,0xabc,
-0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xaa4,0xaa4,0xab9,0xa9b,
-0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xa9b,0xab9,0xab9,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,
-0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,
-0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xadd,0xadd,0xadd,0xadd,0xadd,0xac8,0xac8,0xadd,
-0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
-0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
-0xadd,0xadd,0xadd,0xae0,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
-0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,0xadd,
-0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,
-0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
-0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
+0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,
+0x8df,0x816,0x816,0x816,0x816,0x816,0x816,0xd35,0xd35,0xd35,0xd35,0x8e2,0x8e2,0x8e2,0x8e2,0x8e2,
+0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,
+0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,0x816,
+0x816,0x816,0xd35,0xd35,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,
+0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,
+0x819,0x819,0x819,0x819,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x81c,0x81c,0x81c,0x81c,
+0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,
+0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0xe64,0xe64,
+0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,
+0xe64,0xe64,0xe64,0xe64,0x10d4,0x10d4,0x10d4,0x10d4,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,
+0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,
+0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x822,0x822,0x81f,0x822,0x81f,0x822,
+0x822,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x81f,0x822,0x81f,0x822,0x81f,0x822,
+0x822,0x81f,0x81f,0x822,0x822,0x822,0x81f,0x81f,0x81f,0x81f,0x1476,0x1476,0xc39,0xc39,0xc39,0xc39,
+0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0x8d6,0x8d6,0x8d6,0x8d6,
+0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,
+0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x8d6,0x12a8,0x12a8,0x12a8,0x12a8,
+0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0xd2c,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
+0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,
+0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8dc,
+0x8d9,0x8dc,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,
+0x8d9,0x8d9,0x8d9,0x8d9,0x8d9,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
+0xc33,0xc33,0xc33,0xc33,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,
+0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,0x8df,
+0x8df,0x8df,0x8df,0xd35,0x95d,0x93f,0x93f,0x93f,0x93f,0x939,0x93f,0x93f,0x951,0x93f,0x93f,0x93c,
+0x948,0x94e,0x94e,0x94e,0x94e,0x94e,0x951,0x939,0x945,0x939,0x939,0x939,0x930,0x930,0x939,0x939,
+0x939,0x939,0x939,0x939,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x939,0x939,
+0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x93c,0x930,0x939,0x930,0x939,0x930,0x94b,0x942,
+0x94b,0x942,0x95a,0x95a,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,
+0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,0x969,
+0x969,0x969,0x969,0x969,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,
+0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,
+0x96c,0x96c,0x96c,0x96c,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,
+0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,0x96f,
+0x96f,0x96f,0x96f,0x96f,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0x972,0x972,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
+0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
+0x97b,0x97b,0x975,0x975,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x978,0x978,0x978,0x978,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
+0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,0x97b,
+0x97b,0x97b,0x97b,0x97b,0x97e,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,
+0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,
+0x97e,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,
+0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0xa0e,0xa0e,0xf96,0xa0e,
+0xa0e,0xa0e,0xa11,0xa0e,0xf96,0xa0e,0xa0e,0xf8d,0xa08,0x9fc,0x9fc,0x9fc,0x9fc,0xa0b,0x9fc,0xf7b,
+0xf7b,0xf7b,0x9fc,0x9ff,0xa08,0xa02,0xf81,0xf90,0xf90,0xf7b,0xf7b,0xf96,0xb01,0xb01,0xb01,0xb01,
+0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xa14,0xa14,0xa05,0xa05,0xa05,0xa05,0xa0e,0xa0e,0xa0e,0xa0e,
+0xa0e,0xa0e,0xa0b,0xa0b,0x9fc,0x9fc,0xf96,0xf96,0xf96,0xf96,0xf7b,0xf7b,0xa0e,0xa0e,0xa0e,0xa0e,
+0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,
+0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa0e,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xd86,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,
+0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
+0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
+0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,
+0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2c,0xa32,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0x110d,
+0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110a,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,
+0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,
+0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa44,0xa44,0xa44,0xa44,
+0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,
+0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa68,0xa68,0xa68,0xa6b,
+0xa6b,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
+0xa50,0xa50,0xa65,0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0xa47,0xa65,0xa65,0xa68,0xa68,0xa68,0xa68,
+0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
+0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa74,0xa74,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa8c,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa89,0xa89,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,
+0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0xba6,
+0xba6,0xba6,0xba6,0xba6,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
+0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,
+0xabf,0xabf,0xabf,0xabf,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,0xad1,
+0xad1,0xad1,0xad1,0xad1,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,
+0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,
+0xad7,0xad7,0xad7,0xad7,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,
+0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,
+0xae6,0xae6,0xae6,0xae6,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
+0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xaec,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
+0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,
+0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xaef,0xaef,0xc36,0xc36,
+0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
+0xc36,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xb10,0xb10,0xb10,0xb10,
+0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,
+0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0x14c4,0xb19,0xb19,0xb19,0xb19,
+0xb19,0xb19,0xcbd,0xcbd,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,
+0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xcba,0xcba,
+0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,
+0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,
+0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,0xb19,
+0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
+0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
+0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb22,0xb2e,0xb34,0xb34,0xb34,0xb28,0xb28,0xb28,0xb31,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb34,0xb34,0xb34,0xb34,0xb34,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb2b,0xb2b,0xb34,0xb34,0xb34,0xb28,0xb28,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb34,0xb34,0xb34,0xb34,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
+0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0x16d1,0x16d1,0xb40,0xb37,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb37,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb37,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
 0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
 0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
 0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,
+0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
 0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb43,0xb43,0xc8a,0xc8a,0xb43,0xb43,0xb43,0xb43,
-0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xc8a,0xb43,0xb43,0xb43,
-0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0x151b,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xd11,0xd11,
-0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,
-0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xd0e,0xd0e,0xd5f,0xd5f,0xd5f,0xd5f,
-0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xb6d,0xb6d,0xb6d,0xb6d,
-0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,
-0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb70,0xb70,0xb70,0xb70,
-0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,
-0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb76,0xb82,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb85,0xb79,0xb79,0xb79,0xb79,0xb79,0xb73,
-0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb88,0xb88,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,
-0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb88,0xb88,0xb88,0xb88,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0x1725,0x1725,0xb94,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb8b,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb8e,0xb8e,0xb8e,0xb8e,
-0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
-0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,
-0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,0xb91,
-0xb94,0xb94,0xb94,0xb94,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,
-0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,0xb97,
-0xb97,0xb97,0xb97,0xb97,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
-0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,
-0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,
-0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,
-0xba0,0xba0,0xba0,0xba0,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,
-0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbfa,0xbf7,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,
-0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xd02,0xd05,0xdf2,0xdf2,0xdf2,
-0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xf0f,0xf0f,0xf0f,0xf0f,0xc09,0xc09,0xc09,0xc09,
-0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xdf8,0xeb2,
-0xdf8,0xdfb,0xdfb,0xdf8,0xdf5,0xdf8,0xdf5,0xdf8,0xdf8,0x1002,0x1299,0x1299,0xe04,0xe04,0xe04,0xe04,
-0xe04,0xe0a,0xe07,0xf21,0xf21,0xf21,0xf21,0x1416,0x1014,0x1416,0x1353,0x1353,0xc3f,0xc3f,0xc3f,0xc3f,
-0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc6f,0xc6c,
-0xc6f,0xc6c,0xc6f,0xc6c,0x1125,0x1122,0x101a,0x1017,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,
-0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
-0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
-0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc48,0xc48,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
-0xc45,0xc45,0xc45,0xc45,0xc4b,0xc4b,0xc4b,0xc51,0xc4e,0xc75,0xc72,0xc51,0xc4e,0xc51,0xc4e,0xc51,
-0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0xc4b,0xc4b,0xc4b,
-0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
-0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
-0xc51,0xc4e,0xc51,0xc4e,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
-0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,
-0xc51,0xc4e,0xc4b,0xc4b,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,
-0xc5a,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,
-0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,
-0xc54,0xc54,0xc54,0xc54,0xc5a,0xc5a,0xc5a,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,
-0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,
-0xc54,0xc54,0xc54,0xc54,0xc57,0xc54,0xc54,0xc54,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
-0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
-0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xd0b,0xd7a,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xeb2,0xeb2,0xdf5,0xdf5,0xdf5,0xdf5,0xdf8,0xdf8,0xf12,0x1002,0x1002,0x1002,0x1002,0x1002,
-0x1002,0x1002,0x1002,0x1002,0x1002,0x12c6,0x12c6,0x129c,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd35,0xd35,
-0xd35,0xd35,0xd35,0xd32,0xd47,0xd47,0xd47,0xd41,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd41,0xd47,0xd47,0xd47,0xd47,0xd3b,0xd3b,0xd44,0xd44,0xd44,0xd44,0xd38,0xd38,
-0xd38,0xd38,0xd38,0xd3e,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,
-0xe0d,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd41,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xd47,0xd3b,0xd3b,0xd3b,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4d,0xd4d,0xd4d,
-0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xf24,0xf24,0xf24,0xf24,
-0xf24,0xf24,0xf24,0x112e,0x112e,0x101d,0x101d,0x101d,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
-0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
-0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,
-0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,
-0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd56,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,
-0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,
-0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
-0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
-0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,
-0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,
-0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,
-0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,
-0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1c,0xe1c,0xe1c,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xedf,0xedf,0xe31,0xe31,0xf27,0xf27,0xf27,0xf27,
-0xf27,0xf27,0xf27,0x1029,0x1029,0x1029,0x1029,0x1029,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,
-0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0x1026,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,
-0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,
-0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe40,0xe3d,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
-0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
-0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,
-0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,
-0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,
-0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xf2a,
-0xf2a,0xf2a,0xf2a,0x102c,0x102c,0x102c,0x102c,0x102c,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,
-0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,
-0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,
-0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,
-0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe7f,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
-0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,
-0xe82,0xe82,0xe82,0xe85,0xe85,0xe85,0xe85,0xe85,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,
-0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8e,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe8b,0xe88,0xe91,
-0x1038,0x1032,0x1041,0x102f,0xe8e,0xe8e,0x102f,0x102f,0xea3,0xea3,0xe94,0xea3,0xea3,0xea3,0xe9a,0xea3,
-0xea3,0xea3,0xea3,0xe94,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,
-0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
-0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,
-0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xea6,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,
-0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,
-0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xebe,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,
-0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0xedc,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,
-0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0x1137,0xf24,0xf24,0xf24,0xf24,0x101d,0x101d,0x101d,0x101d,
-0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,
-0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0xf45,0xf45,0xf45,0xf45,0xf57,0xf60,0xf63,0xf60,
-0xf63,0xf60,0xf63,0xf60,0xf63,0xf60,0xf63,0xf60,0xf60,0xf60,0xf63,0xf60,0xf60,0xf60,0xf60,0xf60,
-0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
-0xf48,0xf57,0xf45,0xf45,0xf45,0xf45,0xf45,0xf5a,0xf45,0xf5a,0xf57,0xf57,0xf6c,0xf69,0xf6c,0xf6c,
-0xf6c,0xf69,0xf69,0xf6c,0xf69,0xf6c,0xf69,0xf6c,0xf69,0x1053,0x1053,0x1053,0x118e,0x104a,0x1053,0x104a,
-0xf69,0xf6c,0xf69,0xf69,0x104a,0x104a,0x104a,0x104a,0x104d,0x1050,0x118e,0x118e,0xf6f,0xf6f,0x1065,0x105c,
-0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x105c,0x105c,0x1065,0x105c,
-0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0xf75,0xf75,0xf75,0xf75,
-0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,
-0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf84,0xf84,0xf84,0xf84,
-0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,
-0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0x154e,
-0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,0x154e,
-0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,
-0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,
-0xfd2,0xfed,0xfe4,0xfe1,0xfe1,0xfed,0xfed,0xfe4,0xfe4,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfed,0xfed,
-0xfed,0xfd2,0xfd2,0xfd2,0xfd2,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,0xfed,
-0xfed,0xfed,0xfd2,0xfe4,0xfe7,0xfd2,0xfd2,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfd5,0xfed,0xfea,
-0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0xfde,0x1158,0x1158,0x1155,0x1152,0xfdb,0xfdb,
-0x1005,0x1005,0x1005,0x1005,0x12c6,0x12c6,0x129c,0x129c,0x12a2,0x1299,0x1299,0x1299,0x1299,0x129c,0x13c2,0x12a2,
-0x129c,0x12a2,0x1299,0x12a2,0x12c6,0x1299,0x1299,0x1299,0x129c,0x129c,0x1299,0x1299,0x129c,0x1299,0x1299,0x129c,
-0x1020,0x1020,0x1020,0x1020,0x1020,0x101d,0x101d,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1527,0x1527,0x1527,
-0x112e,0x101d,0x101d,0x101d,0x101d,0x12d2,0x12ab,0x12ab,0x12ab,0x12ab,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,
-0x103e,0x103e,0x103b,0x1035,0x103b,0x1035,0x103b,0x1035,0x103b,0x1035,0x1032,0x1032,0x1032,0x1032,0x1047,0x1044,
-0x1032,0x118b,0x1422,0x1425,0x1425,0x1422,0x1422,0x1422,0x1422,0x1422,0x1428,0x1428,0x1542,0x1536,0x1536,0x1533,
-0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1059,0x1056,0x1056,0x1065,0x105c,0x1362,0x135f,0x172e,
-0x1362,0x135f,0x1431,0x142e,0x1545,0x1545,0x154b,0x1545,0x154b,0x1545,0x154b,0x1545,0x154b,0x1545,0x154b,0x1545,
-0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,
-0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x105c,
-0x105f,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x1065,0x105c,0x1065,0x105c,0x1065,0x1065,0x105c,
-0x1068,0x1068,0x106e,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,
-0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,0x1074,
-0x1074,0x106e,0x1068,0x1068,0x1068,0x1068,0x106e,0x106e,0x1068,0x1068,0x1071,0x143a,0x1437,0x1437,0x1074,0x1074,
-0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,
-0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,
-0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,
-0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,
-0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1095,0x1095,0x1095,0x1098,0x1095,0x1095,0x109b,0x109b,
-0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,
-0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,0x109e,
-0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10aa,0x10a1,0x10b0,0x10ad,
-0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,
-0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,
-0x1368,0x1365,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10bf,0x1140,
-0x10b3,0x10b3,0x10b3,0x10b9,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x1440,0x10b6,0x10b6,0x10b9,0x10c5,
-0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,
-0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,0x10c2,0x10bc,
-0x155a,0x1557,0x155a,0x1557,0x155d,0x155d,0x1737,0x1440,0x10ce,0x10ce,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,
-0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,
-0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,
-0x10ce,0x10ce,0x10ce,0x10ce,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10da,
-0x10da,0x10da,0x1134,0x10e3,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,
-0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,0x1101,
-0x1101,0x1101,0x1101,0x1101,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,
-0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,
-0x1113,0x1113,0x1113,0x1113,0x111c,0x111c,0x111c,0x111c,0x1131,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,
-0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,
-0x111c,0x111c,0x111c,0x111c,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,
-0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,
-0x111f,0x111f,0x111f,0x111f,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
-0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x1197,0x1197,0x119a,0x119a,0x11a0,0x1197,
-0x1197,0x1197,0x1197,0x1197,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
-0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,0x11a3,
-0x11a3,0x11a3,0x11a3,0x11a3,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,
-0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,0x11be,
-0x11be,0x11be,0x11be,0x11be,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,
-0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,
-0x11ca,0x11ca,0x11c7,0x11cd,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
-0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
-0x11d9,0x11d9,0x11d9,0x11d9,0x11e8,0x11e8,0x11e8,0x11f7,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
-0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11eb,0x11f7,0x11f7,0x11e8,0x11e8,0x11e8,0x11e8,0x11f7,0x11f7,
-0x11e8,0x11f7,0x11f7,0x11f7,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
-0x1209,0x1209,0x1209,0x1209,0x120c,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1203,0x1203,0x1203,0x1209,0x1206,
-0x1563,0x1566,0x1569,0x1569,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,
-0x121b,0x121b,0x121b,0x121b,0x120f,0x121b,0x120f,0x120f,0x120f,0x1224,0x1224,0x120f,0x120f,0x1224,0x121b,0x1224,
-0x1224,0x121b,0x120f,0x1212,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,
-0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,
-0x121b,0x121b,0x121b,0x121b,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,
-0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,
-0x1236,0x1236,0x1236,0x1236,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
-0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,0x124e,
-0x124e,0x124b,0x124b,0x124b,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
-0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
-0x1257,0x1257,0x1257,0x1257,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,
-0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,0x1266,
-0x1266,0x1266,0x1266,0x1266,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1284,
-0x1281,0x1281,0x1281,0x1281,0x127e,0x127e,0x127e,0x1272,0x1272,0x1272,0x1272,0x127e,0x127e,0x1278,0x1275,0x127b,
-0x127b,0x126c,0x1287,0x1287,0x126f,0x126f,0x127e,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,
-0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1284,0x1281,
-0x1284,0x1281,0x1281,0x1281,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x1290,0x1290,0x1290,0x128d,0x128d,0x128d,0x128a,0x128a,0x128a,0x128a,0x128d,0x128a,
-0x128a,0x128a,0x1290,0x128d,0x1290,0x128d,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,
-0x128a,0x1290,0x128d,0x128d,0x128a,0x128a,0x128a,0x128a,0x129c,0x129c,0x1344,0x1299,0x1344,0x1344,0x1344,0x1344,
-0x1299,0x129f,0x12c6,0x1299,0x1299,0x1299,0x1299,0x1299,0x129f,0x12a2,0x12c6,0x12c6,0x12a2,0x12c6,0x1299,0x12a2,
-0x12a2,0x12a5,0x12c6,0x1299,0x1299,0x12c6,0x129c,0x129c,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,
-0x13b3,0x13b3,0x12ae,0x12ae,0x12ae,0x12ae,0x13ce,0x13ad,0x12b7,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,0x13ce,
-0x13ce,0x13ce,0x13ce,0x1863,0x1863,0x1863,0x1863,0x1863,0x13b6,0x13b6,0x12bd,0x13b6,0x13b6,0x13b6,0x12bd,0x13b6,
-0x13b6,0x13b6,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x13b0,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x12ba,
-0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x12ba,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,
-0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,
-0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x12e4,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
-0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x139b,0x138c,0x139b,0x139e,0x139e,0x139e,0x139e,0x139e,
-0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,
-0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x139e,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
-0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,
-0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,
-0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,
-0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e3,0x13e3,0x13e3,
-0x13e0,0x13e3,0x13e0,0x13e3,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,
-0x13e3,0x13e0,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e6,0x13e3,0x13e3,0x13e3,
-0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,
-0x13e0,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e0,0x13e0,
-0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x13e0,0x1575,0x1575,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x157e,0x1578,0x1578,
-0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x17b8,0x17b8,0x17b8,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x157e,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x157e,0x17b8,0x17b8,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e9,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,
-0x1578,0x1578,0x157e,0x157e,0x1578,0x157e,0x157e,0x157e,0x1575,0x1575,0x157e,0x157e,0x13e3,0x13e3,0x13e9,0x13e9,
-0x13e9,0x16ec,0x13e3,0x13e9,0x13e3,0x13e3,0x13e9,0x1584,0x1584,0x157e,0x157e,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,
-0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x1578,0x1578,0x157e,
-0x16ec,0x157e,0x1578,0x157e,0x17b8,0x17b8,0x17b8,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x157e,0x13e3,0x157e,0x13e9,0x13e9,
-0x13e3,0x13e3,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13ec,0x13ec,
-0x13ec,0x13ec,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x13e3,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,
-0x13e9,0x13e3,0x13e3,0x13e3,0x13e9,0x13e3,0x13e3,0x13e3,0x13e3,0x13e9,0x13e9,0x13e9,0x13e3,0x13e9,0x13e9,0x13e9,
-0x13e3,0x13e3,0x13e3,0x13e6,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x16ec,0x13e3,0x13e3,0x13e3,
-0x13e3,0x157e,0x1578,0x17b8,0x1446,0x1446,0x1446,0x1446,0x1575,0x1575,0x1575,0x1575,0x1575,0x157b,0x157e,0x17b8,
-0x17b8,0x17b8,0x17b8,0x1740,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,
-0x13e3,0x13e3,0x13e3,0x13e3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x1578,0x1578,0x157e,
-0x1584,0x1584,0x157e,0x157e,0x157e,0x157e,0x186c,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x1578,0x157e,
-0x1578,0x1578,0x1578,0x1578,0x1581,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x1578,0x1578,0x1578,0x157e,
-0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x157e,0x13e3,0x13e3,0x13e3,0x13e3,0x13e3,0x14d0,0x13ef,0x13ef,0x13ef,
-0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x14d0,0x13ef,0x13ef,
-0x13ef,0x14d0,0x13ef,0x14d0,0x13ef,0x14d0,0x13ef,0x14d0,0x13ef,0x13ef,0x13ef,0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,
-0x13ef,0x13ef,0x14d0,0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,0x14d0,0x13ef,0x14d0,0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,
-0x14d0,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x16f2,0x16f2,0x17be,
-0x17be,0x13f2,0x13f2,0x13f2,0x13ef,0x13ef,0x13ef,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x1671,0x1671,0x1671,0x1671,
-0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x13f8,0x13f5,0x13f5,0x13f5,
-0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f8,0x13f5,
-0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13fb,
-0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,
-0x13fb,0x13fb,0x13fb,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13fe,0x13fe,0x13fe,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,
-0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x13fe,0x17eb,0x17eb,0x17e8,0x1743,
-0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x144c,0x144c,0x144c,0x144c,
-0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x158d,0x1458,0x1458,0x1458,0x146a,
-0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,
-0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x1485,0x1485,0x1485,0x1485,
-0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,
-0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x148e,0x148e,0x148e,0x148e,
-0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,
-0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x148e,0x1494,0x1494,0x14a0,0x14a6,
-0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,
-0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a0,
-0x14a0,0x14a0,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x1494,0x14a0,0x14c7,0x14c7,0x14c7,0x14c7,
-0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,
-0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x1578,0x1578,0x157e,0x157e,
-0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x157e,
-0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x157e,0x157e,0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x157e,0x1578,0x1578,0x157e,0x157e,0x157e,0x157e,0x1578,0x1578,0x1584,0x1578,0x1578,0x1578,
-0x1578,0x16ef,0x16ef,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1869,0x157e,0x1578,0x1578,
-0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x157e,0x1578,0x1578,0x1578,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,
-0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,
-0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,
-0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15bd,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,
-0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,
-0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15f0,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,
-0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,
-0x1608,0x1608,0x1608,0x1602,0x160b,0x160b,0x160b,0x160b,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
-0x1620,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
-0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
+0xb3d,0xb3d,0xb3d,0xb3d,0xb40,0xb40,0xb40,0xb40,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,
+0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,
+0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
+0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
+0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,
+0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba6,0xba3,0xba6,
+0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xcae,
+0xcb1,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xd9e,0xeb8,0xeb8,0xeb8,0xeb8,
+0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xbb5,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,
+0xcb4,0xcb4,0xda4,0xe5b,0xda4,0xda4,0xda4,0xda4,0xda1,0xda4,0xda1,0xda4,0xda4,0xfab,0x1242,0x1242,
+0xdad,0xdad,0xdad,0xdad,0xdad,0xdb3,0xdb0,0xeca,0xeca,0xeca,0xeca,0x13bf,0xfbd,0x13bf,0x12fc,0x12fc,
+0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,
+0xbeb,0xbeb,0xc1b,0xc18,0xc1b,0xc18,0xc1b,0xc18,0x10ce,0x10cb,0xfc3,0xfc0,0xbee,0xbee,0xbee,0xbee,
+0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbf1,0xbf1,0xbf1,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf4,0xbf4,0xbf1,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf7,0xbf7,0xbf7,0xbfd,0xbfa,0xc21,0xc1e,0xbfd,
+0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,0xbfa,0xbfd,
+0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbfd,0xbfa,0xbfd,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,
+0xbf7,0xbf7,0xbf7,0xbf7,0xbfd,0xbfa,0xbf7,0xbf7,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc06,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc06,0xc06,0xc06,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,
+0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc03,0xc00,0xc00,0xc00,0xc39,0xc39,0xc39,0xc39,
+0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,
+0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xc39,0xcb7,0xd26,0xda1,0xda1,
+0xda1,0xda1,0xda1,0xda1,0xda1,0xda1,0xe5b,0xe5b,0xda1,0xda1,0xda1,0xda1,0xda4,0xda4,0xebb,0xfab,
+0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0xfab,0x126f,0x126f,0x1245,0xcdb,0xcdb,0xcdb,0xcdb,
+0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,
+0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcdb,0xcea,0xcea,0xcea,0xcea,
+0xcea,0xcea,0xce1,0xce1,0xce1,0xce1,0xce1,0xcde,0xcf3,0xcf3,0xcf3,0xced,0xcf3,0xcf3,0xcf3,0xcf3,
+0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xced,0xcf3,0xcf3,0xcf3,0xcf3,0xce7,0xce7,0xcf0,0xcf0,
+0xcf0,0xcf0,0xce4,0xce4,0xce4,0xce4,0xce4,0xcea,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,
+0xdb9,0xdb9,0xdb9,0xdb9,0xdb6,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xdb9,0xcf3,0xcf3,0xcf3,0xcf3,
+0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xced,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,
+0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xcf3,0xce7,0xce7,0xce7,0xcea,0xcea,0xcea,0xcea,
+0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,
+0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcf6,0xcf6,0xcf6,0xcf6,
+0xcf6,0xcf9,0xcf9,0xcf9,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,0xdbc,
+0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0x10d7,0x10d7,0xfc6,0xfc6,0xfc6,0xcfc,0xcfc,0xcfc,0xcfc,
+0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,
+0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xd02,0xd02,0xd02,0xd02,
+0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,
+0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd0b,0xd0b,0xd0b,0xd0b,
+0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,
+0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd17,0xd17,0xd17,0xd17,
+0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,
+0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd23,0xd23,0xd23,0xd23,
+0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
+0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xdc2,0xdc2,0xdc2,0xdc2,
+0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,
+0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,
+0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xdc8,0xe88,0xe88,0xdda,0xdda,
+0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xfd2,0xfd2,0xfd2,0xfd2,0xfd2,0xfcf,0xfcf,0xfcf,0xfcf,
+0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xfcf,0xde9,0xde6,0xde9,0xde6,
+0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,
+0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xde9,0xde6,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdfb,0xdfb,0xdfb,0xdfb,
+0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
+0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xe13,0xe13,0xe13,0xe13,
+0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,
+0xe13,0xe13,0xe13,0xed3,0xed3,0xed3,0xed3,0xfd5,0xfd5,0xfd5,0xfd5,0xfd5,0xe1c,0xe1c,0xe1c,0xe1c,
+0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,
+0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe25,0xe25,0xe25,0xe25,
+0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,
+0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe2e,0xe2e,0xe2e,0xe2e,
+0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
+0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe28,0xe2b,0xe2b,0xe2b,0xe2b,
+0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
+0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe37,0xe37,0xe37,0xe37,
+0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,
+0xe34,0xe34,0xe31,0xe3a,0xfe1,0xfdb,0xfea,0xfd8,0xe37,0xe37,0xfd8,0xfd8,0xe4c,0xe4c,0xe3d,0xe4c,
+0xe4c,0xe4c,0xe43,0xe4c,0xe4c,0xe4c,0xe4c,0xe3d,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
+0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe67,0xe67,0xe67,0xe67,
+0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,
+0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe85,0xe85,0xe85,0xe85,
+0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0x10e0,0x10e0,0x10e0,0x10e0,
+0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0xecd,0xecd,0xecd,0xecd,
+0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc9,0xfc9,0xfc9,0xfc9,
+0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xeee,0xeee,0xeee,0xeee,
+0xf00,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf0c,0xf09,0xf09,0xf09,0xf0c,0xf09,
+0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,
+0xf09,0xf09,0xf09,0xf09,0xef1,0xf00,0xeee,0xeee,0xeee,0xeee,0xeee,0xf03,0xeee,0xf03,0xf00,0xf00,
+0xf15,0xf12,0xf15,0xf15,0xf15,0xf12,0xf12,0xf15,0xf12,0xf15,0xf12,0xf15,0xf12,0xffc,0xffc,0xffc,
+0x1137,0xff3,0xffc,0xff3,0xf12,0xf15,0xf12,0xf12,0xff3,0xff3,0xff3,0xff3,0xff6,0xff9,0x1137,0x1137,
+0xf18,0xf18,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
+0x1005,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
+0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,
+0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,
+0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,
+0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,
+0xf2d,0xf2d,0xf2d,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,0x14f7,
+0x14f7,0x14f7,0x14f7,0x14f7,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,
+0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,0xf33,
+0xf33,0xf33,0xf33,0xf33,0xf7b,0xf96,0xf8d,0xf8a,0xf8a,0xf96,0xf96,0xf8d,0xf8d,0xf8a,0xf8a,0xf8a,
+0xf8a,0xf8a,0xf96,0xf96,0xf96,0xf7b,0xf7b,0xf7b,0xf7b,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,
+0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf7b,0xf8d,0xf90,0xf7b,0xf7b,0xf93,0xf93,0xf93,0xf93,0xf93,
+0xf93,0xf7e,0xf96,0xf93,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0xf87,0x1101,0x1101,
+0x10fe,0x10fb,0xf84,0xf84,0xfae,0xfae,0xfae,0xfae,0x126f,0x126f,0x1245,0x1245,0x124b,0x1242,0x1242,0x1242,
+0x1242,0x1245,0x136b,0x124b,0x1245,0x124b,0x1242,0x124b,0x126f,0x1242,0x1242,0x1242,0x1245,0x1245,0x1242,0x1242,
+0x1245,0x1242,0x1242,0x1245,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc6,0xfc6,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,
+0xfc9,0x14d0,0x14d0,0x14d0,0x10d7,0xfc6,0xfc6,0xfc6,0xfc6,0x127b,0x1254,0x1254,0x1254,0x1254,0x14d0,0x14d0,
+0x14d0,0x14d0,0x14d0,0x14d0,0xfe7,0xfe7,0xfe4,0xfde,0xfe4,0xfde,0xfe4,0xfde,0xfe4,0xfde,0xfdb,0xfdb,
+0xfdb,0xfdb,0xff0,0xfed,0xfdb,0x1134,0x13cb,0x13ce,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13d1,0x13d1,
+0x14eb,0x14df,0x14df,0x14dc,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x1002,0xfff,0xfff,0x100e,
+0x1005,0x130b,0x1308,0x16da,0x130b,0x1308,0x13da,0x13d7,0x14ee,0x14ee,0x14f4,0x14ee,0x14f4,0x14ee,0x14f4,0x14ee,
+0x14f4,0x14ee,0x14f4,0x14ee,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
+0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,0x100e,0x1005,
+0x100e,0x1005,0x100e,0x1005,0x1008,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x1005,0x100e,0x1005,0x100e,
+0x1005,0x100e,0x100e,0x1005,0x1011,0x1011,0x1017,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,
+0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,0x101d,
+0x101d,0x101d,0x101d,0x101d,0x101d,0x1017,0x1011,0x1011,0x1011,0x1011,0x1017,0x1017,0x1011,0x1011,0x101a,0x13e3,
+0x13e0,0x13e0,0x101d,0x101d,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x13e6,0x13e6,
+0x13e6,0x13e6,0x13e6,0x13e6,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,
+0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,
+0x1032,0x1032,0x1032,0x1032,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,
+0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103e,0x103e,0x103e,0x1041,
+0x103e,0x103e,0x1044,0x1044,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,
+0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,
+0x1047,0x1047,0x1047,0x1047,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
+0x1053,0x104a,0x1059,0x1056,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
+0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
+0x1050,0x1050,0x1050,0x1050,0x1311,0x130e,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,
+0x106b,0x1065,0x1068,0x10e9,0x105c,0x105c,0x105c,0x1062,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,0x13e9,
+0x105f,0x105f,0x1062,0x106e,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,
+0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,0x106b,0x1065,
+0x106b,0x1065,0x106b,0x1065,0x1503,0x1500,0x1503,0x1500,0x1506,0x1506,0x16e3,0x13e9,0x1077,0x1077,0x107a,0x107a,
+0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
+0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x1077,0x1077,0x1077,0x1077,
+0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1080,0x1080,
+0x1080,0x1080,0x1080,0x1083,0x1083,0x1083,0x10dd,0x108c,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,
+0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,
+0x1086,0x1086,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,
+0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
+0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
+0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
+0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
+0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10c5,0x10c5,0x10c5,0x10c5,0x10da,0x10c5,0x10c5,0x10c5,
+0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,
+0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,
+0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,
+0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x10c8,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,
+0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1140,0x1140,
+0x1143,0x1143,0x1149,0x1140,0x1140,0x1140,0x1140,0x1140,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,
+0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,
+0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x114c,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,
+0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,
+0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1167,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,
+0x1173,0x1173,0x1173,0x1173,0x1173,0x1173,0x1170,0x1176,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,
+0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1191,0x1191,0x1191,0x11a0,0x11a6,0x11a6,0x11a6,0x11a6,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
+0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x1194,0x11a0,0x11a0,0x1191,0x1191,
+0x1191,0x1191,0x11a0,0x11a0,0x1191,0x11a0,0x11a0,0x11a0,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,
+0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b5,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11ac,
+0x11ac,0x11ac,0x11b2,0x11af,0x150c,0x150f,0x1512,0x1512,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11b8,0x11c4,0x11b8,0x11b8,0x11b8,0x11cd,0x11cd,0x11b8,
+0x11b8,0x11cd,0x11c4,0x11cd,0x11cd,0x11c4,0x11b8,0x11bb,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,
+0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
+0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
+0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
+0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
+0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f4,0x11f4,0x11f4,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,
+0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,
+0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x1200,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,
+0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,
+0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
+0x122a,0x122a,0x122a,0x122d,0x122a,0x122a,0x122a,0x122a,0x1227,0x1227,0x1227,0x121b,0x121b,0x121b,0x121b,0x1227,
+0x1227,0x1221,0x121e,0x1224,0x1224,0x1215,0x1230,0x1230,0x1218,0x1218,0x1227,0x122a,0x122a,0x122a,0x122a,0x122a,
+0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
+0x122a,0x122a,0x122d,0x122a,0x122d,0x122a,0x122a,0x122a,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
+0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
+0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1239,0x1239,0x1239,0x1236,0x1236,0x1236,0x1233,0x1233,
+0x1233,0x1233,0x1236,0x1233,0x1233,0x1233,0x1239,0x1236,0x1239,0x1236,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
+0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
+0x1233,0x1233,0x1233,0x1233,0x1233,0x1239,0x1236,0x1236,0x1233,0x1233,0x1233,0x1233,0x1245,0x1245,0x12ed,0x1242,
+0x12ed,0x12ed,0x12ed,0x12ed,0x1242,0x1248,0x126f,0x1242,0x1242,0x1242,0x1242,0x1242,0x1248,0x124b,0x126f,0x126f,
+0x124b,0x126f,0x1242,0x124b,0x124b,0x124e,0x126f,0x1242,0x1242,0x126f,0x1245,0x1245,0x135c,0x135c,0x135c,0x135c,
+0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x1257,0x1257,0x1257,0x1257,0x1377,0x1356,0x1260,0x1377,0x1377,0x1377,
+0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x180f,0x180f,0x180f,0x180f,0x180f,0x135f,0x135f,0x1266,0x135f,
+0x135f,0x135f,0x1266,0x135f,0x135f,0x135f,0x1260,0x1260,0x1260,0x1260,0x1260,0x1359,0x135c,0x135c,0x135c,0x135c,
+0x135c,0x135c,0x135c,0x1263,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x135c,0x1263,0x128d,0x128d,0x128d,0x128d,
+0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,
+0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x128d,0x132f,0x132f,0x132f,0x132f,
+0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,
+0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x132f,0x1344,0x1335,0x1344,0x1347,
+0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,
+0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1347,0x1335,0x1335,0x1335,0x1335,
+0x1335,0x1335,0x1335,0x1335,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
+0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
+0x134d,0x134d,0x134d,0x134d,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
+0x1353,0x1353,0x1353,0x1353,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x1389,0x138c,0x138c,0x138c,0x1389,0x138c,0x1389,0x138c,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x1395,0x138c,
+0x138c,0x138c,0x138c,0x1389,0x138c,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1389,0x1389,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1389,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x151e,0x151e,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x1527,0x1521,0x1521,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1764,0x1764,0x1764,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1527,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x1527,0x1764,0x1764,0x138c,0x138c,0x138c,0x138c,0x138c,0x1395,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1521,0x1521,0x1527,0x1527,
+0x1521,0x1527,0x1527,0x1527,0x151e,0x151e,0x1527,0x1527,0x138c,0x138c,0x1392,0x1395,0x1395,0x1698,0x138c,0x1392,
+0x138c,0x138c,0x1395,0x1530,0x152d,0x1527,0x1527,0x1764,0x1764,0x1764,0x1764,0x1764,0x1527,0x1527,0x1527,0x1527,
+0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1521,0x1521,0x1527,0x1698,0x1527,0x1521,0x1527,
+0x1764,0x1764,0x1764,0x1767,0x1767,0x1767,0x1767,0x1767,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1527,0x138c,0x1527,0x1395,0x1395,0x138c,0x138c,0x1395,0x1395,
+0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1398,0x1398,0x1398,0x1398,0x1392,0x1392,
+0x1392,0x1392,0x1395,0x1392,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x138c,0x138c,0x138c,
+0x1395,0x138c,0x138c,0x138c,0x138c,0x1395,0x1395,0x1395,0x138c,0x1395,0x1395,0x1395,0x138c,0x138c,0x138c,0x138f,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1698,0x138c,0x138c,0x138c,0x138c,0x1527,0x1521,0x1764,
+0x13ef,0x13ef,0x13ef,0x13ef,0x151e,0x151e,0x151e,0x151e,0x151e,0x1524,0x1527,0x1764,0x1764,0x1764,0x1764,0x16ec,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1527,0x1521,0x1521,0x1527,0x152d,0x1530,0x1527,0x1527,
+0x1527,0x1527,0x1818,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1521,0x1527,0x1521,0x1521,0x1521,0x1521,
+0x152a,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1521,0x1521,0x1521,0x1527,0x151e,0x151e,0x151e,0x151e,
+0x151e,0x151e,0x1527,0x138c,0x138c,0x138c,0x138c,0x138c,0x1479,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,
+0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x1479,0x139b,0x139b,0x139b,0x1479,0x139b,0x1479,
+0x139b,0x1479,0x139b,0x1479,0x139b,0x139b,0x139b,0x1479,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x1479,0x1479,
+0x139b,0x139b,0x139b,0x139b,0x1479,0x139b,0x1479,0x1479,0x139b,0x139b,0x139b,0x139b,0x1479,0x139b,0x139b,0x139b,
+0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x139b,0x169e,0x169e,0x176a,0x176a,0x139e,0x139e,0x139e,
+0x139b,0x139b,0x139b,0x139e,0x139e,0x139e,0x139e,0x139e,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,
+0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,
+0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,
+0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a4,0x13a4,0x13a4,0x13a1,
+0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,
+0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1797,0x1797,0x1794,0x16ef,0x13f5,0x13f5,0x13f5,0x13f5,
+0x13f5,0x13f5,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f2,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,
+0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x13f5,0x1539,0x1401,0x1401,0x1401,0x1413,0x1413,0x1413,0x1413,0x1413,
+0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,
+0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x1413,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,
+0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,
+0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
+0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
+0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,0x143d,0x143d,0x1449,0x144f,0x144f,0x144f,0x144f,0x144f,
+0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,
+0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x1449,0x1449,0x1449,0x143d,0x143d,
+0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x1449,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,
+0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,
+0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1521,0x1521,0x1527,0x1527,0x1527,0x1521,0x1521,0x1521,
+0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1527,0x1527,0x151e,0x151e,0x151e,0x151e,
+0x151e,0x151e,0x151e,0x151e,0x1527,0x1527,0x1527,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,
+0x1521,0x1521,0x1527,0x1527,0x1527,0x1527,0x1521,0x1521,0x1530,0x1521,0x1521,0x1521,0x1521,0x169b,0x169b,0x1521,
+0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1815,0x1527,0x1521,0x1521,0x1527,0x1521,0x1521,0x1521,
+0x1521,0x1521,0x1521,0x1521,0x1521,0x1527,0x1527,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,
+0x1527,0x1521,0x1521,0x1521,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,
+0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,
+0x1551,0x1551,0x1551,0x1551,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
+0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
+0x1563,0x1563,0x1563,0x1563,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,
+0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,
+0x1569,0x1569,0x1569,0x1569,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x156c,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,
+0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,0x15ab,
+0x15ab,0x15ab,0x15ab,0x159c,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,
+0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15ae,
+0x15b7,0x15b7,0x15b7,0x15b7,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,
+0x15ba,0x15ba,0x15ba,0x15ba,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15cc,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,
+0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,0x15de,
+0x15de,0x15de,0x15de,0x15de,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
+0x15f0,0x15f0,0x15f0,0x15f0,0x15ed,0x15ed,0x15ed,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15ed,
+0x15ed,0x15e1,0x15ed,0x15e4,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
+0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
+0x15f0,0x15f0,0x15f0,0x15f0,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,
+0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,
+0x1614,0x1611,0x1611,0x1611,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1623,0x1623,0x1623,0x1620,0x1620,0x1620,
+0x161d,0x161d,0x161d,0x161d,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
+0x1632,0x1632,0x1632,0x1632,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1638,0x1638,0x162c,0x1629,0x1629,
+0x1629,0x1629,0x1629,0x1629,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
 0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,
-0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1632,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,
-0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1641,0x1641,0x1641,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1641,0x1641,0x1635,0x1641,0x1638,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,
-0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,
-0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,
-0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,
-0x1668,0x1668,0x1668,0x1668,0x1668,0x1665,0x1665,0x1665,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,
-0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1677,0x1677,
-0x1677,0x1674,0x1674,0x1674,0x1671,0x1671,0x1671,0x1671,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x168c,
-0x168c,0x1680,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1632,0x1632,0x1632,0x1632,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,
+0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163b,0x163b,0x163b,0x163b,0x163b,
+0x163b,0x163b,0x163b,0x163b,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,
+0x1641,0x1641,0x1641,0x1641,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
+0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
+0x1665,0x1665,0x1665,0x1665,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
+0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,
+0x166e,0x166e,0x166e,0x166e,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1686,0x1686,0x1686,0x1686,0x1671,0x1680,0x1680,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1680,0x1671,0x1683,
+0x1683,0x1671,0x1683,0x1671,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
 0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
-0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,
-0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x168f,
-0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
+0x1686,0x1686,0x1686,0x1686,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,
+0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,
+0x168f,0x168f,0x168f,0x168f,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
 0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,
-0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,
-0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,
-0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16b9,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
-0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,
-0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16c5,0x16d4,0x16d4,0x16c5,0x16c5,0x16c5,0x16c5,0x16c5,
-0x16c5,0x16d4,0x16c5,0x16d7,0x16d7,0x16c5,0x16d7,0x16c5,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,
-0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,
-0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,
-0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,
-0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,
-0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,
-0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x16e9,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
-0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,
-0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
-0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
-0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x178b,0x1788,0x1785,0x1785,0x1785,0x1785,
-0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x178e,0x178e,0x178e,0x178e,
-0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,
-0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x178e,0x1791,0x1791,0x1791,0x1791,
-0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,
-0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x17a3,0x17a3,0x17a3,0x17a3,
-0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,
-0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a3,0x17a6,0x17a6,0x17a6,0x17a6,
-0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,
-0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a9,0x17a9,0x17a9,0x17a9,
-0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
-0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17ac,
-0x17ac,0x17ac,0x17ac,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,
-0x17a9,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17a9,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,
-0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,
-0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17c4,0x17c4,0x17c4,0x17c4,
-0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,
-0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x1809,0x1809,0x1806,0x1806,
-0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,
-0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1809,0x1809,0x1809,0x1809,
-0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,
-0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1857,0x1857,0x1857,0x1857,
-0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
-0x1857,0x1854,0x1854,0x1854,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x1857,0x1857,0x1857,0x1857,
-0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,
-0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x187e,0x187e,0x187e,0x187e,
-0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,
-0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x1881,0x1881,0x1881,0x1881,
-0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,
-0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0,0,0,0
+0x1695,0x1695,0x1695,0x1695,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,
+0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,
+0x16f5,0x16f5,0x16f5,0x16f5,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,
+0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,
+0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1737,0x1734,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,
+0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x1731,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,
+0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,
+0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
+0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
+0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
+0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
+0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1758,0x1758,0x1758,0x1758,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1758,0x1758,0x1758,
+0x1758,0x1758,0x1758,0x1758,0x1758,0x1755,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,
+0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,
+0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,
+0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,
+0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x17b5,0x17b5,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,
+0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,
+0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,
+0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,
+0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,
+0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1800,0x1800,0x1800,
+0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,
+0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,
+0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
+0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,
+0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0,0,0,0
 };
 
 static const UTrie2 propsVectorsTrie={
     propsVectorsTrie_index,
-    propsVectorsTrie_index+4924,
+    propsVectorsTrie_index+4844,
     NULL,
-    4924,
-    24212,
+    4844,
+    23696,
     0xa40,
-    0x13bc,
+    0x136c,
     0x0,
     0x0,
     0x110000,
-    0x71cc,
+    0x6f78,
     NULL, 0, FALSE, FALSE, 0, NULL
 };
 
-static const uint32_t propsVectors[6279]={
-0x67,0,0,0x67,0,0x200000,0x67,0,0x230400,0x67,0,0x230560,0x67,0,0x400000,0x67,
-0,0x448000,0x67,0,0x500000,0x67,0,0x962460,0x67,0,0x962540,0x67,0,0xe00000,0x67,0,
-0xe30000,0x67,0,0x1329800,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,0,0,
-0xc67,0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1067,0,0x200000,0x1067,
-0,0x230400,0x1167,0,0,0x1267,0,0,0x1267,0,0x962460,0x1367,0,0,0x1467,0,
-0,0x1567,0,0,0x1667,0,0,0x1767,0,0,0x1767,0,0x962460,0x1867,0,0,
-0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67,0,0,0x1f67,0,0,0x2067,
-0,0,0x2267,0,0,0x2367,0,0,0x2467,0,0,0x2567,0,0,0x2767,0,
-0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000,0x2b67,0,0,0x2d67,0,0,
-0x3067,0x20000000,0x200000,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,0,0,0x3b67,0,0,0x3c67,
-0,0,0x3e67,0,0,0x4067,0,0,0x4067,0,0xe30400,0x4167,0,0,0x4367,0,
-0,0x4467,0,0,0x4867,0,0,0x4967,0,0,0x4a67,0,0,0x5067,0,0,
-0x5167,0,0,0x5467,0,0,0x5567,0,0,0x5667,0x80000,0x20,0x5767,0,0,0x5867,
-0,0,0x5867,0,0x230400,0x5967,0,0,0x5b67,0,0,0x5c67,0,0,0x5d67,0,
+static const uint32_t propsVectors[6195]={
+0x67,0,0,0x67,0,0xe00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,
+0,0,0xc67,0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0,
+0,0x1267,0,0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0,
+0x1767,0,0,0x1867,0,0,0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67,
+0,0,0x1f67,0,0,0x2067,0,0,0x2267,0,0,0x2367,0,0,0x2467,0,
+0,0x2567,0,0,0x2767,0,0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000,
+0x2b67,0,0,0x2d67,0,0,0x3067,0x20000000,0,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,
+0,0,0x3b67,0,0,0x3c67,0,0,0x3e67,0,0,0x4067,0,0,0x4167,0,
+0,0x4367,0,0,0x4467,0,0,0x4867,0,0,0x4967,0,0,0x4a67,0,0,
+0x5067,0,0,0x5167,0,0,0x5467,0,0,0x5567,0,0,0x5667,0x80000,0x20,0x5767,
+0,0,0x5867,0,0,0x5967,0,0,0x5b67,0,0,0x5c67,0,0,0x5d67,0,
 0,0x6067,0x80000,0x20,0x6267,0,0,0x6367,0,0,0x6467,0,0,0x6567,0,0,
-0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0,0x7367,0x20000000,0x200000,0x7567,0,0,0x7667,
-0,0,0x7767,0,0,0x7867,0,0,0x7a67,0,0,0x7b67,0,0,0x7c67,0,
-0,0x7e67,0,0,0x7f67,0,0,0x8167,0,0,0x8267,0,0,0x8367,0,0,
-0x8367,0,0x962460,0x8467,0,0,0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8867,
-0,0,0x8967,0,0,0x8b67,0,0,0x8c67,0,0,0x8e67,0x20000000,0,0x8e67,0x20000000,
-0x400000,0x8f67,0,0,0x9067,0,0,0x9167,0,0,0x9267,0,0,0x9367,0,0,
-0x9567,0,0,0x9667,0,0,0x9767,0,0,0x9867,0,0,0x9967,0,0,0x9a67,
-0,0,0x9c67,0,0,0x9f67,0,0,0xa167,0,0,0xa367,0,0,0xa467,0,
-0,0xa567,0,0,0xa667,0,0,0xa767,0,0,0xa867,0,0,0xa967,0,0,
-0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0,0,0xad67,0,0,0xae67,0,0,0xaf67,
-0,0,0xaf67,0,0x962540,0xb167,0,0,0xb267,0,0,0xb367,0,0,0xb467,0,
-0,0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,0,0xba67,0,0,
-0xbc67,0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,0xc067,0,0,0xc167,
-0,0,0xc267,0,0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,0,0,0xc767,0,
-0,0xc867,0,0,0xc967,0,0,0xca67,0,0,0xcb67,0,0xe30000,0xcc67,0,0xe00000,
-0xcf67,0,0xe00000,0xcf67,0,0x30e00000,0xd067,0,0xe00000,0xd267,0,0,0xd367,0,0,0xd467,
-0,0,0xd567,0,0,0xd667,0,0,0xd867,0,0,0xd967,0,0,0xda67,0,
-0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,0xdf67,0,0,
-0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0xe00000,0xe467,0,0,0xe567,
-0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,0,0xea67,0,
-0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,0xef67,0,0,
-0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,0,0,0xf867,
-0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0,0,0xfc67,0,0,0xfd67,0,
-0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,0x10467,0,0,
-0x10567,0,0x200000,0x10567,0,0xe00000,0x10567,0,0x30e00000,0x10567,0,0xb28045a0,0x10667,0,0,0x10767,
-0,0,0x10867,0,0,0x10967,0,0,0x10a67,0,0,0x10b67,0,0,0x10b67,0,
-0x1230400,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0,0x10f67,0,0,0x11067,0,0,
-0x11167,0,0,0xa0067,0,0xe00000,0xa0067,0,0xe30000,0xa4667,0,0xe00000,0xa4767,0,0xe00000,0xa4767,
-0,0xe30000,0xa4f67,0,0xe00000,0xa5e67,0,0xe00000,0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,
-0xe00000,0xb0067,0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,
-0x11000100,0x40000001,0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x10200000,0x11000200,
-0x24000008,0x1710000,0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,
-0x220402,0x11000319,0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,
-0x11000419,0x7c00100,0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,
-0x7c00100,0x230400,0x11000600,0x4000400,0x200000,0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x200400,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,
-0x230400,0x11000600,0x7c00500,0x530400,0x11000600,0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,
-0x11000800,0x6800010,0x201001,0x11000800,0x7c00500,0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,
-0x4000400,0x200002,0x1100080e,0x7000500,0x220402,0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,
-0x250400,0x1100080e,0x7c00100,0x250401,0x1100080e,0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,
-0x11000908,0x7c00100,0x220401,0x11000908,0x7c00100,0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200000,0x11000a03,0x4000000,0x270000,0x11000a03,
-0x7c00100,0x220400,0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000b13,0x2802500,0x962460,0x11000b13,0x4000000,
-0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,0x2633800,
-0x11000c00,0,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,0x11000c02,
-0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,0x7c00100,
-0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000c02,0xc000010,0xb48000,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,0x962460,
-0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,0x11001004,
-0x2802100,0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000,0x11001004,0x6800100,
-0x962540,0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110,0x2802400,0x962460,
-0x11001110,0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,0x1100120f,
-0x2802400,0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,0x2802400,
-0x962460,0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,0x962541,
-0x1100131f,0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100,0x962540,0x11001423,
-0x6800100,0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461,0x11001524,0x2806400,
-0x962460,0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615,0x2806400,0x962460,
-0x11001615,0x6800000,0x1329800,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,
-0x2806400,0x962460,0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,
-0x1600000,0x11001926,0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,
-0x11001926,0x6800000,0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,
-0x2802100,0x1862460,0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,
-0x1830002,0x11001a18,0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,
-0x11001e12,0x7c00100,0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,
-0x4000400,0x200001,0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,
-0x918820,0x11002800,0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x440001,0x11002800,0x4000001,0x440002,0x11002800,0x4000001,0xc4000b,
-0x11002800,0x6800000,0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,
-0x24000000,0x1410000,0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,
-0x1410000,0x11002800,0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x11248002,
-0x11002800,0x40000001,0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0x2a65620,0x11002801,0x82000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,
-0x4000000,0x20000f,0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,
-0x141000e,0x11002900,0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,
-0x11002a00,0x4000000,0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,
-0x4000000,0x20000f,0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,
-0x230402,0x11002c00,0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,
-0x11002d00,0x4000000,0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,
-0x24000020,0x200000,0x11002e00,0x24000020,0x200001,0x11002e00,0x24000020,0x10200000,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,
-0x200002,0x11002f00,0x24000020,0xf00000,0x11002f00,0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000000,0x10200000,
-0x11003000,0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,
-0x4000000,0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000000,
-0x10200000,0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000,0x11003700,0x24000000,0x10200000,0x11003700,0x24000000,0x10e00000,
-0x11003700,0x24000000,0x928045a0,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,
-0x24000000,0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x10200000,0x11003800,0x24000000,0x10b00000,0x11003800,0x24000000,0x10e00000,0x11003800,0x24000000,
-0x10e05200,0x11003800,0x24000000,0x928045a0,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020,0x200005,0x11005013,0x7c00100,0x2633801,
-0x11005013,0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005100,0x24000000,0x810000,0x11005100,0x24000000,0x1410000,0x11005102,
-0x7000100,0x230408,0x11005102,0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,
-0x962460,0x11005500,0x80000,0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,
-0x11005502,0x7c00100,0x230409,0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,
-0x4000400,0x100002,0x11020200,0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,
-0x1500000,0x11020200,0x24000000,0x1600000,0x11020200,0x24000000,0x10200000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,
-0x11020219,0x7c00100,0x220400,0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,
-0x7c00100,0x220402,0x11020319,0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,
-0x220400,0x11020600,0x4000400,0x100002,0x11020600,0x4000400,0x200400,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,
-0x11020701,0x2802400,0x962461,0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,
-0x7c00100,0x220401,0x11020908,0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,
-0x200002,0x11022800,0x24000000,0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,
-0x11022800,0x24000002,0x370000,0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,
-0x24000020,0x100000,0x11022800,0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,
-0x12040f,0x11022c00,0x4000000,0x100002,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x4000000,0x1010000f,0x11022c00,0x7c00120,0x120405,
-0x11022c0e,0x7c00100,0x250401,0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,
-0x7c00100,0x150402,0x11022e00,0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022e00,0x24000020,0x10100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,
-0x100001,0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,
-0x11023300,0x4000100,0x150403,0x11023300,0x4000100,0x10150403,0x11023400,0x24000000,0x100000,0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,
-0x24000020,0x100000,0x11023600,0x24000020,0x10100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000,0x11023700,0x24000000,0x10100000,0x11023700,0x24000000,
-0x10e00000,0x11023700,0x24000020,0x100000,0x11023700,0x24000020,0x10100000,0x11023700,0x24000020,0x10105200,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,
-0x11024e67,0,0,0x11025600,0x4000000,0x100000,0x11042a00,0x4000000,0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,
-0x7c00100,0xe3040a,0x11045712,0x7c80100,0xe3040a,0x11045716,0x7c00100,0xe30c0a,0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x440011,0x11065700,0x4000000,
-0x810011,0x11065700,0x4000000,0xe00011,0x11065700,0x4000000,0x1410011,0x11065700,0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,
-0x11065700,0x4000008,0xe00011,0x11065700,0x4000008,0xe02c11,0x11065700,0x4000010,0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,
-0x4000020,0xe00011,0x11065700,0x4000400,0xe00011,0x11065700,0x4000420,0xe00011,0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe00011,0x11065700,0xc000010,
-0x80ac11,0x11065700,0xc000010,0xb48011,0x11065719,0x7c00100,0xe20411,0x11065719,0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,
-0x11080100,0x6800000,0x201c00,0x11080100,0x68000c0,0x11329800,0x11080100,0x24000000,0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,
-0x24000000,0x1500000,0x11080100,0x24000000,0x1600000,0x11080100,0x24000000,0x1b00000,0x11080100,0x24000000,0x2410000,0x11080100,0x24000000,0x10200000,0x11080100,0x24000006,
-0xd70000,0x11080100,0x24000008,0x1713c00,0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400,0x11080100,0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,
-0x11080100,0x24000020,0x200000,0x11080100,0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100,0x24000400,0x200000,0x11080100,0x24000420,0x200000,0x11080100,
-0x2c000010,0xb48000,0x11080100,0x2c000010,0x100ac00,0x11080100,0x44000001,0x1a40000,0x11080119,0x7c00100,0x220400,0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,
-0x220400,0x11080119,0x7c001c0,0x250400,0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000,0x11080200,0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,
-0x11080200,0x24000020,0x200000,0x110a1e12,0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000,0x24000000,0x30e00000,0x110a3000,0x24100000,0x810001,0x110a3000,
-0x24100000,0x1410001,0x110a3700,0x24000000,0x30200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000,0xe00002,0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,
-0xe30000,0x110a3d11,0x7c00900,0x1230400,0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000,0x110a3e14,0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,
-0x110a3e14,0x7c00900,0x1230000,0x110a3e14,0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16,0x7c00100,0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,
-0x7c00900,0x1230c00,0x110a3f16,0x7c00900,0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100,0xe30402,0x110a4112,0x7c80100,0xe30402,0x110a4400,0x4000000,
-0xe00000,0x110a4412,0x4000000,0xe00002,0x110a4412,0x4000000,0xe00003,0x110a4416,0x4000000,0xe00c03,0x110a4500,0x4000000,0xe0000d,0x110a4516,0x4000000,0xe00c0d,
-0x110a4711,0x7c40300,0xe30000,0x110a4f11,0x7c00300,0xe30001,0x110a4f11,0x7c40300,0xe30000,0x110a5300,0x4000000,0x810010,0x110a5300,0x4000000,0xe00002,0x110a5300,
-0x4000000,0xe00010,0x110a5300,0x4000000,0x1410010,0x110a5300,0x4000002,0xe70010,0x110a5300,0x4000008,0x810010,0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,
-0xe01c02,0x110a5300,0x6800000,0xe01c10,0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c,0x110a5400,0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,
-0x110a5400,0x4000000,0x160000c,0x110a5400,0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,
-0x4000010,0x127100c,0x110a5400,0x4000020,0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,0x110a5400,0xc000010,0xb4800c,0x11400a0c,0xc000010,
-0x1049400,0x11400c0e,0x4000010,0xb00000,0x11400c0e,0x4000010,0x1071400,0x11400c0e,0xc000010,0xb48000,0x11400c11,0x7c00900,0x230400,0x11400f34,0xc000010,0x448000,
-0x11400f44,0xc000010,0x448000,0x11401d70,0x4000000,0x200000,0x11403d92,0x4000000,0xe00000,0x11445787,0x4000004,0x120000a,0x11445787,0x4000008,0x81000a,0x11445787,
-0x4000008,0x141000a,0x11445787,0x4000010,0x87000a,0x11445787,0xc000010,0x84800a,0x11445790,0x3802500,0x126246a,0x11445790,0x7c00d00,0x2530c0a,0x114a3d87,0x24000000,
-0x810000,0x114a3d87,0x24000000,0x1410000,0x114a3d87,0x24000008,0x810000,0x114a3d87,0x24000008,0x1410000,0x114a3d87,0x24000010,0x870000,0x114a3d87,0x2c000010,0x848000,
-0x114a3d8d,0x4000000,0xe00000,0x114a3d8d,0x24000000,0xe00000,0x114a3d8d,0x24000002,0x1200000,0x114a3d8d,0x24000002,0x10e00000,0x114a3d8d,0x24000008,0x810000,0x114a3d8d,
-0x24000008,0x1410000,0x114a3d90,0x7c00900,0x930c00,0x114a3d90,0x7c00900,0xe30c00,0x114a3d92,0x7c00300,0xe30000,0x114a3e90,0x7000400,0x1200c02,0x114a3f87,0x4000004,
-0x1200000,0x114a3f90,0x7c00d00,0x2530c00,0x114a4292,0x4000000,0xe00000,0x114a4292,0x4000000,0xe0000f,0x114a4492,0x4000000,0xe00002,0x114a4492,0x4000000,0xe00003,
-0x114a4492,0x4000000,0x10e00003,0x114a4592,0x4000000,0xe00002,0x114a4592,0x4000000,0xe0000d,0x1180090a,0x2802400,0x962460,0x11800c17,0x2802100,0x962460,0x11800c17,
-0x2802500,0x962460,0x11800f1d,0x2802400,0x962460,0x11800f29,0x2802400,0x962460,0x11820700,0x2802400,0x962460,0x11820700,0x2802500,0x962460,0x118a3d93,0x2802400,
-0x962460,0x118a3e90,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c1b,0x6800000,0x1329800,0x11c00f58,0x6800000,0x1329800,
-0x11c0105d,0x6800000,0x1329800,0x11c01161,0x6800000,0x1329800,0x11c01265,0x6800000,0x1329800,0x11c01469,0x4000000,0x200000,0x11c01469,0x6800000,0x1329800,0x11c01469,
-0x7c00100,0x230400,0x11c0511b,0x7c00100,0x230408,0x20000067,0x1000,0,0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,
-0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,
-0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,
-0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,
-0x962540,0x20001b27,0x7c00100,0x230400,0x20001b27,0x7c00100,0x230401,0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900020,
-0x20004c67,0,0x1900020,0x20004d67,0,0x1900020,0x20006d67,0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,
-0,0,0x200a4a12,0x7c00100,0x1f304c1,0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,
-0x220400,0x30000419,0x7c00100,0x220401,0x30000419,0x7c00100,0x250400,0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200400,
-0x30000600,0x7c00500,0x230400,0x30000605,0x4000400,0x200000,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,
-0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400000,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,
-0x230400,0x30000d22,0,0x218960,0x30000d22,0x2802100,0x962460,0x30000d22,0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,
-0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,0x248000,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,
-0x2802100,0x962460,0x30001821,0x2806400,0x962460,0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,
-0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,
-0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,
-0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,
-0x200000,0x30001f0b,0x4000010,0x400000,0x30001f0b,0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,
-0x30002128,0x4000010,0x200000,0x30002128,0x7c00100,0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,
-0x4000001,0x440000,0x3000221d,0x7c00100,0x230400,0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,
-0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,
-0x30002417,0x4000010,0x400000,0x30002417,0x4000010,0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,
-0x7d00100,0x1830000,0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,
-0x500000,0x3000251b,0x4000010,0x400000,0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,
-0x3000251b,0x7c00900,0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x4000001,0xc41c0b,0x30002800,0x24000000,0x200000,0x30002800,
-0x2c000010,0x1248002,0x30002800,0x2c000010,0x11248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,
-0x10220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,
-0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500400,0x30020701,
-0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,
-0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,
-0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x30402576,0x4000010,0x400000,0x30402576,0x4000010,0xb70000,0x30402576,0xc000010,0xb48000,0x304a3d92,
-0x4000000,0xe00000,0x30800c17,0x2802100,0x962460,0x30c01c6e,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,
-0,0x3100581e,0x4000000,0x200000,0x3100581e,0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,
-0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,
-0x4000000,0x200001,0x31005c00,0x6800000,0x962540,0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,
-0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,
-0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,
-0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,
-0x1e18820,0x32002800,0x80020,0x218820,0x32002800,0x4000001,0x440002,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x200002,0x32002800,0x24000020,0x200000,
-0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,
-0x2802020,0x962460,0x32002c00,0x4000000,0x200000,0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,
-0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,
-0x32003600,0x24000020,0x200000,0x32003600,0x24000020,0x10200000,0x32003700,0x24000000,0x100000,0x32003700,0x24000000,0x200000,0x32003700,0x24000000,0x10200000,0x32003800,
-0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,
-0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806000,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,0x2806000,0x962460,
-0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,
-0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006800,0x24000020,0x10200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,
-0x810000,0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,
-0x32023300,0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,0x810000,0x32086600,
-0x24000020,0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x30200000,0x320a3d11,0x7c00100,0x1230400,0x320a3e14,0x7c00100,
-0xe30010,0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,0x7c00300,0xe30001,
-0x320a6b16,0x7c00100,0x2530c00,0x32406372,0xc000010,0x448000,0x324a3d95,0x4000000,0x10e00000,0x324a3d95,0x7c00100,0x1230400,0x324a3f90,0x4000002,0x1200c00,0x324a538d,
-0x24000000,0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,0x4000080e,0x7c00100,
-0x220400,0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0,0x218960,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,
-0x40000c02,0x2802500,0x962460,0x40000c02,0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000d22,0x7c00100,0x230400,0x40000f0a,
-0x7c00100,0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,0x4000120f,0x4000000,
-0x1600000,0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,0x2802400,0x962460,
-0x40001615,0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,0x200000,0x40002c00,
-0x4000000,0x200002,0x40003000,0x24000000,0x10200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40003700,0x24000000,0x10200000,0x40005a09,0x7c00100,
-0x220400,0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,
-0x40006f30,0x6800000,0x1329800,0x40006f30,0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,
-0x4000000,0x200000,0x40007208,0x7c00100,0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,
-0x220400,0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007300,0x24000000,0x10200000,
-0x40007400,0x4000000,0x200000,0x40007531,0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,
-0x7c00100,0x230400,0x40007a32,0x6800000,0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,
-0x962460,0x40020701,0x2802400,0xc62460,0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x30200000,0x400a3700,0x24000000,0x30e00000,
-0x400a4400,0x4000000,0xe0000d,0x400a4412,0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,
-0x4000000,0x1410010,0x404077b8,0x4000000,0x200000,0x404077bb,0x4000000,0x200000,0x404077bb,0x4000000,0x400000,0x40c0511b,0x4000000,0x200000,0x41000419,0x7c00100,
-0x220400,0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,
-0x41000b13,0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0xb00000,0x41000c02,
-0x4000000,0x1500000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,
-0x230400,0x41001d0c,0x7c00100,0x23040f,0x41001f0b,0x2802100,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,
-0x41002800,0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,
-0x7c00120,0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0x10200000,0x41003700,0x24000000,0x10205200,0x41003700,0x24000000,
-0x10e00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,
-0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,
-0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,
-0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,
-0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,
-0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,
-0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,0x41008939,0xc000010,0x448000,0x41008a00,0x4000000,0x200000,0x41008b3b,0x4000000,0x1800000,
-0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,
-0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,
-0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802000,0x962460,0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,
-0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,
-0x2802000,0xc62460,0x410a3700,0x24000000,0x30200000,0x410a3700,0x24000000,0x30e00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,
-0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,
-0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x414a8292,0x4000000,0xe00000,0x41808300,
-0x2802000,0x962460,0x41c01469,0x6800000,0x1329800,0x50000419,0x7c00100,0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,
-0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,
-0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,
-0x24000020,0x200000,0x50003700,0x24000000,0x200000,0x50005d00,0x7c00120,0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,
-0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,
-0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,
-0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,
-0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x962540,
-0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,
-0x4000400,0x200400,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,
-0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409a92,0x4000000,0x200000,
-0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,
-0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,
-0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,
-0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,
-0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802400,0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,
-0x1329800,0x51001c1c,0x6800000,0x1862400,0x51001c1c,0x6800100,0x1862400,0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800400,0x1862400,0x51001c1c,0x7c00100,0x1830000,
-0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,
-0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,
-0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,
-0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008a00,0x7c00500,0x230400,0x51008e00,
-0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,
-0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,
-0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,0x4000000,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,
-0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,
-0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802c00,0x962460,
-0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,
-0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,
-0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,
-0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,
-0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,
-0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,
-0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,
-0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0x200000,0x5100a442,0x6800000,0x1329800,0x5100a442,0x6800100,
-0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,
-0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,
-0x4000000,0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,
-0x30200000,0x510aaa00,0x4000000,0x30e00000,0x5140a2b3,0x4000400,0x400000,0x514a8292,0x4000000,0xe00000,0x51802b84,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,
-0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,
-0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800400,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,
-0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,
-0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,
-0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,
-0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,
-0x5200ac7e,0x7c00100,0x230400,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,
-0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,
-0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,
-0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,
-0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,
-0x200000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0x1329800,0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,
-0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800400,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,
-0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,
-0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,
-0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,
-0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,
-0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,
-0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0,0x218960,0x5200c178,
-0x2802000,0x962460,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,
-0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,
-0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,
-0x24000000,0x10100000,0x52023700,0x24000000,0x10e00000,0x52023700,0x24000000,0x928045a0,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,
-0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,
-0x5202c300,0x4000100,0x10150400,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0x30e00000,0x520a3800,0x24000000,0x30100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,
-0x7c00300,0xe30001,0x520a7300,0x24000000,0x30100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac400,0x4000000,
-0x30e0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af78,0x6800400,0x962540,0x5240af78,0x7c00100,0x230400,0x5240af79,0x4000400,0x200000,
-0x5240af79,0x6800100,0x962540,0x5240b298,0x4000000,0x200000,0x5240b2a2,0x4000000,0x200000,0x5240b2a2,0x4000000,0x1500000,0x5240b5b6,0x7c00900,0x230400,0x524a4492,
-0x4000000,0xe00003,0x5280af78,0x2802400,0x962460,0x5280af79,0x2802400,0x962460,0x5280af7b,0x2802400,0x962460,0x5280af7d,0x2802400,0x962460,0x52c0b3ad,0x2802400,
-0x962460,0x52c0b3b1,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,
-0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,
-0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802000,0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,
-0x10200000,0x60003000,0x24000000,0x10e00000,0x60003700,0x24000000,0x200000,0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,
-0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802000,0x962460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,
-0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x32703580,0x6000c654,0x2802000,
-0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,
-0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,0x7c00100,0x230400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,
-0x2806000,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,0x200000,0x6000c941,0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,
-0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000,0x100000,
-0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d,0x6002c300,0x4000100,0x10150400,0x600a3000,0x24000000,0x30200000,0x600a3000,
-0x24000000,0x30e00000,0x600a3700,0x24000000,0x30200000,0x600a3800,0x24000000,0x30200000,0x600a3800,0x24000000,0xb28045a0,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,
-0x30100000,0x600ac400,0x4000000,0x10e0000d,0x600ac400,0x4000000,0x30e0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0x30e00000,
-0x600acd00,0x4000000,0x30200000,0x600acd00,0x4000000,0x30e00000,0x600acd00,0x4000000,0x30e05200,0x600acd00,0x4000000,0xb28045a0,0x600acd00,0x4000000,0xb28049c0,0x600ace00,
-0x4000000,0x30e00000,0x600ace00,0x4000000,0xb28045a0,0x600acf00,0x4000000,0x30e00000,0x600acf00,0x4000000,0x30e05200,0x600acf00,0x4000000,0xb28045a0,0x600ad111,0x7c40300,
-0xe30000,0x604ac492,0x4000000,0x30e00003,0x61000a03,0x4000000,0x1600000,0x61000c02,0,0x218960,0x6100120f,0x4000000,0x200000,0x61001a18,0x7c00100,0x1830000,
-0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,0x7c00100,0x250400,0x6100870c,
-0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,0x230400,0x61009519,0x7c00100,
-0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,0x61009b71,0x7c00100,0x230400,
-0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,0x2802500,0x962460,0x6100d202,
-0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,0x962461,0x6100d476,0x2806400,
-0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,0x6100d476,0xc000010,0x448000,
-0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,0x7c00900,0x230400,0x6100d573,
-0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,0x230400,0x6100d85c,0x2802400,0x962460,0x6100d85c,0x6800100,0x962540,0x6100d85c,0x7c00100,
-0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,0x6100d997,0x6800000,0x1329800,
-0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,0xc000010,0x448000,0x6100da98,
-0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,0x962460,0x6100dc99,0x6800000,
-0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,
-0x610ace00,0x4000000,0x30e00000,0x6140af78,0x7c00100,0x230400,0x6140af79,0x6800100,0x962540,0x6140af82,0x7c00100,0x230400,0x6180af79,0x2802400,0x962460,0x62002a00,
-0x4000000,0x1600000,0x63000c00,0x80000,0x918820,0x63002800,0x80000,0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0,
-0x218960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,
-0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,
-0x24000000,0x200000,0x70003000,0x24000000,0x10200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,
-0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,
-0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,
-0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,
-0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,
-0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802400,0x1862460,0x7000b61c,0x6800400,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,
-0x2806000,0x962460,0x7000cc00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x10200000,0x7000cd00,0x4000000,
-0x10e00000,0x7000cd00,0x4000000,0x10e05200,0x7000cd00,0x4000000,0x928045a0,0x7000cf00,0x4000000,0xe00000,0x7000cf00,0x4000000,0x10e00000,0x7000d202,0x2802100,0x962460,
-0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,
-0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2000,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,
-0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,
-0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,
-0x6804400,0x962540,0x7000e489,0x7c00100,0x230400,0x7000e489,0x7c00900,0x230400,0x7000e59d,0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,
-0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,
-0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,
-0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,
-0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,
-0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,
-0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,
-0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,
-0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802400,0x1862460,0x7000ee1c,0x6800000,0x1329800,0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,
-0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,
-0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,0x1710000,0x7000f34b,0x2802100,0x962460,0x7000f34b,0x4000000,0x200000,
-0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,
-0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,
-0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,
-0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,
-0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,
-0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,
-0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0x30e00000,0x700acd00,
-0x4000000,0xb28045a0,0x700ace00,0x4000000,0x30e00000,0x700acf00,0x4000000,0x30e00000,0x700acf00,0x4000000,0xb28045a0,0x7040dfbd,0x4000000,0x200000,0x7040f7c1,0x80000,
-0x918820,0x7080af79,0x2802400,0x962460,0x7080dfbd,0x2802400,0x962460,0x70c0e4bf,0x2802400,0x962460,0x70c0e4bf,0x6800100,0x962540,0x8000120f,0x7c00100,0x230400,
-0x80001524,0x7c00100,0x230400,0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,
-0x4000000,0x200000,0x80005208,0x2802400,0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,
-0x230400,0x80009519,0x7c00100,0x250400,0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,
-0x8000cd00,0x4000000,0xe00000,0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802400,0x962460,0x8000d997,
-0x4000000,0x200000,0x8000d997,0x4000000,0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,
-0x962460,0x8000e489,0x7c00100,0x230400,0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,
-0x8000fda1,0x2802100,0x1862460,0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862540,0x8000fda1,
-0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,
-0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,
-0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,
-0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0x30e00000,0x800acd00,0x4000000,0x72904de0,0x800ace00,0x4000000,
-0x30e00000,0x800acf00,0x4000000,0x30e00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0x30e00000,0x800b0500,0x4000000,0xb28045a0,0x90001615,0x7c00100,0x230400,
-0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802000,0x962460,0x90008e00,
-0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,
-0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,0x900107a7,0x2802c00,0x962460,
-0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,0x2802100,0x962460,0x900108a8,
-0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,0x1329800,0x900108a8,0x6800100,
-0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,0x90010ca9,0x2802100,0x962460,
-0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,0x4000000,0x500000,0x90010eaa,
-0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,0x400000,0x90010eaa,0x4000010,
-0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,0x90010fab,0x7c00100,0x220400,
-0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0x30e00000,0x900acd00,0x4000000,0xb28045a0,0x900acf00,
-0x4000000,0x30e00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x30e00000,0x900b0500,0x4000000,0xb28045a0,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,
-0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000};
+0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0,0x7567,0,0,0x7667,0,0,0x7767,
+0,0,0x7867,0,0,0x7a67,0,0,0x7b67,0,0,0x7c67,0,0,0x7e67,0,
+0,0x7f67,0,0,0x8167,0,0,0x8267,0,0,0x8367,0,0,0x8467,0,0,
+0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8867,0,0,0x8967,0,0,0x8b67,
+0,0,0x8c67,0,0,0x8e67,0x20000000,0,0x8f67,0,0,0x9067,0,0,0x9167,0,
+0,0x9267,0,0,0x9367,0,0,0x9567,0,0,0x9667,0,0,0x9767,0,0,
+0x9867,0,0,0x9967,0,0,0x9a67,0,0,0x9c67,0,0,0x9f67,0,0,0xa167,
+0,0,0xa367,0,0,0xa467,0,0,0xa567,0,0,0xa667,0,0,0xa767,0,
+0,0xa867,0,0,0xa967,0,0,0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0,0,
+0xad67,0,0,0xae67,0,0,0xaf67,0,0,0xb167,0,0,0xb267,0,0,0xb367,
+0,0,0xb467,0,0,0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,
+0,0xba67,0,0,0xbc67,0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,
+0xc067,0,0,0xc167,0,0,0xc267,0,0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,
+0,0,0xc767,0,0,0xc867,0,0,0xc967,0,0,0xca67,0,0,0xcb67,0,
+0,0xcc67,0,0xe00000,0xcf67,0,0xe00000,0xd067,0,0xe00000,0xd267,0,0,0xd367,0,0,
+0xd467,0,0,0xd567,0,0,0xd667,0,0,0xd867,0,0,0xd967,0,0,0xda67,
+0,0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,0xdf67,0,
+0,0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0xe00000,0xe467,0,0,
+0xe567,0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,0,0xea67,
+0,0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,0xef67,0,
+0,0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,0,0,
+0xf867,0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0,0,0xfc67,0,0,0xfd67,
+0,0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,0x10467,0,
+0,0x10567,0,0xe00000,0x10667,0,0,0x10767,0,0,0x10867,0,0,0x10967,0,0,
+0x10a67,0,0,0x10b67,0,0,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0,0x10f67,
+0,0,0x11067,0,0,0x11167,0,0,0xa0067,0,0xe00000,0xa4667,0,0xe00000,0xa4767,0,
+0xe00000,0xa4f67,0,0xe00000,0xa5e67,0,0xe00000,0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,0xe00000,
+0xb0067,0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,0x11000100,
+0x40000001,0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x10200000,0x11000200,0x24000008,
+0x1710000,0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,0x220402,
+0x11000319,0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,0x11000419,
+0x7c00100,0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,0x7c00100,
+0x230400,0x11000600,0x4000400,0x200000,0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x201000,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,0x230400,
+0x11000600,0x7c00500,0x530400,0x11000600,0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,0x11000800,
+0x6800010,0x201001,0x11000800,0x7c00500,0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,0x4000400,
+0x200002,0x1100080e,0x7000500,0x220402,0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,0x250400,
+0x1100080e,0x7c00100,0x250401,0x1100080e,0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,0x11000908,
+0x7c00100,0x220401,0x11000908,0x7c00100,0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200000,0x11000a03,0x4000000,0x270000,0x11000a03,0x7c00100,
+0x220400,0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000b13,0x2802500,0x962460,0x11000b13,0x4000000,0x200000,
+0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,0x2633800,0x11000c00,
+0,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,0x11000c02,0x4000000,
+0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,0x7c00100,0x230402,
+0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000c02,0xc000010,0xb48000,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,0x962460,0x11000f0a,
+0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,0x11001004,0x2802100,
+0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000,0x11001004,0x6800100,0x962540,
+0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110,0x2802400,0x962460,0x11001110,
+0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,0x1100120f,0x2802400,
+0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,0x2802400,0x962460,
+0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,0x962541,0x1100131f,
+0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100,0x962540,0x11001423,0x6800100,
+0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461,0x11001524,0x2806400,0x962460,
+0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615,0x2806400,0x962460,0x11001615,
+0x6800000,0x1329800,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,0x2806400,
+0x962460,0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,0x1600000,
+0x11001926,0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,0x11001926,
+0x6800000,0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,0x2802100,
+0x1862460,0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,0x1830002,
+0x11001a18,0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,0x11001e12,
+0x7c00100,0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,0x4000400,
+0x200001,0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,0x918820,
+0x11002800,0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x440001,0x11002800,0x4000001,0x440002,0x11002800,0x4000001,0xc4000b,0x11002800,
+0x6800000,0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,0x24000000,
+0x1410000,0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,0x1410000,
+0x11002800,0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x11248002,0x11002800,
+0x40000001,0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0x2a65620,0x11002801,0x82000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000,
+0x20000f,0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,0x141000e,
+0x11002900,0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,0x11002a00,
+0x4000000,0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,0x4000000,
+0x20000f,0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,0x230402,
+0x11002c00,0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,0x11002d00,
+0x4000000,0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,0x24000020,
+0x200000,0x11002e00,0x24000020,0x200001,0x11002e00,0x24000020,0x10200000,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,0x200002,
+0x11002f00,0x24000020,0xf00000,0x11002f00,0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000000,0x10200000,0x11003000,
+0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,0x4000000,
+0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000000,0x10200000,
+0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000,0x11003700,0x24000000,0x10200000,0x11003700,0x24000000,0x10e00000,0x11003700,
+0x24000000,0x928045a0,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,0x24000000,
+0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x10200000,0x11003800,0x24000000,0x10b00000,0x11003800,0x24000000,0x10e00000,0x11003800,0x24000000,0x10e05200,
+0x11003800,0x24000000,0x928045a0,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020,0x200005,0x11005013,0x7c00100,0x2633801,0x11005013,
+0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005100,0x24000000,0x810000,0x11005100,0x24000000,0x1410000,0x11005102,0x7000100,
+0x230408,0x11005102,0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,0x962460,
+0x11005500,0x80000,0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,0x11005502,
+0x7c00100,0x230409,0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,0x4000400,
+0x100002,0x11020200,0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,0x1500000,
+0x11020200,0x24000000,0x1600000,0x11020200,0x24000000,0x10200000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,0x11020219,
+0x7c00100,0x220400,0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,0x7c00100,
+0x220402,0x11020319,0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,0x220400,
+0x11020600,0x4000400,0x100002,0x11020600,0x4000400,0x200000,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,0x11020701,
+0x2802400,0x962461,0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,0x7c00100,
+0x220401,0x11020908,0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,0x200002,
+0x11022800,0x24000000,0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,0x11022800,
+0x24000002,0x370000,0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,0x24000020,
+0x100000,0x11022800,0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,0x12040f,
+0x11022c00,0x4000000,0x100002,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x4000000,0x1010000f,0x11022c00,0x7c00120,0x120405,0x11022c0e,
+0x7c00100,0x250401,0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,0x7c00100,
+0x150402,0x11022e00,0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022e00,0x24000020,0x10100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,0x100001,
+0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,0x11023300,
+0x4000100,0x150403,0x11023300,0x4000100,0x10150403,0x11023400,0x24000000,0x100000,0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,0x24000020,
+0x100000,0x11023600,0x24000020,0x10100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000,0x11023700,0x24000000,0x10100000,0x11023700,0x24000000,0x10e00000,
+0x11023700,0x24000020,0x100000,0x11023700,0x24000020,0x10100000,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,0x11024e67,0,0,0x11025600,
+0x4000000,0x100000,0x11042a00,0x4000000,0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,0x7c00100,0xe3040a,0x11045712,0x7c80100,
+0xe3040a,0x11045716,0x7c00100,0xe30c0a,0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x440011,0x11065700,0x4000000,0x810011,0x11065700,0x4000000,0xe00011,
+0x11065700,0x4000000,0x1410011,0x11065700,0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,0x11065700,0x4000008,0xe00011,0x11065700,
+0x4000008,0xe02c11,0x11065700,0x4000010,0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,0x4000020,0xe00011,0x11065700,0x4000400,
+0xe00011,0x11065700,0x4000420,0xe00011,0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe00011,0x11065700,0xc000010,0x80ac11,0x11065700,0xc000010,0xb48011,
+0x11065719,0x7c00100,0xe20411,0x11065719,0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,0x11080100,0x6800000,0x201c00,0x11080100,
+0x68000c0,0x11329800,0x11080100,0x24000000,0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,0x24000000,0x1500000,0x11080100,0x24000000,
+0x1600000,0x11080100,0x24000000,0x1b00000,0x11080100,0x24000000,0x2410000,0x11080100,0x24000000,0x10200000,0x11080100,0x24000006,0xd70000,0x11080100,0x24000008,0x1713c00,
+0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400,0x11080100,0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,0x11080100,0x24000020,0x200000,0x11080100,
+0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100,0x24000400,0x200000,0x11080100,0x24000420,0x200000,0x11080100,0x2c000010,0xb48000,0x11080100,0x2c000010,
+0x100ac00,0x11080100,0x44000001,0x1a40000,0x11080119,0x7c00100,0x220400,0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,0x220400,0x11080119,0x7c001c0,0x250400,
+0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000,0x11080200,0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,0x11080200,0x24000020,0x200000,0x110a1e12,
+0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000,0x24000000,0x30e00000,0x110a3000,0x24100000,0x810001,0x110a3000,0x24100000,0x1410001,0x110a3700,0x24000000,
+0x30200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000,0xe00002,0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,0xe30000,0x110a3d11,0x7c00900,0x1230400,
+0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000,0x110a3e14,0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,0x110a3e14,0x7c00900,0x1230000,0x110a3e14,
+0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16,0x7c00100,0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,0x7c00900,0x1230c00,0x110a3f16,0x7c00900,
+0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100,0xe30402,0x110a4112,0x7c80100,0xe30402,0x110a4400,0x4000000,0xe00000,0x110a4412,0x4000000,0xe00002,
+0x110a4412,0x4000000,0xe00003,0x110a4416,0x4000000,0xe00c03,0x110a4500,0x4000000,0xe0000d,0x110a4516,0x4000000,0xe00c0d,0x110a4711,0x7c40300,0xe30000,0x110a4f11,
+0x7c00300,0xe30001,0x110a4f11,0x7c40300,0xe30000,0x110a5300,0x4000000,0x810010,0x110a5300,0x4000000,0xe00002,0x110a5300,0x4000000,0xe00010,0x110a5300,0x4000000,
+0x1410010,0x110a5300,0x4000002,0xe70010,0x110a5300,0x4000008,0x810010,0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,0xe01c02,0x110a5300,0x6800000,0xe01c10,
+0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c,0x110a5400,0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,0x110a5400,0x4000000,0x160000c,0x110a5400,
+0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,0x4000010,0x127100c,0x110a5400,0x4000020,
+0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,0x110a5400,0xc000010,0xb4800c,0x11400a0c,0xc000010,0x1049400,0x11400c0e,0x4000010,0xb00000,
+0x11400c0e,0x4000010,0x1071400,0x11400c0e,0xc000010,0xb48000,0x11400c11,0x7c00900,0x230400,0x11400f34,0xc000010,0x448000,0x11400f44,0xc000010,0x448000,0x11401d70,
+0x4000000,0x200000,0x11403d92,0x4000000,0xe00000,0x11445787,0x4000004,0x120000a,0x11445787,0x4000008,0x81000a,0x11445787,0x4000008,0x141000a,0x11445787,0x4000010,
+0x87000a,0x11445787,0xc000010,0x84800a,0x11445790,0x3802500,0x126246a,0x11445790,0x7c00d00,0x2530c0a,0x114a3d87,0x24000000,0x810000,0x114a3d87,0x24000000,0x1410000,
+0x114a3d87,0x24000008,0x810000,0x114a3d87,0x24000008,0x1410000,0x114a3d87,0x24000010,0x870000,0x114a3d87,0x2c000010,0x848000,0x114a3d8d,0x4000000,0xe00000,0x114a3d8d,
+0x24000000,0xe00000,0x114a3d8d,0x24000002,0x1200000,0x114a3d8d,0x24000002,0x10e00000,0x114a3d8d,0x24000008,0x810000,0x114a3d8d,0x24000008,0x1410000,0x114a3d90,0x7c00900,
+0x930c00,0x114a3d90,0x7c00900,0xe30c00,0x114a3d92,0x7c00300,0xe30000,0x114a3e90,0x7000400,0x1200c02,0x114a3f87,0x4000004,0x1200000,0x114a3f90,0x7c00d00,0x2530c00,
+0x114a4292,0x4000000,0xe00000,0x114a4292,0x4000000,0xe0000f,0x114a4492,0x4000000,0xe00002,0x114a4492,0x4000000,0xe00003,0x114a4492,0x4000000,0x10e00003,0x114a4592,
+0x4000000,0xe00002,0x114a4592,0x4000000,0xe0000d,0x1180090a,0x2802400,0x962460,0x11800c17,0x2802100,0x962460,0x11800c17,0x2802500,0x962460,0x11800f1d,0x2802400,
+0x962460,0x11800f29,0x2802400,0x962460,0x11820700,0x2802400,0x962460,0x11820700,0x2802500,0x962460,0x118a3d93,0x2802400,0x962460,0x118a3e90,0x2802400,0x962460,
+0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c1b,0x6800000,0x1329800,0x11c00f58,0x6800000,0x1329800,0x11c0105d,0x6800000,0x1329800,0x11c01161,
+0x6800000,0x1329800,0x11c01265,0x6800000,0x1329800,0x11c01469,0x4000000,0x200000,0x11c01469,0x6800000,0x1329800,0x11c01469,0x7c00100,0x230400,0x11c0511b,0x7c00100,
+0x230408,0x20000067,0x1000,0,0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,
+0x20001b27,0x2802400,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,
+0x4000000,0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,
+0xb00000,0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,0x962540,0x20001b27,0x7c00100,0x230400,
+0x20001b27,0x7c00100,0x230401,0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900020,0x20004c67,0,0x1900020,0x20004d67,
+0,0x1900020,0x20006d67,0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,
+0x1f304c1,0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,0x220400,0x30000419,0x7c00100,0x220401,
+0x30000419,0x7c00100,0x250400,0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200000,0x30000600,0x7c00500,0x230400,0x30000605,
+0x4000400,0x200000,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,
+0x250400,0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400000,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0,0x218960,
+0x30000d22,0x2802100,0x962460,0x30000d22,0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,
+0x7c00100,0x230400,0x30000d22,0xc000010,0x248000,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,
+0x962460,0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,
+0x30001b27,0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,
+0x2802400,0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,
+0x1830000,0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,0x200000,0x30001f0b,0x4000010,0x400000,
+0x30001f0b,0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,0x30002128,0x4000010,0x200000,0x30002128,
+0x7c00100,0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x440000,0x3000221d,0x7c00100,
+0x230400,0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,
+0x30002417,0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,
+0x4000010,0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x3000251b,0x80000,
+0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,0x4000010,0x400000,
+0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,0x230400,0x3000251b,
+0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x4000001,0xc41c0b,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002800,0x2c000010,
+0x11248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x10220405,0x30002d19,0x7c00100,0x250400,
+0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,
+0x24000000,0x200000,0x30005013,0x7c00100,0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500000,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,
+0xc62460,0x300a3a11,0x4020000,0xe00000,0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,
+0x300a3d11,0x7c00300,0xe30002,0x300a4305,0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,
+0x4000000,0xe00000,0x30402576,0x4000010,0x400000,0x30402576,0x4000010,0xb70000,0x30402576,0xc000010,0xb48000,0x304a3d92,0x4000000,0xe00000,0x30800c17,0x2802100,
+0x962460,0x30c01c6e,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,
+0x3100581e,0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,
+0x80000,0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,
+0x962540,0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,
+0x31005d00,0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,
+0x7c00100,0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,
+0x250400,0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,
+0x32002800,0x4000001,0x440002,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x200002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,
+0x7c00100,0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,
+0x200000,0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,
+0x32002f00,0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003600,
+0x24000020,0x10200000,0x32003700,0x24000000,0x100000,0x32003700,0x24000000,0x200000,0x32003700,0x24000000,0x10200000,0x32003800,0x24000000,0x810000,0x32003800,0x24000000,
+0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,0x250400,0x3200622a,0x2802100,0x962460,
+0x3200622a,0x2806000,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,0x2806000,0x962460,0x3200632b,0x7c00100,0x230400,0x3200642c,
+0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,0x24000020,0x200000,0x32006700,0x24000020,
+0x200000,0x32006800,0x24000020,0x200000,0x32006800,0x24000020,0x10200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,0x810000,0x32006900,0x24000020,0x1410000,
+0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,0x32023300,0x4000000,0x100000,0x32026c01,
+0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,0x810000,0x32086600,0x24000020,0x1410000,0x32086900,0x24000020,
+0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x30200000,0x320a3d11,0x7c00100,0x1230400,0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100,0x2530000,
+0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00,0x32406372,
+0xc000010,0x448000,0x324a3d95,0x4000000,0x10e00000,0x324a3d95,0x7c00100,0x1230400,0x324a3f90,0x4000002,0x1200c00,0x324a538d,0x24000000,0xe00000,0x32820701,0x2802000,
+0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200000,0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100,0x250400,
+0x4000080e,0x7c00100,0x250402,0x40000c02,0,0x218960,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,0x2802500,0x962460,0x40000c02,
+0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000d22,0x7c00100,0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004,0x7c00100,
+0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100,0x230400,
+0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,0x2802400,0x962460,0x40001615,0x7c00100,0x230400,0x40002417,
+0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,0x200000,0x40002c00,0x4000000,0x200002,0x40003000,0x24000000,
+0x10200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40003700,0x24000000,0x10200000,0x40005a09,0x7c00100,0x220400,0x40005a09,0x7c00100,0x250400,
+0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,0x6800000,0x1329800,0x40006f30,
+0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,0x200000,0x40007208,0x7c00100,
+0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,0x40007219,0x7c00500,0x220400,
+0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007300,0x24000000,0x10200000,0x40007400,0x4000000,0x200000,0x40007531,
+0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,
+0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,
+0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x30200000,0x400a3700,0x24000000,0x30e00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,
+0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x404077b8,0x4000000,
+0x200000,0x404077bb,0x4000000,0x200000,0x404077bb,0x4000000,0x400000,0x40c0511b,0x4000000,0x200000,0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100,0x250400,
+0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,0x41000b13,0x2802000,0x962460,0x41000b13,
+0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0xb00000,0x41000c02,0x4000000,0x1500000,0x41000f0a,0x7c00100,
+0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,0x230400,0x41001d0c,0x7c00100,0x23040f,
+0x41001f0b,0x2802100,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,0x41002800,0x24000000,0x400000,0x41002919,
+0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,0x7c00120,0x220405,0x41003000,0x24000000,
+0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0x10200000,0x41003700,0x24000000,0x10e00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,
+0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,
+0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,
+0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,
+0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,
+0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,
+0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,
+0x41008939,0xc000010,0x448000,0x41008a00,0x4000000,0x200000,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,
+0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,
+0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802000,0x962460,
+0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,
+0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x30200000,0x410a3700,0x24000000,
+0x30e00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,
+0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,
+0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x414a8292,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01469,0x6800000,0x1329800,0x50000419,0x7c00100,
+0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,
+0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,
+0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,0x200000,0x50005d00,0x7c00120,
+0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,
+0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,
+0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,
+0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,
+0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x962540,0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,
+0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200000,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,
+0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,
+0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409a92,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,
+0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,
+0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,
+0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,
+0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802400,
+0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800000,0x1862400,0x51001c1c,0x6800100,0x1862400,
+0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800400,0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,
+0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,
+0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,
+0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,
+0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,
+0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,
+0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,
+0x4000000,0x200000,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,
+0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,
+0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802c00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,
+0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,
+0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,
+0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,
+0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,
+0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,
+0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,
+0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,
+0x962460,0x5100a442,0x4000000,0x200000,0x5100a442,0x6800000,0x1329800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,
+0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,
+0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,
+0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,0x30200000,0x510aaa00,0x4000000,0x30e00000,0x5140a2b3,0x4000400,0x400000,
+0x514a8292,0x4000000,0xe00000,0x51802b84,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,
+0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,
+0x1862400,0x52001c1c,0x6800400,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,
+0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,
+0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,
+0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,
+0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,0x7c00100,0x230400,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,
+0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,
+0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,
+0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,
+0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,
+0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,0x200000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0x1329800,
+0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,
+0x6800400,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,
+0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,
+0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,
+0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,
+0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,
+0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,
+0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0,0x218960,0x5200c178,0x2802000,0x962460,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,
+0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,
+0x5200c178,0xc000010,0x448000,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,
+0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,0x10100000,0x52023700,0x24000000,0x10e00000,0x52023700,0x24000000,
+0x928045a0,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,
+0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,0x5202c300,0x4000100,0x10150400,0x520a1e12,0x7c00100,0x2130480,0x520a3700,
+0x24000000,0x30e00000,0x520a3800,0x24000000,0x30100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001,0x520a7300,0x24000000,0x30100000,0x520ab412,0x7c00100,
+0x2130480,0x520ac400,0x4000000,0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac400,0x4000000,0x30e0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,
+0x5240af78,0x6800400,0x962540,0x5240af78,0x7c00100,0x230400,0x5240af79,0x4000400,0x200000,0x5240af79,0x6800100,0x962540,0x5240b298,0x4000000,0x200000,0x5240b2a2,
+0x4000000,0x200000,0x5240b2a2,0x4000000,0x1500000,0x5240b5b6,0x7c00900,0x230400,0x524a4492,0x4000000,0xe00003,0x5280af78,0x2802400,0x962460,0x5280af79,0x2802400,
+0x962460,0x5280af7b,0x2802400,0x962460,0x5280af7d,0x2802400,0x962460,0x52c0b3ad,0x2802400,0x962460,0x52c0b3b1,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,
+0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,
+0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802000,
+0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x10200000,0x60003000,0x24000000,0x10e00000,0x60003700,0x24000000,0x200000,
+0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,
+0x2802000,0x962460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,
+0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x32703580,0x6000c654,0x2802000,0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,
+0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,
+0x7c00100,0x230400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806000,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,
+0x200000,0x6000c941,0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,
+0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,
+0x4000100,0x15040d,0x6002c300,0x4000100,0x10150400,0x600a3000,0x24000000,0x30200000,0x600a3000,0x24000000,0x30e00000,0x600a3700,0x24000000,0x30200000,0x600a3800,0x24000000,
+0x30200000,0x600a3800,0x24000000,0xb28045a0,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,0x30100000,0x600ac400,0x4000000,0x10e0000d,0x600ac400,0x4000000,0x30e0000d,
+0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0x30e00000,0x600acd00,0x4000000,0x30200000,0x600acd00,0x4000000,0x30e00000,0x600acd00,
+0x4000000,0x30e05200,0x600acd00,0x4000000,0xb0e00000,0x600acd00,0x4000000,0xb28045a0,0x600acd00,0x4000000,0xb28049c0,0x600ace00,0x4000000,0x30e00000,0x600ace00,0x4000000,
+0xb28045a0,0x600acf00,0x4000000,0x30e00000,0x600acf00,0x4000000,0xb28045a0,0x600ad111,0x7c40300,0xe30000,0x604ac492,0x4000000,0x30e00003,0x61000a03,0x4000000,0x1600000,
+0x61000c02,0,0x218960,0x6100120f,0x4000000,0x200000,0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,
+0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,
+0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,
+0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,0x61009b71,0x7c00100,0x230400,0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,
+0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,0x2802500,0x962460,0x6100d202,0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,
+0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,0x962461,0x6100d476,0x2806400,0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,
+0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,0x6100d476,0xc000010,0x448000,0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,
+0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,0x7c00900,0x230400,0x6100d573,0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,
+0x230400,0x6100d85c,0x2802400,0x962460,0x6100d85c,0x6800100,0x962540,0x6100d85c,0x7c00100,0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,
+0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,
+0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,
+0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,
+0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0x30e00000,0x6140af78,0x7c00100,0x230400,0x6140af79,
+0x6800100,0x962540,0x6140af82,0x7c00100,0x230400,0x6180af79,0x2802400,0x962460,0x62002a00,0x4000000,0x1600000,0x63000c00,0x80000,0x918820,0x63002800,0x80000,
+0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0,0x218960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,
+0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,
+0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,0x24000000,0x200000,0x70003000,0x24000000,0x10200000,0x70003800,0x24000000,
+0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,
+0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,
+0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,
+0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,
+0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802400,0x1862460,0x7000b61c,
+0x6800400,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0x962460,0x7000cc00,0x4000000,0xe00000,0x7000cd00,0x4000000,
+0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x10200000,0x7000cd00,0x4000000,0x10e00000,0x7000cd00,0x4000000,0x10e05200,0x7000cd00,0x4000000,0x90e00000,
+0x7000cd00,0x4000000,0x928045a0,0x7000cf00,0x4000000,0xe00000,0x7000cf00,0x4000000,0x10e00000,0x7000d202,0x2802100,0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,
+0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,
+0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2000,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,0x962460,0x7000e187,0x2802100,0x962460,
+0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,
+0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,0x6804400,0x962540,0x7000e489,0x7c00100,
+0x230400,0x7000e489,0x7c00900,0x230400,0x7000e59d,0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,
+0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,
+0x2802400,0x962460,0x7000e691,0x2806400,0x962460,0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,
+0x200000,0x7000e70e,0x7c00100,0x220400,0x7000e719,0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,
+0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,
+0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,
+0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,
+0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,
+0x2802400,0x1862460,0x7000ee1c,0x6800000,0x1329800,0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,
+0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,
+0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,0x1710000,0x7000f34b,0x2802100,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,
+0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,
+0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,
+0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,
+0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,
+0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,
+0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,
+0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0x30e00000,0x700acd00,0x4000000,0xb28045a0,0x700ace00,0x4000000,
+0x30e00000,0x700acf00,0x4000000,0x30e00000,0x700acf00,0x4000000,0xb0e00000,0x7040dfbd,0x4000000,0x200000,0x7040f7c1,0x80000,0x918820,0x7080af79,0x2802400,0x962460,
+0x7080dfbd,0x2802400,0x962460,0x70c0e4bf,0x2802400,0x962460,0x70c0e4bf,0x6800100,0x962540,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,0x8000171a,
+0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,0x2802400,
+0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,0x250400,
+0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0xe00000,0x8000d202,
+0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802400,0x962460,0x8000d997,0x4000000,0x200000,0x8000d997,0x4000000,
+0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,0x230400,
+0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,0x8000fda1,
+0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862540,0x8000fda1,0x7c00100,0x1830000,0x8000fda1,0xc000010,
+0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,0x220400,0x80010165,0x7c00100,0x230400,
+0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,0x8001044c,0x4000000,0x200000,0x8001044c,
+0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,0x4000010,0x400000,0x80010670,0xc000010,
+0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0x30e00000,0x800acd00,0x4000000,0x72904de0,0x800ace00,0x4000000,0x30e00000,0x800acf00,0x4000000,0x30e00000,
+0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0x30e00000,0x800b0500,0x4000000,0xb28045a0,0x90001615,0x7c00100,0x230400,0x9000171a,0x4000000,0x200000,0x9000171a,
+0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802000,0x962460,0x90008e00,0x24000000,0x400000,0x90009519,0x7c00100,
+0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,0x962460,0x9000d202,0x7c00100,0x230400,
+0x9000e59d,0x2802100,0x962460,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,
+0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,
+0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,
+0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,
+0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,
+0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,
+0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,
+0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0x30e00000,0x900acd00,0x4000000,0xb28045a0,0x900acf00,0x4000000,0x30e00000,0x900b0500,0x4000000,
+0xe00000,0x900b0500,0x4000000,0x30e00000,0x900b0500,0x4000000,0xb28045a0,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,0xe30000,0x900b119a,0x7c00300,0xe30000,
+0x90408e06,0x24000000,0x400000};
 
-static const int32_t countPropsVectors=6279;
+static const int32_t countPropsVectors=6195;
 static const int32_t propsVectorsColumns=3;
 static const uint16_t scriptExtensions[194]={
 0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,3,0x800c,2,0x22,
@@ -3581,6 +3539,6 @@ static const uint16_t scriptExtensions[194]={
 0x8023,0xa,0xaf,0x19,0x1c,0x804f,0x37,0x804e,0x2f,0x31,0x8053,0x2f,0x8031,2,0x8007,0x89,
 0x67,0x8087};
 
-static const int32_t indexes[UPROPS_INDEX_COUNT]={0x28aa,0x28aa,0x28aa,0x28aa,0x6196,3,0x7a1d,0x7a7e,0x7a7e,0x7a7e,0xb11ae,0x2a75631,0,0,0,0};
+static const int32_t indexes[UPROPS_INDEX_COUNT]={0x28aa,0x28aa,0x28aa,0x28aa,0x606c,3,0x789f,0x7900,0x7900,0x7900,0xb11ae,0x2a75631,0,0,0,0};
 
 #endif  // INCLUDED_FROM_UCHAR_C
index e0b33af..d04d315 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrie.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -175,8 +175,7 @@ UCharsTrie::next(int32_t uchar) {
 }
 
 UStringTrieResult
-UCharsTrie::next(ConstChar16Ptr ptr, int32_t sLength) {
-    const UChar *s=ptr;
+UCharsTrie::next(const UChar *s, int32_t sLength) {
     if(sLength<0 ? *s==0 : sLength==0) {
         // Empty input.
         return current();
index 694648d..412a58a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstriebuilder.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b313224..68ba8c2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrieiterator.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -21,7 +21,7 @@
 
 U_NAMESPACE_BEGIN
 
-UCharsTrie::Iterator::Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLength,
+UCharsTrie::Iterator::Iterator(const UChar *trieUChars, int32_t maxStringLength,
                                UErrorCode &errorCode)
         : uchars_(trieUChars),
           pos_(uchars_), initialPos_(uchars_),
index 822168f..fd0a407 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -25,14 +25,14 @@ UCharCharacterIterator::UCharCharacterIterator()
     // never default construct!
 }
 
-UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
+UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
                                                int32_t length)
   : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0),
   text(textPtr)
 {
 }
 
-UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
+UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
                                                int32_t length,
                                                int32_t position)
   : CharacterIterator(textPtr != 0 ? (length>=0 ? length : u_strlen(textPtr)) : 0, position),
@@ -40,7 +40,7 @@ UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
 {
 }
 
-UCharCharacterIterator::UCharCharacterIterator(ConstChar16Ptr textPtr,
+UCharCharacterIterator::UCharCharacterIterator(const UChar* textPtr,
                                                int32_t length,
                                                int32_t textBegin,
                                                int32_t textEnd,
@@ -349,7 +349,7 @@ UCharCharacterIterator::move32(int32_t delta, CharacterIterator::EOrigin origin)
     return pos;
 }
 
-void UCharCharacterIterator::setText(ConstChar16Ptr newText,
+void UCharCharacterIterator::setText(const UChar* newText,
                                      int32_t      newTextLength) {
     text = newText;
     if(newText == 0 || newTextLength < 0) {
index fe6666e..3c8c66a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucln.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8cabf13..e089fb2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  ucln_cmn.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a6ecfd5..56fa730 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  ucln_cmn.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1bfcde0..352776a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucln_imp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -121,9 +121,7 @@ U_CAPI void U_EXPORT2 UCLN_FINI ()
 /* READ READ READ READ!    Are you getting compilation errors from windows.h?
           Any source file which includes this (ucln_imp.h) header MUST 
           be defined with language extensions ON. */
-#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
-#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
diff --git a/source/common/ucmndata.c b/source/common/ucmndata.c
new file mode 100644 (file)
index 0000000..6b7d78d
--- /dev/null
@@ -0,0 +1,384 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************/
+
+
+/*------------------------------------------------------------------------------
+ *
+ *   UCommonData   An abstract interface for dealing with ICU Common Data Files.
+ *                 ICU Common Data Files are a grouping of a number of individual
+ *                 data items (resources, converters, tables, anything) into a
+ *                 single file or dll.  The combined format includes a table of
+ *                 contents for locating the individual items by name.
+ *
+ *                 Two formats for the table of contents are supported, which is
+ *                 why there is an abstract inteface involved.
+ *
+ */
+
+#include "unicode/utypes.h"
+#include "unicode/udata.h"
+#include "cstring.h"
+#include "ucmndata.h"
+#include "udatamem.h"
+
+#if defined(UDATA_DEBUG) || defined(UDATA_DEBUG_DUMP)
+#   include <stdio.h>
+#endif
+
+U_CFUNC uint16_t
+udata_getHeaderSize(const DataHeader *udh) {
+    if(udh==NULL) {
+        return 0;
+    } else if(udh->info.isBigEndian==U_IS_BIG_ENDIAN) {
+        /* same endianness */
+        return udh->dataHeader.headerSize;
+    } else {
+        /* opposite endianness */
+        uint16_t x=udh->dataHeader.headerSize;
+        return (uint16_t)((x<<8)|(x>>8));
+    }
+}
+
+U_CFUNC uint16_t
+udata_getInfoSize(const UDataInfo *info) {
+    if(info==NULL) {
+        return 0;
+    } else if(info->isBigEndian==U_IS_BIG_ENDIAN) {
+        /* same endianness */
+        return info->size;
+    } else {
+        /* opposite endianness */
+        uint16_t x=info->size;
+        return (uint16_t)((x<<8)|(x>>8));
+    }
+}
+
+/*-----------------------------------------------------------------------------*
+ *                                                                             *
+ *  Pointer TOCs.   TODO: This form of table-of-contents should be removed     *
+ *                  because DLLs must be relocated on loading to correct the   *
+ *                  pointer values and this operation makes shared memory      *
+ *                  mapping of the data much less likely to work.              *
+ *                                                                             *
+ *-----------------------------------------------------------------------------*/
+typedef struct {
+    const char       *entryName;
+    const DataHeader *pHeader;
+} PointerTOCEntry;
+
+
+typedef struct  {
+    uint32_t          count;
+    uint32_t          reserved;
+    PointerTOCEntry   entry[2];   /* Actual size is from count. */
+}  PointerTOC;
+
+
+/* definition of OffsetTOC struct types moved to ucmndata.h */
+
+/*-----------------------------------------------------------------------------*
+ *                                                                             *
+ *    entry point lookup implementations                                       *
+ *                                                                             *
+ *-----------------------------------------------------------------------------*/
+
+#ifndef MIN
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+#endif
+
+/**
+ * Compare strings where we know the shared prefix length,
+ * and advance the prefix length as we find that the strings share even more characters.
+ */
+static int32_t
+strcmpAfterPrefix(const char *s1, const char *s2, int32_t *pPrefixLength) {
+    int32_t pl=*pPrefixLength;
+    int32_t cmp=0;
+    s1+=pl;
+    s2+=pl;
+    for(;;) {
+        int32_t c1=(uint8_t)*s1++;
+        int32_t c2=(uint8_t)*s2++;
+        cmp=c1-c2;
+        if(cmp!=0 || c1==0) {  /* different or done */
+            break;
+        }
+        ++pl;  /* increment shared same-prefix length */
+    }
+    *pPrefixLength=pl;
+    return cmp;
+}
+
+static int32_t
+offsetTOCPrefixBinarySearch(const char *s, const char *names,
+                            const UDataOffsetTOCEntry *toc, int32_t count) {
+    int32_t start=0;
+    int32_t limit=count;
+    /*
+     * Remember the shared prefix between s, start and limit,
+     * and don't compare that shared prefix again.
+     * The shared prefix should get longer as we narrow the [start, limit[ range.
+     */
+    int32_t startPrefixLength=0;
+    int32_t limitPrefixLength=0;
+    if(count==0) {
+        return -1;
+    }
+    /*
+     * Prime the prefix lengths so that we don't keep prefixLength at 0 until
+     * both the start and limit indexes have moved.
+     * At the same time, we find if s is one of the start and (limit-1) names,
+     * and if not, exclude them from the actual binary search.
+     */
+    if(0==strcmpAfterPrefix(s, names+toc[0].nameOffset, &startPrefixLength)) {
+        return 0;
+    }
+    ++start;
+    --limit;
+    if(0==strcmpAfterPrefix(s, names+toc[limit].nameOffset, &limitPrefixLength)) {
+        return limit;
+    }
+    while(start<limit) {
+        int32_t i=(start+limit)/2;
+        int32_t prefixLength=MIN(startPrefixLength, limitPrefixLength);
+        int32_t cmp=strcmpAfterPrefix(s, names+toc[i].nameOffset, &prefixLength);
+        if(cmp<0) {
+            limit=i;
+            limitPrefixLength=prefixLength;
+        } else if(cmp==0) {
+            return i;
+        } else {
+            start=i+1;
+            startPrefixLength=prefixLength;
+        }
+    }
+    return -1;
+}
+
+static int32_t
+pointerTOCPrefixBinarySearch(const char *s, const PointerTOCEntry *toc, int32_t count) {
+    int32_t start=0;
+    int32_t limit=count;
+    /*
+     * Remember the shared prefix between s, start and limit,
+     * and don't compare that shared prefix again.
+     * The shared prefix should get longer as we narrow the [start, limit[ range.
+     */
+    int32_t startPrefixLength=0;
+    int32_t limitPrefixLength=0;
+    if(count==0) {
+        return -1;
+    }
+    /*
+     * Prime the prefix lengths so that we don't keep prefixLength at 0 until
+     * both the start and limit indexes have moved.
+     * At the same time, we find if s is one of the start and (limit-1) names,
+     * and if not, exclude them from the actual binary search.
+     */
+    if(0==strcmpAfterPrefix(s, toc[0].entryName, &startPrefixLength)) {
+        return 0;
+    }
+    ++start;
+    --limit;
+    if(0==strcmpAfterPrefix(s, toc[limit].entryName, &limitPrefixLength)) {
+        return limit;
+    }
+    while(start<limit) {
+        int32_t i=(start+limit)/2;
+        int32_t prefixLength=MIN(startPrefixLength, limitPrefixLength);
+        int32_t cmp=strcmpAfterPrefix(s, toc[i].entryName, &prefixLength);
+        if(cmp<0) {
+            limit=i;
+            limitPrefixLength=prefixLength;
+        } else if(cmp==0) {
+            return i;
+        } else {
+            start=i+1;
+            startPrefixLength=prefixLength;
+        }
+    }
+    return -1;
+}
+
+static uint32_t offsetTOCEntryCount(const UDataMemory *pData) {
+    int32_t          retVal=0;
+    const UDataOffsetTOC *toc = (UDataOffsetTOC *)pData->toc;
+    if (toc != NULL) {
+        retVal = toc->count;
+    }
+    return retVal;
+}
+
+static const DataHeader *
+offsetTOCLookupFn(const UDataMemory *pData,
+                  const char *tocEntryName,
+                  int32_t *pLength,
+                  UErrorCode *pErrorCode) {
+    const UDataOffsetTOC  *toc = (UDataOffsetTOC *)pData->toc;
+    if(toc!=NULL) {
+        const char *base=(const char *)toc;
+        int32_t number, count=(int32_t)toc->count;
+
+        /* perform a binary search for the data in the common data's table of contents */
+#if defined (UDATA_DEBUG_DUMP)
+        /* list the contents of the TOC each time .. not recommended */
+        for(number=0; number<count; ++number) {
+            fprintf(stderr, "\tx%d: %s\n", number, &base[toc->entry[number].nameOffset]);
+        }
+#endif
+        number=offsetTOCPrefixBinarySearch(tocEntryName, base, toc->entry, count);
+        if(number>=0) {
+            /* found it */
+            const UDataOffsetTOCEntry *entry=toc->entry+number;
+#ifdef UDATA_DEBUG
+            fprintf(stderr, "%s: Found.\n", tocEntryName);
+#endif
+            if((number+1) < count) {
+                *pLength = (int32_t)(entry[1].dataOffset - entry->dataOffset);
+            } else {
+                *pLength = -1;
+            }
+            return (const DataHeader *)(base+entry->dataOffset);
+        } else {
+#ifdef UDATA_DEBUG
+            fprintf(stderr, "%s: Not found.\n", tocEntryName);
+#endif
+            return NULL;
+        }
+    } else {
+#ifdef UDATA_DEBUG
+        fprintf(stderr, "returning header\n");
+#endif
+
+        return pData->pHeader;
+    }
+}
+
+
+static uint32_t pointerTOCEntryCount(const UDataMemory *pData) {
+    const PointerTOC *toc = (PointerTOC *)pData->toc;
+    return (uint32_t)((toc != NULL) ? (toc->count) : 0);
+}
+
+
+static const DataHeader *pointerTOCLookupFn(const UDataMemory *pData,
+                   const char *name,
+                   int32_t *pLength,
+                   UErrorCode *pErrorCode) {
+    if(pData->toc!=NULL) {
+        const PointerTOC *toc = (PointerTOC *)pData->toc;
+        int32_t number, count=(int32_t)toc->count;
+
+#if defined (UDATA_DEBUG_DUMP)
+        /* list the contents of the TOC each time .. not recommended */
+        for(number=0; number<count; ++number) {
+            fprintf(stderr, "\tx%d: %s\n", number, toc->entry[number].entryName);
+        }
+#endif
+        number=pointerTOCPrefixBinarySearch(name, toc->entry, count);
+        if(number>=0) {
+            /* found it */
+#ifdef UDATA_DEBUG
+            fprintf(stderr, "%s: Found.\n", toc->entry[number].entryName);
+#endif
+            *pLength=-1;
+            return UDataMemory_normalizeDataPointer(toc->entry[number].pHeader);
+        } else {
+#ifdef UDATA_DEBUG
+            fprintf(stderr, "%s: Not found.\n", name);
+#endif
+            return NULL;
+        }
+    } else {
+        return pData->pHeader;
+    }
+}
+
+static const commonDataFuncs CmnDFuncs = {offsetTOCLookupFn,  offsetTOCEntryCount};
+static const commonDataFuncs ToCPFuncs = {pointerTOCLookupFn, pointerTOCEntryCount};
+
+
+
+/*----------------------------------------------------------------------*
+ *                                                                      *
+ *  checkCommonData   Validate the format of a common data file.        *
+ *                    Fill in the virtual function ptr based on TOC type *
+ *                    If the data is invalid, close the UDataMemory     *
+ *                    and set the appropriate error code.               *
+ *                                                                      *
+ *----------------------------------------------------------------------*/
+U_CFUNC void udata_checkCommonData(UDataMemory *udm, UErrorCode *err) {
+    if (U_FAILURE(*err)) {
+        return;
+    }
+
+    if(udm==NULL || udm->pHeader==NULL) {
+      *err=U_INVALID_FORMAT_ERROR;
+    } else if(!(udm->pHeader->dataHeader.magic1==0xda &&
+        udm->pHeader->dataHeader.magic2==0x27 &&
+        udm->pHeader->info.isBigEndian==U_IS_BIG_ENDIAN &&
+        udm->pHeader->info.charsetFamily==U_CHARSET_FAMILY)
+        ) {
+        /* header not valid */
+        *err=U_INVALID_FORMAT_ERROR;
+    }
+    else if (udm->pHeader->info.dataFormat[0]==0x43 &&
+        udm->pHeader->info.dataFormat[1]==0x6d &&
+        udm->pHeader->info.dataFormat[2]==0x6e &&
+        udm->pHeader->info.dataFormat[3]==0x44 &&
+        udm->pHeader->info.formatVersion[0]==1
+        ) {
+        /* dataFormat="CmnD" */
+        udm->vFuncs = &CmnDFuncs;
+        udm->toc=(const char *)udm->pHeader+udata_getHeaderSize(udm->pHeader);
+    }
+    else if(udm->pHeader->info.dataFormat[0]==0x54 &&
+        udm->pHeader->info.dataFormat[1]==0x6f &&
+        udm->pHeader->info.dataFormat[2]==0x43 &&
+        udm->pHeader->info.dataFormat[3]==0x50 &&
+        udm->pHeader->info.formatVersion[0]==1
+        ) {
+        /* dataFormat="ToCP" */
+        udm->vFuncs = &ToCPFuncs;
+        udm->toc=(const char *)udm->pHeader+udata_getHeaderSize(udm->pHeader);
+    }
+    else {
+        /* dataFormat not recognized */
+        *err=U_INVALID_FORMAT_ERROR;
+    }
+
+    if (U_FAILURE(*err)) {
+        /* If the data is no good and we memory-mapped it ourselves,
+         *  close the memory mapping so it doesn't leak.  Note that this has
+         *  no effect on non-memory mapped data, other than clearing fields in udm.
+         */
+        udata_close(udm);
+    }
+}
+
+/*
+ * TODO: Add a udata_swapPackageHeader() function that swaps an ICU .dat package
+ * header but not its sub-items.
+ * This function will be needed for automatic runtime swapping.
+ * Sub-items should not be swapped to limit the swapping to the parts of the
+ * package that are actually used.
+ *
+ * Since lengths of items are implicit in the order and offsets of their
+ * ToC entries, and since offsets are relative to the start of the ToC,
+ * a swapped version may need to generate a different data structure
+ * with pointers to the original data items and with their lengths
+ * (-1 for the last one if it is not known), and maybe even pointers to the
+ * swapped versions of the items.
+ * These pointers to swapped versions would establish a cache;
+ * instead, each open data item could simply own the storage for its swapped
+ * data. This fits better with the current design.
+ *
+ * markus 2003sep18 Jitterbug 2235
+ */
index cc126d5..9e87fad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/ucnv.c b/source/common/ucnv.c
new file mode 100644 (file)
index 0000000..527f86f
--- /dev/null
@@ -0,0 +1,2918 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1998-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+*  ucnv.c:
+*  Implements APIs for the ICU's codeset conversion library;
+*  mostly calls through internal functions;
+*  created by Bertrand A. Damiba
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   04/04/99    helena      Fixed internal header inclusion.
+*   05/09/00    helena      Added implementation to handle fallback mappings.
+*   06/20/2000  helena      OS/400 port changes; mostly typecast.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ustring.h"
+#include "unicode/ucnv.h"
+#include "unicode/ucnv_err.h"
+#include "unicode/uset.h"
+#include "unicode/utf.h"
+#include "unicode/utf16.h"
+#include "putilimp.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "uassert.h"
+#include "utracimp.h"
+#include "ustr_imp.h"
+#include "ucnv_imp.h"
+#include "ucnv_cnv.h"
+#include "ucnv_bld.h"
+
+/* size of intermediate and preflighting buffers in ucnv_convert() */
+#define CHUNK_SIZE 1024
+
+typedef struct UAmbiguousConverter {
+    const char *name;
+    const UChar variant5c;
+} UAmbiguousConverter;
+
+static const UAmbiguousConverter ambiguousConverters[]={
+    { "ibm-897_P100-1995", 0xa5 },
+    { "ibm-942_P120-1999", 0xa5 },
+    { "ibm-943_P130-1999", 0xa5 },
+    { "ibm-946_P100-1995", 0xa5 },
+    { "ibm-33722_P120-1999", 0xa5 },
+    { "ibm-1041_P100-1995", 0xa5 },
+    /*{ "ibm-54191_P100-2006", 0xa5 },*/
+    /*{ "ibm-62383_P100-2007", 0xa5 },*/
+    /*{ "ibm-891_P100-1995", 0x20a9 },*/
+    { "ibm-944_P100-1995", 0x20a9 },
+    { "ibm-949_P110-1999", 0x20a9 },
+    { "ibm-1363_P110-1997", 0x20a9 },
+    { "ISO_2022,locale=ko,version=0", 0x20a9 },
+    { "ibm-1088_P100-1995", 0x20a9 }
+};
+
+/*Calls through createConverter */
+U_CAPI UConverter* U_EXPORT2
+ucnv_open (const char *name,
+                       UErrorCode * err)
+{
+    UConverter *r;
+
+    if (err == NULL || U_FAILURE (*err)) {
+        return NULL;
+    }
+
+    r =  ucnv_createConverter(NULL, name, err);
+    return r;
+}
+
+U_CAPI UConverter* U_EXPORT2 
+ucnv_openPackage   (const char *packageName, const char *converterName, UErrorCode * err)
+{
+    return ucnv_createConverterFromPackage(packageName, converterName,  err);
+}
+
+/*Extracts the UChar* to a char* and calls through createConverter */
+U_CAPI UConverter*   U_EXPORT2
+ucnv_openU (const UChar * name,
+                         UErrorCode * err)
+{
+    char asciiName[UCNV_MAX_CONVERTER_NAME_LENGTH];
+
+    if (err == NULL || U_FAILURE(*err))
+        return NULL;
+    if (name == NULL)
+        return ucnv_open (NULL, err);
+    if (u_strlen(name) >= UCNV_MAX_CONVERTER_NAME_LENGTH)
+    {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    return ucnv_open(u_austrcpy(asciiName, name), err);
+}
+
+/* Copy the string that is represented by the UConverterPlatform enum
+ * @param platformString An output buffer
+ * @param platform An enum representing a platform
+ * @return the length of the copied string.
+ */
+static int32_t
+ucnv_copyPlatformString(char *platformString, UConverterPlatform pltfrm)
+{
+    switch (pltfrm)
+    {
+    case UCNV_IBM:
+        uprv_strcpy(platformString, "ibm-");
+        return 4;
+    case UCNV_UNKNOWN:
+        break;
+    }
+
+    /* default to empty string */
+    *platformString = 0;
+    return 0;
+}
+
+/*Assumes a $platform-#codepage.$CONVERTER_FILE_EXTENSION scheme and calls
+ *through createConverter*/
+U_CAPI UConverter*   U_EXPORT2
+ucnv_openCCSID (int32_t codepage,
+                UConverterPlatform platform,
+                UErrorCode * err)
+{
+    char myName[UCNV_MAX_CONVERTER_NAME_LENGTH];
+    int32_t myNameLen;
+
+    if (err == NULL || U_FAILURE (*err))
+        return NULL;
+
+    /* ucnv_copyPlatformString could return "ibm-" or "cp" */
+    myNameLen = ucnv_copyPlatformString(myName, platform);
+    T_CString_integerToString(myName + myNameLen, codepage, 10);
+
+    return ucnv_createConverter(NULL, myName, err);
+}
+
+/* Creating a temporary stack-based object that can be used in one thread, 
+and created from a converter that is shared across threads.
+*/
+
+U_CAPI UConverter* U_EXPORT2
+ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, UErrorCode *status)
+{
+    UConverter *localConverter, *allocatedConverter;
+    int32_t stackBufferSize;
+    int32_t bufferSizeNeeded;
+    char *stackBufferChars = (char *)stackBuffer;
+    UErrorCode cbErr;
+    UConverterToUnicodeArgs toUArgs = {
+        sizeof(UConverterToUnicodeArgs),
+            TRUE,
+            NULL,
+            NULL,
+            NULL,
+            NULL,
+            NULL,
+            NULL
+    };
+    UConverterFromUnicodeArgs fromUArgs = {
+        sizeof(UConverterFromUnicodeArgs),
+            TRUE,
+            NULL,
+            NULL,
+            NULL,
+            NULL,
+            NULL,
+            NULL
+    };
+
+    UTRACE_ENTRY_OC(UTRACE_UCNV_CLONE);
+
+    if (status == NULL || U_FAILURE(*status)){
+        UTRACE_EXIT_STATUS(status? *status: U_ILLEGAL_ARGUMENT_ERROR);
+        return NULL;
+    }
+
+    if (cnv == NULL) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        UTRACE_EXIT_STATUS(*status);
+        return NULL;
+    }
+
+    UTRACE_DATA3(UTRACE_OPEN_CLOSE, "clone converter %s at %p into stackBuffer %p",
+                                    ucnv_getName(cnv, status), cnv, stackBuffer);
+
+    if (cnv->sharedData->impl->safeClone != NULL) {
+        /* call the custom safeClone function for sizing */
+        bufferSizeNeeded = 0;
+        cnv->sharedData->impl->safeClone(cnv, NULL, &bufferSizeNeeded, status);
+        if (U_FAILURE(*status)) {
+            UTRACE_EXIT_STATUS(*status);
+            return NULL;
+        }
+    }
+    else
+    {
+        /* inherent sizing */
+        bufferSizeNeeded = sizeof(UConverter);
+    }
+
+    if (pBufferSize == NULL) {
+        stackBufferSize = 1;
+        pBufferSize = &stackBufferSize;
+    } else {
+        stackBufferSize = *pBufferSize;
+        if (stackBufferSize <= 0){ /* 'preflighting' request - set needed size into *pBufferSize */
+            *pBufferSize = bufferSizeNeeded;
+            UTRACE_EXIT_VALUE(bufferSizeNeeded);
+            return NULL;
+        }
+    }
+
+
+    /* Pointers on 64-bit platforms need to be aligned
+     * on a 64-bit boundary in memory.
+     */
+    if (U_ALIGNMENT_OFFSET(stackBuffer) != 0) {
+        int32_t offsetUp = (int32_t)U_ALIGNMENT_OFFSET_UP(stackBufferChars);
+        if(stackBufferSize > offsetUp) {
+            stackBufferSize -= offsetUp;
+            stackBufferChars += offsetUp;
+        } else {
+            /* prevent using the stack buffer but keep the size > 0 so that we do not just preflight */
+            stackBufferSize = 1;
+        }
+    }
+
+    stackBuffer = (void *)stackBufferChars;
+    
+    /* Now, see if we must allocate any memory */
+    if (stackBufferSize < bufferSizeNeeded || stackBuffer == NULL)
+    {
+        /* allocate one here...*/
+        localConverter = allocatedConverter = (UConverter *) uprv_malloc (bufferSizeNeeded);
+
+        if(localConverter == NULL) {
+            *status = U_MEMORY_ALLOCATION_ERROR;
+            UTRACE_EXIT_STATUS(*status);
+            return NULL;
+        }
+        *status = U_SAFECLONE_ALLOCATED_WARNING;
+
+        /* record the fact that memory was allocated */
+        *pBufferSize = bufferSizeNeeded;
+    } else {
+        /* just use the stack buffer */
+        localConverter = (UConverter*) stackBuffer;
+        allocatedConverter = NULL;
+    }
+
+    uprv_memset(localConverter, 0, bufferSizeNeeded);
+
+    /* Copy initial state */
+    uprv_memcpy(localConverter, cnv, sizeof(UConverter));
+    localConverter->isCopyLocal = localConverter->isExtraLocal = FALSE;
+
+    /* copy the substitution string */
+    if (cnv->subChars == (uint8_t *)cnv->subUChars) {
+        localConverter->subChars = (uint8_t *)localConverter->subUChars;
+    } else {
+        localConverter->subChars = (uint8_t *)uprv_malloc(UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
+        if (localConverter->subChars == NULL) {
+            uprv_free(allocatedConverter);
+            UTRACE_EXIT_STATUS(*status);
+            return NULL;
+        }
+        uprv_memcpy(localConverter->subChars, cnv->subChars, UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
+    }
+
+    /* now either call the safeclone fcn or not */
+    if (cnv->sharedData->impl->safeClone != NULL) {
+        /* call the custom safeClone function */
+        localConverter = cnv->sharedData->impl->safeClone(cnv, localConverter, pBufferSize, status);
+    }
+
+    if(localConverter==NULL || U_FAILURE(*status)) {
+        if (allocatedConverter != NULL && allocatedConverter->subChars != (uint8_t *)allocatedConverter->subUChars) {
+            uprv_free(allocatedConverter->subChars);
+        }
+        uprv_free(allocatedConverter);
+        UTRACE_EXIT_STATUS(*status);
+        return NULL;
+    }
+
+    /* increment refcount of shared data if needed */
+    if (cnv->sharedData->isReferenceCounted) {
+        ucnv_incrementRefCount(cnv->sharedData);
+    }
+
+    if(localConverter == (UConverter*)stackBuffer) {
+        /* we're using user provided data - set to not destroy */
+        localConverter->isCopyLocal = TRUE;
+    }
+
+    /* allow callback functions to handle any memory allocation */
+    toUArgs.converter = fromUArgs.converter = localConverter;
+    cbErr = U_ZERO_ERROR;
+    cnv->fromCharErrorBehaviour(cnv->toUContext, &toUArgs, NULL, 0, UCNV_CLONE, &cbErr);
+    cbErr = U_ZERO_ERROR;
+    cnv->fromUCharErrorBehaviour(cnv->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_CLONE, &cbErr);
+
+    UTRACE_EXIT_PTR_STATUS(localConverter, *status);
+    return localConverter;
+}
+
+
+
+/*Decreases the reference counter in the shared immutable section of the object
+ *and frees the mutable part*/
+
+U_CAPI void  U_EXPORT2
+ucnv_close (UConverter * converter)
+{
+    UErrorCode errorCode = U_ZERO_ERROR;
+
+    UTRACE_ENTRY_OC(UTRACE_UCNV_CLOSE);
+
+    if (converter == NULL)
+    {
+        UTRACE_EXIT();
+        return;
+    }
+
+    UTRACE_DATA3(UTRACE_OPEN_CLOSE, "close converter %s at %p, isCopyLocal=%b",
+        ucnv_getName(converter, &errorCode), converter, converter->isCopyLocal);
+
+    /* In order to speed up the close, only call the callbacks when they have been changed.
+    This performance check will only work when the callbacks are set within a shared library
+    or from user code that statically links this code. */
+    /* first, notify the callback functions that the converter is closed */
+    if (converter->fromCharErrorBehaviour != UCNV_TO_U_DEFAULT_CALLBACK) {
+        UConverterToUnicodeArgs toUArgs = {
+            sizeof(UConverterToUnicodeArgs),
+                TRUE,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL
+        };
+
+        toUArgs.converter = converter;
+        errorCode = U_ZERO_ERROR;
+        converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, NULL, 0, UCNV_CLOSE, &errorCode);
+    }
+    if (converter->fromUCharErrorBehaviour != UCNV_FROM_U_DEFAULT_CALLBACK) {
+        UConverterFromUnicodeArgs fromUArgs = {
+            sizeof(UConverterFromUnicodeArgs),
+                TRUE,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL
+        };
+        fromUArgs.converter = converter;
+        errorCode = U_ZERO_ERROR;
+        converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_CLOSE, &errorCode);
+    }
+
+    if (converter->sharedData->impl->close != NULL) {
+        converter->sharedData->impl->close(converter);
+    }
+
+    if (converter->subChars != (uint8_t *)converter->subUChars) {
+        uprv_free(converter->subChars);
+    }
+
+    if (converter->sharedData->isReferenceCounted) {
+        ucnv_unloadSharedDataIfReady(converter->sharedData);
+    }
+
+    if(!converter->isCopyLocal){
+        uprv_free(converter);
+    }
+
+    UTRACE_EXIT();
+}
+
+/*returns a single Name from the list, will return NULL if out of bounds
+ */
+U_CAPI const char*   U_EXPORT2
+ucnv_getAvailableName (int32_t n)
+{
+    if (0 <= n && n <= 0xffff) {
+        UErrorCode err = U_ZERO_ERROR;
+        const char *name = ucnv_bld_getAvailableConverter((uint16_t)n, &err);
+        if (U_SUCCESS(err)) {
+            return name;
+        }
+    }
+    return NULL;
+}
+
+U_CAPI int32_t   U_EXPORT2
+ucnv_countAvailable ()
+{
+    UErrorCode err = U_ZERO_ERROR;
+    return ucnv_bld_countAvailableConverters(&err);
+}
+
+U_CAPI void    U_EXPORT2
+ucnv_getSubstChars (const UConverter * converter,
+                    char *mySubChar,
+                    int8_t * len,
+                    UErrorCode * err)
+{
+    if (U_FAILURE (*err))
+        return;
+
+    if (converter->subCharLen <= 0) {
+        /* Unicode string or empty string from ucnv_setSubstString(). */
+        *len = 0;
+        return;
+    }
+
+    if (*len < converter->subCharLen) /*not enough space in subChars */
+    {
+        *err = U_INDEX_OUTOFBOUNDS_ERROR;
+        return;
+    }
+
+    uprv_memcpy (mySubChar, converter->subChars, converter->subCharLen);   /*fills in the subchars */
+    *len = converter->subCharLen; /*store # of bytes copied to buffer */
+}
+
+U_CAPI void    U_EXPORT2
+ucnv_setSubstChars (UConverter * converter,
+                    const char *mySubChar,
+                    int8_t len,
+                    UErrorCode * err)
+{
+    if (U_FAILURE (*err))
+        return;
+    
+    /*Makes sure that the subChar is within the codepages char length boundaries */
+    if ((len > converter->sharedData->staticData->maxBytesPerChar)
+     || (len < converter->sharedData->staticData->minBytesPerChar))
+    {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    
+    uprv_memcpy (converter->subChars, mySubChar, len); /*copies the subchars */
+    converter->subCharLen = len;  /*sets the new len */
+
+    /*
+    * There is currently (2001Feb) no separate API to set/get subChar1.
+    * In order to always have subChar written after it is explicitly set,
+    * we set subChar1 to 0.
+    */
+    converter->subChar1 = 0;
+    
+    return;
+}
+
+U_CAPI void U_EXPORT2
+ucnv_setSubstString(UConverter *cnv,
+                    const UChar *s,
+                    int32_t length,
+                    UErrorCode *err) {
+    UAlignedMemory cloneBuffer[U_CNV_SAFECLONE_BUFFERSIZE / sizeof(UAlignedMemory) + 1];
+    char chars[UCNV_ERROR_BUFFER_LENGTH];
+
+    UConverter *clone;
+    uint8_t *subChars;
+    int32_t cloneSize, length8;
+
+    /* Let the following functions check all arguments. */
+    cloneSize = sizeof(cloneBuffer);
+    clone = ucnv_safeClone(cnv, cloneBuffer, &cloneSize, err);
+    ucnv_setFromUCallBack(clone, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL, NULL, err);
+    length8 = ucnv_fromUChars(clone, chars, (int32_t)sizeof(chars), s, length, err);
+    ucnv_close(clone);
+    if (U_FAILURE(*err)) {
+        return;
+    }
+
+    if (cnv->sharedData->impl->writeSub == NULL
+#if !UCONFIG_NO_LEGACY_CONVERSION
+        || (cnv->sharedData->staticData->conversionType == UCNV_MBCS &&
+         ucnv_MBCSGetType(cnv) != UCNV_EBCDIC_STATEFUL)
+#endif
+    ) {
+        /* The converter is not stateful. Store the charset bytes as a fixed string. */
+        subChars = (uint8_t *)chars;
+    } else {
+        /*
+         * The converter has a non-default writeSub() function, indicating
+         * that it is stateful.
+         * Store the Unicode string for on-the-fly conversion for correct
+         * state handling.
+         */
+        if (length > UCNV_ERROR_BUFFER_LENGTH) {
+            /*
+             * Should not occur. The converter should output at least one byte
+             * per UChar, which means that ucnv_fromUChars() should catch all
+             * overflows.
+             */
+            *err = U_BUFFER_OVERFLOW_ERROR;
+            return;
+        }
+        subChars = (uint8_t *)s;
+        if (length < 0) {
+            length = u_strlen(s);
+        }
+        length8 = length * U_SIZEOF_UCHAR;
+    }
+
+    /*
+     * For storing the substitution string, select either the small buffer inside
+     * UConverter or allocate a subChars buffer.
+     */
+    if (length8 > UCNV_MAX_SUBCHAR_LEN) {
+        /* Use a separate buffer for the string. Outside UConverter to not make it too large. */
+        if (cnv->subChars == (uint8_t *)cnv->subUChars) {
+            /* Allocate a new buffer for the string. */
+            cnv->subChars = (uint8_t *)uprv_malloc(UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
+            if (cnv->subChars == NULL) {
+                cnv->subChars = (uint8_t *)cnv->subUChars;
+                *err = U_MEMORY_ALLOCATION_ERROR;
+                return;
+            }
+            uprv_memset(cnv->subChars, 0, UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
+        }
+    }
+
+    /* Copy the substitution string into the UConverter or its subChars buffer. */
+    if (length8 == 0) {
+        cnv->subCharLen = 0;
+    } else {
+        uprv_memcpy(cnv->subChars, subChars, length8);
+        if (subChars == (uint8_t *)chars) {
+            cnv->subCharLen = (int8_t)length8;
+        } else /* subChars == s */ {
+            cnv->subCharLen = (int8_t)-length;
+        }
+    }
+
+    /* See comment in ucnv_setSubstChars(). */
+    cnv->subChar1 = 0;
+}
+
+/*resets the internal states of a converter
+ *goal : have the same behaviour than a freshly created converter
+ */
+static void _reset(UConverter *converter, UConverterResetChoice choice,
+                   UBool callCallback) {
+    if(converter == NULL) {
+        return;
+    }
+
+    if(callCallback) {
+        /* first, notify the callback functions that the converter is reset */
+        UErrorCode errorCode;
+
+        if(choice<=UCNV_RESET_TO_UNICODE && converter->fromCharErrorBehaviour != UCNV_TO_U_DEFAULT_CALLBACK) {
+            UConverterToUnicodeArgs toUArgs = {
+                sizeof(UConverterToUnicodeArgs),
+                TRUE,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL
+            };
+            toUArgs.converter = converter;
+            errorCode = U_ZERO_ERROR;
+            converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, NULL, 0, UCNV_RESET, &errorCode);
+        }
+        if(choice!=UCNV_RESET_TO_UNICODE && converter->fromUCharErrorBehaviour != UCNV_FROM_U_DEFAULT_CALLBACK) {
+            UConverterFromUnicodeArgs fromUArgs = {
+                sizeof(UConverterFromUnicodeArgs),
+                TRUE,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL,
+                NULL
+            };
+            fromUArgs.converter = converter;
+            errorCode = U_ZERO_ERROR;
+            converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_RESET, &errorCode);
+        }
+    }
+
+    /* now reset the converter itself */
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        converter->toUnicodeStatus = converter->sharedData->toUnicodeStatus;
+        converter->mode = 0;
+        converter->toULength = 0;
+        converter->invalidCharLength = converter->UCharErrorBufferLength = 0;
+        converter->preToULength = 0;
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE) {
+        converter->fromUnicodeStatus = 0;
+        converter->fromUChar32 = 0;
+        converter->invalidUCharLength = converter->charErrorBufferLength = 0;
+        converter->preFromUFirstCP = U_SENTINEL;
+        converter->preFromULength = 0;
+    }
+
+    if (converter->sharedData->impl->reset != NULL) {
+        /* call the custom reset function */
+        converter->sharedData->impl->reset(converter, choice);
+    }
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_reset(UConverter *converter)
+{
+    _reset(converter, UCNV_RESET_BOTH, TRUE);
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_resetToUnicode(UConverter *converter)
+{
+    _reset(converter, UCNV_RESET_TO_UNICODE, TRUE);
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_resetFromUnicode(UConverter *converter)
+{
+    _reset(converter, UCNV_RESET_FROM_UNICODE, TRUE);
+}
+
+U_CAPI int8_t   U_EXPORT2
+ucnv_getMaxCharSize (const UConverter * converter)
+{
+    return converter->maxBytesPerUChar;
+}
+
+
+U_CAPI int8_t   U_EXPORT2
+ucnv_getMinCharSize (const UConverter * converter)
+{
+    return converter->sharedData->staticData->minBytesPerChar;
+}
+
+U_CAPI const char*   U_EXPORT2
+ucnv_getName (const UConverter * converter, UErrorCode * err)
+     
+{
+    if (U_FAILURE (*err))
+        return NULL;
+    if(converter->sharedData->impl->getName){
+        const char* temp= converter->sharedData->impl->getName(converter);
+        if(temp)
+            return temp;
+    }
+    return converter->sharedData->staticData->name;
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_getCCSID(const UConverter * converter,
+              UErrorCode * err)
+{
+    int32_t ccsid;
+    if (U_FAILURE (*err))
+        return -1;
+
+    ccsid = converter->sharedData->staticData->codepage;
+    if (ccsid == 0) {
+        /* Rare case. This is for cases like gb18030,
+        which doesn't have an IBM canonical name, but does have an IBM alias. */
+        const char *standardName = ucnv_getStandardName(ucnv_getName(converter, err), "IBM", err);
+        if (U_SUCCESS(*err) && standardName) {
+            const char *ccsidStr = uprv_strchr(standardName, '-');
+            if (ccsidStr) {
+                ccsid = (int32_t)atol(ccsidStr+1);  /* +1 to skip '-' */
+            }
+        }
+    }
+    return ccsid;
+}
+
+
+U_CAPI UConverterPlatform   U_EXPORT2
+ucnv_getPlatform (const UConverter * converter,
+                                      UErrorCode * err)
+{
+    if (U_FAILURE (*err))
+        return UCNV_UNKNOWN;
+
+    return (UConverterPlatform)converter->sharedData->staticData->platform;
+}
+
+U_CAPI void U_EXPORT2
+    ucnv_getToUCallBack (const UConverter * converter,
+                         UConverterToUCallback *action,
+                         const void **context)
+{
+    *action = converter->fromCharErrorBehaviour;
+    *context = converter->toUContext;
+}
+
+U_CAPI void U_EXPORT2
+    ucnv_getFromUCallBack (const UConverter * converter,
+                           UConverterFromUCallback *action,
+                           const void **context)
+{
+    *action = converter->fromUCharErrorBehaviour;
+    *context = converter->fromUContext;
+}
+
+U_CAPI void    U_EXPORT2
+ucnv_setToUCallBack (UConverter * converter,
+                            UConverterToUCallback newAction,
+                            const void* newContext,
+                            UConverterToUCallback *oldAction,
+                            const void** oldContext,
+                            UErrorCode * err)
+{
+    if (U_FAILURE (*err))
+        return;
+    if (oldAction) *oldAction = converter->fromCharErrorBehaviour;
+    converter->fromCharErrorBehaviour = newAction;
+    if (oldContext) *oldContext = converter->toUContext;
+    converter->toUContext = newContext;
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_setFromUCallBack (UConverter * converter,
+                            UConverterFromUCallback newAction,
+                            const void* newContext,
+                            UConverterFromUCallback *oldAction,
+                            const void** oldContext,
+                            UErrorCode * err)
+{
+    if (U_FAILURE (*err))
+        return;
+    if (oldAction) *oldAction = converter->fromUCharErrorBehaviour;
+    converter->fromUCharErrorBehaviour = newAction;
+    if (oldContext) *oldContext = converter->fromUContext;
+    converter->fromUContext = newContext;
+}
+
+static void
+_updateOffsets(int32_t *offsets, int32_t length,
+               int32_t sourceIndex, int32_t errorInputLength) {
+    int32_t *limit;
+    int32_t delta, offset;
+
+    if(sourceIndex>=0) {
+        /*
+         * adjust each offset by adding the previous sourceIndex
+         * minus the length of the input sequence that caused an
+         * error, if any
+         */
+        delta=sourceIndex-errorInputLength;
+    } else {
+        /*
+         * set each offset to -1 because this conversion function
+         * does not handle offsets
+         */
+        delta=-1;
+    }
+
+    limit=offsets+length;
+    if(delta==0) {
+        /* most common case, nothing to do */
+    } else if(delta>0) {
+        /* add the delta to each offset (but not if the offset is <0) */
+        while(offsets<limit) {
+            offset=*offsets;
+            if(offset>=0) {
+                *offsets=offset+delta;
+            }
+            ++offsets;
+        }
+    } else /* delta<0 */ {
+        /*
+         * set each offset to -1 because this conversion function
+         * does not handle offsets
+         * or the error input sequence started in a previous buffer
+         */
+        while(offsets<limit) {
+            *offsets++=-1;
+        }
+    }
+}
+
+/* ucnv_fromUnicode --------------------------------------------------------- */
+
+/*
+ * Implementation note for m:n conversions
+ *
+ * While collecting source units to find the longest match for m:n conversion,
+ * some source units may need to be stored for a partial match.
+ * When a second buffer does not yield a match on all of the previously stored
+ * source units, then they must be "replayed", i.e., fed back into the converter.
+ *
+ * The code relies on the fact that replaying will not nest -
+ * converting a replay buffer will not result in a replay.
+ * This is because a replay is necessary only after the _continuation_ of a
+ * partial match failed, but a replay buffer is converted as a whole.
+ * It may result in some of its units being stored again for a partial match,
+ * but there will not be a continuation _during_ the replay which could fail.
+ *
+ * It is conceivable that a callback function could call the converter
+ * recursively in a way that causes another replay to be stored, but that
+ * would be an error in the callback function.
+ * Such violations will cause assertion failures in a debug build,
+ * and wrong output, but they will not cause a crash.
+ */
+
+static void
+_fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
+    UConverterFromUnicode fromUnicode;
+    UConverter *cnv;
+    const UChar *s;
+    char *t;
+    int32_t *offsets;
+    int32_t sourceIndex;
+    int32_t errorInputLength;
+    UBool converterSawEndOfInput, calledCallback;
+
+    /* variables for m:n conversion */
+    UChar replay[UCNV_EXT_MAX_UCHARS];
+    const UChar *realSource, *realSourceLimit;
+    int32_t realSourceIndex;
+    UBool realFlush;
+
+    cnv=pArgs->converter;
+    s=pArgs->source;
+    t=pArgs->target;
+    offsets=pArgs->offsets;
+
+    /* get the converter implementation function */
+    sourceIndex=0;
+    if(offsets==NULL) {
+        fromUnicode=cnv->sharedData->impl->fromUnicode;
+    } else {
+        fromUnicode=cnv->sharedData->impl->fromUnicodeWithOffsets;
+        if(fromUnicode==NULL) {
+            /* there is no WithOffsets implementation */
+            fromUnicode=cnv->sharedData->impl->fromUnicode;
+            /* we will write -1 for each offset */
+            sourceIndex=-1;
+        }
+    }
+
+    if(cnv->preFromULength>=0) {
+        /* normal mode */
+        realSource=NULL;
+
+        /* avoid compiler warnings - not otherwise necessary, and the values do not matter */
+        realSourceLimit=NULL;
+        realFlush=FALSE;
+        realSourceIndex=0;
+    } else {
+        /*
+         * Previous m:n conversion stored source units from a partial match
+         * and failed to consume all of them.
+         * We need to "replay" them from a temporary buffer and convert them first.
+         */
+        realSource=pArgs->source;
+        realSourceLimit=pArgs->sourceLimit;
+        realFlush=pArgs->flush;
+        realSourceIndex=sourceIndex;
+
+        uprv_memcpy(replay, cnv->preFromU, -cnv->preFromULength*U_SIZEOF_UCHAR);
+        pArgs->source=replay;
+        pArgs->sourceLimit=replay-cnv->preFromULength;
+        pArgs->flush=FALSE;
+        sourceIndex=-1;
+
+        cnv->preFromULength=0;
+    }
+
+    /*
+     * loop for conversion and error handling
+     *
+     * loop {
+     *   convert
+     *   loop {
+     *     update offsets
+     *     handle end of input
+     *     handle errors/call callback
+     *   }
+     * }
+     */
+    for(;;) {
+        if(U_SUCCESS(*err)) {
+            /* convert */
+            fromUnicode(pArgs, err);
+
+            /*
+             * set a flag for whether the converter
+             * successfully processed the end of the input
+             *
+             * need not check cnv->preFromULength==0 because a replay (<0) will cause
+             * s<sourceLimit before converterSawEndOfInput is checked
+             */
+            converterSawEndOfInput=
+                (UBool)(U_SUCCESS(*err) &&
+                        pArgs->flush && pArgs->source==pArgs->sourceLimit &&
+                        cnv->fromUChar32==0);
+        } else {
+            /* handle error from ucnv_convertEx() */
+            converterSawEndOfInput=FALSE;
+        }
+
+        /* no callback called yet for this iteration */
+        calledCallback=FALSE;
+
+        /* no sourceIndex adjustment for conversion, only for callback output */
+        errorInputLength=0;
+
+        /*
+         * loop for offsets and error handling
+         *
+         * iterates at most 3 times:
+         * 1. to clean up after the conversion function
+         * 2. after the callback
+         * 3. after the callback again if there was truncated input
+         */
+        for(;;) {
+            /* update offsets if we write any */
+            if(offsets!=NULL) {
+                int32_t length=(int32_t)(pArgs->target-t);
+                if(length>0) {
+                    _updateOffsets(offsets, length, sourceIndex, errorInputLength);
+
+                    /*
+                     * if a converter handles offsets and updates the offsets
+                     * pointer at the end, then pArgs->offset should not change
+                     * here;
+                     * however, some converters do not handle offsets at all
+                     * (sourceIndex<0) or may not update the offsets pointer
+                     */
+                    pArgs->offsets=offsets+=length;
+                }
+
+                if(sourceIndex>=0) {
+                    sourceIndex+=(int32_t)(pArgs->source-s);
+                }
+            }
+
+            if(cnv->preFromULength<0) {
+                /*
+                 * switch the source to new replay units (cannot occur while replaying)
+                 * after offset handling and before end-of-input and callback handling
+                 */
+                if(realSource==NULL) {
+                    realSource=pArgs->source;
+                    realSourceLimit=pArgs->sourceLimit;
+                    realFlush=pArgs->flush;
+                    realSourceIndex=sourceIndex;
+
+                    uprv_memcpy(replay, cnv->preFromU, -cnv->preFromULength*U_SIZEOF_UCHAR);
+                    pArgs->source=replay;
+                    pArgs->sourceLimit=replay-cnv->preFromULength;
+                    pArgs->flush=FALSE;
+                    if((sourceIndex+=cnv->preFromULength)<0) {
+                        sourceIndex=-1;
+                    }
+
+                    cnv->preFromULength=0;
+                } else {
+                    /* see implementation note before _fromUnicodeWithCallback() */
+                    U_ASSERT(realSource==NULL);
+                    *err=U_INTERNAL_PROGRAM_ERROR;
+                }
+            }
+
+            /* update pointers */
+            s=pArgs->source;
+            t=pArgs->target;
+
+            if(U_SUCCESS(*err)) {
+                if(s<pArgs->sourceLimit) {
+                    /*
+                     * continue with the conversion loop while there is still input left
+                     * (continue converting by breaking out of only the inner loop)
+                     */
+                    break;
+                } else if(realSource!=NULL) {
+                    /* switch back from replaying to the real source and continue */
+                    pArgs->source=realSource;
+                    pArgs->sourceLimit=realSourceLimit;
+                    pArgs->flush=realFlush;
+                    sourceIndex=realSourceIndex;
+
+                    realSource=NULL;
+                    break;
+                } else if(pArgs->flush && cnv->fromUChar32!=0) {
+                    /*
+                     * the entire input stream is consumed
+                     * and there is a partial, truncated input sequence left
+                     */
+
+                    /* inject an error and continue with callback handling */
+                    *err=U_TRUNCATED_CHAR_FOUND;
+                    calledCallback=FALSE; /* new error condition */
+                } else {
+                    /* input consumed */
+                    if(pArgs->flush) {
+                        /*
+                         * return to the conversion loop once more if the flush
+                         * flag is set and the conversion function has not
+                         * successfully processed the end of the input yet
+                         *
+                         * (continue converting by breaking out of only the inner loop)
+                         */
+                        if(!converterSawEndOfInput) {
+                            break;
+                        }
+
+                        /* reset the converter without calling the callback function */
+                        _reset(cnv, UCNV_RESET_FROM_UNICODE, FALSE);
+                    }
+
+                    /* done successfully */
+                    return;
+                }
+            }
+
+            /* U_FAILURE(*err) */
+            {
+                UErrorCode e;
+
+                if( calledCallback ||
+                    (e=*err)==U_BUFFER_OVERFLOW_ERROR ||
+                    (e!=U_INVALID_CHAR_FOUND &&
+                     e!=U_ILLEGAL_CHAR_FOUND &&
+                     e!=U_TRUNCATED_CHAR_FOUND)
+                ) {
+                    /*
+                     * the callback did not or cannot resolve the error:
+                     * set output pointers and return
+                     *
+                     * the check for buffer overflow is redundant but it is
+                     * a high-runner case and hopefully documents the intent
+                     * well
+                     *
+                     * if we were replaying, then the replay buffer must be
+                     * copied back into the UConverter
+                     * and the real arguments must be restored
+                     */
+                    if(realSource!=NULL) {
+                        int32_t length;
+
+                        U_ASSERT(cnv->preFromULength==0);
+
+                        length=(int32_t)(pArgs->sourceLimit-pArgs->source);
+                        if(length>0) {
+                            u_memcpy(cnv->preFromU, pArgs->source, length);
+                            cnv->preFromULength=(int8_t)-length;
+                        }
+
+                        pArgs->source=realSource;
+                        pArgs->sourceLimit=realSourceLimit;
+                        pArgs->flush=realFlush;
+                    }
+
+                    return;
+                }
+            }
+
+            /* callback handling */
+            {
+                UChar32 codePoint;
+
+                /* get and write the code point */
+                codePoint=cnv->fromUChar32;
+                errorInputLength=0;
+                U16_APPEND_UNSAFE(cnv->invalidUCharBuffer, errorInputLength, codePoint);
+                cnv->invalidUCharLength=(int8_t)errorInputLength;
+
+                /* set the converter state to deal with the next character */
+                cnv->fromUChar32=0;
+
+                /* call the callback function */
+                cnv->fromUCharErrorBehaviour(cnv->fromUContext, pArgs,
+                    cnv->invalidUCharBuffer, errorInputLength, codePoint,
+                    *err==U_INVALID_CHAR_FOUND ? UCNV_UNASSIGNED : UCNV_ILLEGAL,
+                    err);
+            }
+
+            /*
+             * loop back to the offset handling
+             *
+             * this flag will indicate after offset handling
+             * that a callback was called;
+             * if the callback did not resolve the error, then we return
+             */
+            calledCallback=TRUE;
+        }
+    }
+}
+
+/*
+ * Output the fromUnicode overflow buffer.
+ * Call this function if(cnv->charErrorBufferLength>0).
+ * @return TRUE if overflow
+ */
+static UBool
+ucnv_outputOverflowFromUnicode(UConverter *cnv,
+                               char **target, const char *targetLimit,
+                               int32_t **pOffsets,
+                               UErrorCode *err) {
+    int32_t *offsets;
+    char *overflow, *t;
+    int32_t i, length;
+
+    t=*target;
+    if(pOffsets!=NULL) {
+        offsets=*pOffsets;
+    } else {
+        offsets=NULL;
+    }
+
+    overflow=(char *)cnv->charErrorBuffer;
+    length=cnv->charErrorBufferLength;
+    i=0;
+    while(i<length) {
+        if(t==targetLimit) {
+            /* the overflow buffer contains too much, keep the rest */
+            int32_t j=0;
+
+            do {
+                overflow[j++]=overflow[i++];
+            } while(i<length);
+
+            cnv->charErrorBufferLength=(int8_t)j;
+            *target=t;
+            if(offsets!=NULL) {
+                *pOffsets=offsets;
+            }
+            *err=U_BUFFER_OVERFLOW_ERROR;
+            return TRUE;
+        }
+
+        /* copy the overflow contents to the target */
+        *t++=overflow[i++];
+        if(offsets!=NULL) {
+            *offsets++=-1; /* no source index available for old output */
+        }
+    }
+
+    /* the overflow buffer is completely copied to the target */
+    cnv->charErrorBufferLength=0;
+    *target=t;
+    if(offsets!=NULL) {
+        *pOffsets=offsets;
+    }
+    return FALSE;
+}
+
+U_CAPI void U_EXPORT2
+ucnv_fromUnicode(UConverter *cnv,
+                 char **target, const char *targetLimit,
+                 const UChar **source, const UChar *sourceLimit,
+                 int32_t *offsets,
+                 UBool flush,
+                 UErrorCode *err) {
+    UConverterFromUnicodeArgs args;
+    const UChar *s;
+    char *t;
+
+    /* check parameters */
+    if(err==NULL || U_FAILURE(*err)) {
+        return;
+    }
+
+    if(cnv==NULL || target==NULL || source==NULL) {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    s=*source;
+    t=*target;
+
+    if ((const void *)U_MAX_PTR(sourceLimit) == (const void *)sourceLimit) {
+        /*
+        Prevent code from going into an infinite loop in case we do hit this
+        limit. The limit pointer is expected to be on a UChar * boundary.
+        This also prevents the next argument check from failing.
+        */
+        sourceLimit = (const UChar *)(((const char *)sourceLimit) - 1);
+    }
+
+    /*
+     * All these conditions should never happen.
+     *
+     * 1) Make sure that the limits are >= to the address source or target
+     *
+     * 2) Make sure that the buffer sizes do not exceed the number range for
+     * int32_t because some functions use the size (in units or bytes)
+     * rather than comparing pointers, and because offsets are int32_t values.
+     *
+     * size_t is guaranteed to be unsigned and large enough for the job.
+     *
+     * Return with an error instead of adjusting the limits because we would
+     * not be able to maintain the semantics that either the source must be
+     * consumed or the target filled (unless an error occurs).
+     * An adjustment would be targetLimit=t+0x7fffffff; for example.
+     *
+     * 3) Make sure that the user didn't incorrectly cast a UChar * pointer
+     * to a char * pointer and provide an incomplete UChar code unit.
+     */
+    if (sourceLimit<s || targetLimit<t ||
+        ((size_t)(sourceLimit-s)>(size_t)0x3fffffff && sourceLimit>s) ||
+        ((size_t)(targetLimit-t)>(size_t)0x7fffffff && targetLimit>t) ||
+        (((const char *)sourceLimit-(const char *)s) & 1) != 0)
+    {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    
+    /* output the target overflow buffer */
+    if( cnv->charErrorBufferLength>0 &&
+        ucnv_outputOverflowFromUnicode(cnv, target, targetLimit, &offsets, err)
+    ) {
+        /* U_BUFFER_OVERFLOW_ERROR */
+        return;
+    }
+    /* *target may have moved, therefore stop using t */
+
+    if(!flush && s==sourceLimit && cnv->preFromULength>=0) {
+        /* the overflow buffer is emptied and there is no new input: we are done */
+        return;
+    }
+
+    /*
+     * Do not simply return with a buffer overflow error if
+     * !flush && t==targetLimit
+     * because it is possible that the source will not generate any output.
+     * For example, the skip callback may be called;
+     * it does not output anything.
+     */
+
+    /* prepare the converter arguments */
+    args.converter=cnv;
+    args.flush=flush;
+    args.offsets=offsets;
+    args.source=s;
+    args.sourceLimit=sourceLimit;
+    args.target=*target;
+    args.targetLimit=targetLimit;
+    args.size=sizeof(args);
+
+    _fromUnicodeWithCallback(&args, err);
+
+    *source=args.source;
+    *target=args.target;
+}
+
+/* ucnv_toUnicode() --------------------------------------------------------- */
+
+static void
+_toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
+    UConverterToUnicode toUnicode;
+    UConverter *cnv;
+    const char *s;
+    UChar *t;
+    int32_t *offsets;
+    int32_t sourceIndex;
+    int32_t errorInputLength;
+    UBool converterSawEndOfInput, calledCallback;
+
+    /* variables for m:n conversion */
+    char replay[UCNV_EXT_MAX_BYTES];
+    const char *realSource, *realSourceLimit;
+    int32_t realSourceIndex;
+    UBool realFlush;
+
+    cnv=pArgs->converter;
+    s=pArgs->source;
+    t=pArgs->target;
+    offsets=pArgs->offsets;
+
+    /* get the converter implementation function */
+    sourceIndex=0;
+    if(offsets==NULL) {
+        toUnicode=cnv->sharedData->impl->toUnicode;
+    } else {
+        toUnicode=cnv->sharedData->impl->toUnicodeWithOffsets;
+        if(toUnicode==NULL) {
+            /* there is no WithOffsets implementation */
+            toUnicode=cnv->sharedData->impl->toUnicode;
+            /* we will write -1 for each offset */
+            sourceIndex=-1;
+        }
+    }
+
+    if(cnv->preToULength>=0) {
+        /* normal mode */
+        realSource=NULL;
+
+        /* avoid compiler warnings - not otherwise necessary, and the values do not matter */
+        realSourceLimit=NULL;
+        realFlush=FALSE;
+        realSourceIndex=0;
+    } else {
+        /*
+         * Previous m:n conversion stored source units from a partial match
+         * and failed to consume all of them.
+         * We need to "replay" them from a temporary buffer and convert them first.
+         */
+        realSource=pArgs->source;
+        realSourceLimit=pArgs->sourceLimit;
+        realFlush=pArgs->flush;
+        realSourceIndex=sourceIndex;
+
+        uprv_memcpy(replay, cnv->preToU, -cnv->preToULength);
+        pArgs->source=replay;
+        pArgs->sourceLimit=replay-cnv->preToULength;
+        pArgs->flush=FALSE;
+        sourceIndex=-1;
+
+        cnv->preToULength=0;
+    }
+
+    /*
+     * loop for conversion and error handling
+     *
+     * loop {
+     *   convert
+     *   loop {
+     *     update offsets
+     *     handle end of input
+     *     handle errors/call callback
+     *   }
+     * }
+     */
+    for(;;) {
+        if(U_SUCCESS(*err)) {
+            /* convert */
+            toUnicode(pArgs, err);
+
+            /*
+             * set a flag for whether the converter
+             * successfully processed the end of the input
+             *
+             * need not check cnv->preToULength==0 because a replay (<0) will cause
+             * s<sourceLimit before converterSawEndOfInput is checked
+             */
+            converterSawEndOfInput=
+                (UBool)(U_SUCCESS(*err) &&
+                        pArgs->flush && pArgs->source==pArgs->sourceLimit &&
+                        cnv->toULength==0);
+        } else {
+            /* handle error from getNextUChar() or ucnv_convertEx() */
+            converterSawEndOfInput=FALSE;
+        }
+
+        /* no callback called yet for this iteration */
+        calledCallback=FALSE;
+
+        /* no sourceIndex adjustment for conversion, only for callback output */
+        errorInputLength=0;
+
+        /*
+         * loop for offsets and error handling
+         *
+         * iterates at most 3 times:
+         * 1. to clean up after the conversion function
+         * 2. after the callback
+         * 3. after the callback again if there was truncated input
+         */
+        for(;;) {
+            /* update offsets if we write any */
+            if(offsets!=NULL) {
+                int32_t length=(int32_t)(pArgs->target-t);
+                if(length>0) {
+                    _updateOffsets(offsets, length, sourceIndex, errorInputLength);
+
+                    /*
+                     * if a converter handles offsets and updates the offsets
+                     * pointer at the end, then pArgs->offset should not change
+                     * here;
+                     * however, some converters do not handle offsets at all
+                     * (sourceIndex<0) or may not update the offsets pointer
+                     */
+                    pArgs->offsets=offsets+=length;
+                }
+
+                if(sourceIndex>=0) {
+                    sourceIndex+=(int32_t)(pArgs->source-s);
+                }
+            }
+
+            if(cnv->preToULength<0) {
+                /*
+                 * switch the source to new replay units (cannot occur while replaying)
+                 * after offset handling and before end-of-input and callback handling
+                 */
+                if(realSource==NULL) {
+                    realSource=pArgs->source;
+                    realSourceLimit=pArgs->sourceLimit;
+                    realFlush=pArgs->flush;
+                    realSourceIndex=sourceIndex;
+
+                    uprv_memcpy(replay, cnv->preToU, -cnv->preToULength);
+                    pArgs->source=replay;
+                    pArgs->sourceLimit=replay-cnv->preToULength;
+                    pArgs->flush=FALSE;
+                    if((sourceIndex+=cnv->preToULength)<0) {
+                        sourceIndex=-1;
+                    }
+
+                    cnv->preToULength=0;
+                } else {
+                    /* see implementation note before _fromUnicodeWithCallback() */
+                    U_ASSERT(realSource==NULL);
+                    *err=U_INTERNAL_PROGRAM_ERROR;
+                }
+            }
+
+            /* update pointers */
+            s=pArgs->source;
+            t=pArgs->target;
+
+            if(U_SUCCESS(*err)) {
+                if(s<pArgs->sourceLimit) {
+                    /*
+                     * continue with the conversion loop while there is still input left
+                     * (continue converting by breaking out of only the inner loop)
+                     */
+                    break;
+                } else if(realSource!=NULL) {
+                    /* switch back from replaying to the real source and continue */
+                    pArgs->source=realSource;
+                    pArgs->sourceLimit=realSourceLimit;
+                    pArgs->flush=realFlush;
+                    sourceIndex=realSourceIndex;
+
+                    realSource=NULL;
+                    break;
+                } else if(pArgs->flush && cnv->toULength>0) {
+                    /*
+                     * the entire input stream is consumed
+                     * and there is a partial, truncated input sequence left
+                     */
+
+                    /* inject an error and continue with callback handling */
+                    *err=U_TRUNCATED_CHAR_FOUND;
+                    calledCallback=FALSE; /* new error condition */
+                } else {
+                    /* input consumed */
+                    if(pArgs->flush) {
+                        /*
+                         * return to the conversion loop once more if the flush
+                         * flag is set and the conversion function has not
+                         * successfully processed the end of the input yet
+                         *
+                         * (continue converting by breaking out of only the inner loop)
+                         */
+                        if(!converterSawEndOfInput) {
+                            break;
+                        }
+
+                        /* reset the converter without calling the callback function */
+                        _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE);
+                    }
+
+                    /* done successfully */
+                    return;
+                }
+            }
+
+            /* U_FAILURE(*err) */
+            {
+                UErrorCode e;
+
+                if( calledCallback ||
+                    (e=*err)==U_BUFFER_OVERFLOW_ERROR ||
+                    (e!=U_INVALID_CHAR_FOUND &&
+                     e!=U_ILLEGAL_CHAR_FOUND &&
+                     e!=U_TRUNCATED_CHAR_FOUND &&
+                     e!=U_ILLEGAL_ESCAPE_SEQUENCE &&
+                     e!=U_UNSUPPORTED_ESCAPE_SEQUENCE)
+                ) {
+                    /*
+                     * the callback did not or cannot resolve the error:
+                     * set output pointers and return
+                     *
+                     * the check for buffer overflow is redundant but it is
+                     * a high-runner case and hopefully documents the intent
+                     * well
+                     *
+                     * if we were replaying, then the replay buffer must be
+                     * copied back into the UConverter
+                     * and the real arguments must be restored
+                     */
+                    if(realSource!=NULL) {
+                        int32_t length;
+
+                        U_ASSERT(cnv->preToULength==0);
+
+                        length=(int32_t)(pArgs->sourceLimit-pArgs->source);
+                        if(length>0) {
+                            uprv_memcpy(cnv->preToU, pArgs->source, length);
+                            cnv->preToULength=(int8_t)-length;
+                        }
+
+                        pArgs->source=realSource;
+                        pArgs->sourceLimit=realSourceLimit;
+                        pArgs->flush=realFlush;
+                    }
+
+                    return;
+                }
+            }
+
+            /* copy toUBytes[] to invalidCharBuffer[] */
+            errorInputLength=cnv->invalidCharLength=cnv->toULength;
+            if(errorInputLength>0) {
+                uprv_memcpy(cnv->invalidCharBuffer, cnv->toUBytes, errorInputLength);
+            }
+
+            /* set the converter state to deal with the next character */
+            cnv->toULength=0;
+
+            /* call the callback function */
+            if(cnv->toUCallbackReason==UCNV_ILLEGAL && *err==U_INVALID_CHAR_FOUND) {
+                cnv->toUCallbackReason = UCNV_UNASSIGNED;
+            }
+            cnv->fromCharErrorBehaviour(cnv->toUContext, pArgs,
+                cnv->invalidCharBuffer, errorInputLength,
+                cnv->toUCallbackReason,
+                err);
+            cnv->toUCallbackReason = UCNV_ILLEGAL; /* reset to default value */
+
+            /*
+             * loop back to the offset handling
+             *
+             * this flag will indicate after offset handling
+             * that a callback was called;
+             * if the callback did not resolve the error, then we return
+             */
+            calledCallback=TRUE;
+        }
+    }
+}
+
+/*
+ * Output the toUnicode overflow buffer.
+ * Call this function if(cnv->UCharErrorBufferLength>0).
+ * @return TRUE if overflow
+ */
+static UBool
+ucnv_outputOverflowToUnicode(UConverter *cnv,
+                             UChar **target, const UChar *targetLimit,
+                             int32_t **pOffsets,
+                             UErrorCode *err) {
+    int32_t *offsets;
+    UChar *overflow, *t;
+    int32_t i, length;
+
+    t=*target;
+    if(pOffsets!=NULL) {
+        offsets=*pOffsets;
+    } else {
+        offsets=NULL;
+    }
+
+    overflow=cnv->UCharErrorBuffer;
+    length=cnv->UCharErrorBufferLength;
+    i=0;
+    while(i<length) {
+        if(t==targetLimit) {
+            /* the overflow buffer contains too much, keep the rest */
+            int32_t j=0;
+
+            do {
+                overflow[j++]=overflow[i++];
+            } while(i<length);
+
+            cnv->UCharErrorBufferLength=(int8_t)j;
+            *target=t;
+            if(offsets!=NULL) {
+                *pOffsets=offsets;
+            }
+            *err=U_BUFFER_OVERFLOW_ERROR;
+            return TRUE;
+        }
+
+        /* copy the overflow contents to the target */
+        *t++=overflow[i++];
+        if(offsets!=NULL) {
+            *offsets++=-1; /* no source index available for old output */
+        }
+    }
+
+    /* the overflow buffer is completely copied to the target */
+    cnv->UCharErrorBufferLength=0;
+    *target=t;
+    if(offsets!=NULL) {
+        *pOffsets=offsets;
+    }
+    return FALSE;
+}
+
+U_CAPI void U_EXPORT2
+ucnv_toUnicode(UConverter *cnv,
+               UChar **target, const UChar *targetLimit,
+               const char **source, const char *sourceLimit,
+               int32_t *offsets,
+               UBool flush,
+               UErrorCode *err) {
+    UConverterToUnicodeArgs args;
+    const char *s;
+    UChar *t;
+
+    /* check parameters */
+    if(err==NULL || U_FAILURE(*err)) {
+        return;
+    }
+
+    if(cnv==NULL || target==NULL || source==NULL) {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    s=*source;
+    t=*target;
+
+    if ((const void *)U_MAX_PTR(targetLimit) == (const void *)targetLimit) {
+        /*
+        Prevent code from going into an infinite loop in case we do hit this
+        limit. The limit pointer is expected to be on a UChar * boundary.
+        This also prevents the next argument check from failing.
+        */
+        targetLimit = (const UChar *)(((const char *)targetLimit) - 1);
+    }
+
+    /*
+     * All these conditions should never happen.
+     *
+     * 1) Make sure that the limits are >= to the address source or target
+     *
+     * 2) Make sure that the buffer sizes do not exceed the number range for
+     * int32_t because some functions use the size (in units or bytes)
+     * rather than comparing pointers, and because offsets are int32_t values.
+     *
+     * size_t is guaranteed to be unsigned and large enough for the job.
+     *
+     * Return with an error instead of adjusting the limits because we would
+     * not be able to maintain the semantics that either the source must be
+     * consumed or the target filled (unless an error occurs).
+     * An adjustment would be sourceLimit=t+0x7fffffff; for example.
+     *
+     * 3) Make sure that the user didn't incorrectly cast a UChar * pointer
+     * to a char * pointer and provide an incomplete UChar code unit.
+     */
+    if (sourceLimit<s || targetLimit<t ||
+        ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s) ||
+        ((size_t)(targetLimit-t)>(size_t)0x3fffffff && targetLimit>t) ||
+        (((const char *)targetLimit-(const char *)t) & 1) != 0
+    ) {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    
+    /* output the target overflow buffer */
+    if( cnv->UCharErrorBufferLength>0 &&
+        ucnv_outputOverflowToUnicode(cnv, target, targetLimit, &offsets, err)
+    ) {
+        /* U_BUFFER_OVERFLOW_ERROR */
+        return;
+    }
+    /* *target may have moved, therefore stop using t */
+
+    if(!flush && s==sourceLimit && cnv->preToULength>=0) {
+        /* the overflow buffer is emptied and there is no new input: we are done */
+        return;
+    }
+
+    /*
+     * Do not simply return with a buffer overflow error if
+     * !flush && t==targetLimit
+     * because it is possible that the source will not generate any output.
+     * For example, the skip callback may be called;
+     * it does not output anything.
+     */
+
+    /* prepare the converter arguments */
+    args.converter=cnv;
+    args.flush=flush;
+    args.offsets=offsets;
+    args.source=s;
+    args.sourceLimit=sourceLimit;
+    args.target=*target;
+    args.targetLimit=targetLimit;
+    args.size=sizeof(args);
+
+    _toUnicodeWithCallback(&args, err);
+
+    *source=args.source;
+    *target=args.target;
+}
+
+/* ucnv_to/fromUChars() ----------------------------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+ucnv_fromUChars(UConverter *cnv,
+                char *dest, int32_t destCapacity,
+                const UChar *src, int32_t srcLength,
+                UErrorCode *pErrorCode) {
+    const UChar *srcLimit;
+    char *originalDest, *destLimit;
+    int32_t destLength;
+
+    /* check arguments */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    if( cnv==NULL ||
+        destCapacity<0 || (destCapacity>0 && dest==NULL) ||
+        srcLength<-1 || (srcLength!=0 && src==NULL)
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* initialize */
+    ucnv_resetFromUnicode(cnv);
+    originalDest=dest;
+    if(srcLength==-1) {
+        srcLength=u_strlen(src);
+    }
+    if(srcLength>0) {
+        srcLimit=src+srcLength;
+        destLimit=dest+destCapacity;
+
+        /* pin the destination limit to U_MAX_PTR; NULL check is for OS/400 */
+        if(destLimit<dest || (destLimit==NULL && dest!=NULL)) {
+            destLimit=(char *)U_MAX_PTR(dest);
+        }
+
+        /* perform the conversion */
+        ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
+        destLength=(int32_t)(dest-originalDest);
+
+        /* if an overflow occurs, then get the preflighting length */
+        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+            char buffer[1024];
+
+            destLimit=buffer+sizeof(buffer);
+            do {
+                dest=buffer;
+                *pErrorCode=U_ZERO_ERROR;
+                ucnv_fromUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
+                destLength+=(int32_t)(dest-buffer);
+            } while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
+        }
+    } else {
+        destLength=0;
+    }
+
+    return u_terminateChars(originalDest, destCapacity, destLength, pErrorCode);
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_toUChars(UConverter *cnv,
+              UChar *dest, int32_t destCapacity,
+              const char *src, int32_t srcLength,
+              UErrorCode *pErrorCode) {
+    const char *srcLimit;
+    UChar *originalDest, *destLimit;
+    int32_t destLength;
+
+    /* check arguments */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    if( cnv==NULL ||
+        destCapacity<0 || (destCapacity>0 && dest==NULL) ||
+        srcLength<-1 || (srcLength!=0 && src==NULL))
+    {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* initialize */
+    ucnv_resetToUnicode(cnv);
+    originalDest=dest;
+    if(srcLength==-1) {
+        srcLength=(int32_t)uprv_strlen(src);
+    }
+    if(srcLength>0) {
+        srcLimit=src+srcLength;
+        destLimit=dest+destCapacity;
+
+        /* pin the destination limit to U_MAX_PTR; NULL check is for OS/400 */
+        if(destLimit<dest || (destLimit==NULL && dest!=NULL)) {
+            destLimit=(UChar *)U_MAX_PTR(dest);
+        }
+
+        /* perform the conversion */
+        ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
+        destLength=(int32_t)(dest-originalDest);
+
+        /* if an overflow occurs, then get the preflighting length */
+        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR)
+        {
+            UChar buffer[1024];
+
+            destLimit=buffer+UPRV_LENGTHOF(buffer);
+            do {
+                dest=buffer;
+                *pErrorCode=U_ZERO_ERROR;
+                ucnv_toUnicode(cnv, &dest, destLimit, &src, srcLimit, 0, TRUE, pErrorCode);
+                destLength+=(int32_t)(dest-buffer);
+            }
+            while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
+        }
+    } else {
+        destLength=0;
+    }
+
+    return u_terminateUChars(originalDest, destCapacity, destLength, pErrorCode);
+}
+
+/* ucnv_getNextUChar() ------------------------------------------------------ */
+
+U_CAPI UChar32 U_EXPORT2
+ucnv_getNextUChar(UConverter *cnv,
+                  const char **source, const char *sourceLimit,
+                  UErrorCode *err) {
+    UConverterToUnicodeArgs args;
+    UChar buffer[U16_MAX_LENGTH];
+    const char *s;
+    UChar32 c;
+    int32_t i, length;
+
+    /* check parameters */
+    if(err==NULL || U_FAILURE(*err)) {
+        return 0xffff;
+    }
+
+    if(cnv==NULL || source==NULL) {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0xffff;
+    }
+
+    s=*source;
+    if(sourceLimit<s) {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0xffff;
+    }
+
+    /*
+     * Make sure that the buffer sizes do not exceed the number range for
+     * int32_t because some functions use the size (in units or bytes)
+     * rather than comparing pointers, and because offsets are int32_t values.
+     *
+     * size_t is guaranteed to be unsigned and large enough for the job.
+     *
+     * Return with an error instead of adjusting the limits because we would
+     * not be able to maintain the semantics that either the source must be
+     * consumed or the target filled (unless an error occurs).
+     * An adjustment would be sourceLimit=t+0x7fffffff; for example.
+     */
+    if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) {
+        *err=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0xffff;
+    }
+
+    c=U_SENTINEL;
+
+    /* flush the target overflow buffer */
+    if(cnv->UCharErrorBufferLength>0) {
+        UChar *overflow;
+
+        overflow=cnv->UCharErrorBuffer;
+        i=0;
+        length=cnv->UCharErrorBufferLength;
+        U16_NEXT(overflow, i, length, c);
+
+        /* move the remaining overflow contents up to the beginning */
+        if((cnv->UCharErrorBufferLength=(int8_t)(length-i))>0) {
+            uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+i,
+                         cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR);
+        }
+
+        if(!U16_IS_LEAD(c) || i<length) {
+            return c;
+        }
+        /*
+         * Continue if the overflow buffer contained only a lead surrogate,
+         * in case the converter outputs single surrogates from complete
+         * input sequences.
+         */
+    }
+
+    /*
+     * flush==TRUE is implied for ucnv_getNextUChar()
+     *
+     * do not simply return even if s==sourceLimit because the converter may
+     * not have seen flush==TRUE before
+     */
+
+    /* prepare the converter arguments */
+    args.converter=cnv;
+    args.flush=TRUE;
+    args.offsets=NULL;
+    args.source=s;
+    args.sourceLimit=sourceLimit;
+    args.target=buffer;
+    args.targetLimit=buffer+1;
+    args.size=sizeof(args);
+
+    if(c<0) {
+        /*
+         * call the native getNextUChar() implementation if we are
+         * at a character boundary (toULength==0)
+         *
+         * unlike with _toUnicode(), getNextUChar() implementations must set
+         * U_TRUNCATED_CHAR_FOUND for truncated input,
+         * in addition to setting toULength/toUBytes[]
+         */
+        if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) {
+            c=cnv->sharedData->impl->getNextUChar(&args, err);
+            *source=s=args.source;
+            if(*err==U_INDEX_OUTOFBOUNDS_ERROR) {
+                /* reset the converter without calling the callback function */
+                _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE);
+                return 0xffff; /* no output */
+            } else if(U_SUCCESS(*err) && c>=0) {
+                return c;
+            /*
+             * else fall through to use _toUnicode() because
+             *   UCNV_GET_NEXT_UCHAR_USE_TO_U: the native function did not want to handle it after all
+             *   U_FAILURE: call _toUnicode() for callback handling (do not output c)
+             */
+            }
+        }
+
+        /* convert to one UChar in buffer[0], or handle getNextUChar() errors */
+        _toUnicodeWithCallback(&args, err);
+
+        if(*err==U_BUFFER_OVERFLOW_ERROR) {
+            *err=U_ZERO_ERROR;
+        }
+
+        i=0;
+        length=(int32_t)(args.target-buffer);
+    } else {
+        /* write the lead surrogate from the overflow buffer */
+        buffer[0]=(UChar)c;
+        args.target=buffer+1;
+        i=0;
+        length=1;
+    }
+
+    /* buffer contents starts at i and ends before length */
+
+    if(U_FAILURE(*err)) {
+        c=0xffff; /* no output */
+    } else if(length==0) {
+        /* no input or only state changes */
+        *err=U_INDEX_OUTOFBOUNDS_ERROR;
+        /* no need to reset explicitly because _toUnicodeWithCallback() did it */
+        c=0xffff; /* no output */
+    } else {
+        c=buffer[0];
+        i=1;
+        if(!U16_IS_LEAD(c)) {
+            /* consume c=buffer[0], done */
+        } else {
+            /* got a lead surrogate, see if a trail surrogate follows */
+            UChar c2;
+
+            if(cnv->UCharErrorBufferLength>0) {
+                /* got overflow output from the conversion */
+                if(U16_IS_TRAIL(c2=cnv->UCharErrorBuffer[0])) {
+                    /* got a trail surrogate, too */
+                    c=U16_GET_SUPPLEMENTARY(c, c2);
+
+                    /* move the remaining overflow contents up to the beginning */
+                    if((--cnv->UCharErrorBufferLength)>0) {
+                        uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+1,
+                                     cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR);
+                    }
+                } else {
+                    /* c is an unpaired lead surrogate, just return it */
+                }
+            } else if(args.source<sourceLimit) {
+                /* convert once more, to buffer[1] */
+                args.targetLimit=buffer+2;
+                _toUnicodeWithCallback(&args, err);
+                if(*err==U_BUFFER_OVERFLOW_ERROR) {
+                    *err=U_ZERO_ERROR;
+                }
+
+                length=(int32_t)(args.target-buffer);
+                if(U_SUCCESS(*err) && length==2 && U16_IS_TRAIL(c2=buffer[1])) {
+                    /* got a trail surrogate, too */
+                    c=U16_GET_SUPPLEMENTARY(c, c2);
+                    i=2;
+                }
+            }
+        }
+    }
+
+    /*
+     * move leftover output from buffer[i..length[
+     * into the beginning of the overflow buffer
+     */
+    if(i<length) {
+        /* move further overflow back */
+        int32_t delta=length-i;
+        if((length=cnv->UCharErrorBufferLength)>0) {
+            uprv_memmove(cnv->UCharErrorBuffer+delta, cnv->UCharErrorBuffer,
+                         length*U_SIZEOF_UCHAR);
+        }
+        cnv->UCharErrorBufferLength=(int8_t)(length+delta);
+
+        cnv->UCharErrorBuffer[0]=buffer[i++];
+        if(delta>1) {
+            cnv->UCharErrorBuffer[1]=buffer[i];
+        }
+    }
+
+    *source=args.source;
+    return c;
+}
+
+/* ucnv_convert() and siblings ---------------------------------------------- */
+
+U_CAPI void U_EXPORT2
+ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
+               char **target, const char *targetLimit,
+               const char **source, const char *sourceLimit,
+               UChar *pivotStart, UChar **pivotSource,
+               UChar **pivotTarget, const UChar *pivotLimit,
+               UBool reset, UBool flush,
+               UErrorCode *pErrorCode) {
+    UChar pivotBuffer[CHUNK_SIZE];
+    const UChar *myPivotSource;
+    UChar *myPivotTarget;
+    const char *s;
+    char *t;
+
+    UConverterToUnicodeArgs toUArgs;
+    UConverterFromUnicodeArgs fromUArgs;
+    UConverterConvert convert;
+
+    /* error checking */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    if( targetCnv==NULL || sourceCnv==NULL ||
+        source==NULL || *source==NULL ||
+        target==NULL || *target==NULL || targetLimit==NULL
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    s=*source;
+    t=*target;
+    if((sourceLimit!=NULL && sourceLimit<s) || targetLimit<t) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    /*
+     * Make sure that the buffer sizes do not exceed the number range for
+     * int32_t. See ucnv_toUnicode() for a more detailed comment.
+     */
+    if(
+        (sourceLimit!=NULL && ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) ||
+        ((size_t)(targetLimit-t)>(size_t)0x7fffffff && targetLimit>t)
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    
+    if(pivotStart==NULL) {
+        if(!flush) {
+            /* streaming conversion requires an explicit pivot buffer */
+            *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+            return;
+        }
+
+        /* use the stack pivot buffer */
+        myPivotSource=myPivotTarget=pivotStart=pivotBuffer;
+        pivotSource=(UChar **)&myPivotSource;
+        pivotTarget=&myPivotTarget;
+        pivotLimit=pivotBuffer+CHUNK_SIZE;
+    } else if(  pivotStart>=pivotLimit ||
+                pivotSource==NULL || *pivotSource==NULL ||
+                pivotTarget==NULL || *pivotTarget==NULL ||
+                pivotLimit==NULL
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    if(sourceLimit==NULL) {
+        /* get limit of single-byte-NUL-terminated source string */
+        sourceLimit=uprv_strchr(*source, 0);
+    }
+
+    if(reset) {
+        ucnv_resetToUnicode(sourceCnv);
+        ucnv_resetFromUnicode(targetCnv);
+        *pivotSource=*pivotTarget=pivotStart;
+    } else if(targetCnv->charErrorBufferLength>0) {
+        /* output the targetCnv overflow buffer */
+        if(ucnv_outputOverflowFromUnicode(targetCnv, target, targetLimit, NULL, pErrorCode)) {
+            /* U_BUFFER_OVERFLOW_ERROR */
+            return;
+        }
+        /* *target has moved, therefore stop using t */
+
+        if( !flush &&
+            targetCnv->preFromULength>=0 && *pivotSource==*pivotTarget &&
+            sourceCnv->UCharErrorBufferLength==0 && sourceCnv->preToULength>=0 && s==sourceLimit
+        ) {
+            /* the fromUnicode overflow buffer is emptied and there is no new input: we are done */
+            return;
+        }
+    }
+
+    /* Is direct-UTF-8 conversion available? */
+    if( sourceCnv->sharedData->staticData->conversionType==UCNV_UTF8 &&
+        targetCnv->sharedData->impl->fromUTF8!=NULL
+    ) {
+        convert=targetCnv->sharedData->impl->fromUTF8;
+    } else if( targetCnv->sharedData->staticData->conversionType==UCNV_UTF8 &&
+               sourceCnv->sharedData->impl->toUTF8!=NULL
+    ) {
+        convert=sourceCnv->sharedData->impl->toUTF8;
+    } else {
+        convert=NULL;
+    }
+
+    /*
+     * If direct-UTF-8 conversion is available, then we use a smaller
+     * pivot buffer for error handling and partial matches
+     * so that we quickly return to direct conversion.
+     *
+     * 32 is large enough for UCNV_EXT_MAX_UCHARS and UCNV_ERROR_BUFFER_LENGTH.
+     *
+     * We could reduce the pivot buffer size further, at the cost of
+     * buffer overflows from callbacks.
+     * The pivot buffer should not be smaller than the maximum number of
+     * fromUnicode extension table input UChars
+     * (for m:n conversion, see
+     * targetCnv->sharedData->mbcs.extIndexes[UCNV_EXT_COUNT_UCHARS])
+     * or 2 for surrogate pairs.
+     *
+     * Too small a buffer can cause thrashing between pivoting and direct
+     * conversion, with function call overhead outweighing the benefits
+     * of direct conversion.
+     */
+    if(convert!=NULL && (pivotLimit-pivotStart)>32) {
+        pivotLimit=pivotStart+32;
+    }
+
+    /* prepare the converter arguments */
+    fromUArgs.converter=targetCnv;
+    fromUArgs.flush=FALSE;
+    fromUArgs.offsets=NULL;
+    fromUArgs.target=*target;
+    fromUArgs.targetLimit=targetLimit;
+    fromUArgs.size=sizeof(fromUArgs);
+
+    toUArgs.converter=sourceCnv;
+    toUArgs.flush=flush;
+    toUArgs.offsets=NULL;
+    toUArgs.source=s;
+    toUArgs.sourceLimit=sourceLimit;
+    toUArgs.targetLimit=pivotLimit;
+    toUArgs.size=sizeof(toUArgs);
+
+    /*
+     * TODO: Consider separating this function into two functions,
+     * extracting exactly the conversion loop,
+     * for readability and to reduce the set of visible variables.
+     *
+     * Otherwise stop using s and t from here on.
+     */
+    s=t=NULL;
+
+    /*
+     * conversion loop
+     *
+     * The sequence of steps in the loop may appear backward,
+     * but the principle is simple:
+     * In the chain of
+     *   source - sourceCnv overflow - pivot - targetCnv overflow - target
+     * empty out later buffers before refilling them from earlier ones.
+     *
+     * The targetCnv overflow buffer is flushed out only once before the loop.
+     */
+    for(;;) {
+        /*
+         * if(pivot not empty or error or replay or flush fromUnicode) {
+         *   fromUnicode(pivot -> target);
+         * }
+         *
+         * For pivoting conversion; and for direct conversion for
+         * error callback handling and flushing the replay buffer.
+         */
+        if( *pivotSource<*pivotTarget ||
+            U_FAILURE(*pErrorCode) ||
+            targetCnv->preFromULength<0 ||
+            fromUArgs.flush
+        ) {
+            fromUArgs.source=*pivotSource;
+            fromUArgs.sourceLimit=*pivotTarget;
+            _fromUnicodeWithCallback(&fromUArgs, pErrorCode);
+            if(U_FAILURE(*pErrorCode)) {
+                /* target overflow, or conversion error */
+                *pivotSource=(UChar *)fromUArgs.source;
+                break;
+            }
+
+            /*
+             * _fromUnicodeWithCallback() must have consumed the pivot contents
+             * (*pivotSource==*pivotTarget) since it returned with U_SUCCESS()
+             */
+        }
+
+        /* The pivot buffer is empty; reset it so we start at pivotStart. */
+        *pivotSource=*pivotTarget=pivotStart;
+
+        /*
+         * if(sourceCnv overflow buffer not empty) {
+         *     move(sourceCnv overflow buffer -> pivot);
+         *     continue;
+         * }
+         */
+        /* output the sourceCnv overflow buffer */
+        if(sourceCnv->UCharErrorBufferLength>0) {
+            if(ucnv_outputOverflowToUnicode(sourceCnv, pivotTarget, pivotLimit, NULL, pErrorCode)) {
+                /* U_BUFFER_OVERFLOW_ERROR */
+                *pErrorCode=U_ZERO_ERROR;
+            }
+            continue;
+        }
+
+        /*
+         * check for end of input and break if done
+         *
+         * Checking both flush and fromUArgs.flush ensures that the converters
+         * have been called with the flush flag set if the ucnv_convertEx()
+         * caller set it.
+         */
+        if( toUArgs.source==sourceLimit &&
+            sourceCnv->preToULength>=0 && sourceCnv->toULength==0 &&
+            (!flush || fromUArgs.flush)
+        ) {
+            /* done successfully */
+            break;
+        }
+
+        /*
+         * use direct conversion if available
+         * but not if continuing a partial match
+         * or flushing the toUnicode replay buffer
+         */
+        if(convert!=NULL && targetCnv->preFromUFirstCP<0 && sourceCnv->preToULength==0) {
+            if(*pErrorCode==U_USING_DEFAULT_WARNING) {
+                /* remove a warning that may be set by this function */
+                *pErrorCode=U_ZERO_ERROR;
+            }
+            convert(&fromUArgs, &toUArgs, pErrorCode);
+            if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+                break;
+            } else if(U_FAILURE(*pErrorCode)) {
+                if(sourceCnv->toULength>0) {
+                    /*
+                     * Fall through to calling _toUnicodeWithCallback()
+                     * for callback handling.
+                     *
+                     * The pivot buffer will be reset with
+                     *   *pivotSource=*pivotTarget=pivotStart;
+                     * which indicates a toUnicode error to the caller
+                     * (*pivotSource==pivotStart shows no pivot UChars consumed).
+                     */
+                } else {
+                    /*
+                     * Indicate a fromUnicode error to the caller
+                     * (*pivotSource>pivotStart shows some pivot UChars consumed).
+                     */
+                    *pivotSource=*pivotTarget=pivotStart+1;
+                    /*
+                     * Loop around to calling _fromUnicodeWithCallbacks()
+                     * for callback handling.
+                     */
+                    continue;
+                }
+            } else if(*pErrorCode==U_USING_DEFAULT_WARNING) {
+                /*
+                 * No error, but the implementation requested to temporarily
+                 * fall back to pivoting.
+                 */
+                *pErrorCode=U_ZERO_ERROR;
+            /*
+             * The following else branches are almost identical to the end-of-input
+             * handling in _toUnicodeWithCallback().
+             * Avoid calling it just for the end of input.
+             */
+            } else if(flush && sourceCnv->toULength>0) { /* flush==toUArgs.flush */
+                /*
+                 * the entire input stream is consumed
+                 * and there is a partial, truncated input sequence left
+                 */
+
+                /* inject an error and continue with callback handling */
+                *pErrorCode=U_TRUNCATED_CHAR_FOUND;
+            } else {
+                /* input consumed */
+                if(flush) {
+                    /* reset the converters without calling the callback functions */
+                    _reset(sourceCnv, UCNV_RESET_TO_UNICODE, FALSE);
+                    _reset(targetCnv, UCNV_RESET_FROM_UNICODE, FALSE);
+                }
+
+                /* done successfully */
+                break;
+            }
+        }
+        
+        /*
+         * toUnicode(source -> pivot);
+         *
+         * For pivoting conversion; and for direct conversion for
+         * error callback handling, continuing partial matches
+         * and flushing the replay buffer.
+         *
+         * The pivot buffer is empty and reset.
+         */
+        toUArgs.target=pivotStart; /* ==*pivotTarget */
+        /* toUArgs.targetLimit=pivotLimit; already set before the loop */
+        _toUnicodeWithCallback(&toUArgs, pErrorCode);
+        *pivotTarget=toUArgs.target;
+        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+            /* pivot overflow: continue with the conversion loop */
+            *pErrorCode=U_ZERO_ERROR;
+        } else if(U_FAILURE(*pErrorCode) || (!flush && *pivotTarget==pivotStart)) {
+            /* conversion error, or there was nothing left to convert */
+            break;
+        }
+        /*
+         * else:
+         * _toUnicodeWithCallback() wrote into the pivot buffer,
+         * continue with fromUnicode conversion.
+         *
+         * Set the fromUnicode flush flag if we flush and if toUnicode has
+         * processed the end of the input.
+         */
+        if( flush && toUArgs.source==sourceLimit &&
+            sourceCnv->preToULength>=0 &&
+            sourceCnv->UCharErrorBufferLength==0
+        ) {
+            fromUArgs.flush=TRUE;
+        }
+    }
+
+    /*
+     * The conversion loop is exited when one of the following is true:
+     * - the entire source text has been converted successfully to the target buffer
+     * - a target buffer overflow occurred
+     * - a conversion error occurred
+     */
+
+    *source=toUArgs.source;
+    *target=fromUArgs.target;
+
+    /* terminate the target buffer if possible */
+    if(flush && U_SUCCESS(*pErrorCode)) {
+        if(*target!=targetLimit) {
+            **target=0;
+            if(*pErrorCode==U_STRING_NOT_TERMINATED_WARNING) {
+                *pErrorCode=U_ZERO_ERROR;
+            }
+        } else {
+            *pErrorCode=U_STRING_NOT_TERMINATED_WARNING;
+        }
+    }
+}
+
+/* internal implementation of ucnv_convert() etc. with preflighting */
+static int32_t
+ucnv_internalConvert(UConverter *outConverter, UConverter *inConverter,
+                     char *target, int32_t targetCapacity,
+                     const char *source, int32_t sourceLength,
+                     UErrorCode *pErrorCode) {
+    UChar pivotBuffer[CHUNK_SIZE];
+    UChar *pivot, *pivot2;
+
+    char *myTarget;
+    const char *sourceLimit;
+    const char *targetLimit;
+    int32_t targetLength=0;
+
+    /* set up */
+    if(sourceLength<0) {
+        sourceLimit=uprv_strchr(source, 0);
+    } else {
+        sourceLimit=source+sourceLength;
+    }
+
+    /* if there is no input data, we're done */
+    if(source==sourceLimit) {
+        return u_terminateChars(target, targetCapacity, 0, pErrorCode);
+    }
+
+    pivot=pivot2=pivotBuffer;
+    myTarget=target;
+    targetLength=0;
+
+    if(targetCapacity>0) {
+        /* perform real conversion */
+        targetLimit=target+targetCapacity;
+        ucnv_convertEx(outConverter, inConverter,
+                       &myTarget, targetLimit,
+                       &source, sourceLimit,
+                       pivotBuffer, &pivot, &pivot2, pivotBuffer+CHUNK_SIZE,
+                       FALSE,
+                       TRUE,
+                       pErrorCode);
+        targetLength=(int32_t)(myTarget-target);
+    }
+
+    /*
+     * If the output buffer is exhausted (or we are only "preflighting"), we need to stop writing
+     * to it but continue the conversion in order to store in targetCapacity
+     * the number of bytes that was required.
+     */
+    if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR || targetCapacity==0)
+    {
+        char targetBuffer[CHUNK_SIZE];
+
+        targetLimit=targetBuffer+CHUNK_SIZE;
+        do {
+            *pErrorCode=U_ZERO_ERROR;
+            myTarget=targetBuffer;
+            ucnv_convertEx(outConverter, inConverter,
+                           &myTarget, targetLimit,
+                           &source, sourceLimit,
+                           pivotBuffer, &pivot, &pivot2, pivotBuffer+CHUNK_SIZE,
+                           FALSE,
+                           TRUE,
+                           pErrorCode);
+            targetLength+=(int32_t)(myTarget-targetBuffer);
+        } while(*pErrorCode==U_BUFFER_OVERFLOW_ERROR);
+
+        /* done with preflighting, set warnings and errors as appropriate */
+        return u_terminateChars(target, targetCapacity, targetLength, pErrorCode);
+    }
+
+    /* no need to call u_terminateChars() because ucnv_convertEx() took care of that */
+    return targetLength;
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_convert(const char *toConverterName, const char *fromConverterName,
+             char *target, int32_t targetCapacity,
+             const char *source, int32_t sourceLength,
+             UErrorCode *pErrorCode) {
+    UConverter in, out; /* stack-allocated */
+    UConverter *inConverter, *outConverter;
+    int32_t targetLength;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    if( source==NULL || sourceLength<-1 ||
+        targetCapacity<0 || (targetCapacity>0 && target==NULL)
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* if there is no input data, we're done */
+    if(sourceLength==0 || (sourceLength<0 && *source==0)) {
+        return u_terminateChars(target, targetCapacity, 0, pErrorCode);
+    }
+
+    /* create the converters */
+    inConverter=ucnv_createConverter(&in, fromConverterName, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    outConverter=ucnv_createConverter(&out, toConverterName, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        ucnv_close(inConverter);
+        return 0;
+    }
+
+    targetLength=ucnv_internalConvert(outConverter, inConverter,
+                                      target, targetCapacity,
+                                      source, sourceLength,
+                                      pErrorCode);
+
+    ucnv_close(inConverter);
+    ucnv_close(outConverter);
+
+    return targetLength;
+}
+
+/* @internal */
+static int32_t
+ucnv_convertAlgorithmic(UBool convertToAlgorithmic,
+                        UConverterType algorithmicType,
+                        UConverter *cnv,
+                        char *target, int32_t targetCapacity,
+                        const char *source, int32_t sourceLength,
+                        UErrorCode *pErrorCode) {
+    UConverter algoConverterStatic; /* stack-allocated */
+    UConverter *algoConverter, *to, *from;
+    int32_t targetLength;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    if( cnv==NULL || source==NULL || sourceLength<-1 ||
+        targetCapacity<0 || (targetCapacity>0 && target==NULL)
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* if there is no input data, we're done */
+    if(sourceLength==0 || (sourceLength<0 && *source==0)) {
+        return u_terminateChars(target, targetCapacity, 0, pErrorCode);
+    }
+
+    /* create the algorithmic converter */
+    algoConverter=ucnv_createAlgorithmicConverter(&algoConverterStatic, algorithmicType,
+                                                  "", 0, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    /* reset the other converter */
+    if(convertToAlgorithmic) {
+        /* cnv->Unicode->algo */
+        ucnv_resetToUnicode(cnv);
+        to=algoConverter;
+        from=cnv;
+    } else {
+        /* algo->Unicode->cnv */
+        ucnv_resetFromUnicode(cnv);
+        from=algoConverter;
+        to=cnv;
+    }
+
+    targetLength=ucnv_internalConvert(to, from,
+                                      target, targetCapacity,
+                                      source, sourceLength,
+                                      pErrorCode);
+
+    ucnv_close(algoConverter);
+
+    return targetLength;
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_toAlgorithmic(UConverterType algorithmicType,
+                   UConverter *cnv,
+                   char *target, int32_t targetCapacity,
+                   const char *source, int32_t sourceLength,
+                   UErrorCode *pErrorCode) {
+    return ucnv_convertAlgorithmic(TRUE, algorithmicType, cnv,
+                                   target, targetCapacity,
+                                   source, sourceLength,
+                                   pErrorCode);
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_fromAlgorithmic(UConverter *cnv,
+                     UConverterType algorithmicType,
+                     char *target, int32_t targetCapacity,
+                     const char *source, int32_t sourceLength,
+                     UErrorCode *pErrorCode) {
+    return ucnv_convertAlgorithmic(FALSE, algorithmicType, cnv,
+                                   target, targetCapacity,
+                                   source, sourceLength,
+                                   pErrorCode);
+}
+
+U_CAPI UConverterType  U_EXPORT2
+ucnv_getType(const UConverter* converter)
+{
+    int8_t type = converter->sharedData->staticData->conversionType;
+#if !UCONFIG_NO_LEGACY_CONVERSION
+    if(type == UCNV_MBCS) {
+        return ucnv_MBCSGetType(converter);
+    }
+#endif
+    return (UConverterType)type;
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_getStarters(const UConverter* converter, 
+                 UBool starters[256],
+                 UErrorCode* err)
+{
+    if (err == NULL || U_FAILURE(*err)) {
+        return;
+    }
+
+    if(converter->sharedData->impl->getStarters != NULL) {
+        converter->sharedData->impl->getStarters(converter, starters, err);
+    } else {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+    }
+}
+
+static const UAmbiguousConverter *ucnv_getAmbiguous(const UConverter *cnv)
+{
+    UErrorCode errorCode;
+    const char *name;
+    int32_t i;
+
+    if(cnv==NULL) {
+        return NULL;
+    }
+
+    errorCode=U_ZERO_ERROR;
+    name=ucnv_getName(cnv, &errorCode);
+    if(U_FAILURE(errorCode)) {
+        return NULL;
+    }
+
+    for(i=0; i<UPRV_LENGTHOF(ambiguousConverters); ++i)
+    {
+        if(0==uprv_strcmp(name, ambiguousConverters[i].name))
+        {
+            return ambiguousConverters+i;
+        }
+    }
+
+    return NULL;
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_fixFileSeparator(const UConverter *cnv, 
+                      UChar* source, 
+                      int32_t sourceLength) {
+    const UAmbiguousConverter *a;
+    int32_t i;
+    UChar variant5c;
+
+    if(cnv==NULL || source==NULL || sourceLength<=0 || (a=ucnv_getAmbiguous(cnv))==NULL)
+    {
+        return;
+    }
+
+    variant5c=a->variant5c;
+    for(i=0; i<sourceLength; ++i) {
+        if(source[i]==variant5c) {
+            source[i]=0x5c;
+        }
+    }
+}
+
+U_CAPI UBool  U_EXPORT2
+ucnv_isAmbiguous(const UConverter *cnv) {
+    return (UBool)(ucnv_getAmbiguous(cnv)!=NULL);
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_setFallback(UConverter *cnv, UBool usesFallback)
+{
+    cnv->useFallback = usesFallback;
+}
+
+U_CAPI UBool  U_EXPORT2
+ucnv_usesFallback(const UConverter *cnv)
+{
+    return cnv->useFallback;
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_getInvalidChars (const UConverter * converter,
+                      char *errBytes,
+                      int8_t * len,
+                      UErrorCode * err)
+{
+    if (err == NULL || U_FAILURE(*err))
+    {
+        return;
+    }
+    if (len == NULL || errBytes == NULL || converter == NULL)
+    {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if (*len < converter->invalidCharLength)
+    {
+        *err = U_INDEX_OUTOFBOUNDS_ERROR;
+        return;
+    }
+    if ((*len = converter->invalidCharLength) > 0)
+    {
+        uprv_memcpy (errBytes, converter->invalidCharBuffer, *len);
+    }
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_getInvalidUChars (const UConverter * converter,
+                       UChar *errChars,
+                       int8_t * len,
+                       UErrorCode * err)
+{
+    if (err == NULL || U_FAILURE(*err))
+    {
+        return;
+    }
+    if (len == NULL || errChars == NULL || converter == NULL)
+    {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if (*len < converter->invalidUCharLength)
+    {
+        *err = U_INDEX_OUTOFBOUNDS_ERROR;
+        return;
+    }
+    if ((*len = converter->invalidUCharLength) > 0)
+    {
+        u_memcpy (errChars, converter->invalidUCharBuffer, *len);
+    }
+}
+
+#define SIG_MAX_LEN 5
+
+U_CAPI const char* U_EXPORT2
+ucnv_detectUnicodeSignature( const char* source,
+                             int32_t sourceLength,
+                             int32_t* signatureLength,
+                             UErrorCode* pErrorCode) {
+    int32_t dummy;
+
+    /* initial 0xa5 bytes: make sure that if we read <SIG_MAX_LEN
+     * bytes we don't misdetect something 
+     */
+    char start[SIG_MAX_LEN]={ '\xa5', '\xa5', '\xa5', '\xa5', '\xa5' };
+    int i = 0;
+
+    if((pErrorCode==NULL) || U_FAILURE(*pErrorCode)){
+        return NULL;
+    }
+    
+    if(source == NULL || sourceLength < -1){
+        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+
+    if(signatureLength == NULL) {
+        signatureLength = &dummy;
+    }
+
+    if(sourceLength==-1){
+        sourceLength=(int32_t)uprv_strlen(source);
+    }
+
+    
+    while(i<sourceLength&& i<SIG_MAX_LEN){
+        start[i]=source[i];
+        i++;
+    }
+
+    if(start[0] == '\xFE' && start[1] == '\xFF') {
+        *signatureLength=2;
+        return  "UTF-16BE";
+    } else if(start[0] == '\xFF' && start[1] == '\xFE') {
+        if(start[2] == '\x00' && start[3] =='\x00') {
+            *signatureLength=4;
+            return "UTF-32LE";
+        } else {
+            *signatureLength=2;
+            return  "UTF-16LE";
+        }
+    } else if(start[0] == '\xEF' && start[1] == '\xBB' && start[2] == '\xBF') {
+        *signatureLength=3;
+        return  "UTF-8";
+    } else if(start[0] == '\x00' && start[1] == '\x00' && 
+              start[2] == '\xFE' && start[3]=='\xFF') {
+        *signatureLength=4;
+        return  "UTF-32BE";
+    } else if(start[0] == '\x0E' && start[1] == '\xFE' && start[2] == '\xFF') {
+        *signatureLength=3;
+        return "SCSU";
+    } else if(start[0] == '\xFB' && start[1] == '\xEE' && start[2] == '\x28') {
+        *signatureLength=3;
+        return "BOCU-1";
+    } else if(start[0] == '\x2B' && start[1] == '\x2F' && start[2] == '\x76') {
+        /*
+         * UTF-7: Initial U+FEFF is encoded as +/v8  or  +/v9  or  +/v+  or  +/v/
+         * depending on the second UTF-16 code unit.
+         * Detect the entire, closed Unicode mode sequence +/v8- for only U+FEFF
+         * if it occurs.
+         *
+         * So far we have +/v
+         */
+        if(start[3] == '\x38' && start[4] == '\x2D') {
+            /* 5 bytes +/v8- */
+            *signatureLength=5;
+            return "UTF-7";
+        } else if(start[3] == '\x38' || start[3] == '\x39' || start[3] == '\x2B' || start[3] == '\x2F') {
+            /* 4 bytes +/v8  or  +/v9  or  +/v+  or  +/v/ */
+            *signatureLength=4;
+            return "UTF-7";
+        }
+    }else if(start[0]=='\xDD' && start[1]== '\x73'&& start[2]=='\x66' && start[3]=='\x73'){
+        *signatureLength=4;
+        return "UTF-EBCDIC";
+    }
+
+
+    /* no known Unicode signature byte sequence recognized */
+    *signatureLength=0;
+    return NULL;
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status)
+{
+    if(status == NULL || U_FAILURE(*status)){
+        return -1;
+    }
+    if(cnv == NULL){
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return -1;
+    }
+
+    if(cnv->preFromUFirstCP >= 0){
+        return U16_LENGTH(cnv->preFromUFirstCP)+cnv->preFromULength ;
+    }else if(cnv->preFromULength < 0){
+        return -cnv->preFromULength ;
+    }else if(cnv->fromUChar32 > 0){
+        return 1;
+    }
+    return 0; 
+
+}
+
+U_CAPI int32_t U_EXPORT2
+ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status){
+
+    if(status == NULL || U_FAILURE(*status)){
+        return -1;
+    }
+    if(cnv == NULL){
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return -1;
+    }
+
+    if(cnv->preToULength > 0){
+        return cnv->preToULength ;
+    }else if(cnv->preToULength < 0){
+        return -cnv->preToULength;
+    }else if(cnv->toULength > 0){
+        return cnv->toULength;
+    }
+    return 0;
+}
+
+U_CAPI UBool U_EXPORT2
+ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status){
+    if (U_FAILURE(*status)) {
+        return FALSE;
+    }
+
+    if (cnv == NULL) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return FALSE;
+    }
+
+    switch (ucnv_getType(cnv)) {
+        case UCNV_SBCS:
+        case UCNV_DBCS:
+        case UCNV_UTF32_BigEndian:
+        case UCNV_UTF32_LittleEndian:
+        case UCNV_UTF32:
+        case UCNV_US_ASCII:
+            return TRUE;
+        default:
+            return FALSE;
+    }
+}
+#endif
+
+/*
+ * Hey, Emacs, please set the following:
+ *
+ * Local Variables:
+ * indent-tabs-mode: nil
+ * End:
+ *
+ */
index f0d0946..9c0a064 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ucnv2022.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 14de21b..078f293 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************
index a1e2df6..212c4ea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/ucnv_cb.c b/source/common/ucnv_cb.c
new file mode 100644 (file)
index 0000000..0c9cc24
--- /dev/null
@@ -0,0 +1,261 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 2000-2006, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+ *  ucnv_cb.c:
+ *  External APIs for the ICU's codeset conversion library
+ *  Helena Shih
+ *
+ * Modification History:
+ *
+ *   Date        Name        Description
+ *   7/28/2000   srl         Implementation
+ */
+
+/**
+ * @name Character Conversion C API
+ *
+ */
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ucnv_cb.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "cmemory.h"
+
+/* need to update the offsets when the target moves. */
+/* Note: Recursion may occur in the cb functions, be sure to update the offsets correctly
+if you don't use ucnv_cbXXX functions.  Make sure you don't use the same callback within
+the same call stack if the complexity arises. */
+U_CAPI void  U_EXPORT2
+ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
+                       const char* source,
+                       int32_t length,
+                       int32_t offsetIndex,
+                       UErrorCode * err)
+{
+    if(U_FAILURE(*err)) {
+        return;
+    }
+
+    ucnv_fromUWriteBytes(
+        args->converter,
+        source, length,
+        &args->target, args->targetLimit,
+        &args->offsets, offsetIndex,
+        err);
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
+                             const UChar** source,
+                             const UChar*  sourceLimit,
+                             int32_t offsetIndex,
+                             UErrorCode * err)
+{
+    /*
+    This is a fun one.  Recursion can occur - we're basically going to
+    just retry shoving data through the same converter. Note, if you got
+    here through some kind of invalid sequence, you maybe should emit a
+    reset sequence of some kind and/or call ucnv_reset().  Since this
+    IS an actual conversion, take care that you've changed the callback
+    or the data, or you'll get an infinite loop.
+
+    Please set the err value to something reasonable before calling
+    into this.
+    */
+
+    char *oldTarget;
+
+    if(U_FAILURE(*err))
+    {
+        return;
+    }
+
+    oldTarget = args->target;
+
+    ucnv_fromUnicode(args->converter,
+        &args->target,
+        args->targetLimit,
+        source,
+        sourceLimit,
+        NULL, /* no offsets */
+        FALSE, /* no flush */
+        err);
+
+    if(args->offsets)
+    {
+        while (args->target != oldTarget)  /* if it moved at all.. */
+        {
+            *(args->offsets)++ = offsetIndex;
+            oldTarget++;
+        }
+    }
+
+    /*
+    Note, if you did something like used a Stop subcallback, things would get interesting.
+    In fact, here's where we want to return the partially consumed in-source!
+    */
+    if(*err == U_BUFFER_OVERFLOW_ERROR)
+    /* && (*source < sourceLimit && args->target >= args->targetLimit)
+    -- S. Hrcek */
+    {
+        /* Overflowed the target.  Now, we'll write into the charErrorBuffer.
+        It's a fixed size. If we overflow it... Hmm */
+        char *newTarget;
+        const char *newTargetLimit;
+        UErrorCode err2 = U_ZERO_ERROR;
+
+        int8_t errBuffLen;
+
+        errBuffLen  = args->converter->charErrorBufferLength;
+
+        /* start the new target at the first free slot in the errbuff.. */
+        newTarget = (char *)(args->converter->charErrorBuffer + errBuffLen);
+
+        newTargetLimit = (char *)(args->converter->charErrorBuffer +
+            sizeof(args->converter->charErrorBuffer));
+
+        if(newTarget >= newTargetLimit)
+        {
+            *err = U_INTERNAL_PROGRAM_ERROR;
+            return;
+        }
+
+        /* We're going to tell the converter that the errbuff len is empty.
+        This prevents the existing errbuff from being 'flushed' out onto
+        itself.  If the errbuff is needed by the converter this time,
+        we're hosed - we're out of space! */
+
+        args->converter->charErrorBufferLength = 0;
+
+        ucnv_fromUnicode(args->converter,
+                         &newTarget,
+                         newTargetLimit,
+                         source,
+                         sourceLimit,
+                         NULL,
+                         FALSE,
+                         &err2);
+
+        /* We can go ahead and overwrite the  length here. We know just how
+        to recalculate it. */
+
+        args->converter->charErrorBufferLength = (int8_t)(
+            newTarget - (char*)args->converter->charErrorBuffer);
+
+        if((newTarget >= newTargetLimit) || (err2 == U_BUFFER_OVERFLOW_ERROR))
+        {
+            /* now we're REALLY in trouble.
+            Internal program error - callback shouldn't have written this much
+            data!
+            */
+            *err = U_INTERNAL_PROGRAM_ERROR;
+            return;
+        }
+        /*else {*/
+            /* sub errs could be invalid/truncated/illegal chars or w/e.
+            These might want to be passed on up.. But the problem is, we already
+            need to pass U_BUFFER_OVERFLOW_ERROR. That has to override these
+            other errs.. */
+
+            /*
+            if(U_FAILURE(err2))
+            ??
+            */
+        /*}*/
+    }
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
+                           int32_t offsetIndex,
+                           UErrorCode * err)
+{
+    UConverter *converter;
+    int32_t length;
+
+    if(U_FAILURE(*err)) {
+        return;
+    }
+    converter = args->converter;
+    length = converter->subCharLen;
+
+    if(length == 0) {
+        return;
+    }
+
+    if(length < 0) {
+        /*
+         * Write/convert the substitution string. Its real length is -length.
+         * Unlike the escape callback, we need not change the converter's
+         * callback function because ucnv_setSubstString() verified that
+         * the string can be converted, so we will not get a conversion error
+         * and will not recurse.
+         * At worst we should get a U_BUFFER_OVERFLOW_ERROR.
+         */
+        const UChar *source = (const UChar *)converter->subChars;
+        ucnv_cbFromUWriteUChars(args, &source, source - length, offsetIndex, err);
+        return;
+    }
+
+    if(converter->sharedData->impl->writeSub!=NULL) {
+        converter->sharedData->impl->writeSub(args, offsetIndex, err);
+    }
+    else if(converter->subChar1!=0 && (uint16_t)converter->invalidUCharBuffer[0]<=(uint16_t)0xffu) {
+        /*
+        TODO: Is this untestable because the MBCS converter has a writeSub function to call
+        and the other converters don't use subChar1?
+        */
+        ucnv_cbFromUWriteBytes(args,
+                               (const char *)&converter->subChar1, 1,
+                               offsetIndex, err);
+    }
+    else {
+        ucnv_cbFromUWriteBytes(args,
+                               (const char *)converter->subChars, length,
+                               offsetIndex, err);
+    }
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
+                            const UChar* source,
+                            int32_t length,
+                            int32_t offsetIndex,
+                            UErrorCode * err)
+{
+    if(U_FAILURE(*err)) {
+        return;
+    }
+
+    ucnv_toUWriteUChars(
+        args->converter,
+        source, length,
+        &args->target, args->targetLimit,
+        &args->offsets, offsetIndex,
+        err);
+}
+
+U_CAPI void  U_EXPORT2
+ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
+                         int32_t offsetIndex,
+                       UErrorCode * err)
+{
+    static const UChar kSubstituteChar1 = 0x1A, kSubstituteChar = 0xFFFD;
+
+    /* could optimize this case, just one uchar */
+    if(args->converter->invalidCharLength == 1 && args->converter->subChar1 != 0) {
+        ucnv_cbToUWriteUChars(args, &kSubstituteChar1, 1, offsetIndex, err);
+    } else {
+        ucnv_cbToUWriteUChars(args, &kSubstituteChar, 1, offsetIndex, err);
+    }
+}
+
+#endif
diff --git a/source/common/ucnv_cnv.c b/source/common/ucnv_cnv.c
new file mode 100644 (file)
index 0000000..01f8482
--- /dev/null
@@ -0,0 +1,176 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+*   uconv_cnv.c:
+*   Implements all the low level conversion functions
+*   T_UnicodeConverter_{to,from}Unicode_$ConversionType
+*
+*   Change history:
+*
+*   06/29/2000  helena      Major rewrite of the callback APIs.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ucnv_err.h"
+#include "unicode/ucnv.h"
+#include "unicode/uset.h"
+#include "ucnv_cnv.h"
+#include "ucnv_bld.h"
+#include "cmemory.h"
+
+U_CFUNC void
+ucnv_getCompleteUnicodeSet(const UConverter *cnv,
+                   const USetAdder *sa,
+                   UConverterUnicodeSet which,
+                   UErrorCode *pErrorCode) {
+    sa->addRange(sa->set, 0, 0x10ffff);
+}
+
+U_CFUNC void
+ucnv_getNonSurrogateUnicodeSet(const UConverter *cnv,
+                               const USetAdder *sa,
+                               UConverterUnicodeSet which,
+                               UErrorCode *pErrorCode) {
+    sa->addRange(sa->set, 0, 0xd7ff);
+    sa->addRange(sa->set, 0xe000, 0x10ffff);
+}
+
+U_CFUNC void
+ucnv_fromUWriteBytes(UConverter *cnv,
+                     const char *bytes, int32_t length,
+                     char **target, const char *targetLimit,
+                     int32_t **offsets,
+                     int32_t sourceIndex,
+                     UErrorCode *pErrorCode) {
+    char *t=*target;
+    int32_t *o;
+
+    /* write bytes */
+    if(offsets==NULL || (o=*offsets)==NULL) {
+        while(length>0 && t<targetLimit) {
+            *t++=*bytes++;
+            --length;
+        }
+    } else {
+        /* output with offsets */
+        while(length>0 && t<targetLimit) {
+            *t++=*bytes++;
+            *o++=sourceIndex;
+            --length;
+        }
+        *offsets=o;
+    }
+    *target=t;
+
+    /* write overflow */
+    if(length>0) {
+        if(cnv!=NULL) {
+            t=(char *)cnv->charErrorBuffer;
+            cnv->charErrorBufferLength=(int8_t)length;
+            do {
+                *t++=(uint8_t)*bytes++;
+            } while(--length>0);
+        }
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+}
+
+U_CFUNC void
+ucnv_toUWriteUChars(UConverter *cnv,
+                    const UChar *uchars, int32_t length,
+                    UChar **target, const UChar *targetLimit,
+                    int32_t **offsets,
+                    int32_t sourceIndex,
+                    UErrorCode *pErrorCode) {
+    UChar *t=*target;
+    int32_t *o;
+
+    /* write UChars */
+    if(offsets==NULL || (o=*offsets)==NULL) {
+        while(length>0 && t<targetLimit) {
+            *t++=*uchars++;
+            --length;
+        }
+    } else {
+        /* output with offsets */
+        while(length>0 && t<targetLimit) {
+            *t++=*uchars++;
+            *o++=sourceIndex;
+            --length;
+        }
+        *offsets=o;
+    }
+    *target=t;
+
+    /* write overflow */
+    if(length>0) {
+        if(cnv!=NULL) {
+            t=cnv->UCharErrorBuffer;
+            cnv->UCharErrorBufferLength=(int8_t)length;
+            do {
+                *t++=*uchars++;
+            } while(--length>0);
+        }
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+}
+
+U_CFUNC void
+ucnv_toUWriteCodePoint(UConverter *cnv,
+                       UChar32 c,
+                       UChar **target, const UChar *targetLimit,
+                       int32_t **offsets,
+                       int32_t sourceIndex,
+                       UErrorCode *pErrorCode) {
+    UChar *t;
+    int32_t *o;
+
+    t=*target;
+
+    if(t<targetLimit) {
+        if(c<=0xffff) {
+            *t++=(UChar)c;
+            c=U_SENTINEL;
+        } else /* c is a supplementary code point */ {
+            *t++=U16_LEAD(c);
+            c=U16_TRAIL(c);
+            if(t<targetLimit) {
+                *t++=(UChar)c;
+                c=U_SENTINEL;
+            }
+        }
+
+        /* write offsets */
+        if(offsets!=NULL && (o=*offsets)!=NULL) {
+            *o++=sourceIndex;
+            if((*target+1)<t) {
+                *o++=sourceIndex;
+            }
+            *offsets=o;
+        }
+    }
+
+    *target=t;
+
+    /* write overflow from c */
+    if(c>=0) {
+        if(cnv!=NULL) {
+            int8_t i=0;
+            U16_APPEND_UNSAFE(cnv->UCharErrorBuffer, i, c);
+            cnv->UCharErrorBufferLength=i;
+        }
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+}
+
+#endif
index 2eed2c6..4394672 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/ucnv_ct.c b/source/common/ucnv_ct.c
new file mode 100644 (file)
index 0000000..f76919c
--- /dev/null
@@ -0,0 +1,637 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 2010-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnv_ct.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2010Dec09
+*   created by: Michael Ow
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "unicode/uset.h"
+#include "unicode/ucnv_err.h"
+#include "unicode/ucnv_cb.h"
+#include "unicode/utf16.h"
+#include "ucnv_imp.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "ucnvmbcs.h"
+#include "cstring.h"
+#include "cmemory.h"
+
+typedef enum {
+    INVALID = -2,
+    DO_SEARCH = -1,
+
+    COMPOUND_TEXT_SINGLE_0 = 0,
+    COMPOUND_TEXT_SINGLE_1 = 1,
+    COMPOUND_TEXT_SINGLE_2 = 2,
+    COMPOUND_TEXT_SINGLE_3 = 3,
+
+    COMPOUND_TEXT_DOUBLE_1 = 4,
+    COMPOUND_TEXT_DOUBLE_2 = 5,
+    COMPOUND_TEXT_DOUBLE_3 = 6,
+    COMPOUND_TEXT_DOUBLE_4 = 7,
+    COMPOUND_TEXT_DOUBLE_5 = 8,
+    COMPOUND_TEXT_DOUBLE_6 = 9,
+    COMPOUND_TEXT_DOUBLE_7 = 10,
+
+    COMPOUND_TEXT_TRIPLE_DOUBLE = 11,
+
+    IBM_915 = 12,
+    IBM_916 = 13,
+    IBM_914 = 14,
+    IBM_874 = 15,
+    IBM_912 = 16,
+    IBM_913 = 17,
+    ISO_8859_14 = 18,
+    IBM_923 = 19,
+    NUM_OF_CONVERTERS = 20
+} COMPOUND_TEXT_CONVERTERS;
+
+#define SEARCH_LENGTH 12
+
+static const uint8_t escSeqCompoundText[NUM_OF_CONVERTERS][5] = {
+    /* Single */
+    { 0x1B, 0x2D, 0x41, 0, 0 },
+    { 0x1B, 0x2D, 0x4D, 0, 0 },
+    { 0x1B, 0x2D, 0x46, 0, 0 },
+    { 0x1B, 0x2D, 0x47, 0, 0 },
+
+    /* Double */
+    { 0x1B, 0x24, 0x29, 0x41, 0 },
+    { 0x1B, 0x24, 0x29, 0x42, 0 },
+    { 0x1B, 0x24, 0x29, 0x43, 0 },
+    { 0x1B, 0x24, 0x29, 0x44, 0 },
+    { 0x1B, 0x24, 0x29, 0x47, 0 },
+    { 0x1B, 0x24, 0x29, 0x48, 0 },
+    { 0x1B, 0x24, 0x29, 0x49, 0 },
+
+    /* Triple/Double */
+    { 0x1B, 0x25, 0x47, 0, 0 },
+
+    /*IBM-915*/
+    { 0x1B, 0x2D, 0x4C, 0, 0 },
+    /*IBM-916*/
+    { 0x1B, 0x2D, 0x48, 0, 0 },
+    /*IBM-914*/
+    { 0x1B, 0x2D, 0x44, 0, 0 },
+    /*IBM-874*/
+    { 0x1B, 0x2D, 0x54, 0, 0 },
+    /*IBM-912*/
+    { 0x1B, 0x2D, 0x42, 0, 0 },
+    /* IBM-913 */
+    { 0x1B, 0x2D, 0x43, 0, 0 },
+    /* ISO-8859_14 */
+    { 0x1B, 0x2D, 0x5F, 0, 0 },
+    /* IBM-923 */
+    { 0x1B, 0x2D, 0x62, 0, 0 },
+};
+
+#define ESC_START 0x1B
+
+#define isASCIIRange(codepoint) \
+        ((codepoint == 0x0000) || (codepoint == 0x0009) || (codepoint == 0x000A) || \
+         (codepoint >= 0x0020 && codepoint <= 0x007f) || (codepoint >= 0x00A0 && codepoint <= 0x00FF))
+
+#define isIBM915(codepoint) \
+        ((codepoint >= 0x0401 && codepoint <= 0x045F) || (codepoint == 0x2116))
+
+#define isIBM916(codepoint) \
+        ((codepoint >= 0x05D0 && codepoint <= 0x05EA) || (codepoint == 0x2017) || (codepoint == 0x203E))
+
+#define isCompoundS3(codepoint) \
+        ((codepoint == 0x060C) || (codepoint == 0x061B) || (codepoint == 0x061F) || (codepoint >= 0x0621 && codepoint <= 0x063A) || \
+         (codepoint >= 0x0640 && codepoint <= 0x0652) || (codepoint >= 0x0660 && codepoint <= 0x066D) || (codepoint == 0x200B) || \
+         (codepoint >= 0x0FE70 && codepoint <= 0x0FE72) || (codepoint == 0x0FE74) || (codepoint >= 0x0FE76 && codepoint <= 0x0FEBE))
+
+#define isCompoundS2(codepoint) \
+        ((codepoint == 0x02BC) || (codepoint == 0x02BD) || (codepoint >= 0x0384 && codepoint <= 0x03CE) || (codepoint == 0x2015))
+
+#define isIBM914(codepoint) \
+        ((codepoint == 0x0100) || (codepoint == 0x0101) || (codepoint == 0x0112) || (codepoint == 0x0113) || (codepoint == 0x0116) || (codepoint == 0x0117) || \
+         (codepoint == 0x0122) || (codepoint == 0x0123) || (codepoint >= 0x0128 && codepoint <= 0x012B) || (codepoint == 0x012E) || (codepoint == 0x012F) || \
+         (codepoint >= 0x0136 && codepoint <= 0x0138) || (codepoint == 0x013B) || (codepoint == 0x013C) || (codepoint == 0x0145) || (codepoint ==  0x0146) || \
+         (codepoint >= 0x014A && codepoint <= 0x014D) || (codepoint == 0x0156) || (codepoint == 0x0157) || (codepoint >= 0x0166 && codepoint <= 0x016B) || \
+         (codepoint == 0x0172) || (codepoint == 0x0173))
+
+#define isIBM874(codepoint) \
+        ((codepoint >= 0x0E01 && codepoint <= 0x0E3A) || (codepoint >= 0x0E3F && codepoint <= 0x0E5B))
+
+#define isIBM912(codepoint) \
+        ((codepoint >= 0x0102 && codepoint <= 0x0107) || (codepoint >= 0x010C && codepoint <= 0x0111) || (codepoint >= 0x0118 && codepoint <= 0x011B) || \
+         (codepoint == 0x0139) || (codepoint == 0x013A) || (codepoint == 0x013D) || (codepoint == 0x013E) || (codepoint >= 0x0141 && codepoint <= 0x0144) || \
+         (codepoint == 0x0147) || (codepoint == 0x0147) || (codepoint == 0x0150) || (codepoint == 0x0151) || (codepoint == 0x0154) || (codepoint == 0x0155) || \
+         (codepoint >= 0x0158 && codepoint <= 0x015B) || (codepoint == 0x015E) || (codepoint == 0x015F) || (codepoint >= 0x0160 && codepoint <= 0x0165) || \
+         (codepoint == 0x016E) || (codepoint == 0x016F) || (codepoint == 0x0170) || (codepoint ==  0x0171) || (codepoint >= 0x0179 && codepoint <= 0x017E) || \
+         (codepoint == 0x02C7) || (codepoint == 0x02D8) || (codepoint == 0x02D9) || (codepoint == 0x02DB) || (codepoint == 0x02DD))
+
+#define isIBM913(codepoint) \
+        ((codepoint >= 0x0108 && codepoint <= 0x010B) || (codepoint == 0x011C) || \
+         (codepoint == 0x011D) || (codepoint == 0x0120) || (codepoint == 0x0121) || \
+         (codepoint >= 0x0124 && codepoint <= 0x0127) || (codepoint == 0x0134) || (codepoint == 0x0135) || \
+         (codepoint == 0x015C) || (codepoint == 0x015D) || (codepoint == 0x016C) || (codepoint ==  0x016D))
+
+#define isCompoundS1(codepoint) \
+        ((codepoint == 0x011E) || (codepoint == 0x011F) || (codepoint == 0x0130) || \
+         (codepoint == 0x0131) || (codepoint >= 0x0218 && codepoint <= 0x021B))
+
+#define isISO8859_14(codepoint) \
+        ((codepoint >= 0x0174 && codepoint <= 0x0177) || (codepoint == 0x1E0A) || \
+         (codepoint == 0x1E0B) || (codepoint == 0x1E1E) || (codepoint == 0x1E1F) || \
+         (codepoint == 0x1E40) || (codepoint == 0x1E41) || (codepoint == 0x1E56) || \
+         (codepoint == 0x1E57) || (codepoint == 0x1E60) || (codepoint == 0x1E61) || \
+         (codepoint == 0x1E6A) || (codepoint == 0x1E6B) || (codepoint == 0x1EF2) || \
+         (codepoint == 0x1EF3) || (codepoint >= 0x1E80 && codepoint <= 0x1E85))
+
+#define isIBM923(codepoint) \
+        ((codepoint == 0x0152) || (codepoint == 0x0153) || (codepoint == 0x0178) || (codepoint == 0x20AC))
+
+
+typedef struct{
+    UConverterSharedData *myConverterArray[NUM_OF_CONVERTERS];
+    COMPOUND_TEXT_CONVERTERS state;
+} UConverterDataCompoundText;
+
+/*********** Compound Text Converter Protos ***********/
+static void
+_CompoundTextOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode);
+
+static void
+ _CompoundTextClose(UConverter *converter);
+
+static void
+_CompoundTextReset(UConverter *converter, UConverterResetChoice choice);
+
+static const char*
+_CompoundTextgetName(const UConverter* cnv);
+
+
+static int32_t findNextEsc(const char *source, const char *sourceLimit) {
+    int32_t length = sourceLimit - source;
+    int32_t i;
+    for (i = 1; i < length; i++) {
+        if (*(source + i) == 0x1B) {
+            return i;
+        }
+    }
+
+    return length;
+}
+
+static COMPOUND_TEXT_CONVERTERS getState(int codepoint) {
+    COMPOUND_TEXT_CONVERTERS state = DO_SEARCH;
+
+    if (isASCIIRange(codepoint)) {
+        state = COMPOUND_TEXT_SINGLE_0;
+    } else if (isIBM912(codepoint)) {
+        state = IBM_912;
+    }else if (isIBM913(codepoint)) {
+        state = IBM_913;
+    } else if (isISO8859_14(codepoint)) {
+        state = ISO_8859_14;
+    } else if (isIBM923(codepoint)) {
+        state = IBM_923;
+    } else if (isIBM874(codepoint)) {
+        state = IBM_874;
+    } else if (isIBM914(codepoint)) {
+        state = IBM_914;
+    } else if (isCompoundS2(codepoint)) {
+        state = COMPOUND_TEXT_SINGLE_2;
+    } else if (isCompoundS3(codepoint)) {
+        state = COMPOUND_TEXT_SINGLE_3;
+    } else if (isIBM916(codepoint)) {
+        state = IBM_916;
+    } else if (isIBM915(codepoint)) {
+        state = IBM_915;
+    } else if (isCompoundS1(codepoint)) {
+        state = COMPOUND_TEXT_SINGLE_1;
+    }
+
+    return state;
+}
+
+static COMPOUND_TEXT_CONVERTERS findStateFromEscSeq(const char* source, const char* sourceLimit, const uint8_t* toUBytesBuffer, int32_t toUBytesBufferLength, UErrorCode *err) {
+    COMPOUND_TEXT_CONVERTERS state = INVALID;
+    UBool matchFound = FALSE;
+    int32_t i, n, offset = toUBytesBufferLength;
+
+    for (i = 0; i < NUM_OF_CONVERTERS; i++) {
+        matchFound = TRUE;
+        for (n = 0; escSeqCompoundText[i][n] != 0; n++) {
+            if (n < toUBytesBufferLength) {
+                if (toUBytesBuffer[n] != escSeqCompoundText[i][n]) {
+                    matchFound = FALSE;
+                    break;
+                }
+            } else if ((source + (n - offset)) >= sourceLimit) {
+                *err = U_TRUNCATED_CHAR_FOUND;
+                matchFound = FALSE;
+                break;
+            } else if (*(source + (n - offset)) != escSeqCompoundText[i][n]) {
+                matchFound = FALSE;
+                break;
+            }
+        }
+
+        if (matchFound) {
+            break;
+        }
+    }
+
+    if (matchFound) {
+        state = (COMPOUND_TEXT_CONVERTERS)i;
+    }
+
+    return state;
+}
+
+static void
+_CompoundTextOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
+    cnv->extraInfo = uprv_malloc (sizeof (UConverterDataCompoundText));
+    if (cnv->extraInfo != NULL) {
+        UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) cnv->extraInfo;
+
+        UConverterNamePieces stackPieces;
+        UConverterLoadArgs stackArgs={ (int32_t)sizeof(UConverterLoadArgs) };
+
+        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_0] = NULL;
+        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_1] = ucnv_loadSharedData("icu-internal-compound-s1", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_2] = ucnv_loadSharedData("icu-internal-compound-s2", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_3] = ucnv_loadSharedData("icu-internal-compound-s3", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_1] = ucnv_loadSharedData("icu-internal-compound-d1", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_2] = ucnv_loadSharedData("icu-internal-compound-d2", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_3] = ucnv_loadSharedData("icu-internal-compound-d3", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_4] = ucnv_loadSharedData("icu-internal-compound-d4", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_5] = ucnv_loadSharedData("icu-internal-compound-d5", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_6] = ucnv_loadSharedData("icu-internal-compound-d6", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_DOUBLE_7] = ucnv_loadSharedData("icu-internal-compound-d7", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[COMPOUND_TEXT_TRIPLE_DOUBLE] = ucnv_loadSharedData("icu-internal-compound-t", &stackPieces, &stackArgs, errorCode);
+
+        myConverterData->myConverterArray[IBM_915] = ucnv_loadSharedData("ibm-915_P100-1995", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[IBM_916] = ucnv_loadSharedData("ibm-916_P100-1995", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[IBM_914] = ucnv_loadSharedData("ibm-914_P100-1995", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[IBM_874] = ucnv_loadSharedData("ibm-874_P100-1995", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[IBM_912] = ucnv_loadSharedData("ibm-912_P100-1995", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[IBM_913] = ucnv_loadSharedData("ibm-913_P100-2000", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[ISO_8859_14] = ucnv_loadSharedData("iso-8859_14-1998", &stackPieces, &stackArgs, errorCode);
+        myConverterData->myConverterArray[IBM_923] = ucnv_loadSharedData("ibm-923_P100-1998", &stackPieces, &stackArgs, errorCode);
+
+        if (U_FAILURE(*errorCode) || pArgs->onlyTestIsLoadable) {
+            _CompoundTextClose(cnv);
+            return;
+        }
+
+        myConverterData->state = (COMPOUND_TEXT_CONVERTERS)0;
+    } else {
+        *errorCode = U_MEMORY_ALLOCATION_ERROR;
+    }
+}
+
+
+static void
+_CompoundTextClose(UConverter *converter) {
+    UConverterDataCompoundText* myConverterData = (UConverterDataCompoundText*)(converter->extraInfo);
+    int32_t i;
+
+    if (converter->extraInfo != NULL) {
+        /*close the array of converter pointers and free the memory*/
+        for (i = 0; i < NUM_OF_CONVERTERS; i++) {
+            if (myConverterData->myConverterArray[i] != NULL) {
+                ucnv_unloadSharedDataIfReady(myConverterData->myConverterArray[i]);
+            }
+        }
+
+        uprv_free(converter->extraInfo);
+    }
+}
+
+static void
+_CompoundTextReset(UConverter *converter, UConverterResetChoice choice) {
+}
+
+static const char*
+_CompoundTextgetName(const UConverter* cnv){
+    return "x11-compound-text";
+}
+
+static void
+UConverter_fromUnicode_CompoundText_OFFSETS(UConverterFromUnicodeArgs* args, UErrorCode* err){
+    UConverter *cnv = args->converter;
+    uint8_t *target = (uint8_t *) args->target;
+    const uint8_t *targetLimit = (const uint8_t *) args->targetLimit;
+    const UChar* source = args->source;
+    const UChar* sourceLimit = args->sourceLimit;
+    /* int32_t* offsets = args->offsets; */
+    UChar32 sourceChar;
+    UBool useFallback = cnv->useFallback;
+    uint8_t tmpTargetBuffer[7];
+    int32_t tmpTargetBufferLength = 0;
+    COMPOUND_TEXT_CONVERTERS currentState, tmpState;
+    uint32_t pValue;
+    int32_t pValueLength = 0;
+    int32_t i, n, j;
+
+    UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) cnv->extraInfo;
+
+    currentState = myConverterData->state;
+
+    /* check if the last codepoint of previous buffer was a lead surrogate*/
+    if((sourceChar = cnv->fromUChar32)!=0 && target< targetLimit) {
+        goto getTrail;
+    }
+
+    while( source < sourceLimit){
+        if(target < targetLimit){
+
+            sourceChar  = *(source++);
+            /*check if the char is a First surrogate*/
+             if(U16_IS_SURROGATE(sourceChar)) {
+                if(U16_IS_SURROGATE_LEAD(sourceChar)) {
+getTrail:
+                    /*look ahead to find the trail surrogate*/
+                    if(source < sourceLimit) {
+                        /* test the following code unit */
+                        UChar trail=(UChar) *source;
+                        if(U16_IS_TRAIL(trail)) {
+                            source++;
+                            sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
+                            cnv->fromUChar32=0x00;
+                            /* convert this supplementary code point */
+                            /* exit this condition tree */
+                        } else {
+                            /* this is an unmatched lead code unit (1st surrogate) */
+                            /* callback(illegal) */
+                            *err=U_ILLEGAL_CHAR_FOUND;
+                            cnv->fromUChar32=sourceChar;
+                            break;
+                        }
+                    } else {
+                        /* no more input */
+                        cnv->fromUChar32=sourceChar;
+                        break;
+                    }
+                } else {
+                    /* this is an unmatched trail code unit (2nd surrogate) */
+                    /* callback(illegal) */
+                    *err=U_ILLEGAL_CHAR_FOUND;
+                    cnv->fromUChar32=sourceChar;
+                    break;
+                }
+            }
+
+             tmpTargetBufferLength = 0;
+             tmpState = getState(sourceChar);
+
+             if (tmpState != DO_SEARCH && currentState != tmpState) {
+                 /* Get escape sequence if necessary */
+                 currentState = tmpState;
+                 for (i = 0; escSeqCompoundText[currentState][i] != 0; i++) {
+                     tmpTargetBuffer[tmpTargetBufferLength++] = escSeqCompoundText[currentState][i];
+                 }
+             }
+
+             if (tmpState == DO_SEARCH) {
+                 /* Test all available converters */
+                 for (i = 1; i < SEARCH_LENGTH; i++) {
+                     pValueLength = ucnv_MBCSFromUChar32(myConverterData->myConverterArray[i], sourceChar, &pValue, useFallback);
+                     if (pValueLength > 0) {
+                         tmpState = (COMPOUND_TEXT_CONVERTERS)i;
+                         if (currentState != tmpState) {
+                             currentState = tmpState;
+                             for (j = 0; escSeqCompoundText[currentState][j] != 0; j++) {
+                                 tmpTargetBuffer[tmpTargetBufferLength++] = escSeqCompoundText[currentState][j];
+                             }
+                         }
+                         for (n = (pValueLength - 1); n >= 0; n--) {
+                             tmpTargetBuffer[tmpTargetBufferLength++] = (uint8_t)(pValue >> (n * 8));
+                         }
+                         break;
+                     }
+                 }
+             } else if (tmpState == COMPOUND_TEXT_SINGLE_0) {
+                 tmpTargetBuffer[tmpTargetBufferLength++] = (uint8_t)sourceChar;
+             } else {
+                 pValueLength = ucnv_MBCSFromUChar32(myConverterData->myConverterArray[currentState], sourceChar, &pValue, useFallback);
+                 if (pValueLength > 0) {
+                     for (n = (pValueLength - 1); n >= 0; n--) {
+                         tmpTargetBuffer[tmpTargetBufferLength++] = (uint8_t)(pValue >> (n * 8));
+                     }
+                 }
+             }
+
+             for (i = 0; i < tmpTargetBufferLength; i++) {
+                 if (target < targetLimit) {
+                     *target++ = tmpTargetBuffer[i];
+                 } else {
+                     *err = U_BUFFER_OVERFLOW_ERROR;
+                     break;
+                 }
+             }
+
+             if (*err == U_BUFFER_OVERFLOW_ERROR) {
+                 for (; i < tmpTargetBufferLength; i++) {
+                     args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = tmpTargetBuffer[i];
+                 }
+             }
+        } else {
+            *err = U_BUFFER_OVERFLOW_ERROR;
+            break;
+        }
+    }
+
+    /*save the state and return */
+    myConverterData->state = currentState;
+    args->source = source;
+    args->target = (char*)target;
+}
+
+
+static void
+UConverter_toUnicode_CompoundText_OFFSETS(UConverterToUnicodeArgs *args,
+                                               UErrorCode* err){
+    const char *mySource = (char *) args->source;
+    UChar *myTarget = args->target;
+    const char *mySourceLimit = args->sourceLimit;
+    const char *tmpSourceLimit = mySourceLimit;
+    uint32_t mySourceChar = 0x0000;
+    COMPOUND_TEXT_CONVERTERS currentState, tmpState;
+    int32_t sourceOffset = 0;
+    UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) args->converter->extraInfo;
+    UConverterSharedData* savedSharedData = NULL;
+
+    UConverterToUnicodeArgs subArgs;
+    int32_t minArgsSize;
+
+    /* set up the subconverter arguments */
+    if(args->size<sizeof(UConverterToUnicodeArgs)) {
+        minArgsSize = args->size;
+    } else {
+        minArgsSize = (int32_t)sizeof(UConverterToUnicodeArgs);
+    }
+
+    uprv_memcpy(&subArgs, args, minArgsSize);
+    subArgs.size = (uint16_t)minArgsSize;
+
+    currentState = tmpState =  myConverterData->state;
+
+    while(mySource < mySourceLimit){
+        if(myTarget < args->targetLimit){
+            if (args->converter->toULength > 0) {
+                mySourceChar = args->converter->toUBytes[0];
+            } else {
+                mySourceChar = (uint8_t)*mySource;
+            }
+
+            if (mySourceChar == ESC_START) {
+                tmpState = findStateFromEscSeq(mySource, mySourceLimit, args->converter->toUBytes, args->converter->toULength, err);
+
+                if (*err == U_TRUNCATED_CHAR_FOUND) {
+                    for (; mySource < mySourceLimit;) {
+                        args->converter->toUBytes[args->converter->toULength++] = *mySource++;
+                    }
+                    *err = U_ZERO_ERROR;
+                    break;
+                } else if (tmpState == INVALID) {
+                    if (args->converter->toULength == 0) {
+                        mySource++; /* skip over the 0x1b byte */
+                    }
+                    *err = U_ILLEGAL_CHAR_FOUND;
+                    break;
+                }
+
+                if (tmpState != currentState) {
+                    currentState = tmpState;
+                }
+
+                sourceOffset = uprv_strlen((char*)escSeqCompoundText[currentState]) - args->converter->toULength;
+
+                mySource += sourceOffset;
+
+                args->converter->toULength = 0;
+            }
+
+            if (currentState == COMPOUND_TEXT_SINGLE_0) {
+                while (mySource < mySourceLimit) {
+                    if (*mySource == ESC_START) {
+                        break;
+                    }
+                    if (myTarget < args->targetLimit) {
+                        *myTarget++ = 0x00ff&(*mySource++);
+                    } else {
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                        break;
+                    }
+                }
+            } else if (mySource < mySourceLimit){
+                sourceOffset = findNextEsc(mySource, mySourceLimit);
+
+                tmpSourceLimit = mySource + sourceOffset;
+
+                subArgs.source = mySource;
+                subArgs.sourceLimit = tmpSourceLimit;
+                subArgs.target = myTarget;
+                savedSharedData = subArgs.converter->sharedData;
+                subArgs.converter->sharedData = myConverterData->myConverterArray[currentState];
+
+                ucnv_MBCSToUnicodeWithOffsets(&subArgs, err);
+
+                subArgs.converter->sharedData = savedSharedData;
+
+                mySource = subArgs.source;
+                myTarget = subArgs.target;
+
+                if (U_FAILURE(*err)) {
+                    if(*err == U_BUFFER_OVERFLOW_ERROR) {
+                        if(subArgs.converter->UCharErrorBufferLength > 0) {
+                            uprv_memcpy(args->converter->UCharErrorBuffer, subArgs.converter->UCharErrorBuffer,
+                                        subArgs.converter->UCharErrorBufferLength);
+                        }
+                        args->converter->UCharErrorBufferLength=subArgs.converter->UCharErrorBufferLength;
+                        subArgs.converter->UCharErrorBufferLength = 0;
+                    }
+                    break;
+                }
+            }
+        } else {
+            *err = U_BUFFER_OVERFLOW_ERROR;
+            break;
+        }
+    }
+    myConverterData->state = currentState;
+    args->target = myTarget;
+    args->source = mySource;
+}
+
+static void
+_CompoundText_GetUnicodeSet(const UConverter *cnv,
+                    const USetAdder *sa,
+                    UConverterUnicodeSet which,
+                    UErrorCode *pErrorCode) {
+    UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *)cnv->extraInfo;
+    int32_t i;
+
+    for (i = 1; i < NUM_OF_CONVERTERS; i++) {
+        ucnv_MBCSGetUnicodeSetForUnicode(myConverterData->myConverterArray[i], sa, which, pErrorCode);
+    }
+    sa->add(sa->set, 0x0000);
+    sa->add(sa->set, 0x0009);
+    sa->add(sa->set, 0x000A);
+    sa->addRange(sa->set, 0x0020, 0x007F);
+    sa->addRange(sa->set, 0x00A0, 0x00FF);
+}
+
+static const UConverterImpl _CompoundTextImpl = {
+
+    UCNV_COMPOUND_TEXT,
+
+    NULL,
+    NULL,
+
+    _CompoundTextOpen,
+    _CompoundTextClose,
+    _CompoundTextReset,
+
+    UConverter_toUnicode_CompoundText_OFFSETS,
+    UConverter_toUnicode_CompoundText_OFFSETS,
+    UConverter_fromUnicode_CompoundText_OFFSETS,
+    UConverter_fromUnicode_CompoundText_OFFSETS,
+    NULL,
+
+    NULL,
+    _CompoundTextgetName,
+    NULL,
+    NULL,
+    _CompoundText_GetUnicodeSet
+};
+static const UConverterStaticData _CompoundTextStaticData = {
+    sizeof(UConverterStaticData),
+    "COMPOUND_TEXT",
+    0,
+    UCNV_IBM,
+    UCNV_COMPOUND_TEXT,
+    1,
+    6,
+    { 0xef, 0, 0, 0 },
+    1,
+    FALSE,
+    FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+const UConverterSharedData _CompoundTextData =
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_CompoundTextStaticData, &_CompoundTextImpl);
+
+#endif /* #if !UCONFIG_NO_LEGACY_CONVERSION */
diff --git a/source/common/ucnv_err.c b/source/common/ucnv_err.c
new file mode 100644 (file)
index 0000000..c609bed
--- /dev/null
@@ -0,0 +1,481 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+ *****************************************************************************
+ *
+ *   Copyright (C) 1998-2016, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ *****************************************************************************
+ *
+ *  ucnv_err.c
+ *  Implements error behaviour functions called by T_UConverter_{from,to}Unicode
+ *
+ *
+*   Change history:
+*
+*   06/29/2000  helena      Major rewrite of the callback APIs.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ucnv_err.h"
+#include "unicode/ucnv_cb.h"
+#include "ucnv_cnv.h"
+#include "cmemory.h"
+#include "unicode/ucnv.h"
+#include "ustrfmt.h"
+
+#define VALUE_STRING_LENGTH 48
+/*Magic # 32 = 4(number of char in value string) * 8(max number of bytes per char for any converter) */
+#define UNICODE_PERCENT_SIGN_CODEPOINT  0x0025
+#define UNICODE_U_CODEPOINT             0x0055
+#define UNICODE_X_CODEPOINT             0x0058
+#define UNICODE_RS_CODEPOINT            0x005C
+#define UNICODE_U_LOW_CODEPOINT         0x0075
+#define UNICODE_X_LOW_CODEPOINT         0x0078
+#define UNICODE_AMP_CODEPOINT           0x0026
+#define UNICODE_HASH_CODEPOINT          0x0023
+#define UNICODE_SEMICOLON_CODEPOINT     0x003B
+#define UNICODE_PLUS_CODEPOINT          0x002B
+#define UNICODE_LEFT_CURLY_CODEPOINT    0x007B
+#define UNICODE_RIGHT_CURLY_CODEPOINT   0x007D
+#define UNICODE_SPACE_CODEPOINT         0x0020
+#define UCNV_PRV_ESCAPE_ICU         0
+#define UCNV_PRV_ESCAPE_C           'C'
+#define UCNV_PRV_ESCAPE_XML_DEC     'D'
+#define UCNV_PRV_ESCAPE_XML_HEX     'X'
+#define UCNV_PRV_ESCAPE_JAVA        'J'
+#define UCNV_PRV_ESCAPE_UNICODE     'U'
+#define UCNV_PRV_ESCAPE_CSS2        'S'
+#define UCNV_PRV_STOP_ON_ILLEGAL    'i'
+
+/*
+ * IS_DEFAULT_IGNORABLE_CODE_POINT
+ * This is to check if a code point has the default ignorable unicode property.
+ * As such, this list needs to be updated if the ignorable code point list ever
+ * changes.
+ * To avoid dependency on other code, this list is hard coded here.
+ * When an ignorable code point is found and is unmappable, the default callbacks
+ * will ignore them.
+ * For a list of the default ignorable code points, use this link: http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[%3ADI%3A]&g=
+ *
+ * This list should be sync with the one in CharsetCallback.java
+ */
+#define IS_DEFAULT_IGNORABLE_CODE_POINT(c) (\
+    (c == 0x00AD) || \
+    (c == 0x034F) || \
+    (c == 0x061C) || \
+    (c == 0x115F) || \
+    (c == 0x1160) || \
+    (0x17B4 <= c && c <= 0x17B5) || \
+    (0x180B <= c && c <= 0x180E) || \
+    (0x200B <= c && c <= 0x200F) || \
+    (0x202A <= c && c <= 0x202E) || \
+    (c == 0x2060) || \
+    (0x2066 <= c && c <= 0x2069) || \
+    (0x2061 <= c && c <= 0x2064) || \
+    (0x206A <= c && c <= 0x206F) || \
+    (c == 0x3164) || \
+    (0x0FE00 <= c && c <= 0x0FE0F) || \
+    (c == 0x0FEFF) || \
+    (c == 0x0FFA0) || \
+    (0x01BCA0  <= c && c <= 0x01BCA3) || \
+    (0x01D173 <= c && c <= 0x01D17A) || \
+    (c == 0x0E0001) || \
+    (0x0E0020 <= c && c <= 0x0E007F) || \
+    (0x0E0100 <= c && c <= 0x0E01EF) || \
+    (c == 0x2065) || \
+    (0x0FFF0 <= c && c <= 0x0FFF8) || \
+    (c == 0x0E0000) || \
+    (0x0E0002 <= c && c <= 0x0E001F) || \
+    (0x0E0080 <= c && c <= 0x0E00FF) || \
+    (0x0E01F0 <= c && c <= 0x0E0FFF) \
+    )
+
+
+/*Function Pointer STOPS at the ILLEGAL_SEQUENCE */
+U_CAPI void    U_EXPORT2
+UCNV_FROM_U_CALLBACK_STOP (
+                  const void *context,
+                  UConverterFromUnicodeArgs *fromUArgs,
+                  const UChar* codeUnits,
+                  int32_t length,
+                  UChar32 codePoint,
+                  UConverterCallbackReason reason,
+                  UErrorCode * err)
+{
+    if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
+    {
+        /*
+         * Skip if the codepoint has unicode property of default ignorable.
+         */
+        *err = U_ZERO_ERROR;
+    }
+    /* the caller must have set the error code accordingly */
+    return;
+}
+
+
+/*Function Pointer STOPS at the ILLEGAL_SEQUENCE */
+U_CAPI void    U_EXPORT2
+UCNV_TO_U_CALLBACK_STOP (
+                   const void *context,
+                   UConverterToUnicodeArgs *toUArgs,
+                   const char* codePoints,
+                   int32_t length,
+                   UConverterCallbackReason reason,
+                   UErrorCode * err)
+{
+    /* the caller must have set the error code accordingly */
+    return;
+}
+
+U_CAPI void    U_EXPORT2
+UCNV_FROM_U_CALLBACK_SKIP (                  
+                  const void *context,
+                  UConverterFromUnicodeArgs *fromUArgs,
+                  const UChar* codeUnits,
+                  int32_t length,
+                  UChar32 codePoint,
+                  UConverterCallbackReason reason,
+                  UErrorCode * err)
+{
+    if (reason <= UCNV_IRREGULAR)
+    {
+        if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
+        {
+            /*
+             * Skip if the codepoint has unicode property of default ignorable.
+             */
+            *err = U_ZERO_ERROR;
+        }
+        else if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+        {
+            *err = U_ZERO_ERROR;
+        }
+        /* else the caller must have set the error code accordingly. */
+    }
+    /* else ignore the reset, close and clone calls. */
+}
+
+U_CAPI void    U_EXPORT2
+UCNV_FROM_U_CALLBACK_SUBSTITUTE (
+                  const void *context,
+                  UConverterFromUnicodeArgs *fromArgs,
+                  const UChar* codeUnits,
+                  int32_t length,
+                  UChar32 codePoint,
+                  UConverterCallbackReason reason,
+                  UErrorCode * err)
+{
+    if (reason <= UCNV_IRREGULAR)
+    {
+        if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
+        {
+            /*
+             * Skip if the codepoint has unicode property of default ignorable.
+             */
+            *err = U_ZERO_ERROR;
+        }
+        else if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+        {
+            *err = U_ZERO_ERROR;
+            ucnv_cbFromUWriteSub(fromArgs, 0, err);
+        }
+        /* else the caller must have set the error code accordingly. */
+    }
+    /* else ignore the reset, close and clone calls. */
+}
+
+/*uses uprv_itou to get a unicode escape sequence of the offensive sequence,
+ *uses a clean copy (resetted) of the converter, to convert that unicode
+ *escape sequence to the target codepage (if conversion failure happens then
+ *we revert to substituting with subchar)
+ */
+U_CAPI void    U_EXPORT2
+UCNV_FROM_U_CALLBACK_ESCAPE (
+                         const void *context,
+                         UConverterFromUnicodeArgs *fromArgs,
+                         const UChar *codeUnits,
+                         int32_t length,
+                         UChar32 codePoint,
+                         UConverterCallbackReason reason,
+                         UErrorCode * err)
+{
+
+  UChar valueString[VALUE_STRING_LENGTH];
+  int32_t valueStringLength = 0;
+  int32_t i = 0;
+
+  const UChar *myValueSource = NULL;
+  UErrorCode err2 = U_ZERO_ERROR;
+  UConverterFromUCallback original = NULL;
+  const void *originalContext;
+
+  UConverterFromUCallback ignoredCallback = NULL;
+  const void *ignoredContext;
+  
+  if (reason > UCNV_IRREGULAR)
+  {
+      return;
+  }
+  else if (reason == UCNV_UNASSIGNED && IS_DEFAULT_IGNORABLE_CODE_POINT(codePoint))
+  {
+      /*
+       * Skip if the codepoint has unicode property of default ignorable.
+       */
+      *err = U_ZERO_ERROR;
+      return;
+  }
+
+  ucnv_setFromUCallBack (fromArgs->converter,
+                     (UConverterFromUCallback) UCNV_FROM_U_CALLBACK_SUBSTITUTE,
+                     NULL,
+                     &original,
+                     &originalContext,
+                     &err2);
+  
+  if (U_FAILURE (err2))
+  {
+    *err = err2;
+    return;
+  } 
+  if(context==NULL)
+  { 
+      while (i < length)
+      {
+        valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT;  /* adding % */
+        valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
+        valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
+      }
+  }
+  else
+  {
+      switch(*((char*)context))
+      {
+      case UCNV_PRV_ESCAPE_JAVA:
+          while (i < length)
+          {
+              valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
+              valueString[valueStringLength++] = (UChar) UNICODE_U_LOW_CODEPOINT; /* adding u */
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
+          }
+          break;
+
+      case UCNV_PRV_ESCAPE_C:
+          valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
+
+          if(length==2){
+              valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 8);
+
+          }
+          else{
+              valueString[valueStringLength++] = (UChar) UNICODE_U_LOW_CODEPOINT; /* adding u */
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 4);
+          }
+          break;
+
+      case UCNV_PRV_ESCAPE_XML_DEC:
+
+          valueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
+          valueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
+          if(length==2){
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 10, 0);
+          }
+          else{
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 10, 0);
+          }
+          valueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+          break;
+
+      case UCNV_PRV_ESCAPE_XML_HEX:
+
+          valueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
+          valueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
+          valueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
+          if(length==2){
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 0);
+          }
+          else{
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 0);
+          }
+          valueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+          break;
+
+      case UCNV_PRV_ESCAPE_UNICODE:
+          valueString[valueStringLength++] = (UChar) UNICODE_LEFT_CURLY_CODEPOINT;    /* adding { */
+          valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT;    /* adding U */
+          valueString[valueStringLength++] = (UChar) UNICODE_PLUS_CODEPOINT; /* adding + */
+          if (length == 2) {
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 4);
+          } else {
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 4);
+          }
+          valueString[valueStringLength++] = (UChar) UNICODE_RIGHT_CURLY_CODEPOINT;    /* adding } */
+          break;
+
+      case UCNV_PRV_ESCAPE_CSS2:
+          valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
+          valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 0);
+          /* Always add space character, becase the next character might be whitespace,
+             which would erroneously be considered the termination of the escape sequence. */
+          valueString[valueStringLength++] = (UChar) UNICODE_SPACE_CODEPOINT;
+          break;
+
+      default:
+          while (i < length)
+          {
+              valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT;  /* adding % */
+              valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT;             /* adding U */
+              valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
+          }
+      }
+  }  
+  myValueSource = valueString;
+
+  /* reset the error */
+  *err = U_ZERO_ERROR;
+
+  ucnv_cbFromUWriteUChars(fromArgs, &myValueSource, myValueSource+valueStringLength, 0, err);
+
+  ucnv_setFromUCallBack (fromArgs->converter,
+                         original,
+                         originalContext,
+                         &ignoredCallback,
+                         &ignoredContext,
+                         &err2);
+  if (U_FAILURE (err2))
+  {
+      *err = err2;
+      return;
+  }
+
+  return;
+}
+
+
+
+U_CAPI void  U_EXPORT2
+UCNV_TO_U_CALLBACK_SKIP (
+                 const void *context,
+                 UConverterToUnicodeArgs *toArgs,
+                 const char* codeUnits,
+                 int32_t length,
+                 UConverterCallbackReason reason,
+                 UErrorCode * err)
+{
+    if (reason <= UCNV_IRREGULAR)
+    {
+        if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+        {
+            *err = U_ZERO_ERROR;
+        }
+        /* else the caller must have set the error code accordingly. */
+    }
+    /* else ignore the reset, close and clone calls. */
+}
+
+U_CAPI void    U_EXPORT2
+UCNV_TO_U_CALLBACK_SUBSTITUTE (
+                 const void *context,
+                 UConverterToUnicodeArgs *toArgs,
+                 const char* codeUnits,
+                 int32_t length,
+                 UConverterCallbackReason reason,
+                 UErrorCode * err)
+{
+    if (reason <= UCNV_IRREGULAR)
+    {
+        if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+        {
+            *err = U_ZERO_ERROR;
+            ucnv_cbToUWriteSub(toArgs,0,err);
+        }
+        /* else the caller must have set the error code accordingly. */
+    }
+    /* else ignore the reset, close and clone calls. */
+}
+
+/*uses uprv_itou to get a unicode escape sequence of the offensive sequence,
+ *and uses that as the substitution sequence
+ */
+U_CAPI void   U_EXPORT2
+UCNV_TO_U_CALLBACK_ESCAPE (
+                 const void *context,
+                 UConverterToUnicodeArgs *toArgs,
+                 const char* codeUnits,
+                 int32_t length,
+                 UConverterCallbackReason reason,
+                 UErrorCode * err)
+{
+    UChar uniValueString[VALUE_STRING_LENGTH];
+    int32_t valueStringLength = 0;
+    int32_t i = 0;
+
+    if (reason > UCNV_IRREGULAR)
+    {
+        return;
+    }
+
+    if(context==NULL)
+    {    
+        while (i < length)
+        {
+            uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+            uniValueString[valueStringLength++] = (UChar) UNICODE_X_CODEPOINT;    /* adding X */
+            valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t) codeUnits[i++], 16, 2);
+        }
+    }
+    else
+    {
+        switch(*((char*)context))
+        {
+        case UCNV_PRV_ESCAPE_XML_DEC:
+            while (i < length)
+            {
+                uniValueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
+                uniValueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
+                valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 10, 0);
+                uniValueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+            }
+            break;
+
+        case UCNV_PRV_ESCAPE_XML_HEX:
+            while (i < length)
+            {
+                uniValueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT;   /* adding & */
+                uniValueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT;  /* adding # */
+                uniValueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
+                valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 16, 0);
+                uniValueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+            }
+            break;
+        case UCNV_PRV_ESCAPE_C:
+            while (i < length)
+            {
+                uniValueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT;    /* adding \ */
+                uniValueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
+                valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 16, 2);
+            }
+            break;
+        default:
+            while (i < length)
+            {
+                uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+                uniValueString[valueStringLength++] = (UChar) UNICODE_X_CODEPOINT;    /* adding X */
+                uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t) codeUnits[i++], 16, 2);
+                valueStringLength += 2;
+            }
+        }
+    }
+    /* reset the error */
+    *err = U_ZERO_ERROR;
+
+    ucnv_cbToUWriteUChars(toArgs, uniValueString, valueStringLength, 0, err);
+}
+
+#endif
index 7dea4ee..f860518 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnv_ext.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -23,7 +23,6 @@
 #if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION
 
 #include "unicode/uset.h"
-#include "unicode/ustring.h"
 #include "ucnv_bld.h"
 #include "ucnv_cnv.h"
 #include "ucnv_ext.h"
index dceea7e..c2f459c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnv_ext.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index c5e6aeb..81aa80f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7a95a3f..c3301e1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 8f2d7b5..8b35857 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
diff --git a/source/common/ucnv_lmb.c b/source/common/ucnv_lmb.c
new file mode 100644 (file)
index 0000000..e427790
--- /dev/null
@@ -0,0 +1,1378 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+**********************************************************************
+*   Copyright (C) 2000-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnv_lmb.cpp
+*   encoding:   US-ASCII
+*   tab size:   4 (not used)
+*   indentation:4
+*
+*   created on: 2000feb09
+*   created by: Brendan Murray
+*   extensively hacked up by: Jim Snyder-Grant
+*
+* Modification History:
+* 
+*   Date        Name             Description
+* 
+*   06/20/2000  helena           OS/400 port changes; mostly typecast.
+*   06/27/2000  Jim Snyder-Grant Deal with partial characters and small buffers.
+*                                Add comments to document LMBCS format and implementation
+*                                restructured order & breakdown of functions
+*   06/28/2000  helena           Major rewrite for the callback API changes.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "unicode/ucnv_err.h"
+#include "unicode/ucnv.h"
+#include "unicode/uset.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "uassert.h"
+#include "ucnv_imp.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+
+#ifdef EBCDIC_RTL
+    #include "ascii_a.h"
+#endif
+
+/*
+  LMBCS
+
+  (Lotus Multi-Byte Character Set)
+
+  LMBCS was invented in the late 1980's and is primarily used in Lotus Notes 
+  databases and in Lotus 1-2-3 files. Programmers who work with the APIs 
+  into these products will sometimes need to deal with strings in this format.
+
+  The code in this file provides an implementation for an ICU converter of 
+  LMBCS to and from Unicode. 
+
+  Since the LMBCS character set is only sparsely documented in existing 
+  printed or online material, we have added  extensive annotation to this 
+  file to serve as a guide to understanding LMBCS. 
+
+  LMBCS was originally designed with these four sometimes-competing design goals:
+
+  -Provide encodings for the characters in 12 existing national standards
+   (plus a few other characters)
+  -Minimal memory footprint
+  -Maximal speed of conversion into the existing national character sets
+  -No need to track a changing state as you interpret a string.
+
+
+  All of the national character sets LMBCS was trying to encode are 'ANSI'
+  based, in that the bytes from 0x20 - 0x7F are almost exactly the 
+  same common Latin unaccented characters and symbols in all character sets. 
+
+  So, in order to help meet the speed & memory design goals, the common ANSI 
+  bytes from 0x20-0x7F are represented by the same single-byte values in LMBCS. 
+
+  The general LMBCS code unit is from 1-3 bytes. We can describe the 3 bytes as
+  follows:
+
+  [G] D1 [D2]
+
+  That is, a sometimes-optional 'group' byte, followed by 1 and sometimes 2
+  data bytes. The maximum size of a LMBCS chjaracter is 3 bytes:
+*/
+#define ULMBCS_CHARSIZE_MAX      3
+/*
+  The single-byte values from 0x20 to 0x7F are examples of single D1 bytes.
+  We often have to figure out if byte values are below or above this, so we 
+  use the ANSI nomenclature 'C0' and 'C1' to refer to the range of control 
+  characters just above & below the common lower-ANSI  range */
+#define ULMBCS_C0END           0x1F   
+#define ULMBCS_C1START         0x80   
+/*
+  Since LMBCS is always dealing in byte units. we create a local type here for 
+  dealing with these units of LMBCS code units:
+
+*/  
+typedef uint8_t ulmbcs_byte_t;
+
+/* 
+   Most of the values less than 0x20 are reserved in LMBCS to announce 
+   which national  character standard is being used for the 'D' bytes. 
+   In the comments we show the common name and the IBM character-set ID
+   for these character-set announcers:
+*/
+
+#define ULMBCS_GRP_L1         0x01   /* Latin-1    :ibm-850  */
+#define ULMBCS_GRP_GR         0x02   /* Greek      :ibm-851  */
+#define ULMBCS_GRP_HE         0x03   /* Hebrew     :ibm-1255 */
+#define ULMBCS_GRP_AR         0x04   /* Arabic     :ibm-1256 */
+#define ULMBCS_GRP_RU         0x05   /* Cyrillic   :ibm-1251 */
+#define ULMBCS_GRP_L2         0x06   /* Latin-2    :ibm-852  */
+#define ULMBCS_GRP_TR         0x08   /* Turkish    :ibm-1254 */
+#define ULMBCS_GRP_TH         0x0B   /* Thai       :ibm-874  */
+#define ULMBCS_GRP_JA         0x10   /* Japanese   :ibm-943  */
+#define ULMBCS_GRP_KO         0x11   /* Korean     :ibm-1261 */
+#define ULMBCS_GRP_TW         0x12   /* Chinese SC :ibm-950  */
+#define ULMBCS_GRP_CN         0x13   /* Chinese TC :ibm-1386 */
+
+/*
+   So, the beginning of understanding LMBCS is that IF the first byte of a LMBCS 
+   character is one of those 12 values, you can interpret the remaining bytes of 
+   that character as coming from one of those character sets. Since the lower 
+   ANSI bytes already are represented in single bytes, using one of the character 
+   set announcers is used to announce a character that starts with a byte of 
+   0x80 or greater.
+
+   The character sets are  arranged so that the single byte sets all appear 
+   before the multi-byte character sets. When we need to tell whether a 
+   group byte is for a single byte char set or not we use this define: */
+
+#define ULMBCS_DOUBLEOPTGROUP_START  0x10   
+
+/* 
+However, to fully understand LMBCS, you must also understand a series of 
+exceptions & optimizations made in service of the design goals. 
+
+First, those of you who are character set mavens may have noticed that
+the 'double-byte' character sets are actually multi-byte character sets 
+that can have 1 or two bytes, even in the upper-ascii range. To force
+each group byte to introduce a fixed-width encoding (to make it faster to 
+count characters), we use a convention of doubling up on the group byte 
+to introduce any single-byte character > 0x80 in an otherwise double-byte
+character set. So, for example, the LMBCS sequence x10 x10 xAE is the 
+same as '0xAE' in the Japanese code page 943.
+
+Next, you will notice that the list of group bytes has some gaps. 
+These are used in various ways.
+
+We reserve a few special single byte values for common control 
+characters. These are in the same place as their ANSI eqivalents for speed.
+*/
+                     
+#define ULMBCS_HT    0x09   /* Fixed control char - Horizontal Tab */
+#define ULMBCS_LF    0x0A   /* Fixed control char - Line Feed */
+#define ULMBCS_CR    0x0D   /* Fixed control char - Carriage Return */
+
+/* Then, 1-2-3 reserved a special single-byte character to put at the 
+beginning of internal 'system' range names: */
+
+#define ULMBCS_123SYSTEMRANGE  0x19   
+
+/* Then we needed a place to put all the other ansi control characters 
+that must be moved to different values because LMBCS reserves those 
+values for other purposes. To represent the control characters, we start 
+with a first byte of 0xF & add the control chaarcter value as the 
+second byte */
+#define ULMBCS_GRP_CTRL       0x0F   
+
+/* For the C0 controls (less than 0x20), we add 0x20 to preserve the 
+useful doctrine that any byte less than 0x20 in a LMBCS char must be 
+the first byte of a character:*/
+#define ULMBCS_CTRLOFFSET      0x20   
+
+/* 
+Where to put the characters that aren't part of any of the 12 national 
+character sets? The first thing that was done, in the earlier years of 
+LMBCS, was to use up the spaces of the form
+
+  [G] D1, 
+  
+ where  'G' was one of the single-byte character groups, and
+ D1 was less than 0x80. These sequences are gathered together 
+ into a Lotus-invented doublebyte character set to represent a 
+ lot of stray values. Internally, in this implementation, we track this 
+ as group '0', as a place to tuck this exceptions list.*/
+
+#define ULMBCS_GRP_EXCEPT     0x00    
+/*
+ Finally, as the durability and usefulness of UNICODE became clear, 
+ LOTUS added a new group 0x14 to hold Unicode values not otherwise 
+ represented in LMBCS: */
+#define ULMBCS_GRP_UNICODE    0x14   
+/* The two bytes appearing after a 0x14 are intrepreted as UFT-16 BE
+(Big-Endian) characters. The exception comes when the UTF16 
+representation would have a zero as the second byte. In that case,
+'F6' is used in its place, and the bytes are swapped. (This prevents 
+LMBCS from encoding any Unicode values of the form U+F6xx, but that's OK:
+0xF6xx is in the middle of the Private Use Area.)*/
+#define ULMBCS_UNICOMPATZERO   0xF6   
+
+/* It is also useful in our code to have a constant for the size of 
+a LMBCS char that holds a literal Unicode value */
+#define ULMBCS_UNICODE_SIZE      3    
+
+/* 
+To squish the LMBCS representations down even further, and to make 
+translations even faster,sometimes the optimization group byte can be dropped 
+from a LMBCS character. This is decided on a process-by-process basis. The 
+group byte that is dropped is called the 'optimization group'.
+
+For Notes, the optimzation group is always 0x1.*/
+#define ULMBCS_DEFAULTOPTGROUP 0x1    
+/* For 1-2-3 files, the optimzation group is stored in the header of the 1-2-3 
+file. 
+
+ In any case, when using ICU, you either pass in the 
+optimization group as part of the name of the converter (LMBCS-1, LMBCS-2, 
+etc.). Using plain 'LMBCS' as the name of the converter will give you 
+LMBCS-1.
+
+
+*** Implementation strategy ***
+
+
+Because of the extensive use of other character sets, the LMBCS converter
+keeps a mapping between optimization groups and IBM character sets, so that
+ICU converters can be created and used as needed. */
+
+/* As you can see, even though any byte below 0x20 could be an optimization 
+byte, only those at 0x13 or below can map to an actual converter. To limit
+some loops and searches, we define a value for that last group converter:*/
+
+#define ULMBCS_GRP_LAST       0x13   /* last LMBCS group that has a converter */
+
+static const char * const OptGroupByteToCPName[ULMBCS_GRP_LAST + 1] = {
+   /* 0x0000 */ "lmb-excp", /* internal home for the LOTUS exceptions list */
+   /* 0x0001 */ "ibm-850",
+   /* 0x0002 */ "ibm-851",
+   /* 0x0003 */ "windows-1255",
+   /* 0x0004 */ "windows-1256",
+   /* 0x0005 */ "windows-1251",
+   /* 0x0006 */ "ibm-852",
+   /* 0x0007 */ NULL,      /* Unused */
+   /* 0x0008 */ "windows-1254",
+   /* 0x0009 */ NULL,      /* Control char HT */
+   /* 0x000A */ NULL,      /* Control char LF */
+   /* 0x000B */ "windows-874",
+   /* 0x000C */ NULL,      /* Unused */
+   /* 0x000D */ NULL,      /* Control char CR */
+   /* 0x000E */ NULL,      /* Unused */
+   /* 0x000F */ NULL,      /* Control chars: 0x0F20 + C0/C1 character: algorithmic */
+   /* 0x0010 */ "windows-932",
+   /* 0x0011 */ "windows-949",
+   /* 0x0012 */ "windows-950",
+   /* 0x0013 */ "windows-936"
+
+   /* The rest are null, including the 0x0014 Unicode compatibility region
+   and 0x0019, the 1-2-3 system range control char */      
+};
+
+
+/* That's approximately all the data that's needed for translating 
+  LMBCS to Unicode. 
+
+
+However, to translate Unicode to LMBCS, we need some more support.
+
+That's because there are often more than one possible mappings from a Unicode
+code point back into LMBCS. The first thing we do is look up into a table
+to figure out if there are more than one possible mappings. This table,
+arranged by Unicode values (including ranges) either lists which group 
+to use, or says that it could go into one or more of the SBCS sets, or
+into one or more of the DBCS sets.  (If the character exists in both DBCS & 
+SBCS, the table will place it in the SBCS sets, to make the LMBCS code point 
+length as small as possible. Here's the two special markers we use to indicate
+ambiguous mappings: */
+
+#define ULMBCS_AMBIGUOUS_SBCS   0x80   /* could fit in more than one 
+                                          LMBCS sbcs native encoding 
+                                          (example: most accented latin) */
+#define ULMBCS_AMBIGUOUS_MBCS   0x81   /* could fit in more than one 
+                                          LMBCS mbcs native encoding 
+                                          (example: Unihan) */
+#define ULMBCS_AMBIGUOUS_ALL   0x82
+/* And here's a simple way to see if a group falls in an appropriate range */
+#define ULMBCS_AMBIGUOUS_MATCH(agroup, xgroup) \
+                  ((((agroup) == ULMBCS_AMBIGUOUS_SBCS) && \
+                  (xgroup) < ULMBCS_DOUBLEOPTGROUP_START) || \
+                  (((agroup) == ULMBCS_AMBIGUOUS_MBCS) && \
+                  (xgroup) >= ULMBCS_DOUBLEOPTGROUP_START)) || \
+                  ((agroup) == ULMBCS_AMBIGUOUS_ALL)
+
+
+/* The table & some code to use it: */
+
+
+static const struct _UniLMBCSGrpMap  
+{
+   const UChar uniStartRange;
+   const UChar uniEndRange;
+   const ulmbcs_byte_t  GrpType;
+} UniLMBCSGrpMap[]
+=
+{
+
+    {0x0001, 0x001F,  ULMBCS_GRP_CTRL},
+    {0x0080, 0x009F,  ULMBCS_GRP_CTRL},
+    {0x00A0, 0x00A6,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x00A7, 0x00A8,  ULMBCS_AMBIGUOUS_ALL},
+    {0x00A9, 0x00AF,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x00B0, 0x00B1,  ULMBCS_AMBIGUOUS_ALL},
+    {0x00B2, 0x00B3,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x00B4, 0x00B4,  ULMBCS_AMBIGUOUS_ALL},
+    {0x00B5, 0x00B5,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x00B6, 0x00B6,  ULMBCS_AMBIGUOUS_ALL},
+    {0x00B7, 0x00D6,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x00D7, 0x00D7,  ULMBCS_AMBIGUOUS_ALL},
+    {0x00D8, 0x00F6,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x00F7, 0x00F7,  ULMBCS_AMBIGUOUS_ALL},
+    {0x00F8, 0x01CD,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x01CE, 0x01CE,  ULMBCS_GRP_TW },
+    {0x01CF, 0x02B9,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x02BA, 0x02BA,  ULMBCS_GRP_CN},
+    {0x02BC, 0x02C8,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x02C9, 0x02D0,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x02D8, 0x02DD,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x0384, 0x0390,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x0391, 0x03A9,  ULMBCS_AMBIGUOUS_ALL},
+    {0x03AA, 0x03B0,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x03B1, 0x03C9,  ULMBCS_AMBIGUOUS_ALL},
+    {0x03CA, 0x03CE,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x0400, 0x0400,  ULMBCS_GRP_RU},
+    {0x0401, 0x0401,  ULMBCS_AMBIGUOUS_ALL},
+    {0x0402, 0x040F,  ULMBCS_GRP_RU},
+    {0x0410, 0x0431,  ULMBCS_AMBIGUOUS_ALL},
+    {0x0432, 0x044E,  ULMBCS_GRP_RU},
+    {0x044F, 0x044F,  ULMBCS_AMBIGUOUS_ALL},
+    {0x0450, 0x0491,  ULMBCS_GRP_RU},
+    {0x05B0, 0x05F2,  ULMBCS_GRP_HE},
+    {0x060C, 0x06AF,  ULMBCS_GRP_AR},
+    {0x0E01, 0x0E5B,  ULMBCS_GRP_TH},
+    {0x200C, 0x200F,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2010, 0x2010,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2013, 0x2014,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2015, 0x2015,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2016, 0x2016,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2017, 0x2017,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2018, 0x2019,  ULMBCS_AMBIGUOUS_ALL},
+    {0x201A, 0x201B,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x201C, 0x201D,  ULMBCS_AMBIGUOUS_ALL},
+    {0x201E, 0x201F,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2020, 0x2021,  ULMBCS_AMBIGUOUS_ALL},
+    {0x2022, 0x2024,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2025, 0x2025,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2026, 0x2026,  ULMBCS_AMBIGUOUS_ALL},
+    {0x2027, 0x2027,  ULMBCS_GRP_TW},
+    {0x2030, 0x2030,  ULMBCS_AMBIGUOUS_ALL},
+    {0x2031, 0x2031,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2032, 0x2033,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2035, 0x2035,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2039, 0x203A,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x203B, 0x203B,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x203C, 0x203C,  ULMBCS_GRP_EXCEPT},
+    {0x2074, 0x2074,  ULMBCS_GRP_KO},
+    {0x207F, 0x207F,  ULMBCS_GRP_EXCEPT},
+    {0x2081, 0x2084,  ULMBCS_GRP_KO},
+    {0x20A4, 0x20AC,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2103, 0x2109,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2111, 0x2120,  ULMBCS_AMBIGUOUS_SBCS},
+    /*zhujin: upgrade, for regressiont test, spr HKIA4YHTSU*/
+    {0x2121, 0x2121,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2122, 0x2126,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x212B, 0x212B,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2135, 0x2135,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2153, 0x2154,  ULMBCS_GRP_KO},
+    {0x215B, 0x215E,  ULMBCS_GRP_EXCEPT},
+    {0x2160, 0x2179,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2190, 0x2193,  ULMBCS_AMBIGUOUS_ALL},
+    {0x2194, 0x2195,  ULMBCS_GRP_EXCEPT},
+    {0x2196, 0x2199,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x21A8, 0x21A8,  ULMBCS_GRP_EXCEPT},
+    {0x21B8, 0x21B9,  ULMBCS_GRP_CN},
+    {0x21D0, 0x21D1,  ULMBCS_GRP_EXCEPT},
+    {0x21D2, 0x21D2,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x21D3, 0x21D3,  ULMBCS_GRP_EXCEPT},
+    {0x21D4, 0x21D4,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x21D5, 0x21D5,  ULMBCS_GRP_EXCEPT},
+    {0x21E7, 0x21E7,  ULMBCS_GRP_CN},
+    {0x2200, 0x2200,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2201, 0x2201,  ULMBCS_GRP_EXCEPT},
+    {0x2202, 0x2202,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2203, 0x2203,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2204, 0x2206,  ULMBCS_GRP_EXCEPT},
+    {0x2207, 0x2208,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2209, 0x220A,  ULMBCS_GRP_EXCEPT},
+    {0x220B, 0x220B,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x220F, 0x2215,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2219, 0x2219,  ULMBCS_GRP_EXCEPT},
+    {0x221A, 0x221A,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x221B, 0x221C,  ULMBCS_GRP_EXCEPT},
+    {0x221D, 0x221E,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x221F, 0x221F,  ULMBCS_GRP_EXCEPT},
+    {0x2220, 0x2220,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2223, 0x222A,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x222B, 0x223D,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2245, 0x2248,  ULMBCS_GRP_EXCEPT},
+    {0x224C, 0x224C,  ULMBCS_GRP_TW},
+    {0x2252, 0x2252,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2260, 0x2261,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2262, 0x2265,  ULMBCS_GRP_EXCEPT},
+    {0x2266, 0x226F,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2282, 0x2283,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2284, 0x2285,  ULMBCS_GRP_EXCEPT},
+    {0x2286, 0x2287,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2288, 0x2297,  ULMBCS_GRP_EXCEPT},
+    {0x2299, 0x22BF,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x22C0, 0x22C0,  ULMBCS_GRP_EXCEPT},
+    {0x2310, 0x2310,  ULMBCS_GRP_EXCEPT},
+    {0x2312, 0x2312,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2318, 0x2321,  ULMBCS_GRP_EXCEPT},
+    {0x2318, 0x2321,  ULMBCS_GRP_CN},
+    {0x2460, 0x24E9,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2500, 0x2500,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2501, 0x2501,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2502, 0x2502,  ULMBCS_AMBIGUOUS_ALL},
+    {0x2503, 0x2503,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x2504, 0x2505,  ULMBCS_GRP_TW},
+    {0x2506, 0x2665,  ULMBCS_AMBIGUOUS_ALL},
+    {0x2666, 0x2666,  ULMBCS_GRP_EXCEPT},
+    {0x2667, 0x2669,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x266A, 0x266A,  ULMBCS_AMBIGUOUS_ALL},
+    {0x266B, 0x266C,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x266D, 0x266D,  ULMBCS_AMBIGUOUS_MBCS},
+    {0x266E, 0x266E,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x266F, 0x266F,  ULMBCS_GRP_JA},
+    {0x2670, 0x2E7F,  ULMBCS_AMBIGUOUS_SBCS},
+    {0x2E80, 0xF861,  ULMBCS_AMBIGUOUS_MBCS},
+    {0xF862, 0xF8FF,  ULMBCS_GRP_EXCEPT},
+    {0xF900, 0xFA2D,  ULMBCS_AMBIGUOUS_MBCS},
+    {0xFB00, 0xFEFF,  ULMBCS_AMBIGUOUS_SBCS},
+    {0xFF01, 0xFFEE,  ULMBCS_AMBIGUOUS_MBCS},
+    {0xFFFF, 0xFFFF,  ULMBCS_GRP_UNICODE}
+};
+   
+static ulmbcs_byte_t 
+FindLMBCSUniRange(UChar uniChar)
+{
+   const struct _UniLMBCSGrpMap * pTable = UniLMBCSGrpMap;
+
+   while (uniChar > pTable->uniEndRange) 
+   {
+      pTable++;
+   }
+
+   if (uniChar >= pTable->uniStartRange) 
+   {
+      return pTable->GrpType;
+   }
+   return ULMBCS_GRP_UNICODE;
+}
+
+/* 
+We also ask the creator of a converter to send in a preferred locale 
+that we can use in resolving ambiguous mappings. They send the locale
+in as a string, and we map it, if possible, to one of the 
+LMBCS groups. We use this table, and the associated code, to 
+do the lookup: */
+
+/**************************************************
+  This table maps locale ID's to LMBCS opt groups.
+  The default return is group 0x01. Note that for
+  performance reasons, the table is sorted in
+  increasing alphabetic order, with the notable
+  exception of zhTW. This is to force the check
+  for Traditonal Chinese before dropping back to
+  Simplified.
+
+  Note too that the Latin-1 groups have been
+  commented out because it's the default, and
+  this shortens the table, allowing a serial
+  search to go quickly.
+ *************************************************/
+
+static const struct _LocaleLMBCSGrpMap
+{
+   const char    *LocaleID;
+   const ulmbcs_byte_t OptGroup;
+} LocaleLMBCSGrpMap[] =
+{
+    {"ar", ULMBCS_GRP_AR},
+    {"be", ULMBCS_GRP_RU},
+    {"bg", ULMBCS_GRP_L2},
+   /* {"ca", ULMBCS_GRP_L1}, */
+    {"cs", ULMBCS_GRP_L2},
+   /* {"da", ULMBCS_GRP_L1}, */
+   /* {"de", ULMBCS_GRP_L1}, */
+    {"el", ULMBCS_GRP_GR},
+   /* {"en", ULMBCS_GRP_L1}, */
+   /* {"es", ULMBCS_GRP_L1}, */
+   /* {"et", ULMBCS_GRP_L1}, */
+   /* {"fi", ULMBCS_GRP_L1}, */
+   /* {"fr", ULMBCS_GRP_L1}, */
+    {"he", ULMBCS_GRP_HE},
+    {"hu", ULMBCS_GRP_L2},
+   /* {"is", ULMBCS_GRP_L1}, */
+   /* {"it", ULMBCS_GRP_L1}, */
+    {"iw", ULMBCS_GRP_HE},
+    {"ja", ULMBCS_GRP_JA},
+    {"ko", ULMBCS_GRP_KO},
+   /* {"lt", ULMBCS_GRP_L1}, */
+   /* {"lv", ULMBCS_GRP_L1}, */
+    {"mk", ULMBCS_GRP_RU},
+   /* {"nl", ULMBCS_GRP_L1}, */
+   /* {"no", ULMBCS_GRP_L1}, */
+    {"pl", ULMBCS_GRP_L2},
+   /* {"pt", ULMBCS_GRP_L1}, */
+    {"ro", ULMBCS_GRP_L2},
+    {"ru", ULMBCS_GRP_RU},
+    {"sh", ULMBCS_GRP_L2},
+    {"sk", ULMBCS_GRP_L2},
+    {"sl", ULMBCS_GRP_L2},
+    {"sq", ULMBCS_GRP_L2},
+    {"sr", ULMBCS_GRP_RU},
+   /* {"sv", ULMBCS_GRP_L1}, */
+    {"th", ULMBCS_GRP_TH},
+    {"tr", ULMBCS_GRP_TR},
+    {"uk", ULMBCS_GRP_RU},
+   /* {"vi", ULMBCS_GRP_L1}, */
+    {"zhTW", ULMBCS_GRP_TW},
+    {"zh", ULMBCS_GRP_CN},
+    {NULL, ULMBCS_GRP_L1}
+};
+
+
+static ulmbcs_byte_t 
+FindLMBCSLocale(const char *LocaleID)
+{
+   const struct _LocaleLMBCSGrpMap *pTable = LocaleLMBCSGrpMap;
+
+   if ((!LocaleID) || (!*LocaleID)) 
+   {
+      return 0;
+   }
+
+   while (pTable->LocaleID)
+   {
+      if (*pTable->LocaleID == *LocaleID) /* Check only first char for speed */
+      {
+         /* First char matches - check whole name, for entry-length */
+         if (uprv_strncmp(pTable->LocaleID, LocaleID, strlen(pTable->LocaleID)) == 0)
+            return pTable->OptGroup;
+      }
+      else
+      if (*pTable->LocaleID > *LocaleID) /* Sorted alphabetically - exit */
+         break;
+      pTable++;
+   }
+   return ULMBCS_GRP_L1;
+}
+
+
+/* 
+  Before we get to the main body of code, here's how we hook up to the rest 
+  of ICU. ICU converters are required to define a structure that includes 
+  some function pointers, and some common data, in the style of a C++
+  vtable. There is also room in there for converter-specific data. LMBCS
+  uses that converter-specific data to keep track of the 12 subconverters
+  we use, the optimization group, and the group (if any) that matches the 
+  locale. We have one structure instantiated for each of the 12 possible
+  optimization groups. To avoid typos & to avoid boring the reader, we 
+  put the declarations of these structures and functions into macros. To see 
+  the definitions of these structures, see unicode\ucnv_bld.h
+*/
+
+typedef struct
+  {
+    UConverterSharedData *OptGrpConverter[ULMBCS_GRP_LAST+1];    /* Converter per Opt. grp. */
+    uint8_t    OptGroup;                  /* default Opt. grp. for this LMBCS session */
+    uint8_t    localeConverterIndex;      /* reasonable locale match for index */
+  }
+UConverterDataLMBCS;
+
+static void _LMBCSClose(UConverter * _this);
+
+#define DECLARE_LMBCS_DATA(n) \
+static const UConverterImpl _LMBCSImpl##n={\
+    UCNV_LMBCS_##n,\
+    NULL,NULL,\
+    _LMBCSOpen##n,\
+    _LMBCSClose,\
+    NULL,\
+    _LMBCSToUnicodeWithOffsets,\
+    _LMBCSToUnicodeWithOffsets,\
+    _LMBCSFromUnicode,\
+    _LMBCSFromUnicode,\
+    NULL,\
+    NULL,\
+    NULL,\
+    NULL,\
+    _LMBCSSafeClone,\
+    ucnv_getCompleteUnicodeSet\
+};\
+static const UConverterStaticData _LMBCSStaticData##n={\
+  sizeof(UConverterStaticData),\
+ "LMBCS-"  #n,\
+    0, UCNV_IBM, UCNV_LMBCS_##n, 1, 3,\
+    { 0x3f, 0, 0, 0 },1,FALSE,FALSE,0,0,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} \
+};\
+const UConverterSharedData _LMBCSData##n= \
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_LMBCSStaticData##n, &_LMBCSImpl##n);
+
+ /* The only function we needed to duplicate 12 times was the 'open'
+function, which will do basically the same thing except set a  different
+optimization group. So, we put the common stuff into a worker function, 
+and set up another macro to stamp out the 12 open functions:*/
+#define DEFINE_LMBCS_OPEN(n) \
+static void \
+   _LMBCSOpen##n(UConverter* _this, UConverterLoadArgs* pArgs, UErrorCode* err) \
+{ _LMBCSOpenWorker(_this, pArgs, err, n); }
+
+
+
+/* Here's the open worker & the common close function */
+static void 
+_LMBCSOpenWorker(UConverter*  _this,
+                 UConverterLoadArgs *pArgs,
+                 UErrorCode*  err,
+                 ulmbcs_byte_t OptGroup)
+{
+    UConverterDataLMBCS * extraInfo = _this->extraInfo =
+        (UConverterDataLMBCS*)uprv_malloc (sizeof (UConverterDataLMBCS));
+    if(extraInfo != NULL)
+    {
+        UConverterNamePieces stackPieces;
+        UConverterLoadArgs stackArgs={ (int32_t)sizeof(UConverterLoadArgs) };
+        ulmbcs_byte_t i;
+
+        uprv_memset(extraInfo, 0, sizeof(UConverterDataLMBCS));
+
+        stackArgs.onlyTestIsLoadable = pArgs->onlyTestIsLoadable;
+
+        for (i=0; i <= ULMBCS_GRP_LAST && U_SUCCESS(*err); i++)         
+        {
+            if(OptGroupByteToCPName[i] != NULL) {
+                extraInfo->OptGrpConverter[i] = ucnv_loadSharedData(OptGroupByteToCPName[i], &stackPieces, &stackArgs, err);
+            }
+        }
+
+        if(U_FAILURE(*err) || pArgs->onlyTestIsLoadable) {
+            _LMBCSClose(_this);
+            return;
+        }
+        extraInfo->OptGroup = OptGroup;
+        extraInfo->localeConverterIndex = FindLMBCSLocale(pArgs->locale);
+    }
+    else
+    {
+        *err = U_MEMORY_ALLOCATION_ERROR;
+    }
+}
+
+static void 
+_LMBCSClose(UConverter *   _this) 
+{
+    if (_this->extraInfo != NULL)
+    {
+        ulmbcs_byte_t Ix;
+        UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS *) _this->extraInfo;
+
+        for (Ix=0; Ix <= ULMBCS_GRP_LAST; Ix++)
+        {
+           if (extraInfo->OptGrpConverter[Ix] != NULL)
+              ucnv_unloadSharedDataIfReady(extraInfo->OptGrpConverter[Ix]);
+        }
+        if (!_this->isExtraLocal) {
+            uprv_free (_this->extraInfo);
+            _this->extraInfo = NULL;
+        }
+    }
+}
+
+typedef struct LMBCSClone {
+    UConverter cnv;
+    UConverterDataLMBCS lmbcs;
+} LMBCSClone;
+
+static UConverter * 
+_LMBCSSafeClone(const UConverter *cnv, 
+                void *stackBuffer, 
+                int32_t *pBufferSize, 
+                UErrorCode *status) {
+    LMBCSClone *newLMBCS;
+    UConverterDataLMBCS *extraInfo;
+    int32_t i;
+
+    if(*pBufferSize<=0) {
+        *pBufferSize=(int32_t)sizeof(LMBCSClone);
+        return NULL;
+    }
+
+    extraInfo=(UConverterDataLMBCS *)cnv->extraInfo;
+    newLMBCS=(LMBCSClone *)stackBuffer;
+
+    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
+
+    uprv_memcpy(&newLMBCS->lmbcs, extraInfo, sizeof(UConverterDataLMBCS));
+
+    /* share the subconverters */
+    for(i = 0; i <= ULMBCS_GRP_LAST; ++i) {
+        if(extraInfo->OptGrpConverter[i] != NULL) {
+            ucnv_incrementRefCount(extraInfo->OptGrpConverter[i]);
+        }
+    }
+
+    newLMBCS->cnv.extraInfo = &newLMBCS->lmbcs;
+    newLMBCS->cnv.isExtraLocal = TRUE;
+    return &newLMBCS->cnv;
+}
+
+/*
+ * There used to be a _LMBCSGetUnicodeSet() function here (up to svn revision 20117)
+ * which added all code points except for U+F6xx
+ * because those cannot be represented in the Unicode group.
+ * However, it turns out that windows-950 has roundtrips for all of U+F6xx
+ * which means that LMBCS can convert all Unicode code points after all.
+ * We now simply use ucnv_getCompleteUnicodeSet().
+ *
+ * This may need to be looked at again as Lotus uses _LMBCSGetUnicodeSet(). (091216)
+ */
+
+/* 
+   Here's the basic helper function that we use when converting from
+   Unicode to LMBCS, and we suspect that a Unicode character will fit into 
+   one of the 12 groups. The return value is the number of bytes written 
+   starting at pStartLMBCS (if any).
+*/
+
+static size_t
+LMBCSConversionWorker (
+   UConverterDataLMBCS * extraInfo,    /* subconverters, opt & locale groups */
+   ulmbcs_byte_t group,                /* The group to try */
+   ulmbcs_byte_t  * pStartLMBCS,              /* where to put the results */
+   UChar * pUniChar,                   /* The input unicode character */
+   ulmbcs_byte_t * lastConverterIndex, /* output: track last successful group used */
+   UBool * groups_tried                /* output: track any unsuccessful groups */
+)   
+{
+   ulmbcs_byte_t  * pLMBCS = pStartLMBCS;
+   UConverterSharedData * xcnv = extraInfo->OptGrpConverter[group];
+
+   int bytesConverted;
+   uint32_t value;
+   ulmbcs_byte_t firstByte;
+
+   U_ASSERT(xcnv);
+   U_ASSERT(group<ULMBCS_GRP_UNICODE);
+
+   bytesConverted = ucnv_MBCSFromUChar32(xcnv, *pUniChar, &value, FALSE);
+
+   /* get the first result byte */
+   if(bytesConverted > 0) {
+      firstByte = (ulmbcs_byte_t)(value >> ((bytesConverted - 1) * 8));
+   } else {
+      /* most common failure mode is an unassigned character */
+      groups_tried[group] = TRUE;
+      return 0;
+   }
+
+   *lastConverterIndex = group;
+
+   /* All initial byte values in lower ascii range should have been caught by now,
+      except with the exception group.
+    */
+   U_ASSERT((firstByte <= ULMBCS_C0END) || (firstByte >= ULMBCS_C1START) || (group == ULMBCS_GRP_EXCEPT));
+   
+   /* use converted data: first write 0, 1 or two group bytes */
+   if (group != ULMBCS_GRP_EXCEPT && extraInfo->OptGroup != group)
+   {
+      *pLMBCS++ = group;
+      if (bytesConverted == 1 && group >= ULMBCS_DOUBLEOPTGROUP_START)
+      {
+         *pLMBCS++ = group;
+      }
+   }
+
+  /* don't emit control chars */
+   if ( bytesConverted == 1 && firstByte < 0x20 )
+      return 0;
+
+
+   /* then move over the converted data */
+   switch(bytesConverted)
+   {
+   case 4:
+      *pLMBCS++ = (ulmbcs_byte_t)(value >> 24);
+      U_FALLTHROUGH;
+   case 3:
+      *pLMBCS++ = (ulmbcs_byte_t)(value >> 16);
+      U_FALLTHROUGH;
+   case 2:
+      *pLMBCS++ = (ulmbcs_byte_t)(value >> 8);
+      U_FALLTHROUGH;
+   case 1:
+      *pLMBCS++ = (ulmbcs_byte_t)value;
+      U_FALLTHROUGH;
+   default:
+      /* will never occur */
+      break;
+   }
+
+   return (pLMBCS - pStartLMBCS);
+}
+
+
+/* This is a much simpler version of above, when we 
+know we are writing LMBCS using the Unicode group
+*/
+static size_t 
+LMBCSConvertUni(ulmbcs_byte_t * pLMBCS, UChar uniChar)  
+{
+     /* encode into LMBCS Unicode range */
+   uint8_t LowCh =   (uint8_t)(uniChar & 0x00FF);
+   uint8_t HighCh  = (uint8_t)(uniChar >> 8);
+
+   *pLMBCS++ = ULMBCS_GRP_UNICODE;
+
+   if (LowCh == 0)
+   {
+      *pLMBCS++ = ULMBCS_UNICOMPATZERO;
+      *pLMBCS++ = HighCh;
+   }
+   else
+   {
+      *pLMBCS++ = HighCh;
+      *pLMBCS++ = LowCh;
+   }
+   return ULMBCS_UNICODE_SIZE;
+}
+
+
+
+/* The main Unicode to LMBCS conversion function */
+static void 
+_LMBCSFromUnicode(UConverterFromUnicodeArgs*     args,
+                  UErrorCode*     err)
+{
+   ulmbcs_byte_t lastConverterIndex = 0;
+   UChar uniChar;
+   ulmbcs_byte_t  LMBCS[ULMBCS_CHARSIZE_MAX];
+   ulmbcs_byte_t  * pLMBCS;
+   int32_t bytes_written;
+   UBool groups_tried[ULMBCS_GRP_LAST+1];
+   UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
+   int sourceIndex = 0; 
+
+   /* Basic strategy: attempt to fill in local LMBCS 1-char buffer.(LMBCS)
+      If that succeeds, see if it will all fit into the target & copy it over 
+      if it does.
+
+      We try conversions in the following order:
+
+      1. Single-byte ascii & special fixed control chars (&null)
+      2. Look up group in table & try that (could be 
+            A) Unicode group
+            B) control group,
+            C) national encoding, 
+               or ambiguous SBCS or MBCS group (on to step 4...)
+        
+      3. If its ambiguous, try this order:
+         A) The optimization group
+         B) The locale group
+         C) The last group that succeeded with this string.
+         D) every other group that's relevent (single or double)
+         E) If its single-byte ambiguous, try the exceptions group
+
+      4. And as a grand fallback: Unicode
+   */
+
+    /*Fix for SPR#DJOE66JFN3 (Lotus)*/
+    ulmbcs_byte_t OldConverterIndex = 0;
+
+   while (args->source < args->sourceLimit && !U_FAILURE(*err))
+   {
+      /*Fix for SPR#DJOE66JFN3 (Lotus)*/
+      OldConverterIndex = extraInfo->localeConverterIndex;
+
+      if (args->target >= args->targetLimit)
+      {
+         *err = U_BUFFER_OVERFLOW_ERROR;
+         break;
+      }
+      uniChar = *(args->source);
+      bytes_written = 0;
+      pLMBCS = LMBCS;
+
+      /* check cases in rough order of how common they are, for speed */
+
+      /* single byte matches: strategy 1 */
+      /*Fix for SPR#DJOE66JFN3 (Lotus)*/
+      if((uniChar>=0x80) && (uniChar<=0xff)
+      /*Fix for SPR#JUYA6XAERU and TSAO7GL5NK (Lotus)*/ &&(uniChar!=0xB1) &&(uniChar!=0xD7) &&(uniChar!=0xF7)
+        &&(uniChar!=0xB0) &&(uniChar!=0xB4) &&(uniChar!=0xB6) &&(uniChar!=0xA7) &&(uniChar!=0xA8))
+      {
+            extraInfo->localeConverterIndex = ULMBCS_GRP_L1;
+      }
+      if (((uniChar > ULMBCS_C0END) && (uniChar < ULMBCS_C1START)) ||
+          uniChar == 0 || uniChar == ULMBCS_HT || uniChar == ULMBCS_CR || 
+          uniChar == ULMBCS_LF || uniChar == ULMBCS_123SYSTEMRANGE 
+          )
+      {
+         *pLMBCS++ = (ulmbcs_byte_t ) uniChar;
+         bytes_written = 1;
+      }
+
+
+      if (!bytes_written) 
+      {
+         /* Check by UNICODE range (Strategy 2) */
+         ulmbcs_byte_t group = FindLMBCSUniRange(uniChar);
+         
+         if (group == ULMBCS_GRP_UNICODE)  /* (Strategy 2A) */
+         {
+            pLMBCS += LMBCSConvertUni(pLMBCS,uniChar);
+            
+            bytes_written = (int32_t)(pLMBCS - LMBCS);
+         }
+         else if (group == ULMBCS_GRP_CTRL)  /* (Strategy 2B) */
+         {
+            /* Handle control characters here */
+            if (uniChar <= ULMBCS_C0END)
+            {
+               *pLMBCS++ = ULMBCS_GRP_CTRL;
+               *pLMBCS++ = (ulmbcs_byte_t)(ULMBCS_CTRLOFFSET + uniChar);
+            }
+            else if (uniChar >= ULMBCS_C1START && uniChar <= ULMBCS_C1START + ULMBCS_CTRLOFFSET)
+            {
+               *pLMBCS++ = ULMBCS_GRP_CTRL;
+               *pLMBCS++ = (ulmbcs_byte_t ) (uniChar & 0x00FF);
+            }
+            bytes_written = (int32_t)(pLMBCS - LMBCS);
+         }
+         else if (group < ULMBCS_GRP_UNICODE)  /* (Strategy 2C) */
+         {
+            /* a specific converter has been identified - use it */
+            bytes_written = (int32_t)LMBCSConversionWorker (
+                              extraInfo, group, pLMBCS, &uniChar, 
+                              &lastConverterIndex, groups_tried);
+         }
+         if (!bytes_written)    /* the ambiguous group cases  (Strategy 3) */
+         {
+            uprv_memset(groups_tried, 0, sizeof(groups_tried));
+
+            /* check for non-default optimization group (Strategy 3A )*/
+            if ((extraInfo->OptGroup != 1) && (ULMBCS_AMBIGUOUS_MATCH(group, extraInfo->OptGroup)))
+            {
+                /*zhujin: upgrade, merge #39299 here (Lotus) */
+                /*To make R5 compatible translation, look for exceptional group first for non-DBCS*/
+
+                if(extraInfo->localeConverterIndex < ULMBCS_DOUBLEOPTGROUP_START)
+                {
+                  bytes_written = LMBCSConversionWorker (extraInfo,
+                     ULMBCS_GRP_L1, pLMBCS, &uniChar,
+                     &lastConverterIndex, groups_tried);
+
+                  if(!bytes_written)
+                  {
+                     bytes_written = LMBCSConversionWorker (extraInfo,
+                         ULMBCS_GRP_EXCEPT, pLMBCS, &uniChar,
+                         &lastConverterIndex, groups_tried);
+                  }
+                  if(!bytes_written)
+                  {
+                      bytes_written = LMBCSConversionWorker (extraInfo,
+                          extraInfo->localeConverterIndex, pLMBCS, &uniChar,
+                          &lastConverterIndex, groups_tried);
+                  }
+                }
+                else
+                {
+                     bytes_written = LMBCSConversionWorker (extraInfo,
+                         extraInfo->localeConverterIndex, pLMBCS, &uniChar,
+                         &lastConverterIndex, groups_tried);
+                }
+            }
+            /* check for locale optimization group (Strategy 3B) */
+            if (!bytes_written && (extraInfo->localeConverterIndex) && (ULMBCS_AMBIGUOUS_MATCH(group, extraInfo->localeConverterIndex)))
+            {
+                bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
+                        extraInfo->localeConverterIndex, pLMBCS, &uniChar, &lastConverterIndex, groups_tried);
+            }
+            /* check for last optimization group used for this string (Strategy 3C) */
+            if (!bytes_written && (lastConverterIndex) && (ULMBCS_AMBIGUOUS_MATCH(group, lastConverterIndex)))
+            {
+                bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
+                        lastConverterIndex, pLMBCS, &uniChar, &lastConverterIndex, groups_tried);
+            }
+            if (!bytes_written)
+            {
+               /* just check every possible matching converter (Strategy 3D) */ 
+               ulmbcs_byte_t grp_start;
+               ulmbcs_byte_t grp_end;  
+               ulmbcs_byte_t grp_ix;
+               grp_start = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) 
+                        ? ULMBCS_DOUBLEOPTGROUP_START 
+                        :  ULMBCS_GRP_L1);
+               grp_end = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) 
+                        ? ULMBCS_GRP_LAST 
+                        :  ULMBCS_GRP_TH);
+               if(group == ULMBCS_AMBIGUOUS_ALL)
+               {
+                   grp_start = ULMBCS_GRP_L1;
+                   grp_end = ULMBCS_GRP_LAST;
+               }
+               for (grp_ix = grp_start;
+                   grp_ix <= grp_end && !bytes_written; 
+                    grp_ix++)
+               {
+                  if (extraInfo->OptGrpConverter [grp_ix] && !groups_tried [grp_ix])
+                  {
+                     bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
+                       grp_ix, pLMBCS, &uniChar, 
+                       &lastConverterIndex, groups_tried);
+                  }
+               }
+                /* a final conversion fallback to the exceptions group if its likely 
+                     to be single byte  (Strategy 3E) */
+               if (!bytes_written && grp_start == ULMBCS_GRP_L1)
+               {
+                  bytes_written = (int32_t)LMBCSConversionWorker (extraInfo,
+                     ULMBCS_GRP_EXCEPT, pLMBCS, &uniChar, 
+                     &lastConverterIndex, groups_tried);
+               }
+            }
+            /* all of our other strategies failed. Fallback to Unicode. (Strategy 4)*/
+            if (!bytes_written)
+            {
+
+               pLMBCS += LMBCSConvertUni(pLMBCS, uniChar);
+               bytes_written = (int32_t)(pLMBCS - LMBCS);
+            }
+         }
+      }
+  
+      /* we have a translation. increment source and write as much as posible to target */
+      args->source++;
+      pLMBCS = LMBCS;
+      while (args->target < args->targetLimit && bytes_written--)
+      {
+         *(args->target)++ = *pLMBCS++;
+         if (args->offsets)
+         {
+            *(args->offsets)++ = sourceIndex;
+         }
+      }
+      sourceIndex++;
+      if (bytes_written > 0)
+      {
+         /* write any bytes that didn't fit in target to the error buffer,
+            common code will move this to target if we get called back with
+            enough target room
+         */
+         uint8_t * pErrorBuffer = args->converter->charErrorBuffer;
+         *err = U_BUFFER_OVERFLOW_ERROR;
+         args->converter->charErrorBufferLength = (int8_t)bytes_written;
+         while (bytes_written--)
+         {
+            *pErrorBuffer++ = *pLMBCS++;
+         }
+      }
+      /*Fix for SPR#DJOE66JFN3 (Lotus)*/
+      extraInfo->localeConverterIndex = OldConverterIndex;
+   }     
+}
+
+
+/* Now, the Unicode from LMBCS section */
+
+
+/* A function to call when we are looking at the Unicode group byte in LMBCS */
+static UChar
+GetUniFromLMBCSUni(char const ** ppLMBCSin)  /* Called with LMBCS-style Unicode byte stream */
+{
+   uint8_t  HighCh = *(*ppLMBCSin)++;  /* Big-endian Unicode in LMBCS compatibility group*/
+   uint8_t  LowCh  = *(*ppLMBCSin)++;
+
+   if (HighCh == ULMBCS_UNICOMPATZERO ) 
+   {
+      HighCh = LowCh;
+      LowCh = 0; /* zero-byte in LSB special character */
+   }
+   return (UChar)((HighCh << 8) | LowCh);
+}
+
+
+
+/* CHECK_SOURCE_LIMIT: Helper macro to verify that there are at least'index' 
+   bytes left in source up to  sourceLimit.Errors appropriately if not.
+   If we reach the limit, then update the source pointer to there to consume
+   all input as required by ICU converter semantics.
+*/
+
+#define CHECK_SOURCE_LIMIT(index) \
+     if (args->source+index > args->sourceLimit){\
+         *err = U_TRUNCATED_CHAR_FOUND;\
+         args->source = args->sourceLimit;\
+         return 0xffff;}
+
+/* Return the Unicode representation for the current LMBCS character */
+
+static UChar32 
+_LMBCSGetNextUCharWorker(UConverterToUnicodeArgs*   args,
+                         UErrorCode*   err)
+{
+    UChar32 uniChar = 0;    /* an output UNICODE char */
+    ulmbcs_byte_t   CurByte; /* A byte from the input stream */
+
+    /* error check */
+    if (args->source >= args->sourceLimit)
+    {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0xffff;
+    }
+    /* Grab first byte & save address for error recovery */
+    CurByte = *((ulmbcs_byte_t  *) (args->source++));
+   
+    /*
+    * at entry of each if clause:
+    * 1. 'CurByte' points at the first byte of a LMBCS character
+    * 2. '*source'points to the next byte of the source stream after 'CurByte' 
+    *
+    * the job of each if clause is:
+    * 1. set '*source' to point at the beginning of next char (nop if LMBCS char is only 1 byte)
+    * 2. set 'uniChar' up with the right Unicode value, or set 'err' appropriately
+    */
+   
+    /* First lets check the simple fixed values. */
+
+    if(((CurByte > ULMBCS_C0END) && (CurByte < ULMBCS_C1START)) /* ascii range */
+    ||  (CurByte == 0) 
+    ||  CurByte == ULMBCS_HT || CurByte == ULMBCS_CR 
+    ||  CurByte == ULMBCS_LF || CurByte == ULMBCS_123SYSTEMRANGE)
+    {
+        uniChar = CurByte;
+    }
+    else  
+    {
+        UConverterDataLMBCS * extraInfo;
+        ulmbcs_byte_t group; 
+        UConverterSharedData *cnv; 
+        
+        if (CurByte == ULMBCS_GRP_CTRL)  /* Control character group - no opt group update */
+        {
+            ulmbcs_byte_t  C0C1byte;
+            CHECK_SOURCE_LIMIT(1);
+            C0C1byte = *(args->source)++;
+            uniChar = (C0C1byte < ULMBCS_C1START) ? C0C1byte - ULMBCS_CTRLOFFSET : C0C1byte;
+        }
+        else 
+        if (CurByte == ULMBCS_GRP_UNICODE) /* Unicode compatibility group: BigEndian UTF16 */
+        {
+            CHECK_SOURCE_LIMIT(2);
+     
+            /* don't check for error indicators fffe/ffff below */
+            return GetUniFromLMBCSUni(&(args->source));
+        }
+        else if (CurByte <= ULMBCS_CTRLOFFSET)  
+        {
+            group = CurByte;                   /* group byte is in the source */
+            extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
+            if (group > ULMBCS_GRP_LAST || (cnv = extraInfo->OptGrpConverter[group]) == NULL)
+            {
+                /* this is not a valid group byte - no converter*/
+                *err = U_INVALID_CHAR_FOUND;
+            }      
+            else if (group >= ULMBCS_DOUBLEOPTGROUP_START)    /* double byte conversion */
+            {
+
+                CHECK_SOURCE_LIMIT(2);
+
+                /* check for LMBCS doubled-group-byte case */
+                if (*args->source == group) {
+                    /* single byte */
+                    ++args->source;
+                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source, 1, FALSE);
+                    ++args->source;
+                } else {
+                    /* double byte */
+                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source, 2, FALSE);
+                    args->source += 2;
+                }
+            }
+            else {                                  /* single byte conversion */
+                CHECK_SOURCE_LIMIT(1);
+                CurByte = *(args->source)++;
+        
+                if (CurByte >= ULMBCS_C1START)
+                {
+                    uniChar = _MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv, CurByte);
+                }
+                else
+                {
+                    /* The non-optimizable oddballs where there is an explicit byte 
+                    * AND the second byte is not in the upper ascii range
+                    */
+                    char bytes[2];
+
+                    extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
+                    cnv = extraInfo->OptGrpConverter [ULMBCS_GRP_EXCEPT];  
+        
+                    /* Lookup value must include opt group */
+                    bytes[0] = group;
+                    bytes[1] = CurByte;
+                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, bytes, 2, FALSE);
+                }
+            }
+        }
+        else if (CurByte >= ULMBCS_C1START) /* group byte is implicit */
+        {
+            extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
+            group = extraInfo->OptGroup;
+            cnv = extraInfo->OptGrpConverter[group];
+            if (group >= ULMBCS_DOUBLEOPTGROUP_START)    /* double byte conversion */
+            {
+                if (!ucnv_MBCSIsLeadByte(cnv, CurByte))
+                {
+                    CHECK_SOURCE_LIMIT(0);
+
+                    /* let the MBCS conversion consume CurByte again */
+                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source - 1, 1, FALSE);
+                }
+                else
+                {
+                    CHECK_SOURCE_LIMIT(1);
+                    /* let the MBCS conversion consume CurByte again */
+                    uniChar = ucnv_MBCSSimpleGetNextUChar(cnv, args->source - 1, 2, FALSE);
+                    ++args->source;
+                }
+            }
+            else                                   /* single byte conversion */
+            {
+                uniChar = _MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv, CurByte);
+            }
+        }
+    }
+    return uniChar;
+}
+
+
+/* The exported function that converts lmbcs to one or more
+   UChars - currently UTF-16
+*/
+static void 
+_LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs*    args,
+                     UErrorCode*    err)
+{
+   char LMBCS [ULMBCS_CHARSIZE_MAX];
+   UChar uniChar;    /* one output UNICODE char */
+   const char * saveSource; /* beginning of current code point */
+   const char * pStartLMBCS = args->source;  /* beginning of whole string */
+   const char * errSource = NULL; /* pointer to actual input in case an error occurs */
+   int8_t savebytes = 0;
+
+   /* Process from source to limit, or until error */
+   while (U_SUCCESS(*err) && args->sourceLimit > args->source && args->targetLimit > args->target)
+   {
+      saveSource = args->source; /* beginning of current code point */
+
+      if (args->converter->toULength) /* reassemble char from previous call */
+      {
+        const char *saveSourceLimit; 
+        size_t size_old = args->converter->toULength;
+
+         /* limit from source is either remainder of temp buffer, or user limit on source */
+        size_t size_new_maybe_1 = sizeof(LMBCS) - size_old;
+        size_t size_new_maybe_2 = args->sourceLimit - args->source;
+        size_t size_new = (size_new_maybe_1 < size_new_maybe_2) ? size_new_maybe_1 : size_new_maybe_2;
+         
+      
+        uprv_memcpy(LMBCS, args->converter->toUBytes, size_old);
+        uprv_memcpy(LMBCS + size_old, args->source, size_new);
+        saveSourceLimit = args->sourceLimit;
+        args->source = errSource = LMBCS;
+        args->sourceLimit = LMBCS+size_old+size_new;
+        savebytes = (int8_t)(size_old+size_new);
+        uniChar = (UChar) _LMBCSGetNextUCharWorker(args, err);
+        args->source = saveSource + ((args->source - LMBCS) - size_old);
+        args->sourceLimit = saveSourceLimit;
+
+        if (*err == U_TRUNCATED_CHAR_FOUND)
+        {
+            /* evil special case: source buffers so small a char spans more than 2 buffers */
+            args->converter->toULength = savebytes;
+            uprv_memcpy(args->converter->toUBytes, LMBCS, savebytes);
+            args->source = args->sourceLimit;
+            *err = U_ZERO_ERROR;
+            return;
+         }
+         else
+         {
+            /* clear the partial-char marker */
+            args->converter->toULength = 0;
+         }
+      }
+      else
+      {
+         errSource = saveSource;
+         uniChar = (UChar) _LMBCSGetNextUCharWorker(args, err);
+         savebytes = (int8_t)(args->source - saveSource);
+      }
+      if (U_SUCCESS(*err))
+      {
+         if (uniChar < 0xfffe)
+         {
+            *(args->target)++ = uniChar;
+            if(args->offsets)
+            {
+               *(args->offsets)++ = (int32_t)(saveSource - pStartLMBCS);
+            }
+         }
+         else if (uniChar == 0xfffe)
+         {
+            *err = U_INVALID_CHAR_FOUND;
+         }
+         else /* if (uniChar == 0xffff) */
+         {
+            *err = U_ILLEGAL_CHAR_FOUND;
+         }
+      }
+   }
+   /* if target ran out before source, return U_BUFFER_OVERFLOW_ERROR */
+   if (U_SUCCESS(*err) && args->sourceLimit > args->source && args->targetLimit <= args->target)
+   {
+      *err = U_BUFFER_OVERFLOW_ERROR;
+   }
+   else if (U_FAILURE(*err)) 
+   {
+      /* If character incomplete or unmappable/illegal, store it in toUBytes[] */
+      args->converter->toULength = savebytes;
+      if (savebytes > 0) {
+         uprv_memcpy(args->converter->toUBytes, errSource, savebytes);
+      }
+      if (*err == U_TRUNCATED_CHAR_FOUND) {
+         *err = U_ZERO_ERROR;
+      }
+   }
+}
+
+/* And now, the macroized declarations of data & functions: */
+DEFINE_LMBCS_OPEN(1)
+DEFINE_LMBCS_OPEN(2)
+DEFINE_LMBCS_OPEN(3)
+DEFINE_LMBCS_OPEN(4)
+DEFINE_LMBCS_OPEN(5)
+DEFINE_LMBCS_OPEN(6)
+DEFINE_LMBCS_OPEN(8)
+DEFINE_LMBCS_OPEN(11)
+DEFINE_LMBCS_OPEN(16)
+DEFINE_LMBCS_OPEN(17)
+DEFINE_LMBCS_OPEN(18)
+DEFINE_LMBCS_OPEN(19)
+
+
+DECLARE_LMBCS_DATA(1)
+DECLARE_LMBCS_DATA(2)
+DECLARE_LMBCS_DATA(3)
+DECLARE_LMBCS_DATA(4)
+DECLARE_LMBCS_DATA(5)
+DECLARE_LMBCS_DATA(6)
+DECLARE_LMBCS_DATA(8)
+DECLARE_LMBCS_DATA(11)
+DECLARE_LMBCS_DATA(16)
+DECLARE_LMBCS_DATA(17)
+DECLARE_LMBCS_DATA(18)
+DECLARE_LMBCS_DATA(19)
+
+#endif /* #if !UCONFIG_NO_LEGACY_CONVERSION */
diff --git a/source/common/ucnv_set.c b/source/common/ucnv_set.c
new file mode 100644 (file)
index 0000000..c3933ab
--- /dev/null
@@ -0,0 +1,70 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2003-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ucnv_set.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2004sep07
+*   created by: Markus W. Scherer
+*
+*   Conversion API functions using USet (ucnv_getUnicodeSet())
+*   moved here from ucnv.c for removing the dependency of other ucnv_
+*   implementation functions on the USet implementation.
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/uset.h"
+#include "unicode/ucnv.h"
+#include "ucnv_bld.h"
+#include "uset_imp.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+U_CAPI void U_EXPORT2
+ucnv_getUnicodeSet(const UConverter *cnv,
+                   USet *setFillIn,
+                   UConverterUnicodeSet whichSet,
+                   UErrorCode *pErrorCode) {
+    /* argument checking */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return;
+    }
+    if(cnv==NULL || setFillIn==NULL || whichSet<UCNV_ROUNDTRIP_SET || UCNV_SET_COUNT<=whichSet) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    /* does this converter support this function? */
+    if(cnv->sharedData->impl->getUnicodeSet==NULL) {
+        *pErrorCode=U_UNSUPPORTED_ERROR;
+        return;
+    }
+
+    {
+        USetAdder sa={
+            NULL,
+            uset_add,
+            uset_addRange,
+            uset_addString,
+            uset_remove,
+            uset_removeRange
+        };
+        sa.set=setFillIn;
+
+        /* empty the set */
+        uset_clear(setFillIn);
+
+        /* call the converter to add the code points it supports */
+        cnv->sharedData->impl->getUnicodeSet(cnv, &sa, whichSet, pErrorCode);
+    }
+}
+
+#endif
diff --git a/source/common/ucnv_u16.c b/source/common/ucnv_u16.c
new file mode 100644 (file)
index 0000000..1458a8a
--- /dev/null
@@ -0,0 +1,1563 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+**********************************************************************
+*   Copyright (C) 2002-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnv_u16.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2002jul01
+*   created by: Markus W. Scherer
+*
+*   UTF-16 converter implementation. Used to be in ucnv_utf.c.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "cmemory.h"
+
+enum {
+    UCNV_NEED_TO_WRITE_BOM=1
+};
+
+/*
+ * The UTF-16 toUnicode implementation is also used for the Java-specific
+ * "with BOM" variants of UTF-16BE and UTF-16LE.
+ */
+static void
+_UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                           UErrorCode *pErrorCode);
+
+/* UTF-16BE ----------------------------------------------------------------- */
+
+#if U_IS_BIG_ENDIAN
+#   define _UTF16PEFromUnicodeWithOffsets   _UTF16BEFromUnicodeWithOffsets
+#else
+#   define _UTF16PEFromUnicodeWithOffsets   _UTF16LEFromUnicodeWithOffsets
+#endif
+
+
+static void
+_UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
+                               UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const UChar *source;
+    char *target;
+    int32_t *offsets;
+
+    uint32_t targetCapacity, length, sourceIndex;
+    UChar c, trail;
+    char overflow[4];
+
+    source=pArgs->source;
+    length=(int32_t)(pArgs->sourceLimit-source);
+    if(length<=0) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    cnv=pArgs->converter;
+
+    /* write the BOM if necessary */
+    if(cnv->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
+        static const char bom[]={ (char)0xfe, (char)0xff };
+        ucnv_fromUWriteBytes(cnv,
+                             bom, 2,
+                             &pArgs->target, pArgs->targetLimit,
+                             &pArgs->offsets, -1,
+                             pErrorCode);
+        cnv->fromUnicodeStatus=0;
+    }
+
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        return;
+    }
+
+    targetCapacity=(uint32_t)(pArgs->targetLimit-target);
+    offsets=pArgs->offsets;
+    sourceIndex=0;
+
+    /* c!=0 indicates in several places outside the main loops that a surrogate was found */
+
+    if((c=(UChar)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
+        /* the last buffer ended with a lead surrogate, output the surrogate pair */
+        ++source;
+        --length;
+        target[0]=(uint8_t)(c>>8);
+        target[1]=(uint8_t)c;
+        target[2]=(uint8_t)(trail>>8);
+        target[3]=(uint8_t)trail;
+        target+=4;
+        targetCapacity-=4;
+        if(offsets!=NULL) {
+            *offsets++=-1;
+            *offsets++=-1;
+            *offsets++=-1;
+            *offsets++=-1;
+        }
+        sourceIndex=1;
+        cnv->fromUChar32=c=0;
+    }
+
+    if(c==0) {
+        /* copy an even number of bytes for complete UChars */
+        uint32_t count=2*length;
+        if(count>targetCapacity) {
+            count=targetCapacity&~1;
+        }
+        /* count is even */
+        targetCapacity-=count;
+        count>>=1;
+        length-=count;
+
+        if(offsets==NULL) {
+            while(count>0) {
+                c=*source++;
+                if(U16_IS_SINGLE(c)) {
+                    target[0]=(uint8_t)(c>>8);
+                    target[1]=(uint8_t)c;
+                    target+=2;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
+                    ++source;
+                    --count;
+                    target[0]=(uint8_t)(c>>8);
+                    target[1]=(uint8_t)c;
+                    target[2]=(uint8_t)(trail>>8);
+                    target[3]=(uint8_t)trail;
+                    target+=4;
+                } else {
+                    break;
+                }
+                --count;
+            }
+        } else {
+            while(count>0) {
+                c=*source++;
+                if(U16_IS_SINGLE(c)) {
+                    target[0]=(uint8_t)(c>>8);
+                    target[1]=(uint8_t)c;
+                    target+=2;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex++;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
+                    ++source;
+                    --count;
+                    target[0]=(uint8_t)(c>>8);
+                    target[1]=(uint8_t)c;
+                    target[2]=(uint8_t)(trail>>8);
+                    target[3]=(uint8_t)trail;
+                    target+=4;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    sourceIndex+=2;
+                } else {
+                    break;
+                }
+                --count;
+            }
+        }
+
+        if(count==0) {
+            /* done with the loop for complete UChars */
+            if(length>0 && targetCapacity>0) {
+                /*
+                 * there is more input and some target capacity -
+                 * it must be targetCapacity==1 because otherwise
+                 * the above would have copied more;
+                 * prepare for overflow output
+                 */
+                if(U16_IS_SINGLE(c=*source++)) {
+                    overflow[0]=(char)(c>>8);
+                    overflow[1]=(char)c;
+                    length=2; /* 2 bytes to output */
+                    c=0;
+                /* } else { keep c for surrogate handling, length will be set there */
+                }
+            } else {
+                length=0;
+                c=0;
+            }
+        } else {
+            /* keep c for surrogate handling, length will be set there */
+            targetCapacity+=2*count;
+        }
+    } else {
+        length=0; /* from here on, length counts the bytes in overflow[] */
+    }
+    
+    if(c!=0) {
+        /*
+         * c is a surrogate, and
+         * - source or target too short
+         * - or the surrogate is unmatched
+         */
+        length=0;
+        if(U16_IS_SURROGATE_LEAD(c)) {
+            if(source<pArgs->sourceLimit) {
+                if(U16_IS_TRAIL(trail=*source)) {
+                    /* output the surrogate pair, will overflow (see conditions comment above) */
+                    ++source;
+                    overflow[0]=(char)(c>>8);
+                    overflow[1]=(char)c;
+                    overflow[2]=(char)(trail>>8);
+                    overflow[3]=(char)trail;
+                    length=4; /* 4 bytes to output */
+                    c=0;
+                } else {
+                    /* unmatched lead surrogate */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                }
+            } else {
+                /* see if the trail surrogate is in the next buffer */
+            }
+        } else {
+            /* unmatched trail surrogate */
+            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+        }
+        cnv->fromUChar32=c;
+    }
+
+    if(length>0) {
+        /* output length bytes with overflow (length>targetCapacity>0) */
+        ucnv_fromUWriteBytes(cnv,
+                             overflow, length,
+                             (char **)&target, pArgs->targetLimit,
+                             &offsets, sourceIndex,
+                             pErrorCode);
+        targetCapacity=(uint32_t)(pArgs->targetLimit-(char *)target);
+    }
+
+    if(U_SUCCESS(*pErrorCode) && source<pArgs->sourceLimit && targetCapacity==0) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=(char *)target;
+    pArgs->offsets=offsets;
+}
+
+static void
+_UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                             UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const uint8_t *source;
+    UChar *target;
+    int32_t *offsets;
+
+    uint32_t targetCapacity, length, count, sourceIndex;
+    UChar c, trail;
+
+    if(pArgs->converter->mode<8) {
+        _UTF16ToUnicodeWithOffsets(pArgs, pErrorCode);
+        return;
+    }
+
+    cnv=pArgs->converter;
+    source=(const uint8_t *)pArgs->source;
+    length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
+    if(length<=0 && cnv->toUnicodeStatus==0) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        return;
+    }
+
+    targetCapacity=(uint32_t)(pArgs->targetLimit-target);
+    offsets=pArgs->offsets;
+    sourceIndex=0;
+    c=0;
+
+    /* complete a partial UChar or pair from the last call */
+    if(cnv->toUnicodeStatus!=0) {
+        /*
+         * special case: single byte from a previous buffer,
+         * where the byte turned out not to belong to a trail surrogate
+         * and the preceding, unmatched lead surrogate was put into toUBytes[]
+         * for error handling
+         */
+        cnv->toUBytes[0]=(uint8_t)cnv->toUnicodeStatus;
+        cnv->toULength=1;
+        cnv->toUnicodeStatus=0;
+    }
+    if((count=cnv->toULength)!=0) {
+        uint8_t *p=cnv->toUBytes;
+        do {
+            p[count++]=*source++;
+            ++sourceIndex;
+            --length;
+            if(count==2) {
+                c=((UChar)p[0]<<8)|p[1];
+                if(U16_IS_SINGLE(c)) {
+                    /* output the BMP code point */
+                    *target++=c;
+                    if(offsets!=NULL) {
+                        *offsets++=-1;
+                    }
+                    --targetCapacity;
+                    count=0;
+                    c=0;
+                    break;
+                } else if(U16_IS_SURROGATE_LEAD(c)) {
+                    /* continue collecting bytes for the trail surrogate */
+                    c=0; /* avoid unnecessary surrogate handling below */
+                } else {
+                    /* fall through to error handling for an unmatched trail surrogate */
+                    break;
+                }
+            } else if(count==4) {
+                c=((UChar)p[0]<<8)|p[1];
+                trail=((UChar)p[2]<<8)|p[3];
+                if(U16_IS_TRAIL(trail)) {
+                    /* output the surrogate pair */
+                    *target++=c;
+                    if(targetCapacity>=2) {
+                        *target++=trail;
+                        if(offsets!=NULL) {
+                            *offsets++=-1;
+                            *offsets++=-1;
+                        }
+                        targetCapacity-=2;
+                    } else /* targetCapacity==1 */ {
+                        targetCapacity=0;
+                        cnv->UCharErrorBuffer[0]=trail;
+                        cnv->UCharErrorBufferLength=1;
+                        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                    }
+                    count=0;
+                    c=0;
+                    break;
+                } else {
+                    /* unmatched lead surrogate, handle here for consistent toUBytes[] */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+
+                    /* back out reading the code unit after it */
+                    if(((const uint8_t *)pArgs->source-source)>=2) {
+                        source-=2;
+                    } else {
+                        /*
+                         * if the trail unit's first byte was in a previous buffer, then
+                         * we need to put it into a special place because toUBytes[] will be
+                         * used for the lead unit's bytes
+                         */
+                        cnv->toUnicodeStatus=0x100|p[2];
+                        --source;
+                    }
+                    cnv->toULength=2;
+
+                    /* write back the updated pointers */
+                    pArgs->source=(const char *)source;
+                    pArgs->target=target;
+                    pArgs->offsets=offsets;
+                    return;
+                }
+            }
+        } while(length>0);
+        cnv->toULength=(int8_t)count;
+    }
+
+    /* copy an even number of bytes for complete UChars */
+    count=2*targetCapacity;
+    if(count>length) {
+        count=length&~1;
+    }
+    if(c==0 && count>0) {
+        length-=count;
+        count>>=1;
+        targetCapacity-=count;
+        if(offsets==NULL) {
+            do {
+                c=((UChar)source[0]<<8)|source[1];
+                source+=2;
+                if(U16_IS_SINGLE(c)) {
+                    *target++=c;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
+                          U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])
+                ) {
+                    source+=2;
+                    --count;
+                    *target++=c;
+                    *target++=trail;
+                } else {
+                    break;
+                }
+            } while(--count>0);
+        } else {
+            do {
+                c=((UChar)source[0]<<8)|source[1];
+                source+=2;
+                if(U16_IS_SINGLE(c)) {
+                    *target++=c;
+                    *offsets++=sourceIndex;
+                    sourceIndex+=2;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
+                          U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])
+                ) {
+                    source+=2;
+                    --count;
+                    *target++=c;
+                    *target++=trail;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    sourceIndex+=4;
+                } else {
+                    break;
+                }
+            } while(--count>0);
+        }
+
+        if(count==0) {
+            /* done with the loop for complete UChars */
+            c=0;
+        } else {
+            /* keep c for surrogate handling, trail will be set there */
+            length+=2*(count-1); /* one more byte pair was consumed than count decremented */
+            targetCapacity+=count;
+        }
+    }
+
+    if(c!=0) {
+        /*
+         * c is a surrogate, and
+         * - source or target too short
+         * - or the surrogate is unmatched
+         */
+        cnv->toUBytes[0]=(uint8_t)(c>>8);
+        cnv->toUBytes[1]=(uint8_t)c;
+        cnv->toULength=2;
+
+        if(U16_IS_SURROGATE_LEAD(c)) {
+            if(length>=2) {
+                if(U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])) {
+                    /* output the surrogate pair, will overflow (see conditions comment above) */
+                    source+=2;
+                    length-=2;
+                    *target++=c;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                    cnv->UCharErrorBuffer[0]=trail;
+                    cnv->UCharErrorBufferLength=1;
+                    cnv->toULength=0;
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                } else {
+                    /* unmatched lead surrogate */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                }
+            } else {
+                /* see if the trail surrogate is in the next buffer */
+            }
+        } else {
+            /* unmatched trail surrogate */
+            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+        }
+    }
+
+    if(U_SUCCESS(*pErrorCode)) {
+        /* check for a remaining source byte */
+        if(length>0) {
+            if(targetCapacity==0) {
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            } else {
+                /* it must be length==1 because otherwise the above would have copied more */
+                cnv->toUBytes[cnv->toULength++]=*source++;
+            }
+        }
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+}
+
+static UChar32
+_UTF16BEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
+    const uint8_t *s, *sourceLimit;
+    UChar32 c;
+
+    if(pArgs->converter->mode<8) {
+        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
+    }
+
+    s=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+
+    if(s>=sourceLimit) {
+        /* no input */
+        *err=U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0xffff;
+    }
+
+    if(s+2>sourceLimit) {
+        /* only one byte: truncated UChar */
+        pArgs->converter->toUBytes[0]=*s++;
+        pArgs->converter->toULength=1;
+        pArgs->source=(const char *)s;
+        *err = U_TRUNCATED_CHAR_FOUND;
+        return 0xffff;
+    }
+
+    /* get one UChar */
+    c=((UChar32)*s<<8)|s[1];
+    s+=2;
+
+    /* check for a surrogate pair */
+    if(U_IS_SURROGATE(c)) {
+        if(U16_IS_SURROGATE_LEAD(c)) {
+            if(s+2<=sourceLimit) {
+                UChar trail;
+
+                /* get a second UChar and see if it is a trail surrogate */
+                trail=((UChar)*s<<8)|s[1];
+                if(U16_IS_TRAIL(trail)) {
+                    c=U16_GET_SUPPLEMENTARY(c, trail);
+                    s+=2;
+                } else {
+                    /* unmatched lead surrogate */
+                    c=-2;
+                }
+            } else {
+                /* too few (2 or 3) bytes for a surrogate pair: truncated code point */
+                uint8_t *bytes=pArgs->converter->toUBytes;
+                s-=2;
+                pArgs->converter->toULength=(int8_t)(sourceLimit-s);
+                do {
+                    *bytes++=*s++;
+                } while(s<sourceLimit);
+
+                c=0xffff;
+                *err=U_TRUNCATED_CHAR_FOUND;
+            }
+        } else {
+            /* unmatched trail surrogate */
+            c=-2;
+        }
+
+        if(c<0) {
+            /* write the unmatched surrogate */
+            uint8_t *bytes=pArgs->converter->toUBytes;
+            pArgs->converter->toULength=2;
+            *bytes=*(s-2);
+            bytes[1]=*(s-1);
+
+            c=0xffff;
+            *err=U_ILLEGAL_CHAR_FOUND;
+        }
+    }
+
+    pArgs->source=(const char *)s;
+    return c;
+} 
+
+static void
+_UTF16BEReset(UConverter *cnv, UConverterResetChoice choice) {
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        /* reset toUnicode state */
+        if(UCNV_GET_VERSION(cnv)==0) {
+            cnv->mode=8; /* no BOM handling */
+        } else {
+            cnv->mode=0; /* Java-specific "UnicodeBig" requires BE BOM or no BOM */
+        }
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE && UCNV_GET_VERSION(cnv)==1) {
+        /* reset fromUnicode for "UnicodeBig": prepare to output the UTF-16BE BOM */
+        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
+    }
+}
+
+static void
+_UTF16BEOpen(UConverter *cnv,
+             UConverterLoadArgs *pArgs,
+             UErrorCode *pErrorCode) {
+    if(UCNV_GET_VERSION(cnv)<=1) {
+        _UTF16BEReset(cnv, UCNV_RESET_BOTH);
+    } else {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+    }
+}
+
+static const char *
+_UTF16BEGetName(const UConverter *cnv) {
+    if(UCNV_GET_VERSION(cnv)==0) {
+        return "UTF-16BE";
+    } else {
+        return "UTF-16BE,version=1";
+    }
+}
+
+static const UConverterImpl _UTF16BEImpl={
+    UCNV_UTF16_BigEndian,
+
+    NULL,
+    NULL,
+
+    _UTF16BEOpen,
+    NULL,
+    _UTF16BEReset,
+
+    _UTF16BEToUnicodeWithOffsets,
+    _UTF16BEToUnicodeWithOffsets,
+    _UTF16BEFromUnicodeWithOffsets,
+    _UTF16BEFromUnicodeWithOffsets,
+    _UTF16BEGetNextUChar,
+
+    NULL,
+    _UTF16BEGetName,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+static const UConverterStaticData _UTF16BEStaticData={
+    sizeof(UConverterStaticData),
+    "UTF-16BE",
+    1200, UCNV_IBM, UCNV_UTF16_BigEndian, 2, 2,
+    { 0xff, 0xfd, 0, 0 },2,FALSE,FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+
+const UConverterSharedData _UTF16BEData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16BEStaticData, &_UTF16BEImpl);
+
+/* UTF-16LE ----------------------------------------------------------------- */
+
+static void
+_UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
+                               UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const UChar *source;
+    char *target;
+    int32_t *offsets;
+
+    uint32_t targetCapacity, length, sourceIndex;
+    UChar c, trail;
+    char overflow[4];
+
+    source=pArgs->source;
+    length=(int32_t)(pArgs->sourceLimit-source);
+    if(length<=0) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    cnv=pArgs->converter;
+
+    /* write the BOM if necessary */
+    if(cnv->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
+        static const char bom[]={ (char)0xff, (char)0xfe };
+        ucnv_fromUWriteBytes(cnv,
+                             bom, 2,
+                             &pArgs->target, pArgs->targetLimit,
+                             &pArgs->offsets, -1,
+                             pErrorCode);
+        cnv->fromUnicodeStatus=0;
+    }
+
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        return;
+    }
+
+    targetCapacity=(uint32_t)(pArgs->targetLimit-pArgs->target);
+    offsets=pArgs->offsets;
+    sourceIndex=0;
+
+    /* c!=0 indicates in several places outside the main loops that a surrogate was found */
+
+    if((c=(UChar)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
+        /* the last buffer ended with a lead surrogate, output the surrogate pair */
+        ++source;
+        --length;
+        target[0]=(uint8_t)c;
+        target[1]=(uint8_t)(c>>8);
+        target[2]=(uint8_t)trail;
+        target[3]=(uint8_t)(trail>>8);
+        target+=4;
+        targetCapacity-=4;
+        if(offsets!=NULL) {
+            *offsets++=-1;
+            *offsets++=-1;
+            *offsets++=-1;
+            *offsets++=-1;
+        }
+        sourceIndex=1;
+        cnv->fromUChar32=c=0;
+    }
+
+    if(c==0) {
+        /* copy an even number of bytes for complete UChars */
+        uint32_t count=2*length;
+        if(count>targetCapacity) {
+            count=targetCapacity&~1;
+        }
+        /* count is even */
+        targetCapacity-=count;
+        count>>=1;
+        length-=count;
+
+        if(offsets==NULL) {
+            while(count>0) {
+                c=*source++;
+                if(U16_IS_SINGLE(c)) {
+                    target[0]=(uint8_t)c;
+                    target[1]=(uint8_t)(c>>8);
+                    target+=2;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
+                    ++source;
+                    --count;
+                    target[0]=(uint8_t)c;
+                    target[1]=(uint8_t)(c>>8);
+                    target[2]=(uint8_t)trail;
+                    target[3]=(uint8_t)(trail>>8);
+                    target+=4;
+                } else {
+                    break;
+                }
+                --count;
+            }
+        } else {
+            while(count>0) {
+                c=*source++;
+                if(U16_IS_SINGLE(c)) {
+                    target[0]=(uint8_t)c;
+                    target[1]=(uint8_t)(c>>8);
+                    target+=2;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex++;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 && U16_IS_TRAIL(trail=*source)) {
+                    ++source;
+                    --count;
+                    target[0]=(uint8_t)c;
+                    target[1]=(uint8_t)(c>>8);
+                    target[2]=(uint8_t)trail;
+                    target[3]=(uint8_t)(trail>>8);
+                    target+=4;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    sourceIndex+=2;
+                } else {
+                    break;
+                }
+                --count;
+            }
+        }
+
+        if(count==0) {
+            /* done with the loop for complete UChars */
+            if(length>0 && targetCapacity>0) {
+                /*
+                 * there is more input and some target capacity -
+                 * it must be targetCapacity==1 because otherwise
+                 * the above would have copied more;
+                 * prepare for overflow output
+                 */
+                if(U16_IS_SINGLE(c=*source++)) {
+                    overflow[0]=(char)c;
+                    overflow[1]=(char)(c>>8);
+                    length=2; /* 2 bytes to output */
+                    c=0;
+                /* } else { keep c for surrogate handling, length will be set there */
+                }
+            } else {
+                length=0;
+                c=0;
+            }
+        } else {
+            /* keep c for surrogate handling, length will be set there */
+            targetCapacity+=2*count;
+        }
+    } else {
+        length=0; /* from here on, length counts the bytes in overflow[] */
+    }
+    
+    if(c!=0) {
+        /*
+         * c is a surrogate, and
+         * - source or target too short
+         * - or the surrogate is unmatched
+         */
+        length=0;
+        if(U16_IS_SURROGATE_LEAD(c)) {
+            if(source<pArgs->sourceLimit) {
+                if(U16_IS_TRAIL(trail=*source)) {
+                    /* output the surrogate pair, will overflow (see conditions comment above) */
+                    ++source;
+                    overflow[0]=(char)c;
+                    overflow[1]=(char)(c>>8);
+                    overflow[2]=(char)trail;
+                    overflow[3]=(char)(trail>>8);
+                    length=4; /* 4 bytes to output */
+                    c=0;
+                } else {
+                    /* unmatched lead surrogate */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                }
+            } else {
+                /* see if the trail surrogate is in the next buffer */
+            }
+        } else {
+            /* unmatched trail surrogate */
+            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+        }
+        cnv->fromUChar32=c;
+    }
+
+    if(length>0) {
+        /* output length bytes with overflow (length>targetCapacity>0) */
+        ucnv_fromUWriteBytes(cnv,
+                             overflow, length,
+                             &target, pArgs->targetLimit,
+                             &offsets, sourceIndex,
+                             pErrorCode);
+        targetCapacity=(uint32_t)(pArgs->targetLimit-(char *)target);
+    }
+
+    if(U_SUCCESS(*pErrorCode) && source<pArgs->sourceLimit && targetCapacity==0) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+}
+
+static void
+_UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                             UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const uint8_t *source;
+    UChar *target;
+    int32_t *offsets;
+
+    uint32_t targetCapacity, length, count, sourceIndex;
+    UChar c, trail;
+
+    if(pArgs->converter->mode<8) {
+        _UTF16ToUnicodeWithOffsets(pArgs, pErrorCode);
+        return;
+    }
+
+    cnv=pArgs->converter;
+    source=(const uint8_t *)pArgs->source;
+    length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
+    if(length<=0 && cnv->toUnicodeStatus==0) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        return;
+    }
+
+    targetCapacity=(uint32_t)(pArgs->targetLimit-pArgs->target);
+    offsets=pArgs->offsets;
+    sourceIndex=0;
+    c=0;
+
+    /* complete a partial UChar or pair from the last call */
+    if(cnv->toUnicodeStatus!=0) {
+        /*
+         * special case: single byte from a previous buffer,
+         * where the byte turned out not to belong to a trail surrogate
+         * and the preceding, unmatched lead surrogate was put into toUBytes[]
+         * for error handling
+         */
+        cnv->toUBytes[0]=(uint8_t)cnv->toUnicodeStatus;
+        cnv->toULength=1;
+        cnv->toUnicodeStatus=0;
+    }
+    if((count=cnv->toULength)!=0) {
+        uint8_t *p=cnv->toUBytes;
+        do {
+            p[count++]=*source++;
+            ++sourceIndex;
+            --length;
+            if(count==2) {
+                c=((UChar)p[1]<<8)|p[0];
+                if(U16_IS_SINGLE(c)) {
+                    /* output the BMP code point */
+                    *target++=c;
+                    if(offsets!=NULL) {
+                        *offsets++=-1;
+                    }
+                    --targetCapacity;
+                    count=0;
+                    c=0;
+                    break;
+                } else if(U16_IS_SURROGATE_LEAD(c)) {
+                    /* continue collecting bytes for the trail surrogate */
+                    c=0; /* avoid unnecessary surrogate handling below */
+                } else {
+                    /* fall through to error handling for an unmatched trail surrogate */
+                    break;
+                }
+            } else if(count==4) {
+                c=((UChar)p[1]<<8)|p[0];
+                trail=((UChar)p[3]<<8)|p[2];
+                if(U16_IS_TRAIL(trail)) {
+                    /* output the surrogate pair */
+                    *target++=c;
+                    if(targetCapacity>=2) {
+                        *target++=trail;
+                        if(offsets!=NULL) {
+                            *offsets++=-1;
+                            *offsets++=-1;
+                        }
+                        targetCapacity-=2;
+                    } else /* targetCapacity==1 */ {
+                        targetCapacity=0;
+                        cnv->UCharErrorBuffer[0]=trail;
+                        cnv->UCharErrorBufferLength=1;
+                        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                    }
+                    count=0;
+                    c=0;
+                    break;
+                } else {
+                    /* unmatched lead surrogate, handle here for consistent toUBytes[] */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+
+                    /* back out reading the code unit after it */
+                    if(((const uint8_t *)pArgs->source-source)>=2) {
+                        source-=2;
+                    } else {
+                        /*
+                         * if the trail unit's first byte was in a previous buffer, then
+                         * we need to put it into a special place because toUBytes[] will be
+                         * used for the lead unit's bytes
+                         */
+                        cnv->toUnicodeStatus=0x100|p[2];
+                        --source;
+                    }
+                    cnv->toULength=2;
+
+                    /* write back the updated pointers */
+                    pArgs->source=(const char *)source;
+                    pArgs->target=target;
+                    pArgs->offsets=offsets;
+                    return;
+                }
+            }
+        } while(length>0);
+        cnv->toULength=(int8_t)count;
+    }
+
+    /* copy an even number of bytes for complete UChars */
+    count=2*targetCapacity;
+    if(count>length) {
+        count=length&~1;
+    }
+    if(c==0 && count>0) {
+        length-=count;
+        count>>=1;
+        targetCapacity-=count;
+        if(offsets==NULL) {
+            do {
+                c=((UChar)source[1]<<8)|source[0];
+                source+=2;
+                if(U16_IS_SINGLE(c)) {
+                    *target++=c;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
+                          U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])
+                ) {
+                    source+=2;
+                    --count;
+                    *target++=c;
+                    *target++=trail;
+                } else {
+                    break;
+                }
+            } while(--count>0);
+        } else {
+            do {
+                c=((UChar)source[1]<<8)|source[0];
+                source+=2;
+                if(U16_IS_SINGLE(c)) {
+                    *target++=c;
+                    *offsets++=sourceIndex;
+                    sourceIndex+=2;
+                } else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
+                          U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])
+                ) {
+                    source+=2;
+                    --count;
+                    *target++=c;
+                    *target++=trail;
+                    *offsets++=sourceIndex;
+                    *offsets++=sourceIndex;
+                    sourceIndex+=4;
+                } else {
+                    break;
+                }
+            } while(--count>0);
+        }
+
+        if(count==0) {
+            /* done with the loop for complete UChars */
+            c=0;
+        } else {
+            /* keep c for surrogate handling, trail will be set there */
+            length+=2*(count-1); /* one more byte pair was consumed than count decremented */
+            targetCapacity+=count;
+        }
+    }
+
+    if(c!=0) {
+        /*
+         * c is a surrogate, and
+         * - source or target too short
+         * - or the surrogate is unmatched
+         */
+        cnv->toUBytes[0]=(uint8_t)c;
+        cnv->toUBytes[1]=(uint8_t)(c>>8);
+        cnv->toULength=2;
+
+        if(U16_IS_SURROGATE_LEAD(c)) {
+            if(length>=2) {
+                if(U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])) {
+                    /* output the surrogate pair, will overflow (see conditions comment above) */
+                    source+=2;
+                    length-=2;
+                    *target++=c;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                    cnv->UCharErrorBuffer[0]=trail;
+                    cnv->UCharErrorBufferLength=1;
+                    cnv->toULength=0;
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                } else {
+                    /* unmatched lead surrogate */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                }
+            } else {
+                /* see if the trail surrogate is in the next buffer */
+            }
+        } else {
+            /* unmatched trail surrogate */
+            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+        }
+    }
+
+    if(U_SUCCESS(*pErrorCode)) {
+        /* check for a remaining source byte */
+        if(length>0) {
+            if(targetCapacity==0) {
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            } else {
+                /* it must be length==1 because otherwise the above would have copied more */
+                cnv->toUBytes[cnv->toULength++]=*source++;
+            }
+        }
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+}
+
+static UChar32
+_UTF16LEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
+    const uint8_t *s, *sourceLimit;
+    UChar32 c;
+
+    if(pArgs->converter->mode<8) {
+        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
+    }
+
+    s=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+
+    if(s>=sourceLimit) {
+        /* no input */
+        *err=U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0xffff;
+    }
+
+    if(s+2>sourceLimit) {
+        /* only one byte: truncated UChar */
+        pArgs->converter->toUBytes[0]=*s++;
+        pArgs->converter->toULength=1;
+        pArgs->source=(const char *)s;
+        *err = U_TRUNCATED_CHAR_FOUND;
+        return 0xffff;
+    }
+
+    /* get one UChar */
+    c=((UChar32)s[1]<<8)|*s;
+    s+=2;
+
+    /* check for a surrogate pair */
+    if(U_IS_SURROGATE(c)) {
+        if(U16_IS_SURROGATE_LEAD(c)) {
+            if(s+2<=sourceLimit) {
+                UChar trail;
+
+                /* get a second UChar and see if it is a trail surrogate */
+                trail=((UChar)s[1]<<8)|*s;
+                if(U16_IS_TRAIL(trail)) {
+                    c=U16_GET_SUPPLEMENTARY(c, trail);
+                    s+=2;
+                } else {
+                    /* unmatched lead surrogate */
+                    c=-2;
+                }
+            } else {
+                /* too few (2 or 3) bytes for a surrogate pair: truncated code point */
+                uint8_t *bytes=pArgs->converter->toUBytes;
+                s-=2;
+                pArgs->converter->toULength=(int8_t)(sourceLimit-s);
+                do {
+                    *bytes++=*s++;
+                } while(s<sourceLimit);
+
+                c=0xffff;
+                *err=U_TRUNCATED_CHAR_FOUND;
+            }
+        } else {
+            /* unmatched trail surrogate */
+            c=-2;
+        }
+
+        if(c<0) {
+            /* write the unmatched surrogate */
+            uint8_t *bytes=pArgs->converter->toUBytes;
+            pArgs->converter->toULength=2;
+            *bytes=*(s-2);
+            bytes[1]=*(s-1);
+
+            c=0xffff;
+            *err=U_ILLEGAL_CHAR_FOUND;
+        }
+    }
+
+    pArgs->source=(const char *)s;
+    return c;
+} 
+
+static void
+_UTF16LEReset(UConverter *cnv, UConverterResetChoice choice) {
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        /* reset toUnicode state */
+        if(UCNV_GET_VERSION(cnv)==0) {
+            cnv->mode=8; /* no BOM handling */
+        } else {
+            cnv->mode=0; /* Java-specific "UnicodeLittle" requires LE BOM or no BOM */
+        }
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE && UCNV_GET_VERSION(cnv)==1) {
+        /* reset fromUnicode for "UnicodeLittle": prepare to output the UTF-16LE BOM */
+        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
+    }
+}
+
+static void
+_UTF16LEOpen(UConverter *cnv,
+             UConverterLoadArgs *pArgs,
+             UErrorCode *pErrorCode) {
+    if(UCNV_GET_VERSION(cnv)<=1) {
+        _UTF16LEReset(cnv, UCNV_RESET_BOTH);
+    } else {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+    }
+}
+
+static const char *
+_UTF16LEGetName(const UConverter *cnv) {
+    if(UCNV_GET_VERSION(cnv)==0) {
+        return "UTF-16LE";
+    } else {
+        return "UTF-16LE,version=1";
+    }
+}
+
+static const UConverterImpl _UTF16LEImpl={
+    UCNV_UTF16_LittleEndian,
+
+    NULL,
+    NULL,
+
+    _UTF16LEOpen,
+    NULL,
+    _UTF16LEReset,
+
+    _UTF16LEToUnicodeWithOffsets,
+    _UTF16LEToUnicodeWithOffsets,
+    _UTF16LEFromUnicodeWithOffsets,
+    _UTF16LEFromUnicodeWithOffsets,
+    _UTF16LEGetNextUChar,
+
+    NULL,
+    _UTF16LEGetName,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+
+static const UConverterStaticData _UTF16LEStaticData={
+    sizeof(UConverterStaticData),
+    "UTF-16LE",
+    1202, UCNV_IBM, UCNV_UTF16_LittleEndian, 2, 2,
+    { 0xfd, 0xff, 0, 0 },2,FALSE,FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+
+const UConverterSharedData _UTF16LEData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16LEStaticData, &_UTF16LEImpl);
+
+/* UTF-16 (Detect BOM) ------------------------------------------------------ */
+
+/*
+ * Detect a BOM at the beginning of the stream and select UTF-16BE or UTF-16LE
+ * accordingly.
+ * This is a simpler version of the UTF-32 converter, with
+ * fewer states for shorter BOMs.
+ *
+ * State values:
+ * 0    initial state
+ * 1    saw first byte
+ * 2..5 -
+ * 6..7 see _UTF16ToUnicodeWithOffsets() comments in state 1
+ * 8    UTF-16BE mode
+ * 9    UTF-16LE mode
+ *
+ * During detection: state==number of initial bytes seen so far.
+ *
+ * On output, emit U+FEFF as the first code point.
+ *
+ * Variants:
+ * - UTF-16,version=1 (Java "Unicode" encoding) treats a missing BOM as an error.
+ * - UTF-16BE,version=1 (Java "UnicodeBig" encoding) and
+ *   UTF-16LE,version=1 (Java "UnicodeLittle" encoding) treat a reverse BOM as an error.
+ */
+
+static void
+_UTF16Reset(UConverter *cnv, UConverterResetChoice choice) {
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        /* reset toUnicode: state=0 */
+        cnv->mode=0;
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE) {
+        /* reset fromUnicode: prepare to output the UTF-16PE BOM */
+        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
+    }
+}
+
+static const UConverterSharedData _UTF16v2Data;
+
+static void
+_UTF16Open(UConverter *cnv,
+           UConverterLoadArgs *pArgs,
+           UErrorCode *pErrorCode) {
+    if(UCNV_GET_VERSION(cnv)<=2) {
+        if(UCNV_GET_VERSION(cnv)==2 && !pArgs->onlyTestIsLoadable) {
+            /*
+             * Switch implementation, and switch the staticData that's different
+             * and was copied into the UConverter.
+             * (See ucnv_createConverterFromSharedData() in ucnv_bld.c.)
+             * UTF-16,version=2 fromUnicode() always writes a big-endian byte stream.
+             */
+            cnv->sharedData=(UConverterSharedData*)&_UTF16v2Data;
+            uprv_memcpy(cnv->subChars, _UTF16v2Data.staticData->subChar, UCNV_MAX_SUBCHAR_LEN);
+        }
+        _UTF16Reset(cnv, UCNV_RESET_BOTH);
+    } else {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+    }
+}
+
+static const char *
+_UTF16GetName(const UConverter *cnv) {
+    if(UCNV_GET_VERSION(cnv)==0) {
+        return "UTF-16";
+    } else if(UCNV_GET_VERSION(cnv)==1) {
+        return "UTF-16,version=1";
+    } else {
+        return "UTF-16,version=2";
+    }
+}
+
+const UConverterSharedData _UTF16Data;
+
+#define IS_UTF16BE(cnv) ((cnv)->sharedData==&_UTF16BEData)
+#define IS_UTF16LE(cnv) ((cnv)->sharedData==&_UTF16LEData)
+#define IS_UTF16(cnv) ((cnv)->sharedData==&_UTF16Data || (cnv)->sharedData==&_UTF16v2Data)
+
+static void
+_UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                           UErrorCode *pErrorCode) {
+    UConverter *cnv=pArgs->converter;
+    const char *source=pArgs->source;
+    const char *sourceLimit=pArgs->sourceLimit;
+    int32_t *offsets=pArgs->offsets;
+
+    int32_t state, offsetDelta;
+    uint8_t b;
+
+    state=cnv->mode;
+
+    /*
+     * If we detect a BOM in this buffer, then we must add the BOM size to the
+     * offsets because the actual converter function will not see and count the BOM.
+     * offsetDelta will have the number of the BOM bytes that are in the current buffer.
+     */
+    offsetDelta=0;
+
+    while(source<sourceLimit && U_SUCCESS(*pErrorCode)) {
+        switch(state) {
+        case 0:
+            cnv->toUBytes[0]=(uint8_t)*source++;
+            cnv->toULength=1;
+            state=1;
+            break;
+        case 1:
+            /*
+             * Only inside this switch case can the state variable
+             * temporarily take two additional values:
+             * 6: BOM error, continue with BE
+             * 7: BOM error, continue with LE
+             */
+            b=*source;
+            if(cnv->toUBytes[0]==0xfe && b==0xff) {
+                if(IS_UTF16LE(cnv)) {
+                    state=7; /* illegal reverse BOM for Java "UnicodeLittle" */
+                } else {
+                    state=8; /* detect UTF-16BE */
+                }
+            } else if(cnv->toUBytes[0]==0xff && b==0xfe) {
+                if(IS_UTF16BE(cnv)) {
+                    state=6; /* illegal reverse BOM for Java "UnicodeBig" */
+                } else {
+                    state=9; /* detect UTF-16LE */
+                }
+            } else if((IS_UTF16(cnv) && UCNV_GET_VERSION(cnv)==1)) {
+                state=6; /* illegal missing BOM for Java "Unicode" */
+            }
+            if(state>=8) {
+                /* BOM detected, consume it */
+                ++source;
+                cnv->toULength=0;
+                offsetDelta=(int32_t)(source-pArgs->source);
+            } else if(state<6) {
+                /* ok: no BOM, and not a reverse BOM */
+                if(source!=pArgs->source) {
+                    /* reset the source for a correct first offset */
+                    source=pArgs->source;
+                    cnv->toULength=0;
+                }
+                if(IS_UTF16LE(cnv)) {
+                    /* Make Java "UnicodeLittle" default to LE. */
+                    state=9;
+                } else {
+                    /* Make standard UTF-16 and Java "UnicodeBig" default to BE. */
+                    state=8;
+                }
+            } else {
+                /*
+                 * error: missing BOM, or reverse BOM
+                 * UTF-16,version=1: Java-specific "Unicode" requires a BOM.
+                 * UTF-16BE,version=1: Java-specific "UnicodeBig" requires a BE BOM or no BOM.
+                 * UTF-16LE,version=1: Java-specific "UnicodeLittle" requires an LE BOM or no BOM.
+                 */
+                /* report the non-BOM or reverse BOM as an illegal sequence */
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                pArgs->source=source+1;
+                /* continue with conversion if the callback resets the error */
+                /*
+                 * Make Java "Unicode" default to BE like standard UTF-16.
+                 * Make Java "UnicodeBig" and "UnicodeLittle" default
+                 * to their normal endiannesses.
+                 */
+                cnv->mode=state+2;
+                *pErrorCode=U_ILLEGAL_ESCAPE_SEQUENCE;
+                return;
+            }
+            /* convert the rest of the stream */
+            cnv->mode=state;
+            continue;
+        case 8:
+            /* call UTF-16BE */
+            pArgs->source=source;
+            _UTF16BEToUnicodeWithOffsets(pArgs, pErrorCode);
+            source=pArgs->source;
+            break;
+        case 9:
+            /* call UTF-16LE */
+            pArgs->source=source;
+            _UTF16LEToUnicodeWithOffsets(pArgs, pErrorCode);
+            source=pArgs->source;
+            break;
+        default:
+            break; /* does not occur */
+        }
+    }
+
+    /* add BOM size to offsets - see comment at offsetDelta declaration */
+    if(offsets!=NULL && offsetDelta!=0) {
+        int32_t *offsetsLimit=pArgs->offsets;
+        while(offsets<offsetsLimit) {
+            *offsets++ += offsetDelta;
+        }
+    }
+
+    pArgs->source=source;
+
+    if(source==sourceLimit && pArgs->flush) {
+        /* handle truncated input */
+        switch(state) {
+        case 0:
+            break; /* no input at all, nothing to do */
+        case 8:
+            _UTF16BEToUnicodeWithOffsets(pArgs, pErrorCode);
+            break;
+        case 9:
+            _UTF16LEToUnicodeWithOffsets(pArgs, pErrorCode);
+            break;
+        default:
+            /* 0<state<8: framework will report truncation, nothing to do here */
+            break;
+        }
+    }
+
+    cnv->mode=state;
+}
+
+static UChar32
+_UTF16GetNextUChar(UConverterToUnicodeArgs *pArgs,
+                   UErrorCode *pErrorCode) {
+    switch(pArgs->converter->mode) {
+    case 8:
+        return _UTF16BEGetNextUChar(pArgs, pErrorCode);
+    case 9:
+        return _UTF16LEGetNextUChar(pArgs, pErrorCode);
+    default:
+        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
+    }
+}
+
+static const UConverterImpl _UTF16Impl = {
+    UCNV_UTF16,
+
+    NULL,
+    NULL,
+
+    _UTF16Open,
+    NULL,
+    _UTF16Reset,
+
+    _UTF16ToUnicodeWithOffsets,
+    _UTF16ToUnicodeWithOffsets,
+    _UTF16PEFromUnicodeWithOffsets,
+    _UTF16PEFromUnicodeWithOffsets,
+    _UTF16GetNextUChar,
+
+    NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
+    _UTF16GetName,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+static const UConverterStaticData _UTF16StaticData = {
+    sizeof(UConverterStaticData),
+    "UTF-16",
+    1204, /* CCSID for BOM sensitive UTF-16 */
+    UCNV_IBM, UCNV_UTF16, 2, 2,
+#if U_IS_BIG_ENDIAN
+    { 0xff, 0xfd, 0, 0 }, 2,
+#else
+    { 0xfd, 0xff, 0, 0 }, 2,
+#endif
+    FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _UTF16Data =
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16StaticData, &_UTF16Impl);
+
+static const UConverterImpl _UTF16v2Impl = {
+    UCNV_UTF16,
+
+    NULL,
+    NULL,
+
+    _UTF16Open,
+    NULL,
+    _UTF16Reset,
+
+    _UTF16ToUnicodeWithOffsets,
+    _UTF16ToUnicodeWithOffsets,
+    _UTF16BEFromUnicodeWithOffsets,
+    _UTF16BEFromUnicodeWithOffsets,
+    _UTF16GetNextUChar,
+
+    NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
+    _UTF16GetName,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+static const UConverterStaticData _UTF16v2StaticData = {
+    sizeof(UConverterStaticData),
+    "UTF-16,version=2",
+    1204, /* CCSID for BOM sensitive UTF-16 */
+    UCNV_IBM, UCNV_UTF16, 2, 2,
+    { 0xff, 0xfd, 0, 0 }, 2,
+    FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+static const UConverterSharedData _UTF16v2Data =
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF16v2StaticData, &_UTF16v2Impl);
+
+#endif
diff --git a/source/common/ucnv_u32.c b/source/common/ucnv_u32.c
new file mode 100644 (file)
index 0000000..b0a0fe2
--- /dev/null
@@ -0,0 +1,1251 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+**********************************************************************
+*   Copyright (C) 2002-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnv_u32.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2002jul01
+*   created by: Markus W. Scherer
+*
+*   UTF-32 converter implementation. Used to be in ucnv_utf.c.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "unicode/utf.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "cmemory.h"
+
+#define MAXIMUM_UCS2            0x0000FFFF
+#define MAXIMUM_UTF             0x0010FFFF
+#define HALF_SHIFT              10
+#define HALF_BASE               0x0010000
+#define HALF_MASK               0x3FF
+#define SURROGATE_HIGH_START    0xD800
+#define SURROGATE_LOW_START     0xDC00
+
+/* -SURROGATE_LOW_START + HALF_BASE */
+#define SURROGATE_LOW_BASE      9216
+
+enum {
+    UCNV_NEED_TO_WRITE_BOM=1
+};
+
+/* UTF-32BE ----------------------------------------------------------------- */
+
+static void
+T_UConverter_toUnicode_UTF32_BE(UConverterToUnicodeArgs * args,
+                                UErrorCode * err)
+{
+    const unsigned char *mySource = (unsigned char *) args->source;
+    UChar *myTarget = args->target;
+    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
+    const UChar *targetLimit = args->targetLimit;
+    unsigned char *toUBytes = args->converter->toUBytes;
+    uint32_t ch, i;
+
+    /* Restore state of current sequence */
+    if (args->converter->toUnicodeStatus && myTarget < targetLimit) {
+        i = args->converter->toULength;       /* restore # of bytes consumed */
+        args->converter->toULength = 0;
+
+        ch = args->converter->toUnicodeStatus - 1;/*Stores the previously calculated ch from a previous call*/
+        args->converter->toUnicodeStatus = 0;
+        goto morebytes;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit) {
+        i = 0;
+        ch = 0;
+morebytes:
+        while (i < sizeof(uint32_t)) {
+            if (mySource < sourceLimit) {
+                ch = (ch << 8) | (uint8_t)(*mySource);
+                toUBytes[i++] = (char) *(mySource++);
+            }
+            else {
+                /* stores a partially calculated target*/
+                /* + 1 to make 0 a valid character */
+                args->converter->toUnicodeStatus = ch + 1;
+                args->converter->toULength = (int8_t) i;
+                goto donefornow;
+            }
+        }
+
+        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) {
+            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
+            if (ch <= MAXIMUM_UCS2) 
+            {
+                /* fits in 16 bits */
+                *(myTarget++) = (UChar) ch;
+            }
+            else {
+                /* write out the surrogates */
+                *(myTarget++) = U16_LEAD(ch);
+                ch = U16_TRAIL(ch);
+                if (myTarget < targetLimit) {
+                    *(myTarget++) = (UChar)ch;
+                }
+                else {
+                    /* Put in overflow buffer (not handled here) */
+                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
+                    args->converter->UCharErrorBufferLength = 1;
+                    *err = U_BUFFER_OVERFLOW_ERROR;
+                    break;
+                }
+            }
+        }
+        else {
+            args->converter->toULength = (int8_t)i;
+            *err = U_ILLEGAL_CHAR_FOUND;
+            break;
+        }
+    }
+
+donefornow:
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err)) {
+        /* End of target buffer */
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = myTarget;
+    args->source = (const char *) mySource;
+}
+
+static void
+T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC(UConverterToUnicodeArgs * args,
+                                             UErrorCode * err)
+{
+    const unsigned char *mySource = (unsigned char *) args->source;
+    UChar *myTarget = args->target;
+    int32_t *myOffsets = args->offsets;
+    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
+    const UChar *targetLimit = args->targetLimit;
+    unsigned char *toUBytes = args->converter->toUBytes;
+    uint32_t ch, i;
+    int32_t offsetNum = 0;
+
+    /* Restore state of current sequence */
+    if (args->converter->toUnicodeStatus && myTarget < targetLimit) {
+        i = args->converter->toULength;       /* restore # of bytes consumed */
+        args->converter->toULength = 0;
+
+        ch = args->converter->toUnicodeStatus - 1;/*Stores the previously calculated ch from a previous call*/
+        args->converter->toUnicodeStatus = 0;
+        goto morebytes;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit) {
+        i = 0;
+        ch = 0;
+morebytes:
+        while (i < sizeof(uint32_t)) {
+            if (mySource < sourceLimit) {
+                ch = (ch << 8) | (uint8_t)(*mySource);
+                toUBytes[i++] = (char) *(mySource++);
+            }
+            else {
+                /* stores a partially calculated target*/
+                /* + 1 to make 0 a valid character */
+                args->converter->toUnicodeStatus = ch + 1;
+                args->converter->toULength = (int8_t) i;
+                goto donefornow;
+            }
+        }
+
+        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) {
+            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
+            if (ch <= MAXIMUM_UCS2) {
+                /* fits in 16 bits */
+                *(myTarget++) = (UChar) ch;
+                *(myOffsets++) = offsetNum;
+            }
+            else {
+                /* write out the surrogates */
+                *(myTarget++) = U16_LEAD(ch);
+                *myOffsets++ = offsetNum;
+                ch = U16_TRAIL(ch);
+                if (myTarget < targetLimit)
+                {
+                    *(myTarget++) = (UChar)ch;
+                    *(myOffsets++) = offsetNum;
+                }
+                else {
+                    /* Put in overflow buffer (not handled here) */
+                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
+                    args->converter->UCharErrorBufferLength = 1;
+                    *err = U_BUFFER_OVERFLOW_ERROR;
+                    break;
+                }
+            }
+        }
+        else {
+            args->converter->toULength = (int8_t)i;
+            *err = U_ILLEGAL_CHAR_FOUND;
+            break;
+        }
+        offsetNum += i;
+    }
+
+donefornow:
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        /* End of target buffer */
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = myTarget;
+    args->source = (const char *) mySource;
+    args->offsets = myOffsets;
+}
+
+static void
+T_UConverter_fromUnicode_UTF32_BE(UConverterFromUnicodeArgs * args,
+                                  UErrorCode * err)
+{
+    const UChar *mySource = args->source;
+    unsigned char *myTarget;
+    const UChar *sourceLimit = args->sourceLimit;
+    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
+    UChar32 ch, ch2;
+    unsigned int indexToWrite;
+    unsigned char temp[sizeof(uint32_t)];
+
+    if(mySource >= sourceLimit) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    /* write the BOM if necessary */
+    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
+        static const char bom[]={ 0, 0, (char)0xfe, (char)0xff };
+        ucnv_fromUWriteBytes(args->converter,
+                             bom, 4,
+                             &args->target, args->targetLimit,
+                             &args->offsets, -1,
+                             err);
+        args->converter->fromUnicodeStatus=0;
+    }
+
+    myTarget = (unsigned char *) args->target;
+    temp[0] = 0;
+
+    if (args->converter->fromUChar32) {
+        ch = args->converter->fromUChar32;
+        args->converter->fromUChar32 = 0;
+        goto lowsurogate;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit) {
+        ch = *(mySource++);
+
+        if (U_IS_SURROGATE(ch)) {
+            if (U_IS_LEAD(ch)) {
+lowsurogate:
+                if (mySource < sourceLimit) {
+                    ch2 = *mySource;
+                    if (U_IS_TRAIL(ch2)) {
+                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
+                        mySource++;
+                    }
+                    else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        args->converter->fromUChar32 = ch;
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                }
+                else {
+                    /* ran out of source */
+                    args->converter->fromUChar32 = ch;
+                    if (args->flush) {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                    }
+                    break;
+                }
+            }
+            else {
+                /* this is an unmatched trail code unit (2nd surrogate) */
+                /* callback(illegal) */
+                args->converter->fromUChar32 = ch;
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+
+        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
+        temp[1] = (uint8_t) (ch >> 16 & 0x1F);
+        temp[2] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
+        temp[3] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
+
+        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++) {
+            if (myTarget < targetLimit) {
+                *(myTarget++) = temp[indexToWrite];
+            }
+            else {
+                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
+                *err = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+    }
+
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err)) {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = (char *) myTarget;
+    args->source = mySource;
+}
+
+static void
+T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC(UConverterFromUnicodeArgs * args,
+                                               UErrorCode * err)
+{
+    const UChar *mySource = args->source;
+    unsigned char *myTarget;
+    int32_t *myOffsets;
+    const UChar *sourceLimit = args->sourceLimit;
+    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
+    UChar32 ch, ch2;
+    int32_t offsetNum = 0;
+    unsigned int indexToWrite;
+    unsigned char temp[sizeof(uint32_t)];
+
+    if(mySource >= sourceLimit) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    /* write the BOM if necessary */
+    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
+        static const char bom[]={ 0, 0, (char)0xfe, (char)0xff };
+        ucnv_fromUWriteBytes(args->converter,
+                             bom, 4,
+                             &args->target, args->targetLimit,
+                             &args->offsets, -1,
+                             err);
+        args->converter->fromUnicodeStatus=0;
+    }
+
+    myTarget = (unsigned char *) args->target;
+    myOffsets = args->offsets;
+    temp[0] = 0;
+
+    if (args->converter->fromUChar32) {
+        ch = args->converter->fromUChar32;
+        args->converter->fromUChar32 = 0;
+        goto lowsurogate;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit) {
+        ch = *(mySource++);
+
+        if (U_IS_SURROGATE(ch)) {
+            if (U_IS_LEAD(ch)) {
+lowsurogate:
+                if (mySource < sourceLimit) {
+                    ch2 = *mySource;
+                    if (U_IS_TRAIL(ch2)) {
+                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
+                        mySource++;
+                    }
+                    else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        args->converter->fromUChar32 = ch;
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                }
+                else {
+                    /* ran out of source */
+                    args->converter->fromUChar32 = ch;
+                    if (args->flush) {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                    }
+                    break;
+                }
+            }
+            else {
+                /* this is an unmatched trail code unit (2nd surrogate) */
+                /* callback(illegal) */
+                args->converter->fromUChar32 = ch;
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+
+        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
+        temp[1] = (uint8_t) (ch >> 16 & 0x1F);
+        temp[2] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
+        temp[3] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
+
+        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++) {
+            if (myTarget < targetLimit) {
+                *(myTarget++) = temp[indexToWrite];
+                *(myOffsets++) = offsetNum;
+            }
+            else {
+                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
+                *err = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+        offsetNum = offsetNum + 1 + (temp[1] != 0);
+    }
+
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err)) {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = (char *) myTarget;
+    args->source = mySource;
+    args->offsets = myOffsets;
+}
+
+static UChar32
+T_UConverter_getNextUChar_UTF32_BE(UConverterToUnicodeArgs* args,
+                                   UErrorCode* err)
+{
+    const uint8_t *mySource;
+    UChar32 myUChar;
+    int32_t length;
+
+    mySource = (const uint8_t *)args->source;
+    if (mySource >= (const uint8_t *)args->sourceLimit)
+    {
+        /* no input */
+        *err = U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0xffff;
+    }
+
+    length = (int32_t)((const uint8_t *)args->sourceLimit - mySource);
+    if (length < 4) 
+    {
+        /* got a partial character */
+        uprv_memcpy(args->converter->toUBytes, mySource, length);
+        args->converter->toULength = (int8_t)length;
+        args->source = (const char *)(mySource + length);
+        *err = U_TRUNCATED_CHAR_FOUND;
+        return 0xffff;
+    }
+
+    /* Don't even try to do a direct cast because the value may be on an odd address. */
+    myUChar = ((UChar32)mySource[0] << 24)
+            | ((UChar32)mySource[1] << 16)
+            | ((UChar32)mySource[2] << 8)
+            | ((UChar32)mySource[3]);
+
+    args->source = (const char *)(mySource + 4);
+    if ((uint32_t)myUChar <= MAXIMUM_UTF && !U_IS_SURROGATE(myUChar)) {
+        return myUChar;
+    }
+
+    uprv_memcpy(args->converter->toUBytes, mySource, 4);
+    args->converter->toULength = 4;
+
+    *err = U_ILLEGAL_CHAR_FOUND;
+    return 0xffff;
+}
+
+static const UConverterImpl _UTF32BEImpl = {
+    UCNV_UTF32_BigEndian,
+
+    NULL,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+
+    T_UConverter_toUnicode_UTF32_BE,
+    T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC,
+    T_UConverter_fromUnicode_UTF32_BE,
+    T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC,
+    T_UConverter_getNextUChar_UTF32_BE,
+
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+/* The 1232 CCSID refers to any version of Unicode with any endianess of UTF-32 */
+static const UConverterStaticData _UTF32BEStaticData = {
+    sizeof(UConverterStaticData),
+    "UTF-32BE",
+    1232,
+    UCNV_IBM, UCNV_UTF32_BigEndian, 4, 4,
+    { 0, 0, 0xff, 0xfd }, 4, FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _UTF32BEData =
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32BEStaticData, &_UTF32BEImpl);
+
+/* UTF-32LE ---------------------------------------------------------- */
+
+static void
+T_UConverter_toUnicode_UTF32_LE(UConverterToUnicodeArgs * args,
+                                UErrorCode * err)
+{
+    const unsigned char *mySource = (unsigned char *) args->source;
+    UChar *myTarget = args->target;
+    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
+    const UChar *targetLimit = args->targetLimit;
+    unsigned char *toUBytes = args->converter->toUBytes;
+    uint32_t ch, i;
+
+    /* Restore state of current sequence */
+    if (args->converter->toUnicodeStatus && myTarget < targetLimit)
+    {
+        i = args->converter->toULength;       /* restore # of bytes consumed */
+        args->converter->toULength = 0;
+
+        /* Stores the previously calculated ch from a previous call*/
+        ch = args->converter->toUnicodeStatus - 1;
+        args->converter->toUnicodeStatus = 0;
+        goto morebytes;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        i = 0;
+        ch = 0;
+morebytes:
+        while (i < sizeof(uint32_t))
+        {
+            if (mySource < sourceLimit)
+            {
+                ch |= ((uint8_t)(*mySource)) << (i * 8);
+                toUBytes[i++] = (char) *(mySource++);
+            }
+            else
+            {
+                /* stores a partially calculated target*/
+                /* + 1 to make 0 a valid character */
+                args->converter->toUnicodeStatus = ch + 1;
+                args->converter->toULength = (int8_t) i;
+                goto donefornow;
+            }
+        }
+
+        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) {
+            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
+            if (ch <= MAXIMUM_UCS2) {
+                /* fits in 16 bits */
+                *(myTarget++) = (UChar) ch;
+            }
+            else {
+                /* write out the surrogates */
+                *(myTarget++) = U16_LEAD(ch);
+                ch = U16_TRAIL(ch);
+                if (myTarget < targetLimit) {
+                    *(myTarget++) = (UChar)ch;
+                }
+                else {
+                    /* Put in overflow buffer (not handled here) */
+                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
+                    args->converter->UCharErrorBufferLength = 1;
+                    *err = U_BUFFER_OVERFLOW_ERROR;
+                    break;
+                }
+            }
+        }
+        else {
+            args->converter->toULength = (int8_t)i;
+            *err = U_ILLEGAL_CHAR_FOUND;
+            break;
+        }
+    }
+
+donefornow:
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        /* End of target buffer */
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = myTarget;
+    args->source = (const char *) mySource;
+}
+
+static void
+T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(UConverterToUnicodeArgs * args,
+                                             UErrorCode * err)
+{
+    const unsigned char *mySource = (unsigned char *) args->source;
+    UChar *myTarget = args->target;
+    int32_t *myOffsets = args->offsets;
+    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
+    const UChar *targetLimit = args->targetLimit;
+    unsigned char *toUBytes = args->converter->toUBytes;
+    uint32_t ch, i;
+    int32_t offsetNum = 0;
+
+    /* Restore state of current sequence */
+    if (args->converter->toUnicodeStatus && myTarget < targetLimit)
+    {
+        i = args->converter->toULength;       /* restore # of bytes consumed */
+        args->converter->toULength = 0;
+
+        /* Stores the previously calculated ch from a previous call*/
+        ch = args->converter->toUnicodeStatus - 1;
+        args->converter->toUnicodeStatus = 0;
+        goto morebytes;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        i = 0;
+        ch = 0;
+morebytes:
+        while (i < sizeof(uint32_t))
+        {
+            if (mySource < sourceLimit)
+            {
+                ch |= ((uint8_t)(*mySource)) << (i * 8);
+                toUBytes[i++] = (char) *(mySource++);
+            }
+            else
+            {
+                /* stores a partially calculated target*/
+                /* + 1 to make 0 a valid character */
+                args->converter->toUnicodeStatus = ch + 1;
+                args->converter->toULength = (int8_t) i;
+                goto donefornow;
+            }
+        }
+
+        if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch))
+        {
+            /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
+            if (ch <= MAXIMUM_UCS2) 
+            {
+                /* fits in 16 bits */
+                *(myTarget++) = (UChar) ch;
+                *(myOffsets++) = offsetNum;
+            }
+            else {
+                /* write out the surrogates */
+                *(myTarget++) = U16_LEAD(ch);
+                *(myOffsets++) = offsetNum;
+                ch = U16_TRAIL(ch);
+                if (myTarget < targetLimit)
+                {
+                    *(myTarget++) = (UChar)ch;
+                    *(myOffsets++) = offsetNum;
+                }
+                else
+                {
+                    /* Put in overflow buffer (not handled here) */
+                    args->converter->UCharErrorBuffer[0] = (UChar) ch;
+                    args->converter->UCharErrorBufferLength = 1;
+                    *err = U_BUFFER_OVERFLOW_ERROR;
+                    break;
+                }
+            }
+        }
+        else
+        {
+            args->converter->toULength = (int8_t)i;
+            *err = U_ILLEGAL_CHAR_FOUND;
+            break;
+        }
+        offsetNum += i;
+    }
+
+donefornow:
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        /* End of target buffer */
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = myTarget;
+    args->source = (const char *) mySource;
+    args->offsets = myOffsets;
+}
+
+static void
+T_UConverter_fromUnicode_UTF32_LE(UConverterFromUnicodeArgs * args,
+                                  UErrorCode * err)
+{
+    const UChar *mySource = args->source;
+    unsigned char *myTarget;
+    const UChar *sourceLimit = args->sourceLimit;
+    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
+    UChar32 ch, ch2;
+    unsigned int indexToWrite;
+    unsigned char temp[sizeof(uint32_t)];
+
+    if(mySource >= sourceLimit) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    /* write the BOM if necessary */
+    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
+        static const char bom[]={ (char)0xff, (char)0xfe, 0, 0 };
+        ucnv_fromUWriteBytes(args->converter,
+                             bom, 4,
+                             &args->target, args->targetLimit,
+                             &args->offsets, -1,
+                             err);
+        args->converter->fromUnicodeStatus=0;
+    }
+
+    myTarget = (unsigned char *) args->target;
+    temp[3] = 0;
+
+    if (args->converter->fromUChar32)
+    {
+        ch = args->converter->fromUChar32;
+        args->converter->fromUChar32 = 0;
+        goto lowsurogate;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        ch = *(mySource++);
+
+        if (U16_IS_SURROGATE(ch)) {
+            if (U16_IS_LEAD(ch))
+            {
+lowsurogate:
+                if (mySource < sourceLimit)
+                {
+                    ch2 = *mySource;
+                    if (U16_IS_TRAIL(ch2)) {
+                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
+                        mySource++;
+                    }
+                    else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        args->converter->fromUChar32 = ch;
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                }
+                else {
+                    /* ran out of source */
+                    args->converter->fromUChar32 = ch;
+                    if (args->flush) {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                    }
+                    break;
+                }
+            }
+            else {
+                /* this is an unmatched trail code unit (2nd surrogate) */
+                /* callback(illegal) */
+                args->converter->fromUChar32 = ch;
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+
+        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
+        temp[2] = (uint8_t) (ch >> 16 & 0x1F);
+        temp[1] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
+        temp[0] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
+
+        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++)
+        {
+            if (myTarget < targetLimit)
+            {
+                *(myTarget++) = temp[indexToWrite];
+            }
+            else
+            {
+                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
+                *err = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+    }
+
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = (char *) myTarget;
+    args->source = mySource;
+}
+
+static void
+T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC(UConverterFromUnicodeArgs * args,
+                                               UErrorCode * err)
+{
+    const UChar *mySource = args->source;
+    unsigned char *myTarget;
+    int32_t *myOffsets;
+    const UChar *sourceLimit = args->sourceLimit;
+    const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
+    UChar32 ch, ch2;
+    unsigned int indexToWrite;
+    unsigned char temp[sizeof(uint32_t)];
+    int32_t offsetNum = 0;
+
+    if(mySource >= sourceLimit) {
+        /* no input, nothing to do */
+        return;
+    }
+
+    /* write the BOM if necessary */
+    if(args->converter->fromUnicodeStatus==UCNV_NEED_TO_WRITE_BOM) {
+        static const char bom[]={ (char)0xff, (char)0xfe, 0, 0 };
+        ucnv_fromUWriteBytes(args->converter,
+                             bom, 4,
+                             &args->target, args->targetLimit,
+                             &args->offsets, -1,
+                             err);
+        args->converter->fromUnicodeStatus=0;
+    }
+
+    myTarget = (unsigned char *) args->target;
+    myOffsets = args->offsets;
+    temp[3] = 0;
+
+    if (args->converter->fromUChar32)
+    {
+        ch = args->converter->fromUChar32;
+        args->converter->fromUChar32 = 0;
+        goto lowsurogate;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        ch = *(mySource++);
+
+        if (U16_IS_SURROGATE(ch)) {
+            if (U16_IS_LEAD(ch))
+            {
+lowsurogate:
+                if (mySource < sourceLimit)
+                {
+                    ch2 = *mySource;
+                    if (U16_IS_TRAIL(ch2))
+                    {
+                        ch = ((ch - SURROGATE_HIGH_START) << HALF_SHIFT) + ch2 + SURROGATE_LOW_BASE;
+                        mySource++;
+                    }
+                    else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        args->converter->fromUChar32 = ch;
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                }
+                else {
+                    /* ran out of source */
+                    args->converter->fromUChar32 = ch;
+                    if (args->flush) {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                    }
+                    break;
+                }
+            }
+            else {
+                /* this is an unmatched trail code unit (2nd surrogate) */
+                /* callback(illegal) */
+                args->converter->fromUChar32 = ch;
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+
+        /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
+        temp[2] = (uint8_t) (ch >> 16 & 0x1F);
+        temp[1] = (uint8_t) (ch >> 8);  /* unsigned cast implicitly does (ch & FF) */
+        temp[0] = (uint8_t) (ch);       /* unsigned cast implicitly does (ch & FF) */
+
+        for (indexToWrite = 0; indexToWrite <= sizeof(uint32_t) - 1; indexToWrite++)
+        {
+            if (myTarget < targetLimit)
+            {
+                *(myTarget++) = temp[indexToWrite];
+                *(myOffsets++) = offsetNum;
+            }
+            else
+            {
+                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
+                *err = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+        offsetNum = offsetNum + 1 + (temp[2] != 0);
+    }
+
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = (char *) myTarget;
+    args->source = mySource;
+    args->offsets = myOffsets;
+}
+
+static UChar32
+T_UConverter_getNextUChar_UTF32_LE(UConverterToUnicodeArgs* args,
+                                   UErrorCode* err)
+{
+    const uint8_t *mySource;
+    UChar32 myUChar;
+    int32_t length;
+
+    mySource = (const uint8_t *)args->source;
+    if (mySource >= (const uint8_t *)args->sourceLimit)
+    {
+        /* no input */
+        *err = U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0xffff;
+    }
+
+    length = (int32_t)((const uint8_t *)args->sourceLimit - mySource);
+    if (length < 4) 
+    {
+        /* got a partial character */
+        uprv_memcpy(args->converter->toUBytes, mySource, length);
+        args->converter->toULength = (int8_t)length;
+        args->source = (const char *)(mySource + length);
+        *err = U_TRUNCATED_CHAR_FOUND;
+        return 0xffff;
+    }
+
+    /* Don't even try to do a direct cast because the value may be on an odd address. */
+    myUChar = ((UChar32)mySource[3] << 24)
+            | ((UChar32)mySource[2] << 16)
+            | ((UChar32)mySource[1] << 8)
+            | ((UChar32)mySource[0]);
+
+    args->source = (const char *)(mySource + 4);
+    if ((uint32_t)myUChar <= MAXIMUM_UTF && !U_IS_SURROGATE(myUChar)) {
+        return myUChar;
+    }
+
+    uprv_memcpy(args->converter->toUBytes, mySource, 4);
+    args->converter->toULength = 4;
+
+    *err = U_ILLEGAL_CHAR_FOUND;
+    return 0xffff;
+}
+
+static const UConverterImpl _UTF32LEImpl = {
+    UCNV_UTF32_LittleEndian,
+
+    NULL,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+
+    T_UConverter_toUnicode_UTF32_LE,
+    T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC,
+    T_UConverter_fromUnicode_UTF32_LE,
+    T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC,
+    T_UConverter_getNextUChar_UTF32_LE,
+
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+/* The 1232 CCSID refers to any version of Unicode with any endianess of UTF-32 */
+static const UConverterStaticData _UTF32LEStaticData = {
+    sizeof(UConverterStaticData),
+    "UTF-32LE",
+    1234,
+    UCNV_IBM, UCNV_UTF32_LittleEndian, 4, 4,
+    { 0xfd, 0xff, 0, 0 }, 4, FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+
+const UConverterSharedData _UTF32LEData =
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32LEStaticData, &_UTF32LEImpl);
+
+/* UTF-32 (Detect BOM) ------------------------------------------------------ */
+
+/*
+ * Detect a BOM at the beginning of the stream and select UTF-32BE or UTF-32LE
+ * accordingly.
+ *
+ * State values:
+ * 0    initial state
+ * 1    saw 00
+ * 2    saw 00 00
+ * 3    saw 00 00 FE
+ * 4    -
+ * 5    saw FF
+ * 6    saw FF FE
+ * 7    saw FF FE 00
+ * 8    UTF-32BE mode
+ * 9    UTF-32LE mode
+ *
+ * During detection: state&3==number of matching bytes so far.
+ *
+ * On output, emit U+FEFF as the first code point.
+ */
+
+static void
+_UTF32Reset(UConverter *cnv, UConverterResetChoice choice) {
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        /* reset toUnicode: state=0 */
+        cnv->mode=0;
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE) {
+        /* reset fromUnicode: prepare to output the UTF-32PE BOM */
+        cnv->fromUnicodeStatus=UCNV_NEED_TO_WRITE_BOM;
+    }
+}
+
+static void
+_UTF32Open(UConverter *cnv,
+           UConverterLoadArgs *pArgs,
+           UErrorCode *pErrorCode) {
+    _UTF32Reset(cnv, UCNV_RESET_BOTH);
+}
+
+static const char utf32BOM[8]={ 0, 0, (char)0xfe, (char)0xff,    (char)0xff, (char)0xfe, 0, 0 };
+
+static void
+_UTF32ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                           UErrorCode *pErrorCode) {
+    UConverter *cnv=pArgs->converter;
+    const char *source=pArgs->source;
+    const char *sourceLimit=pArgs->sourceLimit;
+    int32_t *offsets=pArgs->offsets;
+
+    int32_t state, offsetDelta;
+    char b;
+
+    state=cnv->mode;
+
+    /*
+     * If we detect a BOM in this buffer, then we must add the BOM size to the
+     * offsets because the actual converter function will not see and count the BOM.
+     * offsetDelta will have the number of the BOM bytes that are in the current buffer.
+     */
+    offsetDelta=0;
+
+    while(source<sourceLimit && U_SUCCESS(*pErrorCode)) {
+        switch(state) {
+        case 0:
+            b=*source;
+            if(b==0) {
+                state=1; /* could be 00 00 FE FF */
+            } else if(b==(char)0xff) {
+                state=5; /* could be FF FE 00 00 */
+            } else {
+                state=8; /* default to UTF-32BE */
+                continue;
+            }
+            ++source;
+            break;
+        case 1:
+        case 2:
+        case 3:
+        case 5:
+        case 6:
+        case 7:
+            if(*source==utf32BOM[state]) {
+                ++state;
+                ++source;
+                if(state==4) {
+                    state=8; /* detect UTF-32BE */
+                    offsetDelta=(int32_t)(source-pArgs->source);
+                } else if(state==8) {
+                    state=9; /* detect UTF-32LE */
+                    offsetDelta=(int32_t)(source-pArgs->source);
+                }
+            } else {
+                /* switch to UTF-32BE and pass the previous bytes */
+                int32_t count=(int32_t)(source-pArgs->source); /* number of bytes from this buffer */
+
+                /* reset the source */
+                source=pArgs->source;
+
+                if(count==(state&3)) {
+                    /* simple: all in the same buffer, just reset source */
+                } else {
+                    UBool oldFlush=pArgs->flush;
+
+                    /* some of the bytes are from a previous buffer, replay those first */
+                    pArgs->source=utf32BOM+(state&4); /* select the correct BOM */
+                    pArgs->sourceLimit=pArgs->source+((state&3)-count); /* replay previous bytes */
+                    pArgs->flush=FALSE; /* this sourceLimit is not the real source stream limit */
+
+                    /* no offsets: bytes from previous buffer, and not enough for output */
+                    T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
+
+                    /* restore real pointers; pArgs->source will be set in case 8/9 */
+                    pArgs->sourceLimit=sourceLimit;
+                    pArgs->flush=oldFlush;
+                }
+                state=8;
+                continue;
+            }
+            break;
+        case 8:
+            /* call UTF-32BE */
+            pArgs->source=source;
+            if(offsets==NULL) {
+                T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
+            } else {
+                T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC(pArgs, pErrorCode);
+            }
+            source=pArgs->source;
+            break;
+        case 9:
+            /* call UTF-32LE */
+            pArgs->source=source;
+            if(offsets==NULL) {
+                T_UConverter_toUnicode_UTF32_LE(pArgs, pErrorCode);
+            } else {
+                T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(pArgs, pErrorCode);
+            }
+            source=pArgs->source;
+            break;
+        default:
+            break; /* does not occur */
+        }
+    }
+
+    /* add BOM size to offsets - see comment at offsetDelta declaration */
+    if(offsets!=NULL && offsetDelta!=0) {
+        int32_t *offsetsLimit=pArgs->offsets;
+        while(offsets<offsetsLimit) {
+            *offsets++ += offsetDelta;
+        }
+    }
+
+    pArgs->source=source;
+
+    if(source==sourceLimit && pArgs->flush) {
+        /* handle truncated input */
+        switch(state) {
+        case 0:
+            break; /* no input at all, nothing to do */
+        case 8:
+            T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
+            break;
+        case 9:
+            T_UConverter_toUnicode_UTF32_LE(pArgs, pErrorCode);
+            break;
+        default:
+            /* handle 0<state<8: call UTF-32BE with too-short input */
+            pArgs->source=utf32BOM+(state&4); /* select the correct BOM */
+            pArgs->sourceLimit=pArgs->source+(state&3); /* replay bytes */
+
+            /* no offsets: not enough for output */
+            T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
+            pArgs->source=source;
+            pArgs->sourceLimit=sourceLimit;
+            state=8;
+            break;
+        }
+    }
+
+    cnv->mode=state;
+}
+
+static UChar32
+_UTF32GetNextUChar(UConverterToUnicodeArgs *pArgs,
+                   UErrorCode *pErrorCode) {
+    switch(pArgs->converter->mode) {
+    case 8:
+        return T_UConverter_getNextUChar_UTF32_BE(pArgs, pErrorCode);
+    case 9:
+        return T_UConverter_getNextUChar_UTF32_LE(pArgs, pErrorCode);
+    default:
+        return UCNV_GET_NEXT_UCHAR_USE_TO_U;
+    }
+}
+
+static const UConverterImpl _UTF32Impl = {
+    UCNV_UTF32,
+
+    NULL,
+    NULL,
+
+    _UTF32Open,
+    NULL,
+    _UTF32Reset,
+
+    _UTF32ToUnicodeWithOffsets,
+    _UTF32ToUnicodeWithOffsets,
+#if U_IS_BIG_ENDIAN
+    T_UConverter_fromUnicode_UTF32_BE,
+    T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC,
+#else
+    T_UConverter_fromUnicode_UTF32_LE,
+    T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC,
+#endif
+    _UTF32GetNextUChar,
+
+    NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
+    NULL,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+/* The 1236 CCSID refers to any version of Unicode with a BOM sensitive endianess of UTF-32 */
+static const UConverterStaticData _UTF32StaticData = {
+    sizeof(UConverterStaticData),
+    "UTF-32",
+    1236,
+    UCNV_IBM, UCNV_UTF32, 4, 4,
+#if U_IS_BIG_ENDIAN
+    { 0, 0, 0xff, 0xfd }, 4,
+#else
+    { 0xfd, 0xff, 0, 0 }, 4,
+#endif
+    FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _UTF32Data = 
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32StaticData, &_UTF32Impl);
+
+#endif
diff --git a/source/common/ucnv_u7.c b/source/common/ucnv_u7.c
new file mode 100644 (file)
index 0000000..c3b4d74
--- /dev/null
@@ -0,0 +1,1484 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+**********************************************************************
+*   Copyright (C) 2002-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnv_u7.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2002jul01
+*   created by: Markus W. Scherer
+*
+*   UTF-7 converter implementation. Used to be in ucnv_utf.c.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "cmemory.h"
+#include "unicode/ucnv.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "uassert.h"
+
+/* UTF-7 -------------------------------------------------------------------- */
+
+/*
+ * UTF-7 is a stateful encoding of Unicode.
+ * It is defined in RFC 2152. (http://www.ietf.org/rfc/rfc2152.txt)
+ * It was intended for use in Internet email systems, using in its bytewise
+ * encoding only a subset of 7-bit US-ASCII.
+ * UTF-7 is deprecated in favor of UTF-8/16/32 and SCSU, but still
+ * occasionally used.
+ *
+ * For converting Unicode to UTF-7, the RFC allows to encode some US-ASCII
+ * characters directly or in base64. Especially, the characters in set O
+ * as defined in the RFC (see below) may be encoded directly but are not
+ * allowed in, e.g., email headers.
+ * By default, the ICU UTF-7 converter encodes set O directly.
+ * By choosing the option "version=1", set O will be escaped instead.
+ * For example:
+ *     utf7Converter=ucnv_open("UTF-7,version=1");
+ *
+ * For details about email headers see RFC 2047.
+ */
+
+/*
+ * Tests for US-ASCII characters belonging to character classes
+ * defined in UTF-7.
+ *
+ * Set D (directly encoded characters) consists of the following
+ * characters: the upper and lower case letters A through Z
+ * and a through z, the 10 digits 0-9, and the following nine special
+ * characters (note that "+" and "=" are omitted):
+ *     '(),-./:?
+ *
+ * Set O (optional direct characters) consists of the following
+ * characters (note that "\" and "~" are omitted):
+ *     !"#$%&*;<=>@[]^_`{|}
+ *
+ * According to the rules in RFC 2152, the byte values for the following
+ * US-ASCII characters are not used in UTF-7 and are therefore illegal:
+ * - all C0 control codes except for CR LF TAB
+ * - BACKSLASH
+ * - TILDE
+ * - DEL
+ * - all codes beyond US-ASCII, i.e. all >127
+ */
+#define inSetD(c) \
+    ((uint8_t)((c)-97)<26 || (uint8_t)((c)-65)<26 || /* letters */ \
+     (uint8_t)((c)-48)<10 ||    /* digits */ \
+     (uint8_t)((c)-39)<3 ||     /* '() */ \
+     (uint8_t)((c)-44)<4 ||     /* ,-./ */ \
+     (c)==58 || (c)==63         /* :? */ \
+    )
+
+#define inSetO(c) \
+    ((uint8_t)((c)-33)<6 ||         /* !"#$%& */ \
+     (uint8_t)((c)-59)<4 ||         /* ;<=> */ \
+     (uint8_t)((c)-93)<4 ||         /* ]^_` */ \
+     (uint8_t)((c)-123)<3 ||        /* {|} */ \
+     (c)==42 || (c)==64 || (c)==91  /* *@[ */ \
+    )
+
+#define isCRLFTAB(c) ((c)==13 || (c)==10 || (c)==9)
+#define isCRLFSPTAB(c) ((c)==32 || (c)==13 || (c)==10 || (c)==9)
+
+#define PLUS  43
+#define MINUS 45
+#define BACKSLASH 92
+#define TILDE 126
+
+/* legal byte values: all US-ASCII graphic characters from space to before tilde, and CR LF TAB */
+#define isLegalUTF7(c) (((uint8_t)((c)-32)<94 && (c)!=BACKSLASH) || isCRLFTAB(c))
+
+/* encode directly sets D and O and CR LF SP TAB */
+static const UBool encodeDirectlyMaximum[128]={
+ /* 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
+
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+};
+
+/* encode directly set D and CR LF SP TAB but not set O */
+static const UBool encodeDirectlyRestricted[128]={
+ /* 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+    1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
+
+    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+
+    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
+};
+
+static const uint8_t
+toBase64[64]={
+    /* A-Z */
+    65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+    78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+    /* a-z */
+    97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+    110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+    /* 0-9 */
+    48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+    /* +/ */
+    43, 47
+};
+
+static const int8_t
+fromBase64[128]={
+    /* C0 controls, -1 for legal ones (CR LF TAB), -3 for illegal ones */
+    -3, -3, -3, -3, -3, -3, -3, -3, -3, -1, -1, -3, -3, -1, -3, -3,
+    -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+
+    /* general punctuation with + and / and a special value (-2) for - */
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -2, -1, 63,
+    /* digits */
+    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
+
+    /* A-Z */
+    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -3, -1, -1, -1,
+
+    /* a-z */
+    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -3, -3
+};
+
+/*
+ * converter status values:
+ *
+ * toUnicodeStatus:
+ *     24 inDirectMode (boolean)
+ * 23..16 base64Counter (-1..7)
+ * 15..0  bits (up to 14 bits incoming base64)
+ *
+ * fromUnicodeStatus:
+ * 31..28 version (0: set O direct  1: set O escaped)
+ *     24 inDirectMode (boolean)
+ * 23..16 base64Counter (0..2)
+ *  7..0  bits (6 bits outgoing base64)
+ *
+ */
+
+static void
+_UTF7Reset(UConverter *cnv, UConverterResetChoice choice) {
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        /* reset toUnicode */
+        cnv->toUnicodeStatus=0x1000000; /* inDirectMode=TRUE */
+        cnv->toULength=0;
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE) {
+        /* reset fromUnicode */
+        cnv->fromUnicodeStatus=(cnv->fromUnicodeStatus&0xf0000000)|0x1000000; /* keep version, inDirectMode=TRUE */
+    }
+}
+
+static void
+_UTF7Open(UConverter *cnv,
+          UConverterLoadArgs *pArgs,
+          UErrorCode *pErrorCode) {
+    if(UCNV_GET_VERSION(cnv)<=1) {
+        /* TODO(markus): Should just use cnv->options rather than copying the version number. */
+        cnv->fromUnicodeStatus=UCNV_GET_VERSION(cnv)<<28;
+        _UTF7Reset(cnv, UCNV_RESET_BOTH);
+    } else {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+    }
+}
+
+static void
+_UTF7ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                          UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const uint8_t *source, *sourceLimit;
+    UChar *target;
+    const UChar *targetLimit;
+    int32_t *offsets;
+
+    uint8_t *bytes;
+    uint8_t byteIndex;
+
+    int32_t length, targetCapacity;
+
+    /* UTF-7 state */
+    uint16_t bits;
+    int8_t base64Counter;
+    UBool inDirectMode;
+
+    int8_t base64Value;
+
+    int32_t sourceIndex, nextSourceIndex;
+
+    uint8_t b;
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+
+    source=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+    target=pArgs->target;
+    targetLimit=pArgs->targetLimit;
+    offsets=pArgs->offsets;
+    /* get the state machine state */
+    {
+        uint32_t status=cnv->toUnicodeStatus;
+        inDirectMode=(UBool)((status>>24)&1);
+        base64Counter=(int8_t)(status>>16);
+        bits=(uint16_t)status;
+    }
+    bytes=cnv->toUBytes;
+    byteIndex=cnv->toULength;
+
+    /* sourceIndex=-1 if the current character began in the previous buffer */
+    sourceIndex=byteIndex==0 ? 0 : -1;
+    nextSourceIndex=0;
+
+    if(inDirectMode) {
+directMode:
+        /*
+         * In Direct Mode, most US-ASCII characters are encoded directly, i.e.,
+         * with their US-ASCII byte values.
+         * Backslash and Tilde and most control characters are not allowed in UTF-7.
+         * A plus sign starts Unicode (or "escape") Mode.
+         *
+         * In Direct Mode, only the sourceIndex is used.
+         */
+        byteIndex=0;
+        length=(int32_t)(sourceLimit-source);
+        targetCapacity=(int32_t)(targetLimit-target);
+        if(length>targetCapacity) {
+            length=targetCapacity;
+        }
+        while(length>0) {
+            b=*source++;
+            if(!isLegalUTF7(b)) {
+                /* illegal */
+                bytes[0]=b;
+                byteIndex=1;
+                *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                break;
+            } else if(b!=PLUS) {
+                /* write directly encoded character */
+                *target++=b;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex++;
+                }
+            } else /* PLUS */ {
+                /* switch to Unicode mode */
+                nextSourceIndex=++sourceIndex;
+                inDirectMode=FALSE;
+                byteIndex=0;
+                bits=0;
+                base64Counter=-1;
+                goto unicodeMode;
+            }
+            --length;
+        }
+        if(source<sourceLimit && target>=targetLimit) {
+            /* target is full */
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        }
+    } else {
+unicodeMode:
+        /*
+         * In Unicode (or "escape") Mode, UTF-16BE is base64-encoded.
+         * The base64 sequence ends with any character that is not in the base64 alphabet.
+         * A terminating minus sign is consumed.
+         *
+         * In Unicode Mode, the sourceIndex has the index to the start of the current
+         * base64 bytes, while nextSourceIndex is precisely parallel to source,
+         * keeping the index to the following byte.
+         * Note that in 2 out of 3 cases, UChars overlap within a base64 byte.
+         */
+        while(source<sourceLimit) {
+            if(target<targetLimit) {
+                bytes[byteIndex++]=b=*source++;
+                ++nextSourceIndex;
+                base64Value = -3; /* initialize as illegal */
+                if(b>=126 || (base64Value=fromBase64[b])==-3 || base64Value==-1) {
+                    /* either
+                     * base64Value==-1 for any legal character except base64 and minus sign, or
+                     * base64Value==-3 for illegal characters:
+                     * 1. In either case, leave Unicode mode.
+                     * 2.1. If we ended with an incomplete UChar or none after the +, then
+                     *      generate an error for the preceding erroneous sequence and deal with
+                     *      the current (possibly illegal) character next time through.
+                     * 2.2. Else the current char comes after a complete UChar, which was already
+                     *      pushed to the output buf, so:
+                     * 2.2.1. If the current char is legal, just save it for processing next time.
+                     *        It may be for example, a plus which we need to deal with in direct mode.
+                     * 2.2.2. Else if the current char is illegal, we might as well deal with it here.
+                     */
+                    inDirectMode=TRUE;
+                    if(base64Counter==-1) {
+                        /* illegal: + immediately followed by something other than base64 or minus sign */
+                        /* include the plus sign in the reported sequence, but not the subsequent char */
+                        --source;
+                        bytes[0]=PLUS;
+                        byteIndex=1;
+                        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    } else if(bits!=0) {
+                        /* bits are illegally left over, a UChar is incomplete */
+                        /* don't include current char (legal or illegal) in error seq */
+                        --source;
+                        --byteIndex;
+                        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    } else {
+                        /* previous UChar was complete */
+                        if(base64Value==-3) {
+                            /* current character is illegal, deal with it here */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            break;
+                        } else {
+                            /* un-read the current character in case it is a plus sign */
+                            --source;
+                            sourceIndex=nextSourceIndex-1;
+                            goto directMode;
+                        }
+                    }
+                } else if(base64Value>=0) {
+                    /* collect base64 bytes into UChars */
+                    switch(base64Counter) {
+                    case -1: /* -1 is immediately after the + */
+                    case 0:
+                        bits=base64Value;
+                        base64Counter=1;
+                        break;
+                    case 1:
+                    case 3:
+                    case 4:
+                    case 6:
+                        bits=(uint16_t)((bits<<6)|base64Value);
+                        ++base64Counter;
+                        break;
+                    case 2:
+                        *target++=(UChar)((bits<<4)|(base64Value>>2));
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                            sourceIndex=nextSourceIndex-1;
+                        }
+                        bytes[0]=b; /* keep this byte in case an error occurs */
+                        byteIndex=1;
+                        bits=(uint16_t)(base64Value&3);
+                        base64Counter=3;
+                        break;
+                    case 5:
+                        *target++=(UChar)((bits<<2)|(base64Value>>4));
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                            sourceIndex=nextSourceIndex-1;
+                        }
+                        bytes[0]=b; /* keep this byte in case an error occurs */
+                        byteIndex=1;
+                        bits=(uint16_t)(base64Value&15);
+                        base64Counter=6;
+                        break;
+                    case 7:
+                        *target++=(UChar)((bits<<6)|base64Value);
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                            sourceIndex=nextSourceIndex;
+                        }
+                        byteIndex=0;
+                        bits=0;
+                        base64Counter=0;
+                        break;
+                    default:
+                        /* will never occur */
+                        break;
+                    }
+                } else /*base64Value==-2*/ {
+                    /* minus sign terminates the base64 sequence */
+                    inDirectMode=TRUE;
+                    if(base64Counter==-1) {
+                        /* +- i.e. a minus immediately following a plus */
+                        *target++=PLUS;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex-1;
+                        }
+                    } else {
+                        /* absorb the minus and leave the Unicode Mode */
+                        if(bits!=0) {
+                            /* bits are illegally left over, a UChar is incomplete */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            break;
+                        }
+                    }
+                    sourceIndex=nextSourceIndex;
+                    goto directMode;
+                }
+            } else {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+        }
+    }
+
+    if(U_SUCCESS(*pErrorCode) && pArgs->flush && source==sourceLimit && bits==0) {
+        /*
+         * if we are in Unicode mode, then the byteIndex might not be 0,
+         * but that is ok if bits==0
+         * -> we set byteIndex=0 at the end of the stream to avoid a truncated error
+         * (not true for IMAP-mailbox-name where we must end in direct mode)
+         */
+        byteIndex=0;
+    }
+
+    /* set the converter state back into UConverter */
+    cnv->toUnicodeStatus=((uint32_t)inDirectMode<<24)|((uint32_t)((uint8_t)base64Counter)<<16)|(uint32_t)bits;
+    cnv->toULength=byteIndex;
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+    return;
+}
+
+static void
+_UTF7FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
+                            UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const UChar *source, *sourceLimit;
+    uint8_t *target, *targetLimit;
+    int32_t *offsets;
+
+    int32_t length, targetCapacity, sourceIndex;
+    UChar c;
+
+    /* UTF-7 state */
+    const UBool *encodeDirectly;
+    uint8_t bits;
+    int8_t base64Counter;
+    UBool inDirectMode;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+
+    /* set up the local pointers */
+    source=pArgs->source;
+    sourceLimit=pArgs->sourceLimit;
+    target=(uint8_t *)pArgs->target;
+    targetLimit=(uint8_t *)pArgs->targetLimit;
+    offsets=pArgs->offsets;
+
+    /* get the state machine state */
+    {
+        uint32_t status=cnv->fromUnicodeStatus;
+        encodeDirectly= status<0x10000000 ? encodeDirectlyMaximum : encodeDirectlyRestricted;
+        inDirectMode=(UBool)((status>>24)&1);
+        base64Counter=(int8_t)(status>>16);
+        bits=(uint8_t)status;
+        U_ASSERT(bits<=UPRV_LENGTHOF(toBase64));
+    }
+
+    /* UTF-7 always encodes UTF-16 code units, therefore we need only a simple sourceIndex */
+    sourceIndex=0;
+
+    if(inDirectMode) {
+directMode:
+        length=(int32_t)(sourceLimit-source);
+        targetCapacity=(int32_t)(targetLimit-target);
+        if(length>targetCapacity) {
+            length=targetCapacity;
+        }
+        while(length>0) {
+            c=*source++;
+            /* currently always encode CR LF SP TAB directly */
+            if(c<=127 && encodeDirectly[c]) {
+                /* encode directly */
+                *target++=(uint8_t)c;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex++;
+                }
+            } else if(c==PLUS) {
+                /* output +- for + */
+                *target++=PLUS;
+                if(target<targetLimit) {
+                    *target++=MINUS;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                        *offsets++=sourceIndex++;
+                    }
+                    /* realign length and targetCapacity */
+                    goto directMode;
+                } else {
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex++;
+                    }
+                    cnv->charErrorBuffer[0]=MINUS;
+                    cnv->charErrorBufferLength=1;
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                    break;
+                }
+            } else {
+                /* un-read this character and switch to Unicode Mode */
+                --source;
+                *target++=PLUS;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                inDirectMode=FALSE;
+                base64Counter=0;
+                goto unicodeMode;
+            }
+            --length;
+        }
+        if(source<sourceLimit && target>=targetLimit) {
+            /* target is full */
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        }
+    } else {
+unicodeMode:
+        while(source<sourceLimit) {
+            if(target<targetLimit) {
+                c=*source++;
+                if(c<=127 && encodeDirectly[c]) {
+                    /* encode directly */
+                    inDirectMode=TRUE;
+
+                    /* trick: back out this character to make this easier */
+                    --source;
+
+                    /* terminate the base64 sequence */
+                    if(base64Counter!=0) {
+                        /* write remaining bits for the previous character */
+                        *target++=toBase64[bits];
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex-1;
+                        }
+                    }
+                    if(fromBase64[c]!=-1) {
+                        /* need to terminate with a minus */
+                        if(target<targetLimit) {
+                            *target++=MINUS;
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex-1;
+                            }
+                        } else {
+                            cnv->charErrorBuffer[0]=MINUS;
+                            cnv->charErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            break;
+                        }
+                    }
+                    goto directMode;
+                } else {
+                    /*
+                     * base64 this character:
+                     * Output 2 or 3 base64 bytes for the remaining bits of the previous character
+                     * and the bits of this character, each implicitly in UTF-16BE.
+                     *
+                     * Here, bits is an 8-bit variable because only 6 bits need to be kept from one
+                     * character to the next. The actual 2 or 4 bits are shifted to the left edge
+                     * of the 6-bits field 5..0 to make the termination of the base64 sequence easier.
+                     */
+                    switch(base64Counter) {
+                    case 0:
+                        *target++=toBase64[c>>10];
+                        if(target<targetLimit) {
+                            *target++=toBase64[(c>>4)&0x3f];
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex;
+                                *offsets++=sourceIndex++;
+                            }
+                        } else {
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex++;
+                            }
+                            cnv->charErrorBuffer[0]=toBase64[(c>>4)&0x3f];
+                            cnv->charErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        }
+                        bits=(uint8_t)((c&15)<<2);
+                        base64Counter=1;
+                        break;
+                    case 1:
+                        *target++=toBase64[bits|(c>>14)];
+                        if(target<targetLimit) {
+                            *target++=toBase64[(c>>8)&0x3f];
+                            if(target<targetLimit) {
+                                *target++=toBase64[(c>>2)&0x3f];
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                            } else {
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                                cnv->charErrorBuffer[0]=toBase64[(c>>2)&0x3f];
+                                cnv->charErrorBufferLength=1;
+                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            }
+                        } else {
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex++;
+                            }
+                            cnv->charErrorBuffer[0]=toBase64[(c>>8)&0x3f];
+                            cnv->charErrorBuffer[1]=toBase64[(c>>2)&0x3f];
+                            cnv->charErrorBufferLength=2;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        }
+                        bits=(uint8_t)((c&3)<<4);
+                        base64Counter=2;
+                        break;
+                    case 2:
+                        *target++=toBase64[bits|(c>>12)];
+                        if(target<targetLimit) {
+                            *target++=toBase64[(c>>6)&0x3f];
+                            if(target<targetLimit) {
+                                *target++=toBase64[c&0x3f];
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                            } else {
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                                cnv->charErrorBuffer[0]=toBase64[c&0x3f];
+                                cnv->charErrorBufferLength=1;
+                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            }
+                        } else {
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex++;
+                            }
+                            cnv->charErrorBuffer[0]=toBase64[(c>>6)&0x3f];
+                            cnv->charErrorBuffer[1]=toBase64[c&0x3f];
+                            cnv->charErrorBufferLength=2;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        }
+                        bits=0;
+                        base64Counter=0;
+                        break;
+                    default:
+                        /* will never occur */
+                        break;
+                    }
+                }
+            } else {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+        }
+    }
+
+    if(pArgs->flush && source>=sourceLimit) {
+        /* flush remaining bits to the target */
+        if(!inDirectMode) {
+            if (base64Counter!=0) {
+                if(target<targetLimit) {
+                    *target++=toBase64[bits];
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex-1;
+                    }
+                } else {
+                    cnv->charErrorBuffer[cnv->charErrorBufferLength++]=toBase64[bits];
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                }
+            }
+            /* Add final MINUS to terminate unicodeMode */
+            if(target<targetLimit) {
+                *target++=MINUS;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex-1;
+                }
+            } else {
+                cnv->charErrorBuffer[cnv->charErrorBufferLength++]=MINUS;
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+        /* reset the state for the next conversion */
+        cnv->fromUnicodeStatus=(cnv->fromUnicodeStatus&0xf0000000)|0x1000000; /* keep version, inDirectMode=TRUE */
+    } else {
+        /* set the converter state back into UConverter */
+        cnv->fromUnicodeStatus=
+            (cnv->fromUnicodeStatus&0xf0000000)|    /* keep version*/
+            ((uint32_t)inDirectMode<<24)|((uint32_t)base64Counter<<16)|(uint32_t)bits;
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=(char *)target;
+    pArgs->offsets=offsets;
+    return;
+}
+
+static const char *
+_UTF7GetName(const UConverter *cnv) {
+    switch(cnv->fromUnicodeStatus>>28) {
+    case 1:
+        return "UTF-7,version=1";
+    default:
+        return "UTF-7";
+    }
+}
+
+static const UConverterImpl _UTF7Impl={
+    UCNV_UTF7,
+
+    NULL,
+    NULL,
+
+    _UTF7Open,
+    NULL,
+    _UTF7Reset,
+
+    _UTF7ToUnicodeWithOffsets,
+    _UTF7ToUnicodeWithOffsets,
+    _UTF7FromUnicodeWithOffsets,
+    _UTF7FromUnicodeWithOffsets,
+    NULL,
+
+    NULL,
+    _UTF7GetName,
+    NULL, /* we don't need writeSub() because we never call a callback at fromUnicode() */
+    NULL,
+    ucnv_getCompleteUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+static const UConverterStaticData _UTF7StaticData={
+    sizeof(UConverterStaticData),
+    "UTF-7",
+    0, /* TODO CCSID for UTF-7 */
+    UCNV_IBM, UCNV_UTF7,
+    1, 4,
+    { 0x3f, 0, 0, 0 }, 1, /* the subchar is not used */
+    FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _UTF7Data=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF7StaticData, &_UTF7Impl);
+
+/* IMAP mailbox name encoding ----------------------------------------------- */
+
+/*
+ * RFC 2060: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
+ * http://www.ietf.org/rfc/rfc2060.txt
+ *
+ * 5.1.3.  Mailbox International Naming Convention
+ *
+ * By convention, international mailbox names are specified using a
+ * modified version of the UTF-7 encoding described in [UTF-7].  The
+ * purpose of these modifications is to correct the following problems
+ * with UTF-7:
+ *
+ *    1) UTF-7 uses the "+" character for shifting; this conflicts with
+ *       the common use of "+" in mailbox names, in particular USENET
+ *       newsgroup names.
+ *
+ *    2) UTF-7's encoding is BASE64 which uses the "/" character; this
+ *       conflicts with the use of "/" as a popular hierarchy delimiter.
+ *
+ *    3) UTF-7 prohibits the unencoded usage of "\"; this conflicts with
+ *       the use of "\" as a popular hierarchy delimiter.
+ *
+ *    4) UTF-7 prohibits the unencoded usage of "~"; this conflicts with
+ *       the use of "~" in some servers as a home directory indicator.
+ *
+ *    5) UTF-7 permits multiple alternate forms to represent the same
+ *       string; in particular, printable US-ASCII chararacters can be
+ *       represented in encoded form.
+ *
+ * In modified UTF-7, printable US-ASCII characters except for "&"
+ * represent themselves; that is, characters with octet values 0x20-0x25
+ * and 0x27-0x7e.  The character "&" (0x26) is represented by the two-
+ * octet sequence "&-".
+ *
+ * All other characters (octet values 0x00-0x1f, 0x7f-0xff, and all
+ * Unicode 16-bit octets) are represented in modified BASE64, with a
+ * further modification from [UTF-7] that "," is used instead of "/".
+ * Modified BASE64 MUST NOT be used to represent any printing US-ASCII
+ * character which can represent itself.
+ *
+ * "&" is used to shift to modified BASE64 and "-" to shift back to US-
+ * ASCII.  All names start in US-ASCII, and MUST end in US-ASCII (that
+ * is, a name that ends with a Unicode 16-bit octet MUST end with a "-
+ * ").
+ *
+ * For example, here is a mailbox name which mixes English, Japanese,
+ * and Chinese text: ~peter/mail/&ZeVnLIqe-/&U,BTFw-
+ */
+
+/*
+ * Tests for US-ASCII characters belonging to character classes
+ * defined in UTF-7.
+ *
+ * Set D (directly encoded characters) consists of the following
+ * characters: the upper and lower case letters A through Z
+ * and a through z, the 10 digits 0-9, and the following nine special
+ * characters (note that "+" and "=" are omitted):
+ *     '(),-./:?
+ *
+ * Set O (optional direct characters) consists of the following
+ * characters (note that "\" and "~" are omitted):
+ *     !"#$%&*;<=>@[]^_`{|}
+ *
+ * According to the rules in RFC 2152, the byte values for the following
+ * US-ASCII characters are not used in UTF-7 and are therefore illegal:
+ * - all C0 control codes except for CR LF TAB
+ * - BACKSLASH
+ * - TILDE
+ * - DEL
+ * - all codes beyond US-ASCII, i.e. all >127
+ */
+
+/* uses '&' not '+' to start a base64 sequence */
+#define AMPERSAND 0x26
+#define COMMA 0x2c
+#define SLASH 0x2f
+
+/* legal byte values: all US-ASCII graphic characters 0x20..0x7e */
+#define isLegalIMAP(c) (0x20<=(c) && (c)<=0x7e)
+
+/* direct-encode all of printable ASCII 0x20..0x7e except '&' 0x26 */
+#define inSetDIMAP(c) (isLegalIMAP(c) && c!=AMPERSAND)
+
+#define TO_BASE64_IMAP(n) ((n)<63 ? toBase64[n] : COMMA)
+#define FROM_BASE64_IMAP(c) ((c)==COMMA ? 63 : (c)==SLASH ? -1 : fromBase64[c])
+
+/*
+ * converter status values:
+ *
+ * toUnicodeStatus:
+ *     24 inDirectMode (boolean)
+ * 23..16 base64Counter (-1..7)
+ * 15..0  bits (up to 14 bits incoming base64)
+ *
+ * fromUnicodeStatus:
+ *     24 inDirectMode (boolean)
+ * 23..16 base64Counter (0..2)
+ *  7..0  bits (6 bits outgoing base64)
+ *
+ * ignore bits 31..25
+ */
+
+static void
+_IMAPToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                          UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const uint8_t *source, *sourceLimit;
+    UChar *target;
+    const UChar *targetLimit;
+    int32_t *offsets;
+
+    uint8_t *bytes;
+    uint8_t byteIndex;
+
+    int32_t length, targetCapacity;
+
+    /* UTF-7 state */
+    uint16_t bits;
+    int8_t base64Counter;
+    UBool inDirectMode;
+
+    int8_t base64Value;
+
+    int32_t sourceIndex, nextSourceIndex;
+
+    UChar c;
+    uint8_t b;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+
+    source=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+    target=pArgs->target;
+    targetLimit=pArgs->targetLimit;
+    offsets=pArgs->offsets;
+    /* get the state machine state */
+    {
+        uint32_t status=cnv->toUnicodeStatus;
+        inDirectMode=(UBool)((status>>24)&1);
+        base64Counter=(int8_t)(status>>16);
+        bits=(uint16_t)status;
+    }
+    bytes=cnv->toUBytes;
+    byteIndex=cnv->toULength;
+
+    /* sourceIndex=-1 if the current character began in the previous buffer */
+    sourceIndex=byteIndex==0 ? 0 : -1;
+    nextSourceIndex=0;
+
+    if(inDirectMode) {
+directMode:
+        /*
+         * In Direct Mode, US-ASCII characters are encoded directly, i.e.,
+         * with their US-ASCII byte values.
+         * An ampersand starts Unicode (or "escape") Mode.
+         *
+         * In Direct Mode, only the sourceIndex is used.
+         */
+        byteIndex=0;
+        length=(int32_t)(sourceLimit-source);
+        targetCapacity=(int32_t)(targetLimit-target);
+        if(length>targetCapacity) {
+            length=targetCapacity;
+        }
+        while(length>0) {
+            b=*source++;
+            if(!isLegalIMAP(b)) {
+                /* illegal */
+                bytes[0]=b;
+                byteIndex=1;
+                *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                break;
+            } else if(b!=AMPERSAND) {
+                /* write directly encoded character */
+                *target++=b;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex++;
+                }
+            } else /* AMPERSAND */ {
+                /* switch to Unicode mode */
+                nextSourceIndex=++sourceIndex;
+                inDirectMode=FALSE;
+                byteIndex=0;
+                bits=0;
+                base64Counter=-1;
+                goto unicodeMode;
+            }
+            --length;
+        }
+        if(source<sourceLimit && target>=targetLimit) {
+            /* target is full */
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        }
+    } else {
+unicodeMode:
+        /*
+         * In Unicode (or "escape") Mode, UTF-16BE is base64-encoded.
+         * The base64 sequence ends with any character that is not in the base64 alphabet.
+         * A terminating minus sign is consumed.
+         * US-ASCII must not be base64-ed.
+         *
+         * In Unicode Mode, the sourceIndex has the index to the start of the current
+         * base64 bytes, while nextSourceIndex is precisely parallel to source,
+         * keeping the index to the following byte.
+         * Note that in 2 out of 3 cases, UChars overlap within a base64 byte.
+         */
+        while(source<sourceLimit) {
+            if(target<targetLimit) {
+                bytes[byteIndex++]=b=*source++;
+                ++nextSourceIndex;
+                if(b>0x7e) {
+                    /* illegal - test other illegal US-ASCII values by base64Value==-3 */
+                    inDirectMode=TRUE;
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    break;
+                } else if((base64Value=FROM_BASE64_IMAP(b))>=0) {
+                    /* collect base64 bytes into UChars */
+                    switch(base64Counter) {
+                    case -1: /* -1 is immediately after the & */
+                    case 0:
+                        bits=base64Value;
+                        base64Counter=1;
+                        break;
+                    case 1:
+                    case 3:
+                    case 4:
+                    case 6:
+                        bits=(uint16_t)((bits<<6)|base64Value);
+                        ++base64Counter;
+                        break;
+                    case 2:
+                        c=(UChar)((bits<<4)|(base64Value>>2));
+                        if(isLegalIMAP(c)) {
+                            /* illegal */
+                            inDirectMode=TRUE;
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                        *target++=c;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                            sourceIndex=nextSourceIndex-1;
+                        }
+                        bytes[0]=b; /* keep this byte in case an error occurs */
+                        byteIndex=1;
+                        bits=(uint16_t)(base64Value&3);
+                        base64Counter=3;
+                        break;
+                    case 5:
+                        c=(UChar)((bits<<2)|(base64Value>>4));
+                        if(isLegalIMAP(c)) {
+                            /* illegal */
+                            inDirectMode=TRUE;
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                        *target++=c;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                            sourceIndex=nextSourceIndex-1;
+                        }
+                        bytes[0]=b; /* keep this byte in case an error occurs */
+                        byteIndex=1;
+                        bits=(uint16_t)(base64Value&15);
+                        base64Counter=6;
+                        break;
+                    case 7:
+                        c=(UChar)((bits<<6)|base64Value);
+                        if(isLegalIMAP(c)) {
+                            /* illegal */
+                            inDirectMode=TRUE;
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                        *target++=c;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                            sourceIndex=nextSourceIndex;
+                        }
+                        byteIndex=0;
+                        bits=0;
+                        base64Counter=0;
+                        break;
+                    default:
+                        /* will never occur */
+                        break;
+                    }
+                } else if(base64Value==-2) {
+                    /* minus sign terminates the base64 sequence */
+                    inDirectMode=TRUE;
+                    if(base64Counter==-1) {
+                        /* &- i.e. a minus immediately following an ampersand */
+                        *target++=AMPERSAND;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex-1;
+                        }
+                    } else {
+                        /* absorb the minus and leave the Unicode Mode */
+                        if(bits!=0 || (base64Counter!=0 && base64Counter!=3 && base64Counter!=6)) {
+                            /* bits are illegally left over, a UChar is incomplete */
+                            /* base64Counter other than 0, 3, 6 means non-minimal zero-padding, also illegal */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            break;
+                        }
+                    }
+                    sourceIndex=nextSourceIndex;
+                    goto directMode;
+                } else {
+                    if(base64Counter==-1) {
+                        /* illegal: & immediately followed by something other than base64 or minus sign */
+                        /* include the ampersand in the reported sequence */
+                        --sourceIndex;
+                        bytes[0]=AMPERSAND;
+                        bytes[1]=b;
+                        byteIndex=2;
+                    }
+                    /* base64Value==-1 for characters that are illegal only in Unicode mode */
+                    /* base64Value==-3 for illegal characters */
+                    /* illegal */
+                    inDirectMode=TRUE;
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    break;
+                }
+            } else {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+        }
+    }
+endloop:
+
+    /*
+     * the end of the input stream and detection of truncated input
+     * are handled by the framework, but here we must check if we are in Unicode
+     * mode and byteIndex==0 because we must end in direct mode
+     *
+     * conditions:
+     *   successful
+     *   in Unicode mode and byteIndex==0
+     *   end of input and no truncated input
+     */
+    if( U_SUCCESS(*pErrorCode) &&
+        !inDirectMode && byteIndex==0 &&
+        pArgs->flush && source>=sourceLimit
+    ) {
+        if(base64Counter==-1) {
+            /* & at the very end of the input */
+            /* make the ampersand the reported sequence */
+            bytes[0]=AMPERSAND;
+            byteIndex=1;
+        }
+        /* else if(base64Counter!=-1) byteIndex remains 0 because there is no particular byte sequence */
+
+        inDirectMode=TRUE; /* avoid looping */
+        *pErrorCode=U_TRUNCATED_CHAR_FOUND;
+    }
+
+    /* set the converter state back into UConverter */
+    cnv->toUnicodeStatus=((uint32_t)inDirectMode<<24)|((uint32_t)((uint8_t)base64Counter)<<16)|(uint32_t)bits;
+    cnv->toULength=byteIndex;
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+    return;
+}
+
+static void
+_IMAPFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
+                            UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const UChar *source, *sourceLimit;
+    uint8_t *target, *targetLimit;
+    int32_t *offsets;
+
+    int32_t length, targetCapacity, sourceIndex;
+    UChar c;
+    uint8_t b;
+
+    /* UTF-7 state */
+    uint8_t bits;
+    int8_t base64Counter;
+    UBool inDirectMode;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+
+    /* set up the local pointers */
+    source=pArgs->source;
+    sourceLimit=pArgs->sourceLimit;
+    target=(uint8_t *)pArgs->target;
+    targetLimit=(uint8_t *)pArgs->targetLimit;
+    offsets=pArgs->offsets;
+
+    /* get the state machine state */
+    {
+        uint32_t status=cnv->fromUnicodeStatus;
+        inDirectMode=(UBool)((status>>24)&1);
+        base64Counter=(int8_t)(status>>16);
+        bits=(uint8_t)status;
+    }
+
+    /* UTF-7 always encodes UTF-16 code units, therefore we need only a simple sourceIndex */
+    sourceIndex=0;
+
+    if(inDirectMode) {
+directMode:
+        length=(int32_t)(sourceLimit-source);
+        targetCapacity=(int32_t)(targetLimit-target);
+        if(length>targetCapacity) {
+            length=targetCapacity;
+        }
+        while(length>0) {
+            c=*source++;
+            /* encode 0x20..0x7e except '&' directly */
+            if(inSetDIMAP(c)) {
+                /* encode directly */
+                *target++=(uint8_t)c;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex++;
+                }
+            } else if(c==AMPERSAND) {
+                /* output &- for & */
+                *target++=AMPERSAND;
+                if(target<targetLimit) {
+                    *target++=MINUS;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                        *offsets++=sourceIndex++;
+                    }
+                    /* realign length and targetCapacity */
+                    goto directMode;
+                } else {
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex++;
+                    }
+                    cnv->charErrorBuffer[0]=MINUS;
+                    cnv->charErrorBufferLength=1;
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                    break;
+                }
+            } else {
+                /* un-read this character and switch to Unicode Mode */
+                --source;
+                *target++=AMPERSAND;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                inDirectMode=FALSE;
+                base64Counter=0;
+                goto unicodeMode;
+            }
+            --length;
+        }
+        if(source<sourceLimit && target>=targetLimit) {
+            /* target is full */
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        }
+    } else {
+unicodeMode:
+        while(source<sourceLimit) {
+            if(target<targetLimit) {
+                c=*source++;
+                if(isLegalIMAP(c)) {
+                    /* encode directly */
+                    inDirectMode=TRUE;
+
+                    /* trick: back out this character to make this easier */
+                    --source;
+
+                    /* terminate the base64 sequence */
+                    if(base64Counter!=0) {
+                        /* write remaining bits for the previous character */
+                        *target++=TO_BASE64_IMAP(bits);
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex-1;
+                        }
+                    }
+                    /* need to terminate with a minus */
+                    if(target<targetLimit) {
+                        *target++=MINUS;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex-1;
+                        }
+                    } else {
+                        cnv->charErrorBuffer[0]=MINUS;
+                        cnv->charErrorBufferLength=1;
+                        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        break;
+                    }
+                    goto directMode;
+                } else {
+                    /*
+                     * base64 this character:
+                     * Output 2 or 3 base64 bytes for the remaining bits of the previous character
+                     * and the bits of this character, each implicitly in UTF-16BE.
+                     *
+                     * Here, bits is an 8-bit variable because only 6 bits need to be kept from one
+                     * character to the next. The actual 2 or 4 bits are shifted to the left edge
+                     * of the 6-bits field 5..0 to make the termination of the base64 sequence easier.
+                     */
+                    switch(base64Counter) {
+                    case 0:
+                        b=(uint8_t)(c>>10);
+                        *target++=TO_BASE64_IMAP(b);
+                        if(target<targetLimit) {
+                            b=(uint8_t)((c>>4)&0x3f);
+                            *target++=TO_BASE64_IMAP(b);
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex;
+                                *offsets++=sourceIndex++;
+                            }
+                        } else {
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex++;
+                            }
+                            b=(uint8_t)((c>>4)&0x3f);
+                            cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
+                            cnv->charErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        }
+                        bits=(uint8_t)((c&15)<<2);
+                        base64Counter=1;
+                        break;
+                    case 1:
+                        b=(uint8_t)(bits|(c>>14));
+                        *target++=TO_BASE64_IMAP(b);
+                        if(target<targetLimit) {
+                            b=(uint8_t)((c>>8)&0x3f);
+                            *target++=TO_BASE64_IMAP(b);
+                            if(target<targetLimit) {
+                                b=(uint8_t)((c>>2)&0x3f);
+                                *target++=TO_BASE64_IMAP(b);
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                            } else {
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                                b=(uint8_t)((c>>2)&0x3f);
+                                cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
+                                cnv->charErrorBufferLength=1;
+                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            }
+                        } else {
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex++;
+                            }
+                            b=(uint8_t)((c>>8)&0x3f);
+                            cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
+                            b=(uint8_t)((c>>2)&0x3f);
+                            cnv->charErrorBuffer[1]=TO_BASE64_IMAP(b);
+                            cnv->charErrorBufferLength=2;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        }
+                        bits=(uint8_t)((c&3)<<4);
+                        base64Counter=2;
+                        break;
+                    case 2:
+                        b=(uint8_t)(bits|(c>>12));
+                        *target++=TO_BASE64_IMAP(b);
+                        if(target<targetLimit) {
+                            b=(uint8_t)((c>>6)&0x3f);
+                            *target++=TO_BASE64_IMAP(b);
+                            if(target<targetLimit) {
+                                b=(uint8_t)(c&0x3f);
+                                *target++=TO_BASE64_IMAP(b);
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                            } else {
+                                if(offsets!=NULL) {
+                                    *offsets++=sourceIndex;
+                                    *offsets++=sourceIndex++;
+                                }
+                                b=(uint8_t)(c&0x3f);
+                                cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
+                                cnv->charErrorBufferLength=1;
+                                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            }
+                        } else {
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex++;
+                            }
+                            b=(uint8_t)((c>>6)&0x3f);
+                            cnv->charErrorBuffer[0]=TO_BASE64_IMAP(b);
+                            b=(uint8_t)(c&0x3f);
+                            cnv->charErrorBuffer[1]=TO_BASE64_IMAP(b);
+                            cnv->charErrorBufferLength=2;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                        }
+                        bits=0;
+                        base64Counter=0;
+                        break;
+                    default:
+                        /* will never occur */
+                        break;
+                    }
+                }
+            } else {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+        }
+    }
+
+    if(pArgs->flush && source>=sourceLimit) {
+        /* flush remaining bits to the target */
+        if(!inDirectMode) {
+            if(base64Counter!=0) {
+                if(target<targetLimit) {
+                    *target++=TO_BASE64_IMAP(bits);
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex-1;
+                    }
+                } else {
+                    cnv->charErrorBuffer[cnv->charErrorBufferLength++]=TO_BASE64_IMAP(bits);
+                    *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                }
+            }
+            /* need to terminate with a minus */
+            if(target<targetLimit) {
+                *target++=MINUS;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex-1;
+                }
+            } else {
+                cnv->charErrorBuffer[cnv->charErrorBufferLength++]=MINUS;
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+        /* reset the state for the next conversion */
+        cnv->fromUnicodeStatus=(cnv->fromUnicodeStatus&0xf0000000)|0x1000000; /* keep version, inDirectMode=TRUE */
+    } else {
+        /* set the converter state back into UConverter */
+        cnv->fromUnicodeStatus=
+            (cnv->fromUnicodeStatus&0xf0000000)|    /* keep version*/
+            ((uint32_t)inDirectMode<<24)|((uint32_t)base64Counter<<16)|(uint32_t)bits;
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=(char *)target;
+    pArgs->offsets=offsets;
+    return;
+}
+
+static const UConverterImpl _IMAPImpl={
+    UCNV_IMAP_MAILBOX,
+
+    NULL,
+    NULL,
+
+    _UTF7Open,
+    NULL,
+    _UTF7Reset,
+
+    _IMAPToUnicodeWithOffsets,
+    _IMAPToUnicodeWithOffsets,
+    _IMAPFromUnicodeWithOffsets,
+    _IMAPFromUnicodeWithOffsets,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL, /* we don't need writeSub() because we never call a callback at fromUnicode() */
+    NULL,
+    ucnv_getCompleteUnicodeSet
+};
+
+static const UConverterStaticData _IMAPStaticData={
+    sizeof(UConverterStaticData),
+    "IMAP-mailbox-name",
+    0, /* TODO CCSID for IMAP-mailbox-name */
+    UCNV_IBM, UCNV_IMAP_MAILBOX,
+    1, 4,
+    { 0x3f, 0, 0, 0 }, 1, /* the subchar is not used */
+    FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _IMAPData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_IMAPStaticData, &_IMAPImpl);
+
+#endif
diff --git a/source/common/ucnv_u8.c b/source/common/ucnv_u8.c
new file mode 100644 (file)
index 0000000..0258347
--- /dev/null
@@ -0,0 +1,1098 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+**********************************************************************
+*   Copyright (C) 2002-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnv_u8.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2002jul01
+*   created by: Markus W. Scherer
+*
+*   UTF-8 converter implementation. Used to be in ucnv_utf.c.
+*
+*   Also, CESU-8 implementation, see UTR 26.
+*   The CESU-8 converter uses all the same functions as the
+*   UTF-8 converter, with a branch for converting supplementary code points.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "unicode/utf.h"
+#include "unicode/utf8.h"
+#include "unicode/utf16.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "cmemory.h"
+
+/* Prototypes --------------------------------------------------------------- */
+
+/* Keep these here to make finicky compilers happy */
+
+U_CFUNC void ucnv_fromUnicode_UTF8(UConverterFromUnicodeArgs *args,
+                                           UErrorCode *err);
+U_CFUNC void ucnv_fromUnicode_UTF8_OFFSETS_LOGIC(UConverterFromUnicodeArgs *args,
+                                                        UErrorCode *err);
+
+
+/* UTF-8 -------------------------------------------------------------------- */
+
+/* UTF-8 Conversion DATA
+ *   for more information see Unicode Standard 2.0, Transformation Formats Appendix A-9
+ */
+/*static const uint32_t REPLACEMENT_CHARACTER = 0x0000FFFD;*/
+#define MAXIMUM_UCS2            0x0000FFFF
+#define MAXIMUM_UTF             0x0010FFFF
+#define MAXIMUM_UCS4            0x7FFFFFFF
+#define HALF_SHIFT              10
+#define HALF_BASE               0x0010000
+#define HALF_MASK               0x3FF
+#define SURROGATE_HIGH_START    0xD800
+#define SURROGATE_HIGH_END      0xDBFF
+#define SURROGATE_LOW_START     0xDC00
+#define SURROGATE_LOW_END       0xDFFF
+
+/* -SURROGATE_LOW_START + HALF_BASE */
+#define SURROGATE_LOW_BASE      9216
+
+static const uint32_t offsetsFromUTF8[7] = {0,
+  (uint32_t) 0x00000000, (uint32_t) 0x00003080, (uint32_t) 0x000E2080,
+  (uint32_t) 0x03C82080, (uint32_t) 0xFA082080, (uint32_t) 0x82082080
+};
+
+/* END OF UTF-8 Conversion DATA */
+
+static const int8_t bytesFromUTF8[256] = {
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
+};
+
+/*
+ * Starting with Unicode 3.0.1:
+ * UTF-8 byte sequences of length N _must_ encode code points of or above utf8_minChar32[N];
+ * byte sequences with more than 4 bytes are illegal in UTF-8,
+ * which is tested with impossible values for them
+ */
+static const uint32_t
+utf8_minChar32[7]={ 0, 0, 0x80, 0x800, 0x10000, 0xffffffff, 0xffffffff };
+
+static UBool hasCESU8Data(const UConverter *cnv)
+{
+#if UCONFIG_ONLY_HTML_CONVERSION
+    return FALSE;
+#else
+    return (UBool)(cnv->sharedData == &_CESU8Data);
+#endif
+}
+
+static void ucnv_toUnicode_UTF8 (UConverterToUnicodeArgs * args,
+                                  UErrorCode * err)
+{
+    UConverter *cnv = args->converter;
+    const unsigned char *mySource = (unsigned char *) args->source;
+    UChar *myTarget = args->target;
+    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
+    const UChar *targetLimit = args->targetLimit;
+    unsigned char *toUBytes = cnv->toUBytes;
+    UBool isCESU8 = hasCESU8Data(cnv);
+    uint32_t ch, ch2 = 0;
+    int32_t i, inBytes;
+
+    /* Restore size of current sequence */
+    if (cnv->toUnicodeStatus && myTarget < targetLimit)
+    {
+        inBytes = cnv->mode;            /* restore # of bytes to consume */
+        i = cnv->toULength;             /* restore # of bytes consumed */
+        cnv->toULength = 0;
+
+        ch = cnv->toUnicodeStatus;/*Stores the previously calculated ch from a previous call*/
+        cnv->toUnicodeStatus = 0;
+        goto morebytes;
+    }
+
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        ch = *(mySource++);
+        if (ch < 0x80)        /* Simple case */
+        {
+            *(myTarget++) = (UChar) ch;
+        }
+        else
+        {
+            /* store the first char */
+            toUBytes[0] = (char)ch;
+            inBytes = bytesFromUTF8[ch]; /* lookup current sequence length */
+            i = 1;
+
+morebytes:
+            while (i < inBytes)
+            {
+                if (mySource < sourceLimit)
+                {
+                    toUBytes[i] = (char) (ch2 = *mySource);
+                    if (!U8_IS_TRAIL(ch2))
+                    {
+                        break; /* i < inBytes */
+                    }
+                    ch = (ch << 6) + ch2;
+                    ++mySource;
+                    i++;
+                }
+                else
+                {
+                    /* stores a partially calculated target*/
+                    cnv->toUnicodeStatus = ch;
+                    cnv->mode = inBytes;
+                    cnv->toULength = (int8_t) i;
+                    goto donefornow;
+                }
+            }
+
+            /* Remove the accumulated high bits */
+            ch -= offsetsFromUTF8[inBytes];
+
+            /*
+             * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
+             * - use only trail bytes after a lead byte (checked above)
+             * - use the right number of trail bytes for a given lead byte
+             * - encode a code point <= U+10ffff
+             * - use the fewest possible number of bytes for their code points
+             * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
+             *
+             * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
+             * There are no irregular sequences any more.
+             * In CESU-8, only surrogates, not supplementary code points, are encoded directly.
+             */
+            if (i == inBytes && ch <= MAXIMUM_UTF && ch >= utf8_minChar32[i] &&
+                (isCESU8 ? i <= 3 : !U_IS_SURROGATE(ch)))
+            {
+                /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
+                if (ch <= MAXIMUM_UCS2) 
+                {
+                    /* fits in 16 bits */
+                    *(myTarget++) = (UChar) ch;
+                }
+                else
+                {
+                    /* write out the surrogates */
+                    ch -= HALF_BASE;
+                    *(myTarget++) = (UChar) ((ch >> HALF_SHIFT) + SURROGATE_HIGH_START);
+                    ch = (ch & HALF_MASK) + SURROGATE_LOW_START;
+                    if (myTarget < targetLimit)
+                    {
+                        *(myTarget++) = (UChar)ch;
+                    }
+                    else
+                    {
+                        /* Put in overflow buffer (not handled here) */
+                        cnv->UCharErrorBuffer[0] = (UChar) ch;
+                        cnv->UCharErrorBufferLength = 1;
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                        break;
+                    }
+                }
+            }
+            else
+            {
+                cnv->toULength = (int8_t)i;
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+    }
+
+donefornow:
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        /* End of target buffer */
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = myTarget;
+    args->source = (const char *) mySource;
+}
+
+static void ucnv_toUnicode_UTF8_OFFSETS_LOGIC (UConverterToUnicodeArgs * args,
+                                                UErrorCode * err)
+{
+    UConverter *cnv = args->converter;
+    const unsigned char *mySource = (unsigned char *) args->source;
+    UChar *myTarget = args->target;
+    int32_t *myOffsets = args->offsets;
+    int32_t offsetNum = 0;
+    const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
+    const UChar *targetLimit = args->targetLimit;
+    unsigned char *toUBytes = cnv->toUBytes;
+    UBool isCESU8 = hasCESU8Data(cnv);
+    uint32_t ch, ch2 = 0;
+    int32_t i, inBytes;
+
+    /* Restore size of current sequence */
+    if (cnv->toUnicodeStatus && myTarget < targetLimit)
+    {
+        inBytes = cnv->mode;            /* restore # of bytes to consume */
+        i = cnv->toULength;             /* restore # of bytes consumed */
+        cnv->toULength = 0;
+
+        ch = cnv->toUnicodeStatus;/*Stores the previously calculated ch from a previous call*/
+        cnv->toUnicodeStatus = 0;
+        goto morebytes;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        ch = *(mySource++);
+        if (ch < 0x80)        /* Simple case */
+        {
+            *(myTarget++) = (UChar) ch;
+            *(myOffsets++) = offsetNum++;
+        }
+        else
+        {
+            toUBytes[0] = (char)ch;
+            inBytes = bytesFromUTF8[ch];
+            i = 1;
+
+morebytes:
+            while (i < inBytes)
+            {
+                if (mySource < sourceLimit)
+                {
+                    toUBytes[i] = (char) (ch2 = *mySource);
+                    if (!U8_IS_TRAIL(ch2))
+                    {
+                        break; /* i < inBytes */
+                    }
+                    ch = (ch << 6) + ch2;
+                    ++mySource;
+                    i++;
+                }
+                else
+                {
+                    cnv->toUnicodeStatus = ch;
+                    cnv->mode = inBytes;
+                    cnv->toULength = (int8_t)i;
+                    goto donefornow;
+                }
+            }
+
+            /* Remove the accumulated high bits */
+            ch -= offsetsFromUTF8[inBytes];
+
+            /*
+             * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
+             * - use only trail bytes after a lead byte (checked above)
+             * - use the right number of trail bytes for a given lead byte
+             * - encode a code point <= U+10ffff
+             * - use the fewest possible number of bytes for their code points
+             * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
+             *
+             * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
+             * There are no irregular sequences any more.
+             * In CESU-8, only surrogates, not supplementary code points, are encoded directly.
+             */
+            if (i == inBytes && ch <= MAXIMUM_UTF && ch >= utf8_minChar32[i] &&
+                (isCESU8 ? i <= 3 : !U_IS_SURROGATE(ch)))
+            {
+                /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
+                if (ch <= MAXIMUM_UCS2) 
+                {
+                    /* fits in 16 bits */
+                    *(myTarget++) = (UChar) ch;
+                    *(myOffsets++) = offsetNum;
+                }
+                else
+                {
+                    /* write out the surrogates */
+                    ch -= HALF_BASE;
+                    *(myTarget++) = (UChar) ((ch >> HALF_SHIFT) + SURROGATE_HIGH_START);
+                    *(myOffsets++) = offsetNum;
+                    ch = (ch & HALF_MASK) + SURROGATE_LOW_START;
+                    if (myTarget < targetLimit)
+                    {
+                        *(myTarget++) = (UChar)ch;
+                        *(myOffsets++) = offsetNum;
+                    }
+                    else
+                    {
+                        cnv->UCharErrorBuffer[0] = (UChar) ch;
+                        cnv->UCharErrorBufferLength = 1;
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                    }
+                }
+                offsetNum += i;
+            }
+            else
+            {
+                cnv->toULength = (int8_t)i;
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+    }
+
+donefornow:
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {   /* End of target buffer */
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = myTarget;
+    args->source = (const char *) mySource;
+    args->offsets = myOffsets;
+}
+
+U_CFUNC void ucnv_fromUnicode_UTF8 (UConverterFromUnicodeArgs * args,
+                                    UErrorCode * err)
+{
+    UConverter *cnv = args->converter;
+    const UChar *mySource = args->source;
+    const UChar *sourceLimit = args->sourceLimit;
+    uint8_t *myTarget = (uint8_t *) args->target;
+    const uint8_t *targetLimit = (uint8_t *) args->targetLimit;
+    uint8_t *tempPtr;
+    UChar32 ch;
+    uint8_t tempBuf[4];
+    int32_t indexToWrite;
+    UBool isNotCESU8 = !hasCESU8Data(cnv);
+
+    if (cnv->fromUChar32 && myTarget < targetLimit)
+    {
+        ch = cnv->fromUChar32;
+        cnv->fromUChar32 = 0;
+        goto lowsurrogate;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        ch = *(mySource++);
+
+        if (ch < 0x80)        /* Single byte */
+        {
+            *(myTarget++) = (uint8_t) ch;
+        }
+        else if (ch < 0x800)  /* Double byte */
+        {
+            *(myTarget++) = (uint8_t) ((ch >> 6) | 0xc0);
+            if (myTarget < targetLimit)
+            {
+                *(myTarget++) = (uint8_t) ((ch & 0x3f) | 0x80);
+            }
+            else
+            {
+                cnv->charErrorBuffer[0] = (uint8_t) ((ch & 0x3f) | 0x80);
+                cnv->charErrorBufferLength = 1;
+                *err = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+        else {
+            /* Check for surrogates */
+            if(U16_IS_SURROGATE(ch) && isNotCESU8) {
+lowsurrogate:
+                if (mySource < sourceLimit) {
+                    /* test both code units */
+                    if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(*mySource)) {
+                        /* convert and consume this supplementary code point */
+                        ch=U16_GET_SUPPLEMENTARY(ch, *mySource);
+                        ++mySource;
+                        /* exit this condition tree */
+                    }
+                    else {
+                        /* this is an unpaired trail or lead code unit */
+                        /* callback(illegal) */
+                        cnv->fromUChar32 = ch;
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                }
+                else {
+                    /* no more input */
+                    cnv->fromUChar32 = ch;
+                    break;
+                }
+            }
+
+            /* Do we write the buffer directly for speed,
+            or do we have to be careful about target buffer space? */
+            tempPtr = (((targetLimit - myTarget) >= 4) ? myTarget : tempBuf);
+
+            if (ch <= MAXIMUM_UCS2) {
+                indexToWrite = 2;
+                tempPtr[0] = (uint8_t) ((ch >> 12) | 0xe0);
+            }
+            else {
+                indexToWrite = 3;
+                tempPtr[0] = (uint8_t) ((ch >> 18) | 0xf0);
+                tempPtr[1] = (uint8_t) (((ch >> 12) & 0x3f) | 0x80);
+            }
+            tempPtr[indexToWrite-1] = (uint8_t) (((ch >> 6) & 0x3f) | 0x80);
+            tempPtr[indexToWrite] = (uint8_t) ((ch & 0x3f) | 0x80);
+
+            if (tempPtr == myTarget) {
+                /* There was enough space to write the codepoint directly. */
+                myTarget += (indexToWrite + 1);
+            }
+            else {
+                /* We might run out of room soon. Write it slowly. */
+                for (; tempPtr <= (tempBuf + indexToWrite); tempPtr++) {
+                    if (myTarget < targetLimit) {
+                        *(myTarget++) = *tempPtr;
+                    }
+                    else {
+                        cnv->charErrorBuffer[cnv->charErrorBufferLength++] = *tempPtr;
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                    }
+                }
+            }
+        }
+    }
+
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = (char *) myTarget;
+    args->source = mySource;
+}
+
+U_CFUNC void ucnv_fromUnicode_UTF8_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
+                                                  UErrorCode * err)
+{
+    UConverter *cnv = args->converter;
+    const UChar *mySource = args->source;
+    int32_t *myOffsets = args->offsets;
+    const UChar *sourceLimit = args->sourceLimit;
+    uint8_t *myTarget = (uint8_t *) args->target;
+    const uint8_t *targetLimit = (uint8_t *) args->targetLimit;
+    uint8_t *tempPtr;
+    UChar32 ch;
+    int32_t offsetNum, nextSourceIndex;
+    int32_t indexToWrite;
+    uint8_t tempBuf[4];
+    UBool isNotCESU8 = !hasCESU8Data(cnv);
+
+    if (cnv->fromUChar32 && myTarget < targetLimit)
+    {
+        ch = cnv->fromUChar32;
+        cnv->fromUChar32 = 0;
+        offsetNum = -1;
+        nextSourceIndex = 0;
+        goto lowsurrogate;
+    } else {
+        offsetNum = 0;
+    }
+
+    while (mySource < sourceLimit && myTarget < targetLimit)
+    {
+        ch = *(mySource++);
+
+        if (ch < 0x80)        /* Single byte */
+        {
+            *(myOffsets++) = offsetNum++;
+            *(myTarget++) = (char) ch;
+        }
+        else if (ch < 0x800)  /* Double byte */
+        {
+            *(myOffsets++) = offsetNum;
+            *(myTarget++) = (uint8_t) ((ch >> 6) | 0xc0);
+            if (myTarget < targetLimit)
+            {
+                *(myOffsets++) = offsetNum++;
+                *(myTarget++) = (uint8_t) ((ch & 0x3f) | 0x80);
+            }
+            else
+            {
+                cnv->charErrorBuffer[0] = (uint8_t) ((ch & 0x3f) | 0x80);
+                cnv->charErrorBufferLength = 1;
+                *err = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+        else
+        /* Check for surrogates */
+        {
+            nextSourceIndex = offsetNum + 1;
+
+            if(U16_IS_SURROGATE(ch) && isNotCESU8) {
+lowsurrogate:
+                if (mySource < sourceLimit) {
+                    /* test both code units */
+                    if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(*mySource)) {
+                        /* convert and consume this supplementary code point */
+                        ch=U16_GET_SUPPLEMENTARY(ch, *mySource);
+                        ++mySource;
+                        ++nextSourceIndex;
+                        /* exit this condition tree */
+                    }
+                    else {
+                        /* this is an unpaired trail or lead code unit */
+                        /* callback(illegal) */
+                        cnv->fromUChar32 = ch;
+                        *err = U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                }
+                else {
+                    /* no more input */
+                    cnv->fromUChar32 = ch;
+                    break;
+                }
+            }
+
+            /* Do we write the buffer directly for speed,
+            or do we have to be careful about target buffer space? */
+            tempPtr = (((targetLimit - myTarget) >= 4) ? myTarget : tempBuf);
+
+            if (ch <= MAXIMUM_UCS2) {
+                indexToWrite = 2;
+                tempPtr[0] = (uint8_t) ((ch >> 12) | 0xe0);
+            }
+            else {
+                indexToWrite = 3;
+                tempPtr[0] = (uint8_t) ((ch >> 18) | 0xf0);
+                tempPtr[1] = (uint8_t) (((ch >> 12) & 0x3f) | 0x80);
+            }
+            tempPtr[indexToWrite-1] = (uint8_t) (((ch >> 6) & 0x3f) | 0x80);
+            tempPtr[indexToWrite] = (uint8_t) ((ch & 0x3f) | 0x80);
+
+            if (tempPtr == myTarget) {
+                /* There was enough space to write the codepoint directly. */
+                myTarget += (indexToWrite + 1);
+                myOffsets[0] = offsetNum;
+                myOffsets[1] = offsetNum;
+                myOffsets[2] = offsetNum;
+                if (indexToWrite >= 3) {
+                    myOffsets[3] = offsetNum;
+                }
+                myOffsets += (indexToWrite + 1);
+            }
+            else {
+                /* We might run out of room soon. Write it slowly. */
+                for (; tempPtr <= (tempBuf + indexToWrite); tempPtr++) {
+                    if (myTarget < targetLimit)
+                    {
+                        *(myOffsets++) = offsetNum;
+                        *(myTarget++) = *tempPtr;
+                    }
+                    else
+                    {
+                        cnv->charErrorBuffer[cnv->charErrorBufferLength++] = *tempPtr;
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                    }
+                }
+            }
+            offsetNum = nextSourceIndex;
+        }
+    }
+
+    if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
+    {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    args->target = (char *) myTarget;
+    args->source = mySource;
+    args->offsets = myOffsets;
+}
+
+static UChar32 ucnv_getNextUChar_UTF8(UConverterToUnicodeArgs *args,
+                                               UErrorCode *err) {
+    UConverter *cnv;
+    const uint8_t *sourceInitial;
+    const uint8_t *source;
+    uint16_t extraBytesToWrite;
+    uint8_t myByte;
+    UChar32 ch;
+    int8_t i, isLegalSequence;
+
+    /* UTF-8 only here, the framework handles CESU-8 to combine surrogate pairs */
+
+    cnv = args->converter;
+    sourceInitial = source = (const uint8_t *)args->source;
+    if (source >= (const uint8_t *)args->sourceLimit)
+    {
+        /* no input */
+        *err = U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0xffff;
+    }
+
+    myByte = (uint8_t)*(source++);
+    if (myByte < 0x80)
+    {
+        args->source = (const char *)source;
+        return (UChar32)myByte;
+    }
+
+    extraBytesToWrite = (uint16_t)bytesFromUTF8[myByte];
+    if (extraBytesToWrite == 0) {
+        cnv->toUBytes[0] = myByte;
+        cnv->toULength = 1;
+        *err = U_ILLEGAL_CHAR_FOUND;
+        args->source = (const char *)source;
+        return 0xffff;
+    }
+
+    /*The byte sequence is longer than the buffer area passed*/
+    if (((const char *)source + extraBytesToWrite - 1) > args->sourceLimit)
+    {
+        /* check if all of the remaining bytes are trail bytes */
+        cnv->toUBytes[0] = myByte;
+        i = 1;
+        *err = U_TRUNCATED_CHAR_FOUND;
+        while(source < (const uint8_t *)args->sourceLimit) {
+            if(U8_IS_TRAIL(myByte = *source)) {
+                cnv->toUBytes[i++] = myByte;
+                ++source;
+            } else {
+                /* error even before we run out of input */
+                *err = U_ILLEGAL_CHAR_FOUND;
+                break;
+            }
+        }
+        cnv->toULength = i;
+        args->source = (const char *)source;
+        return 0xffff;
+    }
+
+    isLegalSequence = 1;
+    ch = myByte << 6;
+    switch(extraBytesToWrite)
+    {     
+      /* note: code falls through cases! (sic)*/ 
+    case 6:
+        ch += (myByte = *source);
+        ch <<= 6;
+        if (!U8_IS_TRAIL(myByte))
+        {
+            isLegalSequence = 0;
+            break;
+        }
+        ++source;
+        U_FALLTHROUGH;
+    case 5:
+        ch += (myByte = *source);
+        ch <<= 6;
+        if (!U8_IS_TRAIL(myByte))
+        {
+            isLegalSequence = 0;
+            break;
+        }
+        ++source;
+        U_FALLTHROUGH;
+    case 4:
+        ch += (myByte = *source);
+        ch <<= 6;
+        if (!U8_IS_TRAIL(myByte))
+        {
+            isLegalSequence = 0;
+            break;
+        }
+        ++source;
+        U_FALLTHROUGH;
+    case 3:
+        ch += (myByte = *source);
+        ch <<= 6;
+        if (!U8_IS_TRAIL(myByte))
+        {
+            isLegalSequence = 0;
+            break;
+        }
+        ++source;
+        U_FALLTHROUGH;
+    case 2:
+        ch += (myByte = *source);
+        if (!U8_IS_TRAIL(myByte))
+        {
+            isLegalSequence = 0;
+            break;
+        }
+        ++source;
+    };
+    ch -= offsetsFromUTF8[extraBytesToWrite];
+    args->source = (const char *)source;
+
+    /*
+     * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
+     * - use only trail bytes after a lead byte (checked above)
+     * - use the right number of trail bytes for a given lead byte
+     * - encode a code point <= U+10ffff
+     * - use the fewest possible number of bytes for their code points
+     * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
+     *
+     * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
+     * There are no irregular sequences any more.
+     */
+    if (isLegalSequence &&
+        (uint32_t)ch <= MAXIMUM_UTF &&
+        (uint32_t)ch >= utf8_minChar32[extraBytesToWrite] &&
+        !U_IS_SURROGATE(ch)
+    ) {
+        return ch; /* return the code point */
+    }
+
+    for(i = 0; sourceInitial < source; ++i) {
+        cnv->toUBytes[i] = *sourceInitial++;
+    }
+    cnv->toULength = i;
+    *err = U_ILLEGAL_CHAR_FOUND;
+    return 0xffff;
+} 
+
+/* UTF-8-from-UTF-8 conversion functions ------------------------------------ */
+
+/* minimum code point values for n-byte UTF-8 sequences, n=0..4 */
+static const UChar32
+utf8_minLegal[5]={ 0, 0, 0x80, 0x800, 0x10000 };
+
+/* offsets for n-byte UTF-8 sequences that were calculated with ((lead<<6)+trail)<<6+trail... */
+static const UChar32
+utf8_offsets[7]={ 0, 0, 0x3080, 0xE2080, 0x3C82080 };
+
+/* "Convert" UTF-8 to UTF-8: Validate and copy. Modified from ucnv_DBCSFromUTF8(). */
+static void
+ucnv_UTF8FromUTF8(UConverterFromUnicodeArgs *pFromUArgs,
+                  UConverterToUnicodeArgs *pToUArgs,
+                  UErrorCode *pErrorCode) {
+    UConverter *utf8;
+    const uint8_t *source, *sourceLimit;
+    uint8_t *target;
+    int32_t targetCapacity;
+    int32_t count;
+
+    int8_t oldToULength, toULength, toULimit;
+
+    UChar32 c;
+    uint8_t b, t1, t2;
+
+    /* set up the local pointers */
+    utf8=pToUArgs->converter;
+    source=(uint8_t *)pToUArgs->source;
+    sourceLimit=(uint8_t *)pToUArgs->sourceLimit;
+    target=(uint8_t *)pFromUArgs->target;
+    targetCapacity=(int32_t)(pFromUArgs->targetLimit-pFromUArgs->target);
+
+    /* get the converter state from the UTF-8 UConverter */
+    c=(UChar32)utf8->toUnicodeStatus;
+    if(c!=0) {
+        toULength=oldToULength=utf8->toULength;
+        toULimit=(int8_t)utf8->mode;
+    } else {
+        toULength=oldToULength=toULimit=0;
+    }
+
+    count=(int32_t)(sourceLimit-source)+oldToULength;
+    if(count<toULimit) {
+        /*
+         * Not enough input to complete the partial character.
+         * Jump to moreBytes below - it will not output to target.
+         */
+    } else if(targetCapacity<toULimit) {
+        /*
+         * Not enough target capacity to output the partial character.
+         * Let the standard converter handle this.
+         */
+        *pErrorCode=U_USING_DEFAULT_WARNING;
+        return;
+    } else {
+        /*
+         * Use a single counter for source and target, counting the minimum of
+         * the source length and the target capacity.
+         * As a result, the source length is checked only once per multi-byte
+         * character instead of twice.
+         *
+         * Make sure that the last byte sequence is complete, or else
+         * stop just before it.
+         * (The longest legal byte sequence has 3 trail bytes.)
+         * Count oldToULength (number of source bytes from a previous buffer)
+         * into the source length but reduce the source index by toULimit
+         * while going back over trail bytes in order to not go back into
+         * the bytes that will be read for finishing a partial
+         * sequence from the previous buffer.
+         * Let the standard converter handle edge cases.
+         */
+        int32_t i;
+
+        if(count>targetCapacity) {
+            count=targetCapacity;
+        }
+
+        i=0;
+        while(i<3 && i<(count-toULimit)) {
+            b=source[count-oldToULength-i-1];
+            if(U8_IS_TRAIL(b)) {
+                ++i;
+            } else {
+                if(i<U8_COUNT_TRAIL_BYTES(b)) {
+                    /* stop converting before the lead byte if there are not enough trail bytes for it */
+                    count-=i+1;
+                }
+                break;
+            }
+        }
+    }
+
+    if(c!=0) {
+        utf8->toUnicodeStatus=0;
+        utf8->toULength=0;
+        goto moreBytes;
+        /* See note in ucnv_SBCSFromUTF8() about this goto. */
+    }
+
+    /* conversion loop */
+    while(count>0) {
+        b=*source++;
+        if((int8_t)b>=0) {
+            /* convert ASCII */
+            *target++=b;
+            --count;
+            continue;
+        } else {
+            if(b>0xe0) {
+                if( /* handle U+1000..U+D7FF inline */
+                    (t1=source[0]) >= 0x80 && ((b<0xed && (t1 <= 0xbf)) ||
+                                               (b==0xed && (t1 <= 0x9f))) &&
+                    (t2=source[1]) >= 0x80 && t2 <= 0xbf
+                ) {
+                    source+=2;
+                    *target++=b;
+                    *target++=t1;
+                    *target++=t2;
+                    count-=3;
+                    continue;
+                }
+            } else if(b<0xe0) {
+                if( /* handle U+0080..U+07FF inline */
+                    b>=0xc2 &&
+                    (t1=*source) >= 0x80 && t1 <= 0xbf
+                ) {
+                    ++source;
+                    *target++=b;
+                    *target++=t1;
+                    count-=2;
+                    continue;
+                }
+            } else if(b==0xe0) {
+                if( /* handle U+0800..U+0FFF inline */
+                    (t1=source[0]) >= 0xa0 && t1 <= 0xbf &&
+                    (t2=source[1]) >= 0x80 && t2 <= 0xbf
+                ) {
+                    source+=2;
+                    *target++=b;
+                    *target++=t1;
+                    *target++=t2;
+                    count-=3;
+                    continue;
+                }
+            }
+
+            /* handle "complicated" and error cases, and continuing partial characters */
+            oldToULength=0;
+            toULength=1;
+            toULimit=U8_COUNT_TRAIL_BYTES(b)+1;
+            c=b;
+moreBytes:
+            while(toULength<toULimit) {
+                if(source<sourceLimit) {
+                    b=*source;
+                    if(U8_IS_TRAIL(b)) {
+                        ++source;
+                        ++toULength;
+                        c=(c<<6)+b;
+                    } else {
+                        break; /* sequence too short, stop with toULength<toULimit */
+                    }
+                } else {
+                    /* store the partial UTF-8 character, compatible with the regular UTF-8 converter */
+                    source-=(toULength-oldToULength);
+                    while(oldToULength<toULength) {
+                        utf8->toUBytes[oldToULength++]=*source++;
+                    }
+                    utf8->toUnicodeStatus=c;
+                    utf8->toULength=toULength;
+                    utf8->mode=toULimit;
+                    pToUArgs->source=(char *)source;
+                    pFromUArgs->target=(char *)target;
+                    return;
+                }
+            }
+
+            if( toULength==toULimit &&      /* consumed all trail bytes */
+                (toULength==3 || toULength==2) &&             /* BMP */
+                (c-=utf8_offsets[toULength])>=utf8_minLegal[toULength] &&
+                (c<=0xd7ff || 0xe000<=c)    /* not a surrogate */
+            ) {
+                /* legal byte sequence for BMP code point */
+            } else if(
+                toULength==toULimit && toULength==4 &&
+                (0x10000<=(c-=utf8_offsets[4]) && c<=0x10ffff)
+            ) {
+                /* legal byte sequence for supplementary code point */
+            } else {
+                /* error handling: illegal UTF-8 byte sequence */
+                source-=(toULength-oldToULength);
+                while(oldToULength<toULength) {
+                    utf8->toUBytes[oldToULength++]=*source++;
+                }
+                utf8->toULength=toULength;
+                pToUArgs->source=(char *)source;
+                pFromUArgs->target=(char *)target;
+                *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                return;
+            }
+
+            /* copy the legal byte sequence to the target */
+            {
+                int8_t i;
+
+                for(i=0; i<oldToULength; ++i) {
+                    *target++=utf8->toUBytes[i];
+                }
+                source-=(toULength-oldToULength);
+                for(; i<toULength; ++i) {
+                    *target++=*source++;
+                }
+                count-=toULength;
+            }
+        }
+    }
+
+    if(U_SUCCESS(*pErrorCode) && source<sourceLimit) {
+        if(target==(const uint8_t *)pFromUArgs->targetLimit) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        } else {
+            b=*source;
+            toULimit=U8_COUNT_TRAIL_BYTES(b)+1;
+            if(toULimit>(sourceLimit-source)) {
+                /* collect a truncated byte sequence */
+                toULength=0;
+                c=b;
+                for(;;) {
+                    utf8->toUBytes[toULength++]=b;
+                    if(++source==sourceLimit) {
+                        /* partial byte sequence at end of source */
+                        utf8->toUnicodeStatus=c;
+                        utf8->toULength=toULength;
+                        utf8->mode=toULimit;
+                        break;
+                    } else if(!U8_IS_TRAIL(b=*source)) {
+                        /* lead byte in trail byte position */
+                        utf8->toULength=toULength;
+                        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                        break;
+                    }
+                    c=(c<<6)+b;
+                }
+            } else {
+                /* partial-sequence target overflow: fall back to the pivoting implementation */
+                *pErrorCode=U_USING_DEFAULT_WARNING;
+            }
+        }
+    }
+
+    /* write back the updated pointers */
+    pToUArgs->source=(char *)source;
+    pFromUArgs->target=(char *)target;
+}
+
+/* UTF-8 converter data ----------------------------------------------------- */
+
+static const UConverterImpl _UTF8Impl={
+    UCNV_UTF8,
+
+    NULL,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+
+    ucnv_toUnicode_UTF8,
+    ucnv_toUnicode_UTF8_OFFSETS_LOGIC,
+    ucnv_fromUnicode_UTF8,
+    ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
+    ucnv_getNextUChar_UTF8,
+
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    ucnv_getNonSurrogateUnicodeSet,
+
+    ucnv_UTF8FromUTF8,
+    ucnv_UTF8FromUTF8
+};
+
+/* The 1208 CCSID refers to any version of Unicode of UTF-8 */
+static const UConverterStaticData _UTF8StaticData={
+    sizeof(UConverterStaticData),
+    "UTF-8",
+    1208, UCNV_IBM, UCNV_UTF8,
+    1, 3, /* max 3 bytes per UChar from UTF-8 (4 bytes from surrogate _pair_) */
+    { 0xef, 0xbf, 0xbd, 0 },3,FALSE,FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+
+const UConverterSharedData _UTF8Data=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF8StaticData, &_UTF8Impl);
+
+/* CESU-8 converter data ---------------------------------------------------- */
+
+static const UConverterImpl _CESU8Impl={
+    UCNV_CESU8,
+
+    NULL,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+
+    ucnv_toUnicode_UTF8,
+    ucnv_toUnicode_UTF8_OFFSETS_LOGIC,
+    ucnv_fromUnicode_UTF8,
+    ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    ucnv_getCompleteUnicodeSet,
+
+    NULL,
+    NULL
+};
+
+static const UConverterStaticData _CESU8StaticData={
+    sizeof(UConverterStaticData),
+    "CESU-8",
+    9400, /* CCSID for CESU-8 */
+    UCNV_UNKNOWN, UCNV_CESU8, 1, 3,
+    { 0xef, 0xbf, 0xbd, 0 },3,FALSE,FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+
+const UConverterSharedData _CESU8Data=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_CESU8StaticData, &_CESU8Impl);
+
+#endif
index 5b66c50..69763ca 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnvbocu.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ucnvdisp.c b/source/common/ucnvdisp.c
new file mode 100644 (file)
index 0000000..e30f665
--- /dev/null
@@ -0,0 +1,88 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1998-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+*  ucnvdisp.c:
+*  Implements APIs for the ICU's codeset conversion library display names.
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   04/04/99    helena      Fixed internal header inclusion.
+*   05/09/00    helena      Added implementation to handle fallback mappings.
+*   06/20/2000  helena      OS/400 port changes; mostly typecast.
+*   09/08/2004  grhoten     split from ucnv.c
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ustring.h"
+#include "unicode/ures.h"
+#include "unicode/ucnv.h"
+#include "cstring.h"
+#include "ustr_imp.h"
+#include "ucnv_imp.h"
+#include "putilimp.h"
+
+U_CAPI int32_t U_EXPORT2
+ucnv_getDisplayName(const UConverter *cnv,
+                    const char *displayLocale,
+                    UChar *displayName, int32_t displayNameCapacity,
+                    UErrorCode *pErrorCode) {
+    UResourceBundle *rb;
+    const UChar *name;
+    int32_t length;
+    UErrorCode localStatus = U_ZERO_ERROR;
+
+    /* check arguments */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    if(cnv==NULL || displayNameCapacity<0 || (displayNameCapacity>0 && displayName==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* open the resource bundle and get the display name string */
+    rb=ures_open(NULL, displayLocale, pErrorCode);
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    /* use the internal name as the key */
+    name=ures_getStringByKey(rb, cnv->sharedData->staticData->name, &length, &localStatus);
+    ures_close(rb);
+
+    if(U_SUCCESS(localStatus)) {
+        /* copy the string */
+        if (*pErrorCode == U_ZERO_ERROR) {
+            *pErrorCode = localStatus;
+        }
+        u_memcpy(displayName, name, uprv_min(length, displayNameCapacity)*U_SIZEOF_UCHAR);
+    } else {
+        /* convert the internal name into a Unicode string */
+        length=(int32_t)uprv_strlen(cnv->sharedData->staticData->name);
+        u_charsToUChars(cnv->sharedData->staticData->name, displayName, uprv_min(length, displayNameCapacity));
+    }
+    return u_terminateUChars(displayName, displayNameCapacity, length, pErrorCode);
+}
+
+#endif
+
+/*
+ * Hey, Emacs, please set the following:
+ *
+ * Local Variables:
+ * indent-tabs-mode: nil
+ * End:
+ *
+ */
diff --git a/source/common/ucnvhz.c b/source/common/ucnvhz.c
new file mode 100644 (file)
index 0000000..d355516
--- /dev/null
@@ -0,0 +1,631 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*  
+**********************************************************************
+*   Copyright (C) 2000-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnvhz.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2000oct16
+*   created by: Ram Viswanadha
+*   10/31/2000  Ram     Implemented offsets logic function
+*   
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "cmemory.h"
+#include "unicode/ucnv.h"
+#include "unicode/ucnv_cb.h"
+#include "unicode/uset.h"
+#include "unicode/utf16.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "ucnv_imp.h"
+
+#define UCNV_TILDE 0x7E          /* ~ */
+#define UCNV_OPEN_BRACE 0x7B     /* { */
+#define UCNV_CLOSE_BRACE 0x7D   /* } */
+#define SB_ESCAPE    "\x7E\x7D"
+#define DB_ESCAPE    "\x7E\x7B"
+#define TILDE_ESCAPE "\x7E\x7E"
+#define ESC_LEN       2
+
+
+#define CONCAT_ESCAPE_MACRO( args, targetIndex,targetLength,strToAppend, err, len,sourceIndex){                             \
+    while(len-->0){                                                                                                         \
+        if(targetIndex < targetLength){                                                                                     \
+            args->target[targetIndex] = (unsigned char) *strToAppend;                                                       \
+            if(args->offsets!=NULL){                                                                                        \
+                *(offsets++) = sourceIndex-1;                                                                               \
+            }                                                                                                               \
+            targetIndex++;                                                                                                  \
+        }                                                                                                                   \
+        else{                                                                                                               \
+            args->converter->charErrorBuffer[(int)args->converter->charErrorBufferLength++] = (unsigned char) *strToAppend; \
+            *err =U_BUFFER_OVERFLOW_ERROR;                                                                                  \
+        }                                                                                                                   \
+        strToAppend++;                                                                                                      \
+    }                                                                                                                       \
+}
+
+
+typedef struct{
+    UConverter* gbConverter;
+    int32_t targetIndex;
+    int32_t sourceIndex;
+    UBool isEscapeAppended;
+    UBool isStateDBCS;
+    UBool isTargetUCharDBCS;
+    UBool isEmptySegment;
+}UConverterDataHZ;
+
+
+
+static void 
+_HZOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
+    UConverter *gbConverter;
+    if(pArgs->onlyTestIsLoadable) {
+        ucnv_canCreateConverter("GBK", errorCode);  /* errorCode carries result */
+        return;
+    }
+    gbConverter = ucnv_open("GBK", errorCode);
+    if(U_FAILURE(*errorCode)) {
+        return;
+    }
+    cnv->toUnicodeStatus = 0;
+    cnv->fromUnicodeStatus= 0;
+    cnv->mode=0;
+    cnv->fromUChar32=0x0000;
+    cnv->extraInfo = uprv_calloc(1, sizeof(UConverterDataHZ));
+    if(cnv->extraInfo != NULL){
+        ((UConverterDataHZ*)cnv->extraInfo)->gbConverter = gbConverter;
+    }
+    else {
+        ucnv_close(gbConverter);
+        *errorCode = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+}
+
+static void 
+_HZClose(UConverter *cnv){
+    if(cnv->extraInfo != NULL) {
+        ucnv_close (((UConverterDataHZ *) (cnv->extraInfo))->gbConverter);
+        if(!cnv->isExtraLocal) {
+            uprv_free(cnv->extraInfo);
+        }
+        cnv->extraInfo = NULL;
+    }
+}
+
+static void 
+_HZReset(UConverter *cnv, UConverterResetChoice choice){
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        cnv->toUnicodeStatus = 0;
+        cnv->mode=0;
+        if(cnv->extraInfo != NULL){
+            ((UConverterDataHZ*)cnv->extraInfo)->isStateDBCS = FALSE;
+            ((UConverterDataHZ*)cnv->extraInfo)->isEmptySegment = FALSE;
+        }
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE) {
+        cnv->fromUnicodeStatus= 0;
+        cnv->fromUChar32=0x0000; 
+        if(cnv->extraInfo != NULL){
+            ((UConverterDataHZ*)cnv->extraInfo)->isEscapeAppended = FALSE;
+            ((UConverterDataHZ*)cnv->extraInfo)->targetIndex = 0;
+            ((UConverterDataHZ*)cnv->extraInfo)->sourceIndex = 0;
+            ((UConverterDataHZ*)cnv->extraInfo)->isTargetUCharDBCS = FALSE;
+        }
+    }
+}
+
+/**************************************HZ Encoding*************************************************
+* Rules for HZ encoding
+* 
+*   In ASCII mode, a byte is interpreted as an ASCII character, unless a
+*   '~' is encountered. The character '~' is an escape character. By
+*   convention, it must be immediately followed ONLY by '~', '{' or '\n'
+*   (<LF>), with the following special meaning.
+
+*   1. The escape sequence '~~' is interpreted as a '~'.
+*   2. The escape-to-GB sequence '~{' switches the mode from ASCII to GB.
+*   3. The escape sequence '~\n' is a line-continuation marker to be
+*     consumed with no output produced.
+*   In GB mode, characters are interpreted two bytes at a time as (pure)
+*   GB codes until the escape-from-GB code '~}' is read. This code
+*   switches the mode from GB back to ASCII.  (Note that the escape-
+*   from-GB code '~}' ($7E7D) is outside the defined GB range.)
+*
+*   Source: RFC 1842
+*
+*   Note that the formal syntax in RFC 1842 is invalid. I assume that the
+*   intended definition of single-byte-segment is as follows (pedberg):
+*   single-byte-segment = single-byte-seq 1*single-byte-char
+*/
+
+
+static void 
+UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
+                                                            UErrorCode* err){
+    char tempBuf[2];
+    const char *mySource = ( char *) args->source;
+    UChar *myTarget = args->target;
+    const char *mySourceLimit = args->sourceLimit;
+    UChar32 targetUniChar = 0x0000;
+    int32_t mySourceChar = 0x0000;
+    UConverterDataHZ* myData=(UConverterDataHZ*)(args->converter->extraInfo);
+    tempBuf[0]=0; 
+    tempBuf[1]=0;
+
+    /* Calling code already handles this situation. */
+    /*if ((args->converter == NULL) || (args->targetLimit < args->target) || (mySourceLimit < args->source)){
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }*/
+    
+    while(mySource< mySourceLimit){
+        
+        if(myTarget < args->targetLimit){
+            
+            mySourceChar= (unsigned char) *mySource++;
+
+            if(args->converter->mode == UCNV_TILDE) {
+                /* second byte after ~ */
+                args->converter->mode=0;
+                switch(mySourceChar) {
+                case 0x0A:
+                    /* no output for ~\n (line-continuation marker) */
+                    continue;
+                case UCNV_TILDE:
+                    if(args->offsets) {
+                        args->offsets[myTarget - args->target]=(int32_t)(mySource - args->source - 2);
+                    }
+                    *(myTarget++)=(UChar)mySourceChar;
+                    myData->isEmptySegment = FALSE;
+                    continue;
+                case UCNV_OPEN_BRACE:
+                case UCNV_CLOSE_BRACE:
+                    myData->isStateDBCS = (mySourceChar == UCNV_OPEN_BRACE);
+                    if (myData->isEmptySegment) {
+                        myData->isEmptySegment = FALSE; /* we are handling it, reset to avoid future spurious errors */
+                        *err = U_ILLEGAL_ESCAPE_SEQUENCE;
+                        args->converter->toUCallbackReason = UCNV_IRREGULAR;
+                        args->converter->toUBytes[0] = UCNV_TILDE;
+                        args->converter->toUBytes[1] = mySourceChar;
+                        args->converter->toULength = 2;
+                        args->target = myTarget;
+                        args->source = mySource;
+                        return;
+                    }
+                    myData->isEmptySegment = TRUE;
+                    continue;
+                default:
+                     /* if the first byte is equal to TILDE and the trail byte
+                     * is not a valid byte then it is an error condition
+                     */
+                    /*
+                     * Ticket 5691: consistent illegal sequences:
+                     * - We include at least the first byte in the illegal sequence.
+                     * - If any of the non-initial bytes could be the start of a character,
+                     *   we stop the illegal sequence before the first one of those.
+                     */
+                    myData->isEmptySegment = FALSE; /* different error here, reset this to avoid spurious future error */
+                    *err = U_ILLEGAL_ESCAPE_SEQUENCE;
+                    args->converter->toUBytes[0] = UCNV_TILDE;
+                    if( myData->isStateDBCS ?
+                            (0x21 <= mySourceChar && mySourceChar <= 0x7e) :
+                            mySourceChar <= 0x7f
+                    ) {
+                        /* The current byte could be the start of a character: Back it out. */
+                        args->converter->toULength = 1;
+                        --mySource;
+                    } else {
+                        /* Include the current byte in the illegal sequence. */
+                        args->converter->toUBytes[1] = mySourceChar;
+                        args->converter->toULength = 2;
+                    }
+                    args->target = myTarget;
+                    args->source = mySource;
+                    return;
+                }
+            } else if(myData->isStateDBCS) {
+                if(args->converter->toUnicodeStatus == 0x00){
+                    /* lead byte */
+                    if(mySourceChar == UCNV_TILDE) {
+                        args->converter->mode = UCNV_TILDE;
+                    } else {
+                        /* add another bit to distinguish a 0 byte from not having seen a lead byte */
+                        args->converter->toUnicodeStatus = (uint32_t) (mySourceChar | 0x100);
+                        myData->isEmptySegment = FALSE; /* the segment has something, either valid or will produce a different error, so reset this */
+                    }
+                    continue;
+                }
+                else{
+                    /* trail byte */
+                    int leadIsOk, trailIsOk;
+                    uint32_t leadByte = args->converter->toUnicodeStatus & 0xff;
+                    targetUniChar = 0xffff;
+                    /*
+                     * Ticket 5691: consistent illegal sequences:
+                     * - We include at least the first byte in the illegal sequence.
+                     * - If any of the non-initial bytes could be the start of a character,
+                     *   we stop the illegal sequence before the first one of those.
+                     *
+                     * In HZ DBCS, if the second byte is in the 21..7e range,
+                     * we report only the first byte as the illegal sequence.
+                     * Otherwise we convert or report the pair of bytes.
+                     */
+                    leadIsOk = (uint8_t)(leadByte - 0x21) <= (0x7d - 0x21);
+                    trailIsOk = (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21);
+                    if (leadIsOk && trailIsOk) {
+                        tempBuf[0] = (char) (leadByte+0x80) ;
+                        tempBuf[1] = (char) (mySourceChar+0x80);
+                        targetUniChar = ucnv_MBCSSimpleGetNextUChar(myData->gbConverter->sharedData,
+                            tempBuf, 2, args->converter->useFallback);
+                        mySourceChar= (leadByte << 8) | mySourceChar;
+                    } else if (trailIsOk) {
+                        /* report a single illegal byte and continue with the following DBCS starter byte */
+                        --mySource;
+                        mySourceChar = (int32_t)leadByte;
+                    } else {
+                        /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+                        /* add another bit so that the code below writes 2 bytes in case of error */
+                        mySourceChar= 0x10000 | (leadByte << 8) | mySourceChar;
+                    }
+                    args->converter->toUnicodeStatus =0x00;
+                }
+            }
+            else{
+                if(mySourceChar == UCNV_TILDE) {
+                    args->converter->mode = UCNV_TILDE;
+                    continue;
+                } else if(mySourceChar <= 0x7f) {
+                    targetUniChar = (UChar)mySourceChar;  /* ASCII */
+                    myData->isEmptySegment = FALSE; /* the segment has something valid */
+                } else {
+                    targetUniChar = 0xffff;
+                    myData->isEmptySegment = FALSE; /* different error here, reset this to avoid spurious future error */
+                }
+            }
+            if(targetUniChar < 0xfffe){
+                if(args->offsets) {
+                    args->offsets[myTarget - args->target]=(int32_t)(mySource - args->source - 1-(myData->isStateDBCS));
+                }
+
+                *(myTarget++)=(UChar)targetUniChar;
+            }
+            else /* targetUniChar>=0xfffe */ {
+                if(targetUniChar == 0xfffe){
+                    *err = U_INVALID_CHAR_FOUND;
+                }
+                else{
+                    *err = U_ILLEGAL_CHAR_FOUND;
+                }
+                if(mySourceChar > 0xff){
+                    args->converter->toUBytes[0] = (uint8_t)(mySourceChar >> 8);
+                    args->converter->toUBytes[1] = (uint8_t)mySourceChar;
+                    args->converter->toULength=2;
+                }
+                else{
+                    args->converter->toUBytes[0] = (uint8_t)mySourceChar;
+                    args->converter->toULength=1;
+                }
+                break;
+            }
+        }
+        else{
+            *err =U_BUFFER_OVERFLOW_ERROR;
+            break;
+        }
+    }
+
+    args->target = myTarget;
+    args->source = mySource;
+}
+
+
+static void 
+UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
+                                                      UErrorCode * err){
+    const UChar *mySource = args->source;
+    char *myTarget = args->target;
+    int32_t* offsets = args->offsets;
+    int32_t mySourceIndex = 0;
+    int32_t myTargetIndex = 0;
+    int32_t targetLength = (int32_t)(args->targetLimit - myTarget);
+    int32_t mySourceLength = (int32_t)(args->sourceLimit - args->source);
+    uint32_t targetUniChar = 0x0000;
+    UChar32 mySourceChar = 0x0000;
+    UConverterDataHZ *myConverterData=(UConverterDataHZ*)args->converter->extraInfo;
+    UBool isTargetUCharDBCS = (UBool) myConverterData->isTargetUCharDBCS;
+    UBool oldIsTargetUCharDBCS;
+    int len =0;
+    const char* escSeq=NULL;
+    
+    /* Calling code already handles this situation. */
+    /*if ((args->converter == NULL) || (args->targetLimit < myTarget) || (args->sourceLimit < args->source)){
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }*/
+    if(args->converter->fromUChar32!=0 && myTargetIndex < targetLength) {
+        goto getTrail;
+    }
+    /*writing the char to the output stream */
+    while (mySourceIndex < mySourceLength){
+        targetUniChar = missingCharMarker;
+        if (myTargetIndex < targetLength){
+            
+            mySourceChar = (UChar) mySource[mySourceIndex++];
+            
+
+            oldIsTargetUCharDBCS = isTargetUCharDBCS;
+            if(mySourceChar ==UCNV_TILDE){
+                /*concatEscape(args, &myTargetIndex, &targetLength,"\x7E\x7E",err,2,&mySourceIndex);*/
+                len = ESC_LEN;
+                escSeq = TILDE_ESCAPE;
+                CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex);
+                continue;
+            } else if(mySourceChar <= 0x7f) {
+                targetUniChar = mySourceChar;
+            } else {
+                int32_t length= ucnv_MBCSFromUChar32(myConverterData->gbConverter->sharedData,
+                    mySourceChar,&targetUniChar,args->converter->useFallback);
+                /* we can only use lead bytes 21..7D and trail bytes 21..7E */
+                if( length == 2 &&
+                    (uint16_t)(targetUniChar - 0xa1a1) <= (0xfdfe - 0xa1a1) &&
+                    (uint8_t)(targetUniChar - 0xa1) <= (0xfe - 0xa1)
+                ) {
+                    targetUniChar -= 0x8080;
+                } else {
+                    targetUniChar = missingCharMarker;
+                }
+            }
+            if (targetUniChar != missingCharMarker){
+               myConverterData->isTargetUCharDBCS = isTargetUCharDBCS = (UBool)(targetUniChar>0x00FF);     
+                 if(oldIsTargetUCharDBCS != isTargetUCharDBCS || !myConverterData->isEscapeAppended ){
+                    /*Shifting from a double byte to single byte mode*/
+                    if(!isTargetUCharDBCS){
+                        len =ESC_LEN;
+                        escSeq = SB_ESCAPE;
+                        CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex);
+                        myConverterData->isEscapeAppended = TRUE;
+                    }
+                    else{ /* Shifting from a single byte to double byte mode*/
+                        len =ESC_LEN;
+                        escSeq = DB_ESCAPE;
+                        CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex);
+                        myConverterData->isEscapeAppended = TRUE;
+                        
+                    }
+                }
+            
+                if(isTargetUCharDBCS){
+                    if( myTargetIndex <targetLength){
+                        myTarget[myTargetIndex++] =(char) (targetUniChar >> 8);
+                        if(offsets){
+                            *(offsets++) = mySourceIndex-1;
+                        }
+                        if(myTargetIndex < targetLength){
+                            myTarget[myTargetIndex++] =(char) targetUniChar;
+                            if(offsets){
+                                *(offsets++) = mySourceIndex-1;
+                            }
+                        }else{
+                            args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
+                            *err = U_BUFFER_OVERFLOW_ERROR;
+                        } 
+                    }else{
+                        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =(char) (targetUniChar >> 8);
+                        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                    }
+
+                }else{
+                    if( myTargetIndex <targetLength){
+                        myTarget[myTargetIndex++] = (char) (targetUniChar );
+                        if(offsets){
+                            *(offsets++) = mySourceIndex-1;
+                        }
+                        
+                    }else{
+                        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
+                        *err = U_BUFFER_OVERFLOW_ERROR;
+                    }
+                }
+
+            }
+            else{
+                /* oops.. the code point is unassigned */
+                /*Handle surrogates */
+                /*check if the char is a First surrogate*/
+                if(U16_IS_SURROGATE(mySourceChar)) {
+                    if(U16_IS_SURROGATE_LEAD(mySourceChar)) {
+                        args->converter->fromUChar32=mySourceChar;
+getTrail:
+                        /*look ahead to find the trail surrogate*/
+                        if(mySourceIndex <  mySourceLength) {
+                            /* test the following code unit */
+                            UChar trail=(UChar) args->source[mySourceIndex];
+                            if(U16_IS_TRAIL(trail)) {
+                                ++mySourceIndex;
+                                mySourceChar=U16_GET_SUPPLEMENTARY(args->converter->fromUChar32, trail);
+                                args->converter->fromUChar32=0x00;
+                                /* there are no surrogates in GB2312*/
+                                *err = U_INVALID_CHAR_FOUND;
+                                /* exit this condition tree */
+                            } else {
+                                /* this is an unmatched lead code unit (1st surrogate) */
+                                /* callback(illegal) */
+                                *err=U_ILLEGAL_CHAR_FOUND;
+                            }
+                        } else {
+                            /* no more input */
+                            *err = U_ZERO_ERROR;
+                        }
+                    } else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        *err=U_ILLEGAL_CHAR_FOUND;
+                    }
+                } else {
+                    /* callback(unassigned) for a BMP code point */
+                    *err = U_INVALID_CHAR_FOUND;
+                }
+
+                args->converter->fromUChar32=mySourceChar;
+                break;
+            }
+        }
+        else{
+            *err = U_BUFFER_OVERFLOW_ERROR;
+            break;
+        }
+        targetUniChar=missingCharMarker;
+    }
+
+    args->target += myTargetIndex;
+    args->source += mySourceIndex;
+    myConverterData->isTargetUCharDBCS = isTargetUCharDBCS;
+}
+
+static void
+_HZ_WriteSub(UConverterFromUnicodeArgs *args, int32_t offsetIndex, UErrorCode *err) {
+    UConverter *cnv = args->converter;
+    UConverterDataHZ *convData=(UConverterDataHZ *) cnv->extraInfo;
+    char *p;
+    char buffer[4];
+    p = buffer;
+    
+    if( convData->isTargetUCharDBCS){
+        *p++= UCNV_TILDE;
+        *p++= UCNV_CLOSE_BRACE;
+        convData->isTargetUCharDBCS=FALSE;
+    }
+    *p++= (char)cnv->subChars[0];
+
+    ucnv_cbFromUWriteBytes(args,
+                           buffer, (int32_t)(p - buffer),
+                           offsetIndex, err);
+}
+
+/*
+ * Structure for cloning an HZ converter into a single memory block.
+ * ucnv_safeClone() of the HZ converter will align the entire cloneHZStruct,
+ * and then ucnv_safeClone() of the sub-converter may additionally align
+ * subCnv inside the cloneHZStruct, for which we need the deadSpace after
+ * subCnv. This is because UAlignedMemory may be larger than the actually
+ * necessary alignment size for the platform.
+ * The other cloneHZStruct fields will not be moved around,
+ * and are aligned properly with cloneHZStruct's alignment.
+ */
+struct cloneHZStruct
+{
+    UConverter cnv;
+    UConverter subCnv;
+    UAlignedMemory deadSpace;
+    UConverterDataHZ mydata;
+};
+
+
+static UConverter * 
+_HZ_SafeClone(const UConverter *cnv, 
+              void *stackBuffer, 
+              int32_t *pBufferSize, 
+              UErrorCode *status)
+{
+    struct cloneHZStruct * localClone;
+    int32_t size, bufferSizeNeeded = sizeof(struct cloneHZStruct);
+
+    if (U_FAILURE(*status)){
+        return 0;
+    }
+
+    if (*pBufferSize == 0){ /* 'preflighting' request - set needed size into *pBufferSize */
+        *pBufferSize = bufferSizeNeeded;
+        return 0;
+    }
+
+    localClone = (struct cloneHZStruct *)stackBuffer;
+    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
+
+    uprv_memcpy(&localClone->mydata, cnv->extraInfo, sizeof(UConverterDataHZ));
+    localClone->cnv.extraInfo = &localClone->mydata;
+    localClone->cnv.isExtraLocal = TRUE;
+
+    /* deep-clone the sub-converter */
+    size = (int32_t)(sizeof(UConverter) + sizeof(UAlignedMemory)); /* include size of padding */
+    ((UConverterDataHZ*)localClone->cnv.extraInfo)->gbConverter =
+        ucnv_safeClone(((UConverterDataHZ*)cnv->extraInfo)->gbConverter, &localClone->subCnv, &size, status);
+
+    return &localClone->cnv;
+}
+
+static void
+_HZ_GetUnicodeSet(const UConverter *cnv,
+                  const USetAdder *sa,
+                  UConverterUnicodeSet which,
+                  UErrorCode *pErrorCode) {
+    /* HZ converts all of ASCII */
+    sa->addRange(sa->set, 0, 0x7f);
+
+    /* add all of the code points that the sub-converter handles */
+    ucnv_MBCSGetFilteredUnicodeSetForUnicode(
+        ((UConverterDataHZ*)cnv->extraInfo)->gbConverter->sharedData,
+        sa, which, UCNV_SET_FILTER_HZ,
+        pErrorCode);
+}
+
+static const UConverterImpl _HZImpl={
+
+    UCNV_HZ,
+    
+    NULL,
+    NULL,
+    
+    _HZOpen,
+    _HZClose,
+    _HZReset,
+    
+    UConverter_toUnicode_HZ_OFFSETS_LOGIC,
+    UConverter_toUnicode_HZ_OFFSETS_LOGIC,
+    UConverter_fromUnicode_HZ_OFFSETS_LOGIC,
+    UConverter_fromUnicode_HZ_OFFSETS_LOGIC,
+    NULL,
+    
+    NULL,
+    NULL,
+    _HZ_WriteSub,
+    _HZ_SafeClone,
+    _HZ_GetUnicodeSet
+};
+
+static const UConverterStaticData _HZStaticData={
+    sizeof(UConverterStaticData),
+        "HZ",
+         0, 
+         UCNV_IBM, 
+         UCNV_HZ, 
+         1, 
+         4,
+        { 0x1a, 0, 0, 0 },
+        1,
+        FALSE, 
+        FALSE,
+        0,
+        0,
+        { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, /* reserved */
+
+};
+
+const UConverterSharedData _HZData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_HZStaticData, &_HZImpl);
+
+#endif /* #if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION */
diff --git a/source/common/ucnvisci.c b/source/common/ucnvisci.c
new file mode 100644 (file)
index 0000000..b520fc2
--- /dev/null
@@ -0,0 +1,1625 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 2000-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnvisci.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2001JUN26
+*   created by: Ram Viswanadha
+*
+*   Date        Name        Description
+*   24/7/2001   Ram         Added support for EXT character handling
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "unicode/ucnv_cb.h"
+#include "unicode/utf16.h"
+#include "cmemory.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "cstring.h"
+#include "uassert.h"
+
+#define UCNV_OPTIONS_VERSION_MASK 0xf
+#define NUKTA               0x093c
+#define HALANT              0x094d
+#define ZWNJ                0x200c /* Zero Width Non Joiner */
+#define ZWJ                 0x200d /* Zero width Joiner */
+#define INVALID_CHAR        0xffff
+#define ATR                 0xEF   /* Attribute code */
+#define EXT                 0xF0   /* Extension code */
+#define DANDA               0x0964
+#define DOUBLE_DANDA        0x0965
+#define ISCII_NUKTA         0xE9
+#define ISCII_HALANT        0xE8
+#define ISCII_DANDA         0xEA
+#define ISCII_INV           0xD9
+#define ISCII_VOWEL_SIGN_E  0xE0
+#define INDIC_BLOCK_BEGIN   0x0900
+#define INDIC_BLOCK_END     0x0D7F
+#define INDIC_RANGE         (INDIC_BLOCK_END - INDIC_BLOCK_BEGIN)
+#define VOCALLIC_RR         0x0931
+#define LF                  0x0A
+#define ASCII_END           0xA0
+#define NO_CHAR_MARKER      0xFFFE
+#define TELUGU_DELTA        DELTA * TELUGU
+#define DEV_ABBR_SIGN       0x0970
+#define DEV_ANUDATTA        0x0952
+#define EXT_RANGE_BEGIN     0xA1
+#define EXT_RANGE_END       0xEE
+
+#define PNJ_DELTA           0x0100
+#define PNJ_BINDI           0x0A02
+#define PNJ_TIPPI           0x0A70
+#define PNJ_SIGN_VIRAMA     0x0A4D
+#define PNJ_ADHAK           0x0A71
+#define PNJ_HA              0x0A39
+#define PNJ_RRA             0x0A5C
+
+typedef enum {
+    DEVANAGARI =0,
+    BENGALI,
+    GURMUKHI,
+    GUJARATI,
+    ORIYA,
+    TAMIL,
+    TELUGU,
+    KANNADA,
+    MALAYALAM,
+    DELTA=0x80
+}UniLang;
+
+/**
+ * Enumeration for switching code pages if <ATR>+<one of below values>
+ * is encountered
+ */
+typedef enum {
+    DEF = 0x40,
+    RMN = 0x41,
+    DEV = 0x42,
+    BNG = 0x43,
+    TML = 0x44,
+    TLG = 0x45,
+    ASM = 0x46,
+    ORI = 0x47,
+    KND = 0x48,
+    MLM = 0x49,
+    GJR = 0x4A,
+    PNJ = 0x4B,
+    ARB = 0x71,
+    PES = 0x72,
+    URD = 0x73,
+    SND = 0x74,
+    KSM = 0x75,
+    PST = 0x76
+}ISCIILang;
+
+typedef enum {
+    DEV_MASK =0x80,
+    PNJ_MASK =0x40,
+    GJR_MASK =0x20,
+    ORI_MASK =0x10,
+    BNG_MASK =0x08,
+    KND_MASK =0x04,
+    MLM_MASK =0x02,
+    TML_MASK =0x01,
+    ZERO =0x00
+}MaskEnum;
+
+#define ISCII_CNV_PREFIX "ISCII,version="
+
+typedef struct {
+    UChar contextCharToUnicode;         /* previous Unicode codepoint for contextual analysis */
+    UChar contextCharFromUnicode;       /* previous Unicode codepoint for contextual analysis */
+    uint16_t defDeltaToUnicode;         /* delta for switching to default state when DEF is encountered  */
+    uint16_t currentDeltaFromUnicode;   /* current delta in Indic block */
+    uint16_t currentDeltaToUnicode;     /* current delta in Indic block */
+    MaskEnum currentMaskFromUnicode;    /* mask for current state in toUnicode */
+    MaskEnum currentMaskToUnicode;      /* mask for current state in toUnicode */
+    MaskEnum defMaskToUnicode;          /* mask for default state in toUnicode */
+    UBool isFirstBuffer;                /* boolean for fromUnicode to see if we need to announce the first script */
+    UBool resetToDefaultToUnicode;      /* boolean for reseting to default delta and mask when a newline is encountered*/
+    char name[sizeof(ISCII_CNV_PREFIX) + 1];
+    UChar32 prevToUnicodeStatus;        /* Hold the previous toUnicodeStatus. This is necessary because we may need to know the last two code points. */
+} UConverterDataISCII;
+
+typedef struct LookupDataStruct {
+    UniLang uniLang;
+    MaskEnum maskEnum;
+    ISCIILang isciiLang;
+} LookupDataStruct;
+
+static const LookupDataStruct lookupInitialData[]={
+    { DEVANAGARI, DEV_MASK,  DEV },
+    { BENGALI,    BNG_MASK,  BNG },
+    { GURMUKHI,   PNJ_MASK,  PNJ },
+    { GUJARATI,   GJR_MASK,  GJR },
+    { ORIYA,      ORI_MASK,  ORI },
+    { TAMIL,      TML_MASK,  TML },
+    { TELUGU,     KND_MASK,  TLG },
+    { KANNADA,    KND_MASK,  KND },
+    { MALAYALAM,  MLM_MASK,  MLM }
+};
+
+/*
+ * For special handling of certain Gurmukhi characters.
+ * Bit 0 (value 1): PNJ consonant
+ * Bit 1 (value 2): PNJ Bindi Tippi
+ */
+static const uint8_t pnjMap[80] = {
+    /* 0A00..0A0F */
+    0, 0, 0, 0, 0, 2, 0, 2,  0, 0, 0, 0, 0, 0, 0, 0,
+    /* 0A10..0A1F */
+    0, 0, 0, 0, 0, 3, 3, 3,  3, 3, 3, 3, 3, 3, 3, 3,
+    /* 0A20..0A2F */
+    3, 3, 3, 3, 3, 3, 3, 3,  3, 0, 3, 3, 3, 3, 3, 3,
+    /* 0A30..0A3F */
+    3, 0, 0, 0, 0, 3, 3, 0,  3, 3, 0, 0, 0, 0, 0, 2,
+    /* 0A40..0A4F */
+    0, 2, 2, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0
+};
+
+static UBool
+isPNJConsonant(UChar32 c) {
+    if (c < 0xa00 || 0xa50 <= c) {
+        return FALSE;
+    } else {
+        return (UBool)(pnjMap[c - 0xa00] & 1);
+    }
+}
+
+static UBool
+isPNJBindiTippi(UChar32 c) {
+    if (c < 0xa00 || 0xa50 <= c) {
+        return FALSE;
+    } else {
+        return (UBool)(pnjMap[c - 0xa00] >> 1);
+    }
+}
+
+static void _ISCIIOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode) {
+    if(pArgs->onlyTestIsLoadable) {
+        return;
+    }
+
+    cnv->extraInfo = uprv_malloc(sizeof(UConverterDataISCII));
+
+    if (cnv->extraInfo != NULL) {
+        int32_t len=0;
+        UConverterDataISCII *converterData=
+                (UConverterDataISCII *) cnv->extraInfo;
+        converterData->contextCharToUnicode=NO_CHAR_MARKER;
+        cnv->toUnicodeStatus = missingCharMarker;
+        converterData->contextCharFromUnicode=0x0000;
+        converterData->resetToDefaultToUnicode=FALSE;
+        /* check if the version requested is supported */
+        if ((pArgs->options & UCNV_OPTIONS_VERSION_MASK) < 9) {
+            /* initialize state variables */
+            converterData->currentDeltaFromUnicode
+                    = converterData->currentDeltaToUnicode
+                            = converterData->defDeltaToUnicode = (uint16_t)(lookupInitialData[pArgs->options & UCNV_OPTIONS_VERSION_MASK].uniLang * DELTA);
+
+            converterData->currentMaskFromUnicode
+                    = converterData->currentMaskToUnicode
+                            = converterData->defMaskToUnicode = lookupInitialData[pArgs->options & UCNV_OPTIONS_VERSION_MASK].maskEnum;
+            
+            converterData->isFirstBuffer=TRUE;
+            (void)uprv_strcpy(converterData->name, ISCII_CNV_PREFIX);
+            len = (int32_t)uprv_strlen(converterData->name);
+            converterData->name[len]= (char)((pArgs->options & UCNV_OPTIONS_VERSION_MASK) + '0');
+            converterData->name[len+1]=0;
+            
+            converterData->prevToUnicodeStatus = 0x0000;
+        } else {
+            uprv_free(cnv->extraInfo);
+            cnv->extraInfo = NULL;
+            *errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+        }
+
+    } else {
+        *errorCode =U_MEMORY_ALLOCATION_ERROR;
+    }
+}
+
+static void _ISCIIClose(UConverter *cnv) {
+    if (cnv->extraInfo!=NULL) {
+        if (!cnv->isExtraLocal) {
+            uprv_free(cnv->extraInfo);
+        }
+        cnv->extraInfo=NULL;
+    }
+}
+
+static const char* _ISCIIgetName(const UConverter* cnv) {
+    if (cnv->extraInfo) {
+        UConverterDataISCII* myData= (UConverterDataISCII*)cnv->extraInfo;
+        return myData->name;
+    }
+    return NULL;
+}
+
+static void _ISCIIReset(UConverter *cnv, UConverterResetChoice choice) {
+    UConverterDataISCII* data =(UConverterDataISCII *) (cnv->extraInfo);
+    if (choice<=UCNV_RESET_TO_UNICODE) {
+        cnv->toUnicodeStatus = missingCharMarker;
+        cnv->mode=0;
+        data->currentDeltaToUnicode=data->defDeltaToUnicode;
+        data->currentMaskToUnicode = data->defMaskToUnicode;
+        data->contextCharToUnicode=NO_CHAR_MARKER;
+        data->prevToUnicodeStatus = 0x0000;
+    }
+    if (choice!=UCNV_RESET_TO_UNICODE) {
+        cnv->fromUChar32=0x0000;
+        data->contextCharFromUnicode=0x00;
+        data->currentMaskFromUnicode=data->defMaskToUnicode;
+        data->currentDeltaFromUnicode=data->defDeltaToUnicode;
+        data->isFirstBuffer=TRUE;
+        data->resetToDefaultToUnicode=FALSE;
+    }
+}
+
+/**
+ * The values in validity table are indexed by the lower bits of Unicode
+ * range 0x0900 - 0x09ff. The values have a structure like:
+ *       ---------------------------------------------------------------
+ *      | DEV   | PNJ   | GJR   | ORI   | BNG   | TLG   | MLM   | TML   |
+ *      |       |       |       |       | ASM   | KND   |       |       |
+ *       ---------------------------------------------------------------
+ * If a code point is valid in a particular script
+ * then that bit is turned on
+ *
+ * Unicode does not distinguish between Bengali and Assamese so we use 1 bit for
+ * to represent these languages
+ *
+ * Telugu and Kannada have same codepoints except for Vocallic_RR which we special case
+ * and combine and use 1 bit to represent these languages.
+ *
+ * TODO: It is probably easier to understand and maintain to change this
+ * to use uint16_t and give each of the 9 Unicode/script blocks its own bit.
+ */
+
+static const uint8_t validityTable[128] = {
+/* This state table is tool generated please do not edit unless you know exactly what you are doing */
+/* Note: This table was edited to mirror the Windows XP implementation */
+/*ISCII:Valid:Unicode */
+/*0xa0 : 0x00: 0x900  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xa1 : 0xb8: 0x901  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0xa2 : 0xfe: 0x902  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xa3 : 0xbf: 0x903  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0x00 : 0x00: 0x904  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xa4 : 0xff: 0x905  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xa5 : 0xff: 0x906  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xa6 : 0xff: 0x907  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xa7 : 0xff: 0x908  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xa8 : 0xff: 0x909  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xa9 : 0xff: 0x90a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xaa : 0xfe: 0x90b  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0x00 : 0x00: 0x90c  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xae : 0x80: 0x90d  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xab : 0x87: 0x90e  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xac : 0xff: 0x90f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xad : 0xff: 0x910  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb2 : 0x80: 0x911  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xaf : 0x87: 0x912  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb0 : 0xff: 0x913  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb1 : 0xff: 0x914  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb3 : 0xff: 0x915  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb4 : 0xfe: 0x916  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xb5 : 0xfe: 0x917  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xb6 : 0xfe: 0x918  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xb7 : 0xff: 0x919  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb8 : 0xff: 0x91a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xb9 : 0xfe: 0x91b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xba : 0xff: 0x91c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xbb : 0xfe: 0x91d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xbc : 0xff: 0x91e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xbd : 0xff: 0x91f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xbe : 0xfe: 0x920  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xbf : 0xfe: 0x921  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xc0 : 0xfe: 0x922  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xc1 : 0xff: 0x923  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xc2 : 0xff: 0x924  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xc3 : 0xfe: 0x925  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xc4 : 0xfe: 0x926  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xc5 : 0xfe: 0x927  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xc6 : 0xff: 0x928  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xc7 : 0x81: 0x929  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + TML_MASK ,
+/*0xc8 : 0xff: 0x92a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xc9 : 0xfe: 0x92b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xca : 0xfe: 0x92c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xcb : 0xfe: 0x92d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xcc : 0xfe: 0x92e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xcd : 0xff: 0x92f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xcf : 0xff: 0x930  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xd0 : 0x87: 0x931  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + MLM_MASK + TML_MASK ,
+/*0xd1 : 0xff: 0x932  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xd2 : 0xb7: 0x933  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xd3 : 0x83: 0x934  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + MLM_MASK + TML_MASK ,
+/*0xd4 : 0xff: 0x935  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xd5 : 0xfe: 0x936  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0xd6 : 0xbf: 0x937  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xd7 : 0xff: 0x938  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xd8 : 0xff: 0x939  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0x00 : 0x00: 0x93A  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x93B  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xe9 : 0xda: 0x93c  */ DEV_MASK + PNJ_MASK + ZERO     + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x93d  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xda : 0xff: 0x93e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xdb : 0xff: 0x93f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xdc : 0xff: 0x940  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xdd : 0xff: 0x941  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xde : 0xff: 0x942  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xdf : 0xbe: 0x943  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0x00 : 0x00: 0x944  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + BNG_MASK + KND_MASK + ZERO     + ZERO     ,
+/*0xe3 : 0x80: 0x945  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xe0 : 0x87: 0x946  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xe1 : 0xff: 0x947  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xe2 : 0xff: 0x948  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xe7 : 0x80: 0x949  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xe4 : 0x87: 0x94a  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xe5 : 0xff: 0x94b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xe6 : 0xff: 0x94c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xe8 : 0xff: 0x94d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xec : 0x00: 0x94e  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xed : 0x00: 0x94f  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x950  */ DEV_MASK + ZERO     + GJR_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x951  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x952  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x953  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x954  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x955  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + KND_MASK + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x956  */ ZERO     + ZERO     + ZERO     + ORI_MASK + ZERO     + KND_MASK + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x957  */ ZERO     + ZERO     + ZERO     + ORI_MASK + BNG_MASK + ZERO     + MLM_MASK + ZERO     ,
+/*0x00 : 0x00: 0x958  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x959  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x95a  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x95b  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x95c  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x95d  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x95e  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xce : 0x98: 0x95f  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x960  */ DEV_MASK + ZERO     + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0x00 : 0x00: 0x961  */ DEV_MASK + ZERO     + ZERO     + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + ZERO     ,
+/*0x00 : 0x00: 0x962  */ DEV_MASK + ZERO     + ZERO     + ZERO     + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0x00 : 0x00: 0x963  */ DEV_MASK + ZERO     + ZERO     + ZERO     + BNG_MASK + ZERO     + ZERO     + ZERO     ,
+/*0xea : 0xf8: 0x964  */ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xeaea : 0x00: 0x965*/ DEV_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*0xf1 : 0xff: 0x966  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf2 : 0xff: 0x967  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf3 : 0xff: 0x968  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf4 : 0xff: 0x969  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf5 : 0xff: 0x96a  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf6 : 0xff: 0x96b  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf7 : 0xff: 0x96c  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf8 : 0xff: 0x96d  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xf9 : 0xff: 0x96e  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0xfa : 0xff: 0x96f  */ DEV_MASK + PNJ_MASK + GJR_MASK + ORI_MASK + BNG_MASK + KND_MASK + MLM_MASK + TML_MASK ,
+/*0x00 : 0x80: 0x970  */ DEV_MASK + PNJ_MASK + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     ,
+/*
+ * The length of the array is 128 to provide values for 0x900..0x97f.
+ * The last 15 entries for 0x971..0x97f of the validity table are all zero
+ * because no Indic script uses such Unicode code points.
+ */
+/*0x00 : 0x00: 0x9yz  */ ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO     + ZERO
+};
+
+static const uint16_t fromUnicodeTable[128]={
+    0x00a0 ,/* 0x0900 */
+    0x00a1 ,/* 0x0901 */
+    0x00a2 ,/* 0x0902 */
+    0x00a3 ,/* 0x0903 */
+    0xa4e0 ,/* 0x0904 */
+    0x00a4 ,/* 0x0905 */
+    0x00a5 ,/* 0x0906 */
+    0x00a6 ,/* 0x0907 */
+    0x00a7 ,/* 0x0908 */
+    0x00a8 ,/* 0x0909 */
+    0x00a9 ,/* 0x090a */
+    0x00aa ,/* 0x090b */
+    0xA6E9 ,/* 0x090c */
+    0x00ae ,/* 0x090d */
+    0x00ab ,/* 0x090e */
+    0x00ac ,/* 0x090f */
+    0x00ad ,/* 0x0910 */
+    0x00b2 ,/* 0x0911 */
+    0x00af ,/* 0x0912 */
+    0x00b0 ,/* 0x0913 */
+    0x00b1 ,/* 0x0914 */
+    0x00b3 ,/* 0x0915 */
+    0x00b4 ,/* 0x0916 */
+    0x00b5 ,/* 0x0917 */
+    0x00b6 ,/* 0x0918 */
+    0x00b7 ,/* 0x0919 */
+    0x00b8 ,/* 0x091a */
+    0x00b9 ,/* 0x091b */
+    0x00ba ,/* 0x091c */
+    0x00bb ,/* 0x091d */
+    0x00bc ,/* 0x091e */
+    0x00bd ,/* 0x091f */
+    0x00be ,/* 0x0920 */
+    0x00bf ,/* 0x0921 */
+    0x00c0 ,/* 0x0922 */
+    0x00c1 ,/* 0x0923 */
+    0x00c2 ,/* 0x0924 */
+    0x00c3 ,/* 0x0925 */
+    0x00c4 ,/* 0x0926 */
+    0x00c5 ,/* 0x0927 */
+    0x00c6 ,/* 0x0928 */
+    0x00c7 ,/* 0x0929 */
+    0x00c8 ,/* 0x092a */
+    0x00c9 ,/* 0x092b */
+    0x00ca ,/* 0x092c */
+    0x00cb ,/* 0x092d */
+    0x00cc ,/* 0x092e */
+    0x00cd ,/* 0x092f */
+    0x00cf ,/* 0x0930 */
+    0x00d0 ,/* 0x0931 */
+    0x00d1 ,/* 0x0932 */
+    0x00d2 ,/* 0x0933 */
+    0x00d3 ,/* 0x0934 */
+    0x00d4 ,/* 0x0935 */
+    0x00d5 ,/* 0x0936 */
+    0x00d6 ,/* 0x0937 */
+    0x00d7 ,/* 0x0938 */
+    0x00d8 ,/* 0x0939 */
+    0xFFFF ,/* 0x093A */
+    0xFFFF ,/* 0x093B */
+    0x00e9 ,/* 0x093c */
+    0xEAE9 ,/* 0x093d */
+    0x00da ,/* 0x093e */
+    0x00db ,/* 0x093f */
+    0x00dc ,/* 0x0940 */
+    0x00dd ,/* 0x0941 */
+    0x00de ,/* 0x0942 */
+    0x00df ,/* 0x0943 */
+    0xDFE9 ,/* 0x0944 */
+    0x00e3 ,/* 0x0945 */
+    0x00e0 ,/* 0x0946 */
+    0x00e1 ,/* 0x0947 */
+    0x00e2 ,/* 0x0948 */
+    0x00e7 ,/* 0x0949 */
+    0x00e4 ,/* 0x094a */
+    0x00e5 ,/* 0x094b */
+    0x00e6 ,/* 0x094c */
+    0x00e8 ,/* 0x094d */
+    0x00ec ,/* 0x094e */
+    0x00ed ,/* 0x094f */
+    0xA1E9 ,/* 0x0950 */ /* OM Symbol */
+    0xFFFF ,/* 0x0951 */
+    0xF0B8 ,/* 0x0952 */
+    0xFFFF ,/* 0x0953 */
+    0xFFFF ,/* 0x0954 */
+    0xFFFF ,/* 0x0955 */
+    0xFFFF ,/* 0x0956 */
+    0xFFFF ,/* 0x0957 */
+    0xb3e9 ,/* 0x0958 */
+    0xb4e9 ,/* 0x0959 */
+    0xb5e9 ,/* 0x095a */
+    0xbae9 ,/* 0x095b */
+    0xbfe9 ,/* 0x095c */
+    0xC0E9 ,/* 0x095d */
+    0xc9e9 ,/* 0x095e */
+    0x00ce ,/* 0x095f */
+    0xAAe9 ,/* 0x0960 */
+    0xA7E9 ,/* 0x0961 */
+    0xDBE9 ,/* 0x0962 */
+    0xDCE9 ,/* 0x0963 */
+    0x00ea ,/* 0x0964 */
+    0xeaea ,/* 0x0965 */
+    0x00f1 ,/* 0x0966 */
+    0x00f2 ,/* 0x0967 */
+    0x00f3 ,/* 0x0968 */
+    0x00f4 ,/* 0x0969 */
+    0x00f5 ,/* 0x096a */
+    0x00f6 ,/* 0x096b */
+    0x00f7 ,/* 0x096c */
+    0x00f8 ,/* 0x096d */
+    0x00f9 ,/* 0x096e */
+    0x00fa ,/* 0x096f */
+    0xF0BF ,/* 0x0970 */
+    0xFFFF ,/* 0x0971 */
+    0xFFFF ,/* 0x0972 */
+    0xFFFF ,/* 0x0973 */
+    0xFFFF ,/* 0x0974 */
+    0xFFFF ,/* 0x0975 */
+    0xFFFF ,/* 0x0976 */
+    0xFFFF ,/* 0x0977 */
+    0xFFFF ,/* 0x0978 */
+    0xFFFF ,/* 0x0979 */
+    0xFFFF ,/* 0x097a */
+    0xFFFF ,/* 0x097b */
+    0xFFFF ,/* 0x097c */
+    0xFFFF ,/* 0x097d */
+    0xFFFF ,/* 0x097e */
+    0xFFFF ,/* 0x097f */
+};
+static const uint16_t toUnicodeTable[256]={
+    0x0000,/* 0x00 */
+    0x0001,/* 0x01 */
+    0x0002,/* 0x02 */
+    0x0003,/* 0x03 */
+    0x0004,/* 0x04 */
+    0x0005,/* 0x05 */
+    0x0006,/* 0x06 */
+    0x0007,/* 0x07 */
+    0x0008,/* 0x08 */
+    0x0009,/* 0x09 */
+    0x000a,/* 0x0a */
+    0x000b,/* 0x0b */
+    0x000c,/* 0x0c */
+    0x000d,/* 0x0d */
+    0x000e,/* 0x0e */
+    0x000f,/* 0x0f */
+    0x0010,/* 0x10 */
+    0x0011,/* 0x11 */
+    0x0012,/* 0x12 */
+    0x0013,/* 0x13 */
+    0x0014,/* 0x14 */
+    0x0015,/* 0x15 */
+    0x0016,/* 0x16 */
+    0x0017,/* 0x17 */
+    0x0018,/* 0x18 */
+    0x0019,/* 0x19 */
+    0x001a,/* 0x1a */
+    0x001b,/* 0x1b */
+    0x001c,/* 0x1c */
+    0x001d,/* 0x1d */
+    0x001e,/* 0x1e */
+    0x001f,/* 0x1f */
+    0x0020,/* 0x20 */
+    0x0021,/* 0x21 */
+    0x0022,/* 0x22 */
+    0x0023,/* 0x23 */
+    0x0024,/* 0x24 */
+    0x0025,/* 0x25 */
+    0x0026,/* 0x26 */
+    0x0027,/* 0x27 */
+    0x0028,/* 0x28 */
+    0x0029,/* 0x29 */
+    0x002a,/* 0x2a */
+    0x002b,/* 0x2b */
+    0x002c,/* 0x2c */
+    0x002d,/* 0x2d */
+    0x002e,/* 0x2e */
+    0x002f,/* 0x2f */
+    0x0030,/* 0x30 */
+    0x0031,/* 0x31 */
+    0x0032,/* 0x32 */
+    0x0033,/* 0x33 */
+    0x0034,/* 0x34 */
+    0x0035,/* 0x35 */
+    0x0036,/* 0x36 */
+    0x0037,/* 0x37 */
+    0x0038,/* 0x38 */
+    0x0039,/* 0x39 */
+    0x003A,/* 0x3A */
+    0x003B,/* 0x3B */
+    0x003c,/* 0x3c */
+    0x003d,/* 0x3d */
+    0x003e,/* 0x3e */
+    0x003f,/* 0x3f */
+    0x0040,/* 0x40 */
+    0x0041,/* 0x41 */
+    0x0042,/* 0x42 */
+    0x0043,/* 0x43 */
+    0x0044,/* 0x44 */
+    0x0045,/* 0x45 */
+    0x0046,/* 0x46 */
+    0x0047,/* 0x47 */
+    0x0048,/* 0x48 */
+    0x0049,/* 0x49 */
+    0x004a,/* 0x4a */
+    0x004b,/* 0x4b */
+    0x004c,/* 0x4c */
+    0x004d,/* 0x4d */
+    0x004e,/* 0x4e */
+    0x004f,/* 0x4f */
+    0x0050,/* 0x50 */
+    0x0051,/* 0x51 */
+    0x0052,/* 0x52 */
+    0x0053,/* 0x53 */
+    0x0054,/* 0x54 */
+    0x0055,/* 0x55 */
+    0x0056,/* 0x56 */
+    0x0057,/* 0x57 */
+    0x0058,/* 0x58 */
+    0x0059,/* 0x59 */
+    0x005a,/* 0x5a */
+    0x005b,/* 0x5b */
+    0x005c,/* 0x5c */
+    0x005d,/* 0x5d */
+    0x005e,/* 0x5e */
+    0x005f,/* 0x5f */
+    0x0060,/* 0x60 */
+    0x0061,/* 0x61 */
+    0x0062,/* 0x62 */
+    0x0063,/* 0x63 */
+    0x0064,/* 0x64 */
+    0x0065,/* 0x65 */
+    0x0066,/* 0x66 */
+    0x0067,/* 0x67 */
+    0x0068,/* 0x68 */
+    0x0069,/* 0x69 */
+    0x006a,/* 0x6a */
+    0x006b,/* 0x6b */
+    0x006c,/* 0x6c */
+    0x006d,/* 0x6d */
+    0x006e,/* 0x6e */
+    0x006f,/* 0x6f */
+    0x0070,/* 0x70 */
+    0x0071,/* 0x71 */
+    0x0072,/* 0x72 */
+    0x0073,/* 0x73 */
+    0x0074,/* 0x74 */
+    0x0075,/* 0x75 */
+    0x0076,/* 0x76 */
+    0x0077,/* 0x77 */
+    0x0078,/* 0x78 */
+    0x0079,/* 0x79 */
+    0x007a,/* 0x7a */
+    0x007b,/* 0x7b */
+    0x007c,/* 0x7c */
+    0x007d,/* 0x7d */
+    0x007e,/* 0x7e */
+    0x007f,/* 0x7f */
+    0x0080,/* 0x80 */
+    0x0081,/* 0x81 */
+    0x0082,/* 0x82 */
+    0x0083,/* 0x83 */
+    0x0084,/* 0x84 */
+    0x0085,/* 0x85 */
+    0x0086,/* 0x86 */
+    0x0087,/* 0x87 */
+    0x0088,/* 0x88 */
+    0x0089,/* 0x89 */
+    0x008a,/* 0x8a */
+    0x008b,/* 0x8b */
+    0x008c,/* 0x8c */
+    0x008d,/* 0x8d */
+    0x008e,/* 0x8e */
+    0x008f,/* 0x8f */
+    0x0090,/* 0x90 */
+    0x0091,/* 0x91 */
+    0x0092,/* 0x92 */
+    0x0093,/* 0x93 */
+    0x0094,/* 0x94 */
+    0x0095,/* 0x95 */
+    0x0096,/* 0x96 */
+    0x0097,/* 0x97 */
+    0x0098,/* 0x98 */
+    0x0099,/* 0x99 */
+    0x009a,/* 0x9a */
+    0x009b,/* 0x9b */
+    0x009c,/* 0x9c */
+    0x009d,/* 0x9d */
+    0x009e,/* 0x9e */
+    0x009f,/* 0x9f */
+    0x00A0,/* 0xa0 */
+    0x0901,/* 0xa1 */
+    0x0902,/* 0xa2 */
+    0x0903,/* 0xa3 */
+    0x0905,/* 0xa4 */
+    0x0906,/* 0xa5 */
+    0x0907,/* 0xa6 */
+    0x0908,/* 0xa7 */
+    0x0909,/* 0xa8 */
+    0x090a,/* 0xa9 */
+    0x090b,/* 0xaa */
+    0x090e,/* 0xab */
+    0x090f,/* 0xac */
+    0x0910,/* 0xad */
+    0x090d,/* 0xae */
+    0x0912,/* 0xaf */
+    0x0913,/* 0xb0 */
+    0x0914,/* 0xb1 */
+    0x0911,/* 0xb2 */
+    0x0915,/* 0xb3 */
+    0x0916,/* 0xb4 */
+    0x0917,/* 0xb5 */
+    0x0918,/* 0xb6 */
+    0x0919,/* 0xb7 */
+    0x091a,/* 0xb8 */
+    0x091b,/* 0xb9 */
+    0x091c,/* 0xba */
+    0x091d,/* 0xbb */
+    0x091e,/* 0xbc */
+    0x091f,/* 0xbd */
+    0x0920,/* 0xbe */
+    0x0921,/* 0xbf */
+    0x0922,/* 0xc0 */
+    0x0923,/* 0xc1 */
+    0x0924,/* 0xc2 */
+    0x0925,/* 0xc3 */
+    0x0926,/* 0xc4 */
+    0x0927,/* 0xc5 */
+    0x0928,/* 0xc6 */
+    0x0929,/* 0xc7 */
+    0x092a,/* 0xc8 */
+    0x092b,/* 0xc9 */
+    0x092c,/* 0xca */
+    0x092d,/* 0xcb */
+    0x092e,/* 0xcc */
+    0x092f,/* 0xcd */
+    0x095f,/* 0xce */
+    0x0930,/* 0xcf */
+    0x0931,/* 0xd0 */
+    0x0932,/* 0xd1 */
+    0x0933,/* 0xd2 */
+    0x0934,/* 0xd3 */
+    0x0935,/* 0xd4 */
+    0x0936,/* 0xd5 */
+    0x0937,/* 0xd6 */
+    0x0938,/* 0xd7 */
+    0x0939,/* 0xd8 */
+    0x200D,/* 0xd9 */
+    0x093e,/* 0xda */
+    0x093f,/* 0xdb */
+    0x0940,/* 0xdc */
+    0x0941,/* 0xdd */
+    0x0942,/* 0xde */
+    0x0943,/* 0xdf */
+    0x0946,/* 0xe0 */
+    0x0947,/* 0xe1 */
+    0x0948,/* 0xe2 */
+    0x0945,/* 0xe3 */
+    0x094a,/* 0xe4 */
+    0x094b,/* 0xe5 */
+    0x094c,/* 0xe6 */
+    0x0949,/* 0xe7 */
+    0x094d,/* 0xe8 */
+    0x093c,/* 0xe9 */
+    0x0964,/* 0xea */
+    0xFFFF,/* 0xeb */
+    0xFFFF,/* 0xec */
+    0xFFFF,/* 0xed */
+    0xFFFF,/* 0xee */
+    0xFFFF,/* 0xef */
+    0xFFFF,/* 0xf0 */
+    0x0966,/* 0xf1 */
+    0x0967,/* 0xf2 */
+    0x0968,/* 0xf3 */
+    0x0969,/* 0xf4 */
+    0x096a,/* 0xf5 */
+    0x096b,/* 0xf6 */
+    0x096c,/* 0xf7 */
+    0x096d,/* 0xf8 */
+    0x096e,/* 0xf9 */
+    0x096f,/* 0xfa */
+    0xFFFF,/* 0xfb */
+    0xFFFF,/* 0xfc */
+    0xFFFF,/* 0xfd */
+    0xFFFF,/* 0xfe */
+    0xFFFF /* 0xff */
+};
+
+static const uint16_t vowelSignESpecialCases[][2]={
+       { 2 /*length of array*/    , 0      },
+       { 0xA4 , 0x0904 },
+};
+
+static const uint16_t nuktaSpecialCases[][2]={
+    { 16 /*length of array*/   , 0      },
+    { 0xA6 , 0x090c },
+    { 0xEA , 0x093D },
+    { 0xDF , 0x0944 },
+    { 0xA1 , 0x0950 },
+    { 0xb3 , 0x0958 },
+    { 0xb4 , 0x0959 },
+    { 0xb5 , 0x095a },
+    { 0xba , 0x095b },
+    { 0xbf , 0x095c },
+    { 0xC0 , 0x095d },
+    { 0xc9 , 0x095e },
+    { 0xAA , 0x0960 },
+    { 0xA7 , 0x0961 },
+    { 0xDB , 0x0962 },
+    { 0xDC , 0x0963 },
+};
+
+
+#define WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err){      \
+    int32_t offset = (int32_t)(source - args->source-1);                                        \
+      /* write the targetUniChar  to target */                                                  \
+    if(target < targetLimit){                                                                   \
+        if(targetByteUnit <= 0xFF){                                                             \
+            *(target)++ = (uint8_t)(targetByteUnit);                                            \
+            if(offsets){                                                                        \
+                *(offsets++) = offset;                                                          \
+            }                                                                                   \
+        }else{                                                                                  \
+            if (targetByteUnit > 0xFFFF) {                                                      \
+                *(target)++ = (uint8_t)(targetByteUnit>>16);                                    \
+                if (offsets) {                                                                  \
+                    --offset;                                                                   \
+                    *(offsets++) = offset;                                                      \
+                }                                                                               \
+            }                                                                                   \
+            if (!(target < targetLimit)) {                                                      \
+                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =    \
+                                (uint8_t)(targetByteUnit >> 8);                                 \
+                args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =    \
+                                (uint8_t)targetByteUnit;                                        \
+                *err = U_BUFFER_OVERFLOW_ERROR;                                                 \
+            } else {                                                                            \
+                *(target)++ = (uint8_t)(targetByteUnit>>8);                                     \
+                if(offsets){                                                                    \
+                    *(offsets++) = offset;                                                      \
+                }                                                                               \
+                if(target < targetLimit){                                                       \
+                    *(target)++ = (uint8_t)  targetByteUnit;                                    \
+                    if(offsets){                                                                \
+                        *(offsets++) = offset                            ;                      \
+                    }                                                                           \
+                }else{                                                                          \
+                    args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =\
+                                (uint8_t) (targetByteUnit);                                     \
+                    *err = U_BUFFER_OVERFLOW_ERROR;                                             \
+                }                                                                               \
+            }                                                                                   \
+        }                                                                                       \
+    }else{                                                                                      \
+        if (targetByteUnit & 0xFF0000) {                                                        \
+            args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =        \
+                        (uint8_t) (targetByteUnit >>16);                                        \
+        }                                                                                       \
+        if(targetByteUnit & 0xFF00){                                                            \
+            args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =        \
+                        (uint8_t) (targetByteUnit >>8);                                         \
+        }                                                                                       \
+        args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =            \
+                        (uint8_t) (targetByteUnit);                                             \
+        *err = U_BUFFER_OVERFLOW_ERROR;                                                         \
+    }                                                                                           \
+}
+
+/* Rules:
+ *    Explicit Halant :
+ *                      <HALANT> + <ZWNJ>
+ *    Soft Halant :
+ *                      <HALANT> + <ZWJ>
+ */
+
+static void UConverter_fromUnicode_ISCII_OFFSETS_LOGIC(
+        UConverterFromUnicodeArgs * args, UErrorCode * err) {
+    const UChar *source = args->source;
+    const UChar *sourceLimit = args->sourceLimit;
+    unsigned char *target = (unsigned char *) args->target;
+    unsigned char *targetLimit = (unsigned char *) args->targetLimit;
+    int32_t* offsets = args->offsets;
+    uint32_t targetByteUnit = 0x0000;
+    UChar32 sourceChar = 0x0000;
+    UChar32 tempContextFromUnicode = 0x0000;    /* For special handling of the Gurmukhi script. */
+    UConverterDataISCII *converterData;
+    uint16_t newDelta=0;
+    uint16_t range = 0;
+    UBool deltaChanged = FALSE;
+
+    if ((args->converter == NULL) || (args->targetLimit < args->target) || (args->sourceLimit < args->source)) {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    /* initialize data */
+    converterData=(UConverterDataISCII*)args->converter->extraInfo;
+    newDelta=converterData->currentDeltaFromUnicode;
+    range = (uint16_t)(newDelta/DELTA);
+
+    if ((sourceChar = args->converter->fromUChar32)!=0) {
+        goto getTrail;
+    }
+
+    /*writing the char to the output stream */
+    while (source < sourceLimit) {
+        /* Write the language code following LF only if LF is not the last character. */
+        if (args->converter->fromUnicodeStatus == LF) {
+            targetByteUnit = ATR<<8;
+            targetByteUnit += (uint8_t) lookupInitialData[range].isciiLang;
+            args->converter->fromUnicodeStatus = 0x0000;
+            /* now append ATR and language code */
+            WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err);
+            if (U_FAILURE(*err)) {
+                break;
+            }
+        }
+        
+        sourceChar = *source++;
+        tempContextFromUnicode = converterData->contextCharFromUnicode;
+        
+        targetByteUnit = missingCharMarker;
+        
+        /*check if input is in ASCII and C0 control codes range*/
+        if (sourceChar <= ASCII_END) {
+            args->converter->fromUnicodeStatus = sourceChar;
+            WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,sourceChar,err);
+            if (U_FAILURE(*err)) {
+                break;
+            }
+            continue;
+        }
+        switch (sourceChar) {
+        case ZWNJ:
+            /* contextChar has HALANT */
+            if (converterData->contextCharFromUnicode) {
+                converterData->contextCharFromUnicode = 0x00;
+                targetByteUnit = ISCII_HALANT;
+            } else {
+                /* consume ZWNJ and continue */
+                converterData->contextCharFromUnicode = 0x00;
+                continue;
+            }
+            break;
+        case ZWJ:
+            /* contextChar has HALANT */
+            if (converterData->contextCharFromUnicode) {
+                targetByteUnit = ISCII_NUKTA;
+            } else {
+                targetByteUnit =ISCII_INV;
+            }
+            converterData->contextCharFromUnicode = 0x00;
+            break;
+        default:
+            /* is the sourceChar in the INDIC_RANGE? */
+            if ((uint16_t)(INDIC_BLOCK_END-sourceChar) <= INDIC_RANGE) {
+                /* Danda and Double Danda are valid in Northern scripts.. since Unicode
+                 * does not include these codepoints in all Northern scrips we need to
+                 * filter them out
+                 */
+                if (sourceChar!= DANDA && sourceChar != DOUBLE_DANDA) {
+                    /* find out to which block the souceChar belongs*/
+                    range =(uint16_t)((sourceChar-INDIC_BLOCK_BEGIN)/DELTA);
+                    newDelta =(uint16_t)(range*DELTA);
+
+                    /* Now are we in the same block as the previous? */
+                    if (newDelta!= converterData->currentDeltaFromUnicode || converterData->isFirstBuffer) {
+                        converterData->currentDeltaFromUnicode = newDelta;
+                        converterData->currentMaskFromUnicode = lookupInitialData[range].maskEnum;
+                        deltaChanged =TRUE;
+                        converterData->isFirstBuffer=FALSE;
+                    }
+                    
+                    if (converterData->currentDeltaFromUnicode == PNJ_DELTA) { 
+                        if (sourceChar == PNJ_TIPPI) {
+                            /* Make sure Tippi is converterd to Bindi. */
+                            sourceChar = PNJ_BINDI;
+                        } else if (sourceChar == PNJ_ADHAK) {
+                            /* This is for consonant cluster handling. */
+                            converterData->contextCharFromUnicode = PNJ_ADHAK;
+                        }
+                        
+                    }
+                    /* Normalize all Indic codepoints to Devanagari and map them to ISCII */
+                    /* now subtract the new delta from sourceChar*/
+                    sourceChar -= converterData->currentDeltaFromUnicode;
+                }
+
+                /* get the target byte unit */
+                targetByteUnit=fromUnicodeTable[(uint8_t)sourceChar];
+
+                /* is the code point valid in current script? */
+                if ((validityTable[(uint8_t)sourceChar] & converterData->currentMaskFromUnicode)==0) {
+                    /* Vocallic RR is assigned in ISCII Telugu and Unicode */
+                    if (converterData->currentDeltaFromUnicode!=(TELUGU_DELTA) || sourceChar!=VOCALLIC_RR) {
+                        targetByteUnit=missingCharMarker;
+                    }
+                }
+
+                if (deltaChanged) {
+                    /* we are in a script block which is different than
+                     * previous sourceChar's script block write ATR and language codes
+                     */
+                    uint32_t temp=0;
+                    temp =(uint16_t)(ATR<<8);
+                    temp += (uint16_t)((uint8_t) lookupInitialData[range].isciiLang);
+                    /* reset */
+                    deltaChanged=FALSE;
+                    /* now append ATR and language code */
+                    WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,temp,err);
+                    if (U_FAILURE(*err)) {
+                        break;
+                    }
+                }
+                
+                if (converterData->currentDeltaFromUnicode == PNJ_DELTA && (sourceChar + PNJ_DELTA) == PNJ_ADHAK) {
+                    continue;
+                }
+            }
+            /* reset context char */
+            converterData->contextCharFromUnicode = 0x00;
+            break;
+        }
+        if (converterData->currentDeltaFromUnicode == PNJ_DELTA && tempContextFromUnicode == PNJ_ADHAK && isPNJConsonant((sourceChar + PNJ_DELTA))) {
+            /* If the previous codepoint is Adhak and the current codepoint is a consonant, the targetByteUnit should be C + Halant + C. */
+            /* reset context char */
+            converterData->contextCharFromUnicode = 0x0000;
+            targetByteUnit = targetByteUnit << 16 | ISCII_HALANT << 8 | targetByteUnit;
+            /* write targetByteUnit to target */
+            WRITE_TO_TARGET_FROM_U(args, offsets, source, target, targetLimit, targetByteUnit,err);
+            if (U_FAILURE(*err)) {
+                break;
+            }
+        } else if (targetByteUnit != missingCharMarker) {
+            if (targetByteUnit==ISCII_HALANT) {
+                converterData->contextCharFromUnicode = (UChar)targetByteUnit;
+            }
+            /* write targetByteUnit to target*/
+            WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err);
+            if (U_FAILURE(*err)) {
+                break;
+            }
+        } else {
+            /* oops.. the code point is unassigned */
+            /*check if the char is a First surrogate*/
+            if (U16_IS_SURROGATE(sourceChar)) {
+                if (U16_IS_SURROGATE_LEAD(sourceChar)) {
+getTrail:
+                    /*look ahead to find the trail surrogate*/
+                    if (source < sourceLimit) {
+                        /* test the following code unit */
+                        UChar trail= (*source);
+                        if (U16_IS_TRAIL(trail)) {
+                            source++;
+                            sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
+                            *err =U_INVALID_CHAR_FOUND;
+                            /* convert this surrogate code point */
+                            /* exit this condition tree */
+                        } else {
+                            /* this is an unmatched lead code unit (1st surrogate) */
+                            /* callback(illegal) */
+                            *err=U_ILLEGAL_CHAR_FOUND;
+                        }
+                    } else {
+                        /* no more input */
+                        *err = U_ZERO_ERROR;
+                    }
+                } else {
+                    /* this is an unmatched trail code unit (2nd surrogate) */
+                    /* callback(illegal) */
+                    *err=U_ILLEGAL_CHAR_FOUND;
+                }
+            } else {
+                /* callback(unassigned) for a BMP code point */
+                *err = U_INVALID_CHAR_FOUND;
+            }
+
+            args->converter->fromUChar32=sourceChar;
+            break;
+        }
+    }/* end while(mySourceIndex<mySourceLength) */
+
+    /*save the state and return */
+    args->source = source;
+    args->target = (char*)target;
+}
+
+static const uint16_t lookupTable[][2]={
+    { ZERO,       ZERO     },     /*DEFALT*/
+    { ZERO,       ZERO     },     /*ROMAN*/
+    { DEVANAGARI, DEV_MASK },
+    { BENGALI,    BNG_MASK },
+    { TAMIL,      TML_MASK },
+    { TELUGU,     KND_MASK },
+    { BENGALI,    BNG_MASK },
+    { ORIYA,      ORI_MASK },
+    { KANNADA,    KND_MASK },
+    { MALAYALAM,  MLM_MASK },
+    { GUJARATI,   GJR_MASK },
+    { GURMUKHI,   PNJ_MASK }
+};
+
+#define WRITE_TO_TARGET_TO_U(args,source,target,offsets,offset,targetUniChar,delta, err){\
+    /* add offset to current Indic Block */                                              \
+    if(targetUniChar>ASCII_END &&                                                        \
+           targetUniChar != ZWJ &&                                                       \
+           targetUniChar != ZWNJ &&                                                      \
+           targetUniChar != DANDA &&                                                     \
+           targetUniChar != DOUBLE_DANDA){                                               \
+                                                                                         \
+           targetUniChar+=(uint16_t)(delta);                                             \
+    }                                                                                    \
+    /* now write the targetUniChar */                                                    \
+    if(target<args->targetLimit){                                                        \
+        *(target)++ = (UChar)targetUniChar;                                              \
+        if(offsets){                                                                     \
+            *(offsets)++ = (int32_t)(offset);                                            \
+        }                                                                                \
+    }else{                                                                               \
+        args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++] =   \
+            (UChar)targetUniChar;                                                        \
+        *err = U_BUFFER_OVERFLOW_ERROR;                                                  \
+    }                                                                                    \
+}
+
+#define GET_MAPPING(sourceChar,targetUniChar,data){                                      \
+    targetUniChar = toUnicodeTable[(sourceChar)] ;                                       \
+    /* is the code point valid in current script? */                                     \
+    if(sourceChar> ASCII_END &&                                                          \
+            (validityTable[(targetUniChar & 0x7F)] & data->currentMaskToUnicode)==0){    \
+        /* Vocallic RR is assigne in ISCII Telugu and Unicode */                         \
+        if(data->currentDeltaToUnicode!=(TELUGU_DELTA) ||                                \
+                    targetUniChar!=VOCALLIC_RR){                                         \
+            targetUniChar=missingCharMarker;                                             \
+        }                                                                                \
+    }                                                                                    \
+}
+
+/***********
+ *  Rules for ISCII to Unicode converter
+ *  ISCII is stateful encoding. To convert ISCII bytes to Unicode,
+ *  which has both precomposed and decomposed forms characters
+ *  pre-context and post-context need to be considered.
+ *
+ *  Post context
+ *  i)  ATR : Attribute code is used to declare the font and script switching.
+ *      Currently we only switch scripts and font codes consumed without generating an error
+ *  ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure,
+ *      obsolete characters
+ *  Pre context
+ *  i)  Halant: if preceeded by a halant then it is a explicit halant
+ *  ii) Nukta :
+ *       a) if preceeded by a halant then it is a soft halant
+ *       b) if preceeded by specific consonants and the ligatures have pre-composed
+ *          characters in Unicode then convert to pre-composed characters
+ *  iii) Danda: If Danda is preceeded by a Danda then convert to Double Danda
+ *
+ */
+
+static void UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCode* err) {
+    const char *source = ( char *) args->source;
+    UChar *target = args->target;
+    const char *sourceLimit = args->sourceLimit;
+    const UChar* targetLimit = args->targetLimit;
+    uint32_t targetUniChar = 0x0000;
+    uint8_t sourceChar = 0x0000;
+    UConverterDataISCII* data;
+    UChar32* toUnicodeStatus=NULL;
+    UChar32 tempTargetUniChar = 0x0000;
+    UChar* contextCharToUnicode= NULL;
+    UBool found;
+    int i; 
+    int offset = 0;
+
+    if ((args->converter == NULL) || (target < args->target) || (source < args->source)) {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    data = (UConverterDataISCII*)(args->converter->extraInfo);
+    contextCharToUnicode = &data->contextCharToUnicode; /* contains previous ISCII codepoint visited */
+    toUnicodeStatus = (UChar32*)&args->converter->toUnicodeStatus;/* contains the mapping to Unicode of the above codepoint*/
+
+    while (U_SUCCESS(*err) && source<sourceLimit) {
+
+        targetUniChar = missingCharMarker;
+
+        if (target < targetLimit) {
+            sourceChar = (unsigned char)*(source)++;
+
+            /* look at the post-context preform special processing */
+            if (*contextCharToUnicode==ATR) {
+
+                /* If we have ATR in *contextCharToUnicode then we need to change our
+                 * state to the Indic Script specified by sourceChar
+                 */
+
+                /* check if the sourceChar is supported script range*/
+                if ((uint8_t)(PNJ-sourceChar)<=PNJ-DEV) {
+                    data->currentDeltaToUnicode = (uint16_t)(lookupTable[sourceChar & 0x0F][0] * DELTA);
+                    data->currentMaskToUnicode = (MaskEnum)lookupTable[sourceChar & 0x0F][1];
+                } else if (sourceChar==DEF) {
+                    /* switch back to default */
+                    data->currentDeltaToUnicode = data->defDeltaToUnicode;
+                    data->currentMaskToUnicode = data->defMaskToUnicode;
+                } else {
+                    if ((sourceChar >= 0x21 && sourceChar <= 0x3F)) {
+                        /* these are display codes consume and continue */
+                    } else {
+                        *err =U_ILLEGAL_CHAR_FOUND;
+                        /* reset */
+                        *contextCharToUnicode=NO_CHAR_MARKER;
+                        goto CALLBACK;
+                    }
+                }
+
+                /* reset */
+                *contextCharToUnicode=NO_CHAR_MARKER;
+
+                continue;
+
+            } else if (*contextCharToUnicode==EXT) {
+                /* check if sourceChar is in 0xA1-0xEE range */
+                if ((uint8_t) (EXT_RANGE_END - sourceChar) <= (EXT_RANGE_END - EXT_RANGE_BEGIN)) {
+                    /* We currently support only Anudatta and Devanagari abbreviation sign */
+                    if (sourceChar==0xBF || sourceChar == 0xB8) {
+                        targetUniChar = (sourceChar==0xBF) ? DEV_ABBR_SIGN : DEV_ANUDATTA;
+                        
+                        /* find out if the mapping is valid in this state */
+                        if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) {
+                            *contextCharToUnicode= NO_CHAR_MARKER;
+
+                            /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                            if (data->prevToUnicodeStatus) {
+                                WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
+                                data->prevToUnicodeStatus = 0x0000;
+                            }
+                            /* write to target */
+                            WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),targetUniChar,data->currentDeltaToUnicode,err);
+
+                            continue;
+                        }
+                    }
+                    /* byte unit is unassigned */
+                    targetUniChar = missingCharMarker;
+                    *err= U_INVALID_CHAR_FOUND;
+                } else {
+                    /* only 0xA1 - 0xEE are legal after EXT char */
+                    *contextCharToUnicode= NO_CHAR_MARKER;
+                    *err = U_ILLEGAL_CHAR_FOUND;
+                }
+                goto CALLBACK;
+            } else if (*contextCharToUnicode==ISCII_INV) {
+                if (sourceChar==ISCII_HALANT) {
+                    targetUniChar = 0x0020; /* replace with space accoding to Indic FAQ */
+                } else {
+                    targetUniChar = ZWJ;
+                }
+
+                /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                if (data->prevToUnicodeStatus) {
+                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
+                    data->prevToUnicodeStatus = 0x0000;
+                }
+                /* write to target */
+                WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),targetUniChar,data->currentDeltaToUnicode,err);
+                /* reset */
+                *contextCharToUnicode=NO_CHAR_MARKER;
+            }
+
+            /* look at the pre-context and perform special processing */
+            switch (sourceChar) {
+            case ISCII_INV:
+            case EXT:
+            case ATR:
+                *contextCharToUnicode = (UChar)sourceChar;
+
+                if (*toUnicodeStatus != missingCharMarker) {
+                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                    if (data->prevToUnicodeStatus) {
+                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
+                        data->prevToUnicodeStatus = 0x0000;
+                    }
+                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),*toUnicodeStatus,data->currentDeltaToUnicode,err);
+                    *toUnicodeStatus = missingCharMarker;
+                }
+                continue;
+            case ISCII_DANDA:
+                /* handle double danda*/
+                if (*contextCharToUnicode== ISCII_DANDA) {
+                    targetUniChar = DOUBLE_DANDA;
+                    /* clear the context */
+                    *contextCharToUnicode = NO_CHAR_MARKER;
+                    *toUnicodeStatus = missingCharMarker;
+                } else {
+                    GET_MAPPING(sourceChar,targetUniChar,data);
+                    *contextCharToUnicode = sourceChar;
+                }
+                break;
+            case ISCII_HALANT:
+                /* handle explicit halant */
+                if (*contextCharToUnicode == ISCII_HALANT) {
+                    targetUniChar = ZWNJ;
+                    /* clear the context */
+                    *contextCharToUnicode = NO_CHAR_MARKER;
+                } else {
+                    GET_MAPPING(sourceChar,targetUniChar,data);
+                    *contextCharToUnicode = sourceChar;
+                }
+                break;
+            case 0x0A:
+            case 0x0D:
+                data->resetToDefaultToUnicode = TRUE;
+                GET_MAPPING(sourceChar,targetUniChar,data)
+                ;
+                *contextCharToUnicode = sourceChar;
+                break;
+
+            case ISCII_VOWEL_SIGN_E:
+                i=1;
+                found=FALSE;
+                for (; i<vowelSignESpecialCases[0][0]; i++) {
+                    U_ASSERT(i<UPRV_LENGTHOF(vowelSignESpecialCases));
+                    if (vowelSignESpecialCases[i][0]==(uint8_t)*contextCharToUnicode) {
+                        targetUniChar=vowelSignESpecialCases[i][1];
+                        found=TRUE;
+                        break;
+                    }
+                }
+                if (found) {
+                    /* find out if the mapping is valid in this state */
+                    if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) {
+                        /*targetUniChar += data->currentDeltaToUnicode ;*/
+                        *contextCharToUnicode= NO_CHAR_MARKER;
+                        *toUnicodeStatus = missingCharMarker;
+                        break;
+                    }
+                }
+                GET_MAPPING(sourceChar,targetUniChar,data);
+                *contextCharToUnicode = sourceChar;
+                break;
+
+            case ISCII_NUKTA:
+                /* handle soft halant */
+                if (*contextCharToUnicode == ISCII_HALANT) {
+                    targetUniChar = ZWJ;
+                    /* clear the context */
+                    *contextCharToUnicode = NO_CHAR_MARKER;
+                    break;
+                } else if (data->currentDeltaToUnicode == PNJ_DELTA && data->contextCharToUnicode == 0xc0) {
+                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                    if (data->prevToUnicodeStatus) {
+                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
+                        data->prevToUnicodeStatus = 0x0000;
+                    }
+                    /* We got here because ISCII_NUKTA was preceded by 0xc0 and we are converting Gurmukhi.
+                     * In that case we must convert (0xc0 0xe9) to (\u0a5c\u0a4d\u0a39).
+                     */
+                    targetUniChar = PNJ_RRA;
+                    WRITE_TO_TARGET_TO_U(args, source, target, args->offsets, (source-args->source)-2, targetUniChar, 0, err);
+                    if (U_SUCCESS(*err)) {
+                        targetUniChar = PNJ_SIGN_VIRAMA;
+                        WRITE_TO_TARGET_TO_U(args, source, target, args->offsets, (source-args->source)-2, targetUniChar, 0, err);
+                        if (U_SUCCESS(*err)) {
+                            targetUniChar = PNJ_HA;
+                            WRITE_TO_TARGET_TO_U(args, source, target, args->offsets, (source-args->source)-2, targetUniChar, 0, err);
+                        } else {
+                            args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]= PNJ_HA;
+                        }
+                    } else {
+                        args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]= PNJ_SIGN_VIRAMA;
+                        args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]= PNJ_HA;
+                    }
+                    *toUnicodeStatus = missingCharMarker;
+                    data->contextCharToUnicode = NO_CHAR_MARKER;
+                    continue;
+                } else {
+                    /* try to handle <CHAR> + ISCII_NUKTA special mappings */
+                    i=1;
+                    found =FALSE;
+                    for (; i<nuktaSpecialCases[0][0]; i++) {
+                        if (nuktaSpecialCases[i][0]==(uint8_t)
+                                *contextCharToUnicode) {
+                            targetUniChar=nuktaSpecialCases[i][1];
+                            found =TRUE;
+                            break;
+                        }
+                    }
+                    if (found) {
+                        /* find out if the mapping is valid in this state */
+                        if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) {
+                            /*targetUniChar += data->currentDeltaToUnicode ;*/
+                            *contextCharToUnicode= NO_CHAR_MARKER;
+                            *toUnicodeStatus = missingCharMarker;
+                            if (data->currentDeltaToUnicode == PNJ_DELTA) {
+                                /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                if (data->prevToUnicodeStatus) {
+                                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
+                                    data->prevToUnicodeStatus = 0x0000;
+                                }
+                                WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),targetUniChar,data->currentDeltaToUnicode,err);
+                                continue;
+                            }
+                            break;
+                        }
+                        /* else fall through to default */
+                    }
+                    /* else fall through to default */
+                    U_FALLTHROUGH;
+                }
+            default:GET_MAPPING(sourceChar,targetUniChar,data)
+                ;
+                *contextCharToUnicode = sourceChar;
+                break;
+            }
+
+            if (*toUnicodeStatus != missingCharMarker) {
+                /* Check to make sure that consonant clusters are handled correct for Gurmukhi script. */
+                if (data->currentDeltaToUnicode == PNJ_DELTA && data->prevToUnicodeStatus != 0 && isPNJConsonant(data->prevToUnicodeStatus) &&
+                        (*toUnicodeStatus + PNJ_DELTA) == PNJ_SIGN_VIRAMA && (targetUniChar + PNJ_DELTA) == data->prevToUnicodeStatus) {
+                    /* Consonant clusters C + HALANT + C should be encoded as ADHAK + C */
+                    offset = (int)(source-args->source - 3);
+                    tempTargetUniChar = PNJ_ADHAK; /* This is necessary to avoid some compiler warnings. */
+                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,offset,tempTargetUniChar,0,err);
+                    WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,offset,data->prevToUnicodeStatus,0,err);
+                    data->prevToUnicodeStatus = 0x0000; /* reset the previous unicode code point */
+                    *toUnicodeStatus = missingCharMarker;
+                    continue;
+                } else {
+                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                    if (data->prevToUnicodeStatus) {
+                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err);
+                        data->prevToUnicodeStatus = 0x0000;
+                    }
+                    /* Check to make sure that Bindi and Tippi are handled correctly for Gurmukhi script. 
+                     * If 0xA2 is preceded by a codepoint in the PNJ_BINDI_TIPPI_SET then the target codepoint should be Tippi instead of Bindi.
+                     */
+                    if (data->currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_BINDI && isPNJBindiTippi((*toUnicodeStatus + PNJ_DELTA))) {
+                        targetUniChar = PNJ_TIPPI - PNJ_DELTA;
+                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),*toUnicodeStatus,PNJ_DELTA,err);
+                    } else if (data->currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_SIGN_VIRAMA && isPNJConsonant((*toUnicodeStatus + PNJ_DELTA))) {
+                        /* Store the current toUnicodeStatus code point for later handling of consonant cluster in Gurmukhi. */
+                        data->prevToUnicodeStatus = *toUnicodeStatus + PNJ_DELTA;
+                    } else {
+                        /* write the previously mapped codepoint */
+                        WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -2),*toUnicodeStatus,data->currentDeltaToUnicode,err);
+                    }
+                }
+                *toUnicodeStatus = missingCharMarker;
+            }
+
+            if (targetUniChar != missingCharMarker) {
+                /* now save the targetUniChar for delayed write */
+                *toUnicodeStatus = (UChar) targetUniChar;
+                if (data->resetToDefaultToUnicode==TRUE) {
+                    data->currentDeltaToUnicode = data->defDeltaToUnicode;
+                    data->currentMaskToUnicode = data->defMaskToUnicode;
+                    data->resetToDefaultToUnicode=FALSE;
+                }
+            } else {
+
+                /* we reach here only if targetUniChar == missingCharMarker
+                 * so assign codes to reason and err
+                 */
+                *err = U_INVALID_CHAR_FOUND;
+CALLBACK:
+                args->converter->toUBytes[0] = (uint8_t) sourceChar;
+                args->converter->toULength = 1;
+                break;
+            }
+
+        } else {
+            *err =U_BUFFER_OVERFLOW_ERROR;
+            break;
+        }
+    }
+
+    if (U_SUCCESS(*err) && args->flush && source == sourceLimit) {
+        /* end of the input stream */
+        UConverter *cnv = args->converter;
+
+        if (*contextCharToUnicode==ATR || *contextCharToUnicode==EXT || *contextCharToUnicode==ISCII_INV) {
+            /* set toUBytes[] */
+            cnv->toUBytes[0] = (uint8_t)*contextCharToUnicode;
+            cnv->toULength = 1;
+
+            /* avoid looping on truncated sequences */
+            *contextCharToUnicode = NO_CHAR_MARKER;
+        } else {
+            cnv->toULength = 0;
+        }
+
+        if (*toUnicodeStatus != missingCharMarker) {
+            /* output a remaining target character */
+            WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source - args->source -1),*toUnicodeStatus,data->currentDeltaToUnicode,err);
+            *toUnicodeStatus = missingCharMarker;
+        }
+    }
+
+    args->target = target;
+    args->source = source;
+}
+
+/* structure for SafeClone calculations */
+struct cloneISCIIStruct {
+    UConverter cnv;
+    UConverterDataISCII mydata;
+};
+
+static UConverter *
+_ISCII_SafeClone(const UConverter *cnv,
+              void *stackBuffer,
+              int32_t *pBufferSize,
+              UErrorCode *status)
+{
+    struct cloneISCIIStruct * localClone;
+    int32_t bufferSizeNeeded = sizeof(struct cloneISCIIStruct);
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    if (*pBufferSize == 0) { /* 'preflighting' request - set needed size into *pBufferSize */
+        *pBufferSize = bufferSizeNeeded;
+        return 0;
+    }
+
+    localClone = (struct cloneISCIIStruct *)stackBuffer;
+    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
+
+    uprv_memcpy(&localClone->mydata, cnv->extraInfo, sizeof(UConverterDataISCII));
+    localClone->cnv.extraInfo = &localClone->mydata;
+    localClone->cnv.isExtraLocal = TRUE;
+
+    return &localClone->cnv;
+}
+
+static void
+_ISCIIGetUnicodeSet(const UConverter *cnv,
+                    const USetAdder *sa,
+                    UConverterUnicodeSet which,
+                    UErrorCode *pErrorCode)
+{
+    int32_t idx, script;
+    uint8_t mask;
+
+    /* Since all ISCII versions allow switching to other ISCII
+    scripts, we add all roundtrippable characters to this set. */
+    sa->addRange(sa->set, 0, ASCII_END);
+    for (script = DEVANAGARI; script <= MALAYALAM; script++) {
+        mask = (uint8_t)(lookupInitialData[script].maskEnum);
+        for (idx = 0; idx < DELTA; idx++) {
+            /* added check for TELUGU character */
+            if ((validityTable[idx] & mask) || (script==TELUGU && idx==0x31)) {
+                sa->add(sa->set, idx + (script * DELTA) + INDIC_BLOCK_BEGIN);
+            }
+        }
+    }
+    sa->add(sa->set, DANDA);
+    sa->add(sa->set, DOUBLE_DANDA);
+    sa->add(sa->set, ZWNJ);
+    sa->add(sa->set, ZWJ);
+}
+
+static const UConverterImpl _ISCIIImpl={
+
+    UCNV_ISCII,
+
+    NULL,
+    NULL,
+
+    _ISCIIOpen,
+    _ISCIIClose,
+    _ISCIIReset,
+
+    UConverter_toUnicode_ISCII_OFFSETS_LOGIC,
+    UConverter_toUnicode_ISCII_OFFSETS_LOGIC,
+    UConverter_fromUnicode_ISCII_OFFSETS_LOGIC,
+    UConverter_fromUnicode_ISCII_OFFSETS_LOGIC,
+    NULL,
+
+    NULL,
+    _ISCIIgetName,
+    NULL,
+    _ISCII_SafeClone,
+    _ISCIIGetUnicodeSet
+};
+
+static const UConverterStaticData _ISCIIStaticData={
+    sizeof(UConverterStaticData),
+        "ISCII",
+         0,
+         UCNV_IBM,
+         UCNV_ISCII,
+         1,
+         4,
+        { 0x1a, 0, 0, 0 },
+        0x1,
+        FALSE,
+        FALSE,
+        0x0,
+        0x0,
+        { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, /* reserved */
+
+};
+
+const UConverterSharedData _ISCIIData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_ISCIIStaticData, &_ISCIIImpl);
+
+#endif /* #if !UCONFIG_NO_LEGACY_CONVERSION */
diff --git a/source/common/ucnvlat1.c b/source/common/ucnvlat1.c
new file mode 100644 (file)
index 0000000..f17777f
--- /dev/null
@@ -0,0 +1,740 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/* 
+**********************************************************************
+*   Copyright (C) 2000-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   file name:  ucnvlat1.cpp
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2000feb07
+*   created by: Markus W. Scherer
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "unicode/uset.h"
+#include "unicode/utf8.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+
+/* control optimizations according to the platform */
+#define LATIN1_UNROLL_FROM_UNICODE 1
+
+/* ISO 8859-1 --------------------------------------------------------------- */
+
+/* This is a table-less and callback-less version of ucnv_MBCSSingleToBMPWithOffsets(). */
+static void
+_Latin1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                            UErrorCode *pErrorCode) {
+    const uint8_t *source;
+    UChar *target;
+    int32_t targetCapacity, length;
+    int32_t *offsets;
+
+    int32_t sourceIndex;
+
+    /* set up the local pointers */
+    source=(const uint8_t *)pArgs->source;
+    target=pArgs->target;
+    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
+    offsets=pArgs->offsets;
+
+    sourceIndex=0;
+
+    /*
+     * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+     * for the minimum of the sourceLength and targetCapacity
+     */
+    length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
+    if(length<=targetCapacity) {
+        targetCapacity=length;
+    } else {
+        /* target will be full */
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        length=targetCapacity;
+    }
+
+    if(targetCapacity>=8) {
+        /* This loop is unrolled for speed and improved pipelining. */
+        int32_t count, loops;
+
+        loops=count=targetCapacity>>3;
+        length=targetCapacity&=0x7;
+        do {
+            target[0]=source[0];
+            target[1]=source[1];
+            target[2]=source[2];
+            target[3]=source[3];
+            target[4]=source[4];
+            target[5]=source[5];
+            target[6]=source[6];
+            target[7]=source[7];
+            target+=8;
+            source+=8;
+        } while(--count>0);
+
+        if(offsets!=NULL) {
+            do {
+                offsets[0]=sourceIndex++;
+                offsets[1]=sourceIndex++;
+                offsets[2]=sourceIndex++;
+                offsets[3]=sourceIndex++;
+                offsets[4]=sourceIndex++;
+                offsets[5]=sourceIndex++;
+                offsets[6]=sourceIndex++;
+                offsets[7]=sourceIndex++;
+                offsets+=8;
+            } while(--loops>0);
+        }
+    }
+
+    /* conversion loop */
+    while(targetCapacity>0) {
+        *target++=*source++;
+        --targetCapacity;
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+
+    /* set offsets */
+    if(offsets!=NULL) {
+        while(length>0) {
+            *offsets++=sourceIndex++;
+            --length;
+        }
+        pArgs->offsets=offsets;
+    }
+}
+
+/* This is a table-less and callback-less version of ucnv_MBCSSingleGetNextUChar(). */
+static UChar32
+_Latin1GetNextUChar(UConverterToUnicodeArgs *pArgs,
+                    UErrorCode *pErrorCode) {
+    const uint8_t *source=(const uint8_t *)pArgs->source;
+    if(source<(const uint8_t *)pArgs->sourceLimit) {
+        pArgs->source=(const char *)(source+1);
+        return *source;
+    }
+
+    /* no output because of empty input */
+    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+    return 0xffff;
+}
+
+/* This is a table-less version of ucnv_MBCSSingleFromBMPWithOffsets(). */
+static void
+_Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
+                              UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    const UChar *source, *sourceLimit;
+    uint8_t *target, *oldTarget;
+    int32_t targetCapacity, length;
+    int32_t *offsets;
+
+    UChar32 cp;
+    UChar c, max;
+
+    int32_t sourceIndex;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+    source=pArgs->source;
+    sourceLimit=pArgs->sourceLimit;
+    target=oldTarget=(uint8_t *)pArgs->target;
+    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
+    offsets=pArgs->offsets;
+
+    if(cnv->sharedData==&_Latin1Data) {
+        max=0xff; /* Latin-1 */
+    } else {
+        max=0x7f; /* US-ASCII */
+    }
+
+    /* get the converter state from UConverter */
+    cp=cnv->fromUChar32;
+
+    /* sourceIndex=-1 if the current character began in the previous buffer */
+    sourceIndex= cp==0 ? 0 : -1;
+
+    /*
+     * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+     * for the minimum of the sourceLength and targetCapacity
+     */
+    length=(int32_t)(sourceLimit-source);
+    if(length<targetCapacity) {
+        targetCapacity=length;
+    }
+
+    /* conversion loop */
+    if(cp!=0 && targetCapacity>0) {
+        goto getTrail;
+    }
+
+#if LATIN1_UNROLL_FROM_UNICODE
+    /* unroll the loop with the most common case */
+    if(targetCapacity>=16) {
+        int32_t count, loops;
+        UChar u, oredChars;
+
+        loops=count=targetCapacity>>4;
+        do {
+            oredChars=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+            oredChars|=u=*source++;
+            *target++=(uint8_t)u;
+
+            /* were all 16 entries really valid? */
+            if(oredChars>max) {
+                /* no, return to the first of these 16 */
+                source-=16;
+                target-=16;
+                break;
+            }
+        } while(--count>0);
+        count=loops-count;
+        targetCapacity-=16*count;
+
+        if(offsets!=NULL) {
+            oldTarget+=16*count;
+            while(count>0) {
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                *offsets++=sourceIndex++;
+                --count;
+            }
+        }
+    }
+#endif
+
+    /* conversion loop */
+    c=0;
+    while(targetCapacity>0 && (c=*source++)<=max) {
+        /* convert the Unicode code point */
+        *target++=(uint8_t)c;
+        --targetCapacity;
+    }
+
+    if(c>max) {
+        cp=c;
+        if(!U_IS_SURROGATE(cp)) {
+            /* callback(unassigned) */
+        } else if(U_IS_SURROGATE_LEAD(cp)) {
+getTrail:
+            if(source<sourceLimit) {
+                /* test the following code unit */
+                UChar trail=*source;
+                if(U16_IS_TRAIL(trail)) {
+                    ++source;
+                    cp=U16_GET_SUPPLEMENTARY(cp, trail);
+                    /* this codepage does not map supplementary code points */
+                    /* callback(unassigned) */
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                }
+            } else {
+                /* no more input */
+                cnv->fromUChar32=cp;
+                goto noMoreInput;
+            }
+        } else {
+            /* this is an unmatched trail code unit (2nd surrogate) */
+            /* callback(illegal) */
+        }
+
+        *pErrorCode= U_IS_SURROGATE(cp) ? U_ILLEGAL_CHAR_FOUND : U_INVALID_CHAR_FOUND;
+        cnv->fromUChar32=cp;
+    }
+noMoreInput:
+
+    /* set offsets since the start */
+    if(offsets!=NULL) {
+        size_t count=target-oldTarget;
+        while(count>0) {
+            *offsets++=sourceIndex++;
+            --count;
+        }
+    }
+
+    if(U_SUCCESS(*pErrorCode) && source<sourceLimit && target>=(uint8_t *)pArgs->targetLimit) {
+        /* target is full */
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=(char *)target;
+    pArgs->offsets=offsets;
+}
+
+/* Convert UTF-8 to Latin-1. Adapted from ucnv_SBCSFromUTF8(). */
+static void
+ucnv_Latin1FromUTF8(UConverterFromUnicodeArgs *pFromUArgs,
+                    UConverterToUnicodeArgs *pToUArgs,
+                    UErrorCode *pErrorCode) {
+    UConverter *utf8;
+    const uint8_t *source, *sourceLimit;
+    uint8_t *target;
+    int32_t targetCapacity;
+
+    UChar32 c;
+    uint8_t b, t1;
+
+    /* set up the local pointers */
+    utf8=pToUArgs->converter;
+    source=(uint8_t *)pToUArgs->source;
+    sourceLimit=(uint8_t *)pToUArgs->sourceLimit;
+    target=(uint8_t *)pFromUArgs->target;
+    targetCapacity=(int32_t)(pFromUArgs->targetLimit-pFromUArgs->target);
+
+    /* get the converter state from the UTF-8 UConverter */
+    c=(UChar32)utf8->toUnicodeStatus;
+    if(c!=0 && source<sourceLimit) {
+        if(targetCapacity==0) {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            return;
+        } else if(c>=0xc2 && c<=0xc3 && (t1=(uint8_t)(*source-0x80)) <= 0x3f) {
+            ++source;
+            *target++=(uint8_t)(((c&3)<<6)|t1);
+            --targetCapacity;
+
+            utf8->toUnicodeStatus=0;
+            utf8->toULength=0;
+        } else {
+            /* complicated, illegal or unmappable input: fall back to the pivoting implementation */
+            *pErrorCode=U_USING_DEFAULT_WARNING;
+            return;
+        }
+    }
+
+    /*
+     * Make sure that the last byte sequence before sourceLimit is complete
+     * or runs into a lead byte.
+     * In the conversion loop compare source with sourceLimit only once
+     * per multi-byte character.
+     * For Latin-1, adjust sourceLimit only for 1 trail byte because
+     * the conversion loop handles at most 2-byte sequences.
+     */
+    if(source<sourceLimit && U8_IS_LEAD(*(sourceLimit-1))) {
+        --sourceLimit;
+    }
+
+    /* conversion loop */
+    while(source<sourceLimit) {
+        if(targetCapacity>0) {
+            b=*source++;
+            if((int8_t)b>=0) {
+                /* convert ASCII */
+                *target++=(uint8_t)b;
+                --targetCapacity;
+            } else if( /* handle U+0080..U+00FF inline */
+                       b>=0xc2 && b<=0xc3 &&
+                       (t1=(uint8_t)(*source-0x80)) <= 0x3f
+            ) {
+                ++source;
+                *target++=(uint8_t)(((b&3)<<6)|t1);
+                --targetCapacity;
+            } else {
+                /* complicated, illegal or unmappable input: fall back to the pivoting implementation */
+                pToUArgs->source=(char *)(source-1);
+                pFromUArgs->target=(char *)target;
+                *pErrorCode=U_USING_DEFAULT_WARNING;
+                return;
+            }
+        } else {
+            /* target is full */
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            break;
+        }
+    }
+
+    /*
+     * The sourceLimit may have been adjusted before the conversion loop
+     * to stop before a truncated sequence.
+     * If so, then collect the truncated sequence now.
+     * For Latin-1, there is at most exactly one lead byte because of the
+     * smaller sourceLimit adjustment logic.
+     */
+    if(U_SUCCESS(*pErrorCode) && source<(sourceLimit=(uint8_t *)pToUArgs->sourceLimit)) {
+        utf8->toUnicodeStatus=utf8->toUBytes[0]=b=*source++;
+        utf8->toULength=1;
+        utf8->mode=U8_COUNT_TRAIL_BYTES(b)+1;
+    }
+
+    /* write back the updated pointers */
+    pToUArgs->source=(char *)source;
+    pFromUArgs->target=(char *)target;
+}
+
+static void
+_Latin1GetUnicodeSet(const UConverter *cnv,
+                     const USetAdder *sa,
+                     UConverterUnicodeSet which,
+                     UErrorCode *pErrorCode) {
+    sa->addRange(sa->set, 0, 0xff);
+}
+
+static const UConverterImpl _Latin1Impl={
+    UCNV_LATIN_1,
+
+    NULL,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+
+    _Latin1ToUnicodeWithOffsets,
+    _Latin1ToUnicodeWithOffsets,
+    _Latin1FromUnicodeWithOffsets,
+    _Latin1FromUnicodeWithOffsets,
+    _Latin1GetNextUChar,
+
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    _Latin1GetUnicodeSet,
+
+    NULL,
+    ucnv_Latin1FromUTF8
+};
+
+static const UConverterStaticData _Latin1StaticData={
+    sizeof(UConverterStaticData),
+    "ISO-8859-1",
+    819, UCNV_IBM, UCNV_LATIN_1, 1, 1,
+    { 0x1a, 0, 0, 0 }, 1, FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _Latin1Data=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_Latin1StaticData, &_Latin1Impl);
+
+/* US-ASCII ----------------------------------------------------------------- */
+
+/* This is a table-less version of ucnv_MBCSSingleToBMPWithOffsets(). */
+static void
+_ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                           UErrorCode *pErrorCode) {
+    const uint8_t *source, *sourceLimit;
+    UChar *target, *oldTarget;
+    int32_t targetCapacity, length;
+    int32_t *offsets;
+
+    int32_t sourceIndex;
+
+    uint8_t c;
+
+    /* set up the local pointers */
+    source=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+    target=oldTarget=pArgs->target;
+    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
+    offsets=pArgs->offsets;
+
+    /* sourceIndex=-1 if the current character began in the previous buffer */
+    sourceIndex=0;
+
+    /*
+     * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+     * for the minimum of the sourceLength and targetCapacity
+     */
+    length=(int32_t)(sourceLimit-source);
+    if(length<targetCapacity) {
+        targetCapacity=length;
+    }
+
+    if(targetCapacity>=8) {
+        /* This loop is unrolled for speed and improved pipelining. */
+        int32_t count, loops;
+        UChar oredChars;
+
+        loops=count=targetCapacity>>3;
+        do {
+            oredChars=target[0]=source[0];
+            oredChars|=target[1]=source[1];
+            oredChars|=target[2]=source[2];
+            oredChars|=target[3]=source[3];
+            oredChars|=target[4]=source[4];
+            oredChars|=target[5]=source[5];
+            oredChars|=target[6]=source[6];
+            oredChars|=target[7]=source[7];
+
+            /* were all 16 entries really valid? */
+            if(oredChars>0x7f) {
+                /* no, return to the first of these 16 */
+                break;
+            }
+            source+=8;
+            target+=8;
+        } while(--count>0);
+        count=loops-count;
+        targetCapacity-=count*8;
+
+        if(offsets!=NULL) {
+            oldTarget+=count*8;
+            while(count>0) {
+                offsets[0]=sourceIndex++;
+                offsets[1]=sourceIndex++;
+                offsets[2]=sourceIndex++;
+                offsets[3]=sourceIndex++;
+                offsets[4]=sourceIndex++;
+                offsets[5]=sourceIndex++;
+                offsets[6]=sourceIndex++;
+                offsets[7]=sourceIndex++;
+                offsets+=8;
+                --count;
+            }
+        }
+    }
+
+    /* conversion loop */
+    c=0;
+    while(targetCapacity>0 && (c=*source++)<=0x7f) {
+        *target++=c;
+        --targetCapacity;
+    }
+
+    if(c>0x7f) {
+        /* callback(illegal); copy the current bytes to toUBytes[] */
+        UConverter *cnv=pArgs->converter;
+        cnv->toUBytes[0]=c;
+        cnv->toULength=1;
+        *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+    } else if(source<sourceLimit && target>=pArgs->targetLimit) {
+        /* target is full */
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    /* set offsets since the start */
+    if(offsets!=NULL) {
+        size_t count=target-oldTarget;
+        while(count>0) {
+            *offsets++=sourceIndex++;
+            --count;
+        }
+    }
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+}
+
+/* This is a table-less version of ucnv_MBCSSingleGetNextUChar(). */
+static UChar32
+_ASCIIGetNextUChar(UConverterToUnicodeArgs *pArgs,
+                   UErrorCode *pErrorCode) {
+    const uint8_t *source;
+    uint8_t b;
+
+    source=(const uint8_t *)pArgs->source;
+    if(source<(const uint8_t *)pArgs->sourceLimit) {
+        b=*source++;
+        pArgs->source=(const char *)source;
+        if(b<=0x7f) {
+            return b;
+        } else {
+            UConverter *cnv=pArgs->converter;
+            cnv->toUBytes[0]=b;
+            cnv->toULength=1;
+            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+            return 0xffff;
+        }
+    }
+
+    /* no output because of empty input */
+    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+    return 0xffff;
+}
+
+/* "Convert" UTF-8 to US-ASCII: Validate and copy. */
+static void
+ucnv_ASCIIFromUTF8(UConverterFromUnicodeArgs *pFromUArgs,
+                   UConverterToUnicodeArgs *pToUArgs,
+                   UErrorCode *pErrorCode) {
+    const uint8_t *source, *sourceLimit;
+    uint8_t *target;
+    int32_t targetCapacity, length;
+
+    uint8_t c;
+
+    if(pToUArgs->converter->toUnicodeStatus!=0) {
+        /* no handling of partial UTF-8 characters here, fall back to pivoting */
+        *pErrorCode=U_USING_DEFAULT_WARNING;
+        return;
+    }
+
+    /* set up the local pointers */
+    source=(const uint8_t *)pToUArgs->source;
+    sourceLimit=(const uint8_t *)pToUArgs->sourceLimit;
+    target=(uint8_t *)pFromUArgs->target;
+    targetCapacity=(int32_t)(pFromUArgs->targetLimit-pFromUArgs->target);
+
+    /*
+     * since the conversion here is 1:1 uint8_t:uint8_t, we need only one counter
+     * for the minimum of the sourceLength and targetCapacity
+     */
+    length=(int32_t)(sourceLimit-source);
+    if(length<targetCapacity) {
+        targetCapacity=length;
+    }
+
+    /* unroll the loop with the most common case */
+    if(targetCapacity>=16) {
+        int32_t count, loops;
+        uint8_t oredChars;
+
+        loops=count=targetCapacity>>4;
+        do {
+            oredChars=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+            oredChars|=*target++=*source++;
+
+            /* were all 16 entries really valid? */
+            if(oredChars>0x7f) {
+                /* no, return to the first of these 16 */
+                source-=16;
+                target-=16;
+                break;
+            }
+        } while(--count>0);
+        count=loops-count;
+        targetCapacity-=16*count;
+    }
+
+    /* conversion loop */
+    c=0;
+    while(targetCapacity>0 && (c=*source)<=0x7f) {
+        ++source;
+        *target++=c;
+        --targetCapacity;
+    }
+
+    if(c>0x7f) {
+        /* non-ASCII character, handle in standard converter */
+        *pErrorCode=U_USING_DEFAULT_WARNING;
+    } else if(source<sourceLimit && target>=(const uint8_t *)pFromUArgs->targetLimit) {
+        /* target is full */
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+
+    /* write back the updated pointers */
+    pToUArgs->source=(const char *)source;
+    pFromUArgs->target=(char *)target;
+}
+
+static void
+_ASCIIGetUnicodeSet(const UConverter *cnv,
+                    const USetAdder *sa,
+                    UConverterUnicodeSet which,
+                    UErrorCode *pErrorCode) {
+    sa->addRange(sa->set, 0, 0x7f);
+}
+
+static const UConverterImpl _ASCIIImpl={
+    UCNV_US_ASCII,
+
+    NULL,
+    NULL,
+
+    NULL,
+    NULL,
+    NULL,
+
+    _ASCIIToUnicodeWithOffsets,
+    _ASCIIToUnicodeWithOffsets,
+    _Latin1FromUnicodeWithOffsets,
+    _Latin1FromUnicodeWithOffsets,
+    _ASCIIGetNextUChar,
+
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    _ASCIIGetUnicodeSet,
+
+    NULL,
+    ucnv_ASCIIFromUTF8
+};
+
+static const UConverterStaticData _ASCIIStaticData={
+    sizeof(UConverterStaticData),
+    "US-ASCII",
+    367, UCNV_IBM, UCNV_US_ASCII, 1, 1,
+    { 0x1a, 0, 0, 0 }, 1, FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _ASCIIData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_ASCIIStaticData, &_ASCIIImpl);
+
+#endif
index 7f37eee..ffbb9af 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnvmbcs.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 209cdc5..5bbbae7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ucnvmbcs.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ucnvscsu.c b/source/common/ucnvscsu.c
new file mode 100644 (file)
index 0000000..9849cde
--- /dev/null
@@ -0,0 +1,2043 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 2000-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  ucnvscsu.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2000nov18
+*   created by: Markus W. Scherer
+*
+*   This is an implementation of the Standard Compression Scheme for Unicode
+*   as defined in http://www.unicode.org/unicode/reports/tr6/ .
+*   Reserved commands and window settings are treated as illegal sequences and
+*   will result in callback calls.
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_ONLY_HTML_CONVERSION
+
+#include "unicode/ucnv.h"
+#include "unicode/ucnv_cb.h"
+#include "unicode/utf16.h"
+#include "ucnv_bld.h"
+#include "ucnv_cnv.h"
+#include "cmemory.h"
+
+/* SCSU definitions --------------------------------------------------------- */
+
+/* SCSU command byte values */
+enum {
+    SQ0=0x01, /* Quote from window pair 0 */
+    SQ7=0x08, /* Quote from window pair 7 */
+    SDX=0x0B, /* Define a window as extended */
+    Srs=0x0C, /* reserved */
+    SQU=0x0E, /* Quote a single Unicode character */
+    SCU=0x0F, /* Change to Unicode mode */
+    SC0=0x10, /* Select window 0 */
+    SC7=0x17, /* Select window 7 */
+    SD0=0x18, /* Define and select window 0 */
+    SD7=0x1F, /* Define and select window 7 */
+
+    UC0=0xE0, /* Select window 0 */
+    UC7=0xE7, /* Select window 7 */
+    UD0=0xE8, /* Define and select window 0 */
+    UD7=0xEF, /* Define and select window 7 */
+    UQU=0xF0, /* Quote a single Unicode character */
+    UDX=0xF1, /* Define a Window as extended */
+    Urs=0xF2  /* reserved */
+};
+
+enum {
+    /*
+     * Unicode code points from 3400 to E000 are not adressible by
+     * dynamic window, since in these areas no short run alphabets are
+     * found. Therefore add gapOffset to all values from gapThreshold.
+     */
+    gapThreshold=0x68,
+    gapOffset=0xAC00,
+
+    /* values between reservedStart and fixedThreshold are reserved */
+    reservedStart=0xA8,
+
+    /* use table of predefined fixed offsets for values from fixedThreshold */
+    fixedThreshold=0xF9
+};
+
+/* constant offsets for the 8 static windows */
+static const uint32_t staticOffsets[8]={
+    0x0000, /* ASCII for quoted tags */
+    0x0080, /* Latin - 1 Supplement (for access to punctuation) */
+    0x0100, /* Latin Extended-A */
+    0x0300, /* Combining Diacritical Marks */
+    0x2000, /* General Punctuation */
+    0x2080, /* Currency Symbols */
+    0x2100, /* Letterlike Symbols and Number Forms */
+    0x3000  /* CJK Symbols and punctuation */
+};
+
+/* initial offsets for the 8 dynamic (sliding) windows */
+static const uint32_t initialDynamicOffsets[8]={
+    0x0080, /* Latin-1 */
+    0x00C0, /* Latin Extended A */
+    0x0400, /* Cyrillic */
+    0x0600, /* Arabic */
+    0x0900, /* Devanagari */
+    0x3040, /* Hiragana */
+    0x30A0, /* Katakana */
+    0xFF00  /* Fullwidth ASCII */
+};
+
+/* Table of fixed predefined Offsets */
+static const uint32_t fixedOffsets[]={
+    /* 0xF9 */ 0x00C0, /* Latin-1 Letters + half of Latin Extended A */
+    /* 0xFA */ 0x0250, /* IPA extensions */
+    /* 0xFB */ 0x0370, /* Greek */
+    /* 0xFC */ 0x0530, /* Armenian */
+    /* 0xFD */ 0x3040, /* Hiragana */
+    /* 0xFE */ 0x30A0, /* Katakana */
+    /* 0xFF */ 0xFF60  /* Halfwidth Katakana */
+};
+
+/* state values */
+enum {
+    readCommand,
+    quotePairOne,
+    quotePairTwo,
+    quoteOne,
+    definePairOne,
+    definePairTwo,
+    defineOne
+};
+
+typedef struct SCSUData {
+    /* dynamic window offsets, intitialize to default values from initialDynamicOffsets */
+    uint32_t toUDynamicOffsets[8];
+    uint32_t fromUDynamicOffsets[8];
+
+    /* state machine state - toUnicode */
+    UBool toUIsSingleByteMode;
+    uint8_t toUState;
+    int8_t toUQuoteWindow, toUDynamicWindow;
+    uint8_t toUByteOne;
+    uint8_t toUPadding[3];
+
+    /* state machine state - fromUnicode */
+    UBool fromUIsSingleByteMode;
+    int8_t fromUDynamicWindow;
+
+    /*
+     * windowUse[] keeps track of the use of the dynamic windows:
+     * At nextWindowUseIndex there is the least recently used window,
+     * and the following windows (in a wrapping manner) are more and more
+     * recently used.
+     * At nextWindowUseIndex-1 there is the most recently used window.
+     */
+    uint8_t locale;
+    int8_t nextWindowUseIndex;
+    int8_t windowUse[8];
+} SCSUData;
+
+static const int8_t initialWindowUse[8]={ 7, 0, 3, 2, 4, 5, 6, 1 };
+static const int8_t initialWindowUse_ja[8]={ 3, 2, 4, 1, 0, 7, 5, 6 };
+
+enum {
+    lGeneric, l_ja
+};
+
+/* SCSU setup functions ----------------------------------------------------- */
+
+static void
+_SCSUReset(UConverter *cnv, UConverterResetChoice choice) {
+    SCSUData *scsu=(SCSUData *)cnv->extraInfo;
+
+    if(choice<=UCNV_RESET_TO_UNICODE) {
+        /* reset toUnicode */
+        uprv_memcpy(scsu->toUDynamicOffsets, initialDynamicOffsets, 32);
+
+        scsu->toUIsSingleByteMode=TRUE;
+        scsu->toUState=readCommand;
+        scsu->toUQuoteWindow=scsu->toUDynamicWindow=0;
+        scsu->toUByteOne=0;
+
+        cnv->toULength=0;
+    }
+    if(choice!=UCNV_RESET_TO_UNICODE) {
+        /* reset fromUnicode */
+        uprv_memcpy(scsu->fromUDynamicOffsets, initialDynamicOffsets, 32);
+
+        scsu->fromUIsSingleByteMode=TRUE;
+        scsu->fromUDynamicWindow=0;
+
+        scsu->nextWindowUseIndex=0;
+        switch(scsu->locale) {
+        case l_ja:
+            uprv_memcpy(scsu->windowUse, initialWindowUse_ja, 8);
+            break;
+        default:
+            uprv_memcpy(scsu->windowUse, initialWindowUse, 8);
+            break;
+        }
+
+        cnv->fromUChar32=0;
+    }
+}
+
+static void
+_SCSUOpen(UConverter *cnv,
+          UConverterLoadArgs *pArgs,
+          UErrorCode *pErrorCode) {
+    const char *locale=pArgs->locale;
+    if(pArgs->onlyTestIsLoadable) {
+        return;
+    }
+    cnv->extraInfo=uprv_malloc(sizeof(SCSUData));
+    if(cnv->extraInfo!=NULL) {
+        if(locale!=NULL && locale[0]=='j' && locale[1]=='a' && (locale[2]==0 || locale[2]=='_')) {
+            ((SCSUData *)cnv->extraInfo)->locale=l_ja;
+        } else {
+            ((SCSUData *)cnv->extraInfo)->locale=lGeneric;
+        }
+        _SCSUReset(cnv, UCNV_RESET_BOTH);
+    } else {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+    }
+
+    /* Set the substitution character U+fffd as a Unicode string. */
+    cnv->subUChars[0]=0xfffd;
+    cnv->subCharLen=-1;
+}
+
+static void
+_SCSUClose(UConverter *cnv) {
+    if(cnv->extraInfo!=NULL) {
+        if(!cnv->isExtraLocal) {
+            uprv_free(cnv->extraInfo);
+        }
+        cnv->extraInfo=NULL;
+    }
+}
+
+/* SCSU-to-Unicode conversion functions ------------------------------------- */
+
+static void
+_SCSUToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
+                          UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    SCSUData *scsu;
+    const uint8_t *source, *sourceLimit;
+    UChar *target;
+    const UChar *targetLimit;
+    int32_t *offsets;
+    UBool isSingleByteMode;
+    uint8_t state, byteOne;
+    int8_t quoteWindow, dynamicWindow;
+
+    int32_t sourceIndex, nextSourceIndex;
+
+    uint8_t b;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+    scsu=(SCSUData *)cnv->extraInfo;
+
+    source=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+    target=pArgs->target;
+    targetLimit=pArgs->targetLimit;
+    offsets=pArgs->offsets;
+
+    /* get the state machine state */
+    isSingleByteMode=scsu->toUIsSingleByteMode;
+    state=scsu->toUState;
+    quoteWindow=scsu->toUQuoteWindow;
+    dynamicWindow=scsu->toUDynamicWindow;
+    byteOne=scsu->toUByteOne;
+
+    /* sourceIndex=-1 if the current character began in the previous buffer */
+    sourceIndex=state==readCommand ? 0 : -1;
+    nextSourceIndex=0;
+
+    /*
+     * conversion "loop"
+     *
+     * For performance, this is not a normal C loop.
+     * Instead, there are two code blocks for the two SCSU modes.
+     * The function branches to either one, and a change of the mode is done with a goto to
+     * the other branch.
+     *
+     * Each branch has two conventional loops:
+     * - a fast-path loop for the most common codes in the mode
+     * - a loop for all other codes in the mode
+     * When the fast-path runs into a code that it cannot handle, its loop ends and it
+     * runs into the following loop to handle the other codes.
+     * The end of the input or output buffer is also handled by the slower loop.
+     * The slow loop jumps (goto) to the fast-path loop again as soon as possible.
+     *
+     * The callback handling is done by returning with an error code.
+     * The conversion framework actually calls the callback function.
+     */
+    if(isSingleByteMode) {
+        /* fast path for single-byte mode */
+        if(state==readCommand) {
+fastSingle:
+            while(source<sourceLimit && target<targetLimit && (b=*source)>=0x20) {
+                ++source;
+                ++nextSourceIndex;
+                if(b<=0x7f) {
+                    /* write US-ASCII graphic character or DEL */
+                    *target++=(UChar)b;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                } else {
+                    /* write from dynamic window */
+                    uint32_t c=scsu->toUDynamicOffsets[dynamicWindow]+(b&0x7f);
+                    if(c<=0xffff) {
+                        *target++=(UChar)c;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                        }
+                    } else {
+                        /* output surrogate pair */
+                        *target++=(UChar)(0xd7c0+(c>>10));
+                        if(target<targetLimit) {
+                            *target++=(UChar)(0xdc00|(c&0x3ff));
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex;
+                                *offsets++=sourceIndex;
+                            }
+                        } else {
+                            /* target overflow */
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex;
+                            }
+                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+                            cnv->UCharErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            goto endloop;
+                        }
+                    }
+                }
+                sourceIndex=nextSourceIndex;
+            }
+        }
+
+        /* normal state machine for single-byte mode, minus handling for what fastSingle covers */
+singleByteMode:
+        while(source<sourceLimit) {
+            if(target>=targetLimit) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            b=*source++;
+            ++nextSourceIndex;
+            switch(state) {
+            case readCommand:
+                /* redundant conditions are commented out */
+                /* here: b<0x20 because otherwise we would be in fastSingle */
+                if((1UL<<b)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
+                    /* CR/LF/TAB/NUL */
+                    *target++=(UChar)b;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                    sourceIndex=nextSourceIndex;
+                    goto fastSingle;
+                } else if(SC0<=b) {
+                    if(b<=SC7) {
+                        dynamicWindow=(int8_t)(b-SC0);
+                        sourceIndex=nextSourceIndex;
+                        goto fastSingle;
+                    } else /* if(SD0<=b && b<=SD7) */ {
+                        dynamicWindow=(int8_t)(b-SD0);
+                        state=defineOne;
+                    }
+                } else if(/* SQ0<=b && */ b<=SQ7) {
+                    quoteWindow=(int8_t)(b-SQ0);
+                    state=quoteOne;
+                } else if(b==SDX) {
+                    state=definePairOne;
+                } else if(b==SQU) {
+                    state=quotePairOne;
+                } else if(b==SCU) {
+                    sourceIndex=nextSourceIndex;
+                    isSingleByteMode=FALSE;
+                    goto fastUnicode;
+                } else /* Srs */ {
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    goto endloop;
+                }
+
+                /* store the first byte of a multibyte sequence in toUBytes[] */
+                cnv->toUBytes[0]=b;
+                cnv->toULength=1;
+                break;
+            case quotePairOne:
+                byteOne=b;
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                state=quotePairTwo;
+                break;
+            case quotePairTwo:
+                *target++=(UChar)((byteOne<<8)|b);
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                sourceIndex=nextSourceIndex;
+                state=readCommand;
+                goto fastSingle;
+            case quoteOne:
+                if(b<0x80) {
+                    /* all static offsets are in the BMP */
+                    *target++=(UChar)(staticOffsets[quoteWindow]+b);
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                } else {
+                    /* write from dynamic window */
+                    uint32_t c=scsu->toUDynamicOffsets[quoteWindow]+(b&0x7f);
+                    if(c<=0xffff) {
+                        *target++=(UChar)c;
+                        if(offsets!=NULL) {
+                            *offsets++=sourceIndex;
+                        }
+                    } else {
+                        /* output surrogate pair */
+                        *target++=(UChar)(0xd7c0+(c>>10));
+                        if(target<targetLimit) {
+                            *target++=(UChar)(0xdc00|(c&0x3ff));
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex;
+                                *offsets++=sourceIndex;
+                            }
+                        } else {
+                            /* target overflow */
+                            if(offsets!=NULL) {
+                                *offsets++=sourceIndex;
+                            }
+                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+                            cnv->UCharErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            goto endloop;
+                        }
+                    }
+                }
+                sourceIndex=nextSourceIndex;
+                state=readCommand;
+                goto fastSingle;
+            case definePairOne:
+                dynamicWindow=(int8_t)((b>>5)&7);
+                byteOne=(uint8_t)(b&0x1f);
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                state=definePairTwo;
+                break;
+            case definePairTwo:
+                scsu->toUDynamicOffsets[dynamicWindow]=0x10000+(byteOne<<15UL | b<<7UL);
+                sourceIndex=nextSourceIndex;
+                state=readCommand;
+                goto fastSingle;
+            case defineOne:
+                if(b==0) {
+                    /* callback(illegal): Reserved window offset value 0 */
+                    cnv->toUBytes[1]=b;
+                    cnv->toULength=2;
+                    goto endloop;
+                } else if(b<gapThreshold) {
+                    scsu->toUDynamicOffsets[dynamicWindow]=b<<7UL;
+                } else if((uint8_t)(b-gapThreshold)<(reservedStart-gapThreshold)) {
+                    scsu->toUDynamicOffsets[dynamicWindow]=(b<<7UL)+gapOffset;
+                } else if(b>=fixedThreshold) {
+                    scsu->toUDynamicOffsets[dynamicWindow]=fixedOffsets[b-fixedThreshold];
+                } else {
+                    /* callback(illegal): Reserved window offset value 0xa8..0xf8 */
+                    cnv->toUBytes[1]=b;
+                    cnv->toULength=2;
+                    goto endloop;
+                }
+                sourceIndex=nextSourceIndex;
+                state=readCommand;
+                goto fastSingle;
+            }
+        }
+    } else {
+        /* fast path for Unicode mode */
+        if(state==readCommand) {
+fastUnicode:
+            while(source+1<sourceLimit && target<targetLimit && (uint8_t)((b=*source)-UC0)>(Urs-UC0)) {
+                *target++=(UChar)((b<<8)|source[1]);
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                sourceIndex=nextSourceIndex;
+                nextSourceIndex+=2;
+                source+=2;
+            }
+        }
+
+        /* normal state machine for Unicode mode */
+/* unicodeByteMode: */
+        while(source<sourceLimit) {
+            if(target>=targetLimit) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            b=*source++;
+            ++nextSourceIndex;
+            switch(state) {
+            case readCommand:
+                if((uint8_t)(b-UC0)>(Urs-UC0)) {
+                    byteOne=b;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=quotePairTwo;
+                } else if(/* UC0<=b && */ b<=UC7) {
+                    dynamicWindow=(int8_t)(b-UC0);
+                    sourceIndex=nextSourceIndex;
+                    isSingleByteMode=TRUE;
+                    goto fastSingle;
+                } else if(/* UD0<=b && */ b<=UD7) {
+                    dynamicWindow=(int8_t)(b-UD0);
+                    isSingleByteMode=TRUE;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=defineOne;
+                    goto singleByteMode;
+                } else if(b==UDX) {
+                    isSingleByteMode=TRUE;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=definePairOne;
+                    goto singleByteMode;
+                } else if(b==UQU) {
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=quotePairOne;
+                } else /* Urs */ {
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    goto endloop;
+                }
+                break;
+            case quotePairOne:
+                byteOne=b;
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                state=quotePairTwo;
+                break;
+            case quotePairTwo:
+                *target++=(UChar)((byteOne<<8)|b);
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                sourceIndex=nextSourceIndex;
+                state=readCommand;
+                goto fastUnicode;
+            }
+        }
+    }
+endloop:
+
+    /* set the converter state back into UConverter */
+    if(U_FAILURE(*pErrorCode) && *pErrorCode!=U_BUFFER_OVERFLOW_ERROR) {
+        /* reset to deal with the next character */
+        state=readCommand;
+    } else if(state==readCommand) {
+        /* not in a multi-byte sequence, reset toULength */
+        cnv->toULength=0;
+    }
+    scsu->toUIsSingleByteMode=isSingleByteMode;
+    scsu->toUState=state;
+    scsu->toUQuoteWindow=quoteWindow;
+    scsu->toUDynamicWindow=dynamicWindow;
+    scsu->toUByteOne=byteOne;
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    pArgs->offsets=offsets;
+    return;
+}
+
+/*
+ * Identical to _SCSUToUnicodeWithOffsets but without offset handling.
+ * If a change is made in the original function, then either
+ * change this function the same way or
+ * re-copy the original function and remove the variables
+ * offsets, sourceIndex, and nextSourceIndex.
+ */
+static void
+_SCSUToUnicode(UConverterToUnicodeArgs *pArgs,
+               UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    SCSUData *scsu;
+    const uint8_t *source, *sourceLimit;
+    UChar *target;
+    const UChar *targetLimit;
+    UBool isSingleByteMode;
+    uint8_t state, byteOne;
+    int8_t quoteWindow, dynamicWindow;
+
+    uint8_t b;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+    scsu=(SCSUData *)cnv->extraInfo;
+
+    source=(const uint8_t *)pArgs->source;
+    sourceLimit=(const uint8_t *)pArgs->sourceLimit;
+    target=pArgs->target;
+    targetLimit=pArgs->targetLimit;
+
+    /* get the state machine state */
+    isSingleByteMode=scsu->toUIsSingleByteMode;
+    state=scsu->toUState;
+    quoteWindow=scsu->toUQuoteWindow;
+    dynamicWindow=scsu->toUDynamicWindow;
+    byteOne=scsu->toUByteOne;
+
+    /*
+     * conversion "loop"
+     *
+     * For performance, this is not a normal C loop.
+     * Instead, there are two code blocks for the two SCSU modes.
+     * The function branches to either one, and a change of the mode is done with a goto to
+     * the other branch.
+     *
+     * Each branch has two conventional loops:
+     * - a fast-path loop for the most common codes in the mode
+     * - a loop for all other codes in the mode
+     * When the fast-path runs into a code that it cannot handle, its loop ends and it
+     * runs into the following loop to handle the other codes.
+     * The end of the input or output buffer is also handled by the slower loop.
+     * The slow loop jumps (goto) to the fast-path loop again as soon as possible.
+     *
+     * The callback handling is done by returning with an error code.
+     * The conversion framework actually calls the callback function.
+     */
+    if(isSingleByteMode) {
+        /* fast path for single-byte mode */
+        if(state==readCommand) {
+fastSingle:
+            while(source<sourceLimit && target<targetLimit && (b=*source)>=0x20) {
+                ++source;
+                if(b<=0x7f) {
+                    /* write US-ASCII graphic character or DEL */
+                    *target++=(UChar)b;
+                } else {
+                    /* write from dynamic window */
+                    uint32_t c=scsu->toUDynamicOffsets[dynamicWindow]+(b&0x7f);
+                    if(c<=0xffff) {
+                        *target++=(UChar)c;
+                    } else {
+                        /* output surrogate pair */
+                        *target++=(UChar)(0xd7c0+(c>>10));
+                        if(target<targetLimit) {
+                            *target++=(UChar)(0xdc00|(c&0x3ff));
+                        } else {
+                            /* target overflow */
+                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+                            cnv->UCharErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            goto endloop;
+                        }
+                    }
+                }
+            }
+        }
+
+        /* normal state machine for single-byte mode, minus handling for what fastSingle covers */
+singleByteMode:
+        while(source<sourceLimit) {
+            if(target>=targetLimit) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            b=*source++;
+            switch(state) {
+            case readCommand:
+                /* redundant conditions are commented out */
+                /* here: b<0x20 because otherwise we would be in fastSingle */
+                if((1UL<<b)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
+                    /* CR/LF/TAB/NUL */
+                    *target++=(UChar)b;
+                    goto fastSingle;
+                } else if(SC0<=b) {
+                    if(b<=SC7) {
+                        dynamicWindow=(int8_t)(b-SC0);
+                        goto fastSingle;
+                    } else /* if(SD0<=b && b<=SD7) */ {
+                        dynamicWindow=(int8_t)(b-SD0);
+                        state=defineOne;
+                    }
+                } else if(/* SQ0<=b && */ b<=SQ7) {
+                    quoteWindow=(int8_t)(b-SQ0);
+                    state=quoteOne;
+                } else if(b==SDX) {
+                    state=definePairOne;
+                } else if(b==SQU) {
+                    state=quotePairOne;
+                } else if(b==SCU) {
+                    isSingleByteMode=FALSE;
+                    goto fastUnicode;
+                } else /* Srs */ {
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    goto endloop;
+                }
+
+                /* store the first byte of a multibyte sequence in toUBytes[] */
+                cnv->toUBytes[0]=b;
+                cnv->toULength=1;
+                break;
+            case quotePairOne:
+                byteOne=b;
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                state=quotePairTwo;
+                break;
+            case quotePairTwo:
+                *target++=(UChar)((byteOne<<8)|b);
+                state=readCommand;
+                goto fastSingle;
+            case quoteOne:
+                if(b<0x80) {
+                    /* all static offsets are in the BMP */
+                    *target++=(UChar)(staticOffsets[quoteWindow]+b);
+                } else {
+                    /* write from dynamic window */
+                    uint32_t c=scsu->toUDynamicOffsets[quoteWindow]+(b&0x7f);
+                    if(c<=0xffff) {
+                        *target++=(UChar)c;
+                    } else {
+                        /* output surrogate pair */
+                        *target++=(UChar)(0xd7c0+(c>>10));
+                        if(target<targetLimit) {
+                            *target++=(UChar)(0xdc00|(c&0x3ff));
+                        } else {
+                            /* target overflow */
+                            cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+                            cnv->UCharErrorBufferLength=1;
+                            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                            goto endloop;
+                        }
+                    }
+                }
+                state=readCommand;
+                goto fastSingle;
+            case definePairOne:
+                dynamicWindow=(int8_t)((b>>5)&7);
+                byteOne=(uint8_t)(b&0x1f);
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                state=definePairTwo;
+                break;
+            case definePairTwo:
+                scsu->toUDynamicOffsets[dynamicWindow]=0x10000+(byteOne<<15UL | b<<7UL);
+                state=readCommand;
+                goto fastSingle;
+            case defineOne:
+                if(b==0) {
+                    /* callback(illegal): Reserved window offset value 0 */
+                    cnv->toUBytes[1]=b;
+                    cnv->toULength=2;
+                    goto endloop;
+                } else if(b<gapThreshold) {
+                    scsu->toUDynamicOffsets[dynamicWindow]=b<<7UL;
+                } else if((uint8_t)(b-gapThreshold)<(reservedStart-gapThreshold)) {
+                    scsu->toUDynamicOffsets[dynamicWindow]=(b<<7UL)+gapOffset;
+                } else if(b>=fixedThreshold) {
+                    scsu->toUDynamicOffsets[dynamicWindow]=fixedOffsets[b-fixedThreshold];
+                } else {
+                    /* callback(illegal): Reserved window offset value 0xa8..0xf8 */
+                    cnv->toUBytes[1]=b;
+                    cnv->toULength=2;
+                    goto endloop;
+                }
+                state=readCommand;
+                goto fastSingle;
+            }
+        }
+    } else {
+        /* fast path for Unicode mode */
+        if(state==readCommand) {
+fastUnicode:
+            while(source+1<sourceLimit && target<targetLimit && (uint8_t)((b=*source)-UC0)>(Urs-UC0)) {
+                *target++=(UChar)((b<<8)|source[1]);
+                source+=2;
+            }
+        }
+
+        /* normal state machine for Unicode mode */
+/* unicodeByteMode: */
+        while(source<sourceLimit) {
+            if(target>=targetLimit) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            b=*source++;
+            switch(state) {
+            case readCommand:
+                if((uint8_t)(b-UC0)>(Urs-UC0)) {
+                    byteOne=b;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=quotePairTwo;
+                } else if(/* UC0<=b && */ b<=UC7) {
+                    dynamicWindow=(int8_t)(b-UC0);
+                    isSingleByteMode=TRUE;
+                    goto fastSingle;
+                } else if(/* UD0<=b && */ b<=UD7) {
+                    dynamicWindow=(int8_t)(b-UD0);
+                    isSingleByteMode=TRUE;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=defineOne;
+                    goto singleByteMode;
+                } else if(b==UDX) {
+                    isSingleByteMode=TRUE;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=definePairOne;
+                    goto singleByteMode;
+                } else if(b==UQU) {
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    state=quotePairOne;
+                } else /* Urs */ {
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    cnv->toUBytes[0]=b;
+                    cnv->toULength=1;
+                    goto endloop;
+                }
+                break;
+            case quotePairOne:
+                byteOne=b;
+                cnv->toUBytes[1]=b;
+                cnv->toULength=2;
+                state=quotePairTwo;
+                break;
+            case quotePairTwo:
+                *target++=(UChar)((byteOne<<8)|b);
+                state=readCommand;
+                goto fastUnicode;
+            }
+        }
+    }
+endloop:
+
+    /* set the converter state back into UConverter */
+    if(U_FAILURE(*pErrorCode) && *pErrorCode!=U_BUFFER_OVERFLOW_ERROR) {
+        /* reset to deal with the next character */
+        state=readCommand;
+    } else if(state==readCommand) {
+        /* not in a multi-byte sequence, reset toULength */
+        cnv->toULength=0;
+    }
+    scsu->toUIsSingleByteMode=isSingleByteMode;
+    scsu->toUState=state;
+    scsu->toUQuoteWindow=quoteWindow;
+    scsu->toUDynamicWindow=dynamicWindow;
+    scsu->toUByteOne=byteOne;
+
+    /* write back the updated pointers */
+    pArgs->source=(const char *)source;
+    pArgs->target=target;
+    return;
+}
+
+/* SCSU-from-Unicode conversion functions ----------------------------------- */
+
+/*
+ * This SCSU Encoder is fairly simple but uses all SCSU commands to achieve
+ * reasonable results. The lookahead is minimal.
+ * Many cases are simple:
+ * A character fits directly into the current mode, a dynamic or static window,
+ * or is not compressible. These cases are tested first.
+ * Real compression heuristics are applied to the rest, in code branches for
+ * single/Unicode mode and BMP/supplementary code points.
+ * The heuristics used here are extremely simple.
+ */
+
+/* get the number of the window that this character is in, or -1 */
+static int8_t
+getWindow(const uint32_t offsets[8], uint32_t c) {
+    int i;
+    for(i=0; i<8; ++i) {
+        if((uint32_t)(c-offsets[i])<=0x7f) {
+            return (int8_t)(i);
+        }
+    }
+    return -1;
+}
+
+/* is the character in the dynamic window starting at the offset, or in the direct-encoded range? */
+static UBool
+isInOffsetWindowOrDirect(uint32_t offset, uint32_t c) {
+    return (UBool)(c<=offset+0x7f &&
+          (c>=offset || (c<=0x7f &&
+                        (c>=0x20 || (1UL<<c)&0x2601))));
+                                /* binary 0010 0110 0000 0001,
+                                   check for b==0xd || b==0xa || b==9 || b==0 */
+}
+
+/*
+ * getNextDynamicWindow returns the next dynamic window to be redefined
+ */
+static int8_t
+getNextDynamicWindow(SCSUData *scsu) {
+    int8_t window=scsu->windowUse[scsu->nextWindowUseIndex];
+    if(++scsu->nextWindowUseIndex==8) {
+        scsu->nextWindowUseIndex=0;
+    }
+    return window;
+}
+
+/*
+ * useDynamicWindow() adjusts
+ * windowUse[] and nextWindowUseIndex for the algorithm to choose
+ * the next dynamic window to be defined;
+ * a subclass may override it and provide its own algorithm.
+ */
+static void
+useDynamicWindow(SCSUData *scsu, int8_t window) {
+    /*
+     * move the existing window, which just became the most recently used one,
+     * up in windowUse[] to nextWindowUseIndex-1
+     */
+
+    /* first, find the index of the window - backwards to favor the more recently used windows */
+    int i, j;
+
+    i=scsu->nextWindowUseIndex;
+    do {
+        if(--i<0) {
+            i=7;
+        }
+    } while(scsu->windowUse[i]!=window);
+
+    /* now copy each windowUse[i+1] to [i] */
+    j=i+1;
+    if(j==8) {
+        j=0;
+    }
+    while(j!=scsu->nextWindowUseIndex) {
+        scsu->windowUse[i]=scsu->windowUse[j];
+        i=j;
+        if(++j==8) { j=0; }
+    }
+
+    /* finally, set the window into the most recently used index */
+    scsu->windowUse[i]=window;
+}
+
+/*
+ * calculate the offset and the code for a dynamic window that contains the character
+ * takes fixed offsets into account
+ * the offset of the window is stored in the offset variable,
+ * the code is returned
+ *
+ * return offset code: -1 none  <=0xff code for SDn/UDn  else code for SDX/UDX, subtract 0x200 to get the true code
+ */
+static int
+getDynamicOffset(uint32_t c, uint32_t *pOffset) {
+    int i;
+
+    for(i=0; i<7; ++i) {
+        if((uint32_t)(c-fixedOffsets[i])<=0x7f) {
+            *pOffset=fixedOffsets[i];
+            return 0xf9+i;
+        }
+    }
+
+    if(c<0x80) {
+        /* No dynamic window for US-ASCII. */
+        return -1;
+    } else if(c<0x3400 ||
+              (uint32_t)(c-0x10000)<(0x14000-0x10000) ||
+              (uint32_t)(c-0x1d000)<=(0x1ffff-0x1d000)
+    ) {
+        /* This character is in a code range for a "small", i.e., reasonably windowable, script. */
+        *pOffset=c&0x7fffff80;
+        return (int)(c>>7);
+    } else if(0xe000<=c && c!=0xfeff && c<0xfff0) {
+        /* For these characters we need to take the gapOffset into account. */
+        *pOffset=c&0x7fffff80;
+        return (int)((c-gapOffset)>>7);
+    } else {
+        return -1;
+    }
+}
+
+/*
+ * Idea for compression:
+ *  - save SCSUData and other state before really starting work
+ *  - at endloop, see if compression could be better with just unicode mode
+ *  - don't do this if a callback has been called
+ *  - if unicode mode would be smaller, then override the results with it - may need SCU at the beginning
+ *  - different buffer handling!
+ *
+ * Drawback or need for corrective handling:
+ * it is desirable to encode U+feff as SQU fe ff for the SCSU signature, and
+ * it is desirable to start a document in US-ASCII/Latin-1 for as long as possible
+ * not only for compression but also for HTML/XML documents with following charset/encoding announcers.
+ *
+ * How to achieve both?
+ *  - Only replace the result after an SDX or SCU?
+ */
+
+static void
+_SCSUFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
+                            UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    SCSUData *scsu;
+    const UChar *source, *sourceLimit;
+    uint8_t *target;
+    int32_t targetCapacity;
+    int32_t *offsets;
+
+    UBool isSingleByteMode;
+    uint8_t dynamicWindow;
+    uint32_t currentOffset;
+
+    uint32_t c, delta;
+
+    int32_t sourceIndex, nextSourceIndex;
+
+    int32_t length;
+
+    /* variables for compression heuristics */
+    uint32_t offset;
+    UChar lead, trail;
+    int code;
+    int8_t window;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+    scsu=(SCSUData *)cnv->extraInfo;
+
+    /* set up the local pointers */
+    source=pArgs->source;
+    sourceLimit=pArgs->sourceLimit;
+    target=(uint8_t *)pArgs->target;
+    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
+    offsets=pArgs->offsets;
+
+    /* get the state machine state */
+    isSingleByteMode=scsu->fromUIsSingleByteMode;
+    dynamicWindow=scsu->fromUDynamicWindow;
+    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+
+    c=cnv->fromUChar32;
+
+    /* sourceIndex=-1 if the current character began in the previous buffer */
+    sourceIndex= c==0 ? 0 : -1;
+    nextSourceIndex=0;
+
+    /* similar conversion "loop" as in toUnicode */
+loop:
+    if(isSingleByteMode) {
+        if(c!=0 && targetCapacity>0) {
+            goto getTrailSingle;
+        }
+
+        /* state machine for single-byte mode */
+/* singleByteMode: */
+        while(source<sourceLimit) {
+            if(targetCapacity<=0) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            c=*source++;
+            ++nextSourceIndex;
+
+            if((c-0x20)<=0x5f) {
+                /* pass US-ASCII graphic character through */
+                *target++=(uint8_t)c;
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                --targetCapacity;
+            } else if(c<0x20) {
+                if((1UL<<c)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
+                    /* CR/LF/TAB/NUL */
+                    *target++=(uint8_t)c;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                    --targetCapacity;
+                } else {
+                    /* quote C0 control character */
+                    c|=SQ0<<8;
+                    length=2;
+                    goto outputBytes;
+                }
+            } else if((delta=c-currentOffset)<=0x7f) {
+                /* use the current dynamic window */
+                *target++=(uint8_t)(delta|0x80);
+                if(offsets!=NULL) {
+                    *offsets++=sourceIndex;
+                }
+                --targetCapacity;
+            } else if(U16_IS_SURROGATE(c)) {
+                if(U16_IS_SURROGATE_LEAD(c)) {
+getTrailSingle:
+                    lead=(UChar)c;
+                    if(source<sourceLimit) {
+                        /* test the following code unit */
+                        trail=*source;
+                        if(U16_IS_TRAIL(trail)) {
+                            ++source;
+                            ++nextSourceIndex;
+                            c=U16_GET_SUPPLEMENTARY(c, trail);
+                            /* convert this surrogate code point */
+                            /* exit this condition tree */
+                        } else {
+                            /* this is an unmatched lead code unit (1st surrogate) */
+                            /* callback(illegal) */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                    } else {
+                        /* no more input */
+                        break;
+                    }
+                } else {
+                    /* this is an unmatched trail code unit (2nd surrogate) */
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    goto endloop;
+                }
+
+                /* compress supplementary character U+10000..U+10ffff */
+                if((delta=c-currentOffset)<=0x7f) {
+                    /* use the current dynamic window */
+                    *target++=(uint8_t)(delta|0x80);
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                    --targetCapacity;
+                } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
+                    /* there is a dynamic window that contains this character, change to it */
+                    dynamicWindow=window;
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                    length=2;
+                    goto outputBytes;
+                } else if((code=getDynamicOffset(c, &offset))>=0) {
+                    /* might check if there are more characters in this window to come */
+                    /* define an extended window with this character */
+                    code-=0x200;
+                    dynamicWindow=getNextDynamicWindow(scsu);
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)SDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                    length=4;
+                    goto outputBytes;
+                } else {
+                    /* change to Unicode mode and output this (lead, trail) pair */
+                    isSingleByteMode=FALSE;
+                    *target++=(uint8_t)SCU;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                    }
+                    --targetCapacity;
+                    c=((uint32_t)lead<<16)|trail;
+                    length=4;
+                    goto outputBytes;
+                }
+            } else if(c<0xa0) {
+                /* quote C1 control character */
+                c=(c&0x7f)|(SQ0+1)<<8; /* SQ0+1==SQ1 */
+                length=2;
+                goto outputBytes;
+            } else if(c==0xfeff || c>=0xfff0) {
+                /* quote signature character=byte order mark and specials */
+                c|=SQU<<16;
+                length=3;
+                goto outputBytes;
+            } else {
+                /* compress all other BMP characters */
+                if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
+                    /* there is a window defined that contains this character - switch to it or quote from it? */
+                    if(source>=sourceLimit || isInOffsetWindowOrDirect(scsu->fromUDynamicOffsets[window], *source)) {
+                        /* change to dynamic window */
+                        dynamicWindow=window;
+                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                        useDynamicWindow(scsu, dynamicWindow);
+                        c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                        length=2;
+                        goto outputBytes;
+                    } else {
+                        /* quote from dynamic window */
+                        c=((uint32_t)(SQ0+window)<<8)|(c-scsu->fromUDynamicOffsets[window])|0x80;
+                        length=2;
+                        goto outputBytes;
+                    }
+                } else if((window=getWindow(staticOffsets, c))>=0) {
+                    /* quote from static window */
+                    c=((uint32_t)(SQ0+window)<<8)|(c-staticOffsets[window]);
+                    length=2;
+                    goto outputBytes;
+                } else if((code=getDynamicOffset(c, &offset))>=0) {
+                    /* define a dynamic window with this character */
+                    dynamicWindow=getNextDynamicWindow(scsu);
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)(SD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                    length=3;
+                    goto outputBytes;
+                } else if((uint32_t)(c-0x3400)<(0xd800-0x3400) &&
+                          (source>=sourceLimit || (uint32_t)(*source-0x3400)<(0xd800-0x3400))
+                ) {
+                    /*
+                     * this character is not compressible (a BMP ideograph or similar);
+                     * switch to Unicode mode if this is the last character in the block
+                     * or there is at least one more ideograph following immediately
+                     */
+                    isSingleByteMode=FALSE;
+                    c|=SCU<<16;
+                    length=3;
+                    goto outputBytes;
+                } else {
+                    /* quote Unicode */
+                    c|=SQU<<16;
+                    length=3;
+                    goto outputBytes;
+                }
+            }
+
+            /* normal end of conversion: prepare for a new character */
+            c=0;
+            sourceIndex=nextSourceIndex;
+        }
+    } else {
+        if(c!=0 && targetCapacity>0) {
+            goto getTrailUnicode;
+        }
+
+        /* state machine for Unicode mode */
+/* unicodeByteMode: */
+        while(source<sourceLimit) {
+            if(targetCapacity<=0) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            c=*source++;
+            ++nextSourceIndex;
+
+            if((uint32_t)(c-0x3400)<(0xd800-0x3400)) {
+                /* not compressible, write character directly */
+                if(targetCapacity>=2) {
+                    *target++=(uint8_t)(c>>8);
+                    *target++=(uint8_t)c;
+                    if(offsets!=NULL) {
+                        *offsets++=sourceIndex;
+                        *offsets++=sourceIndex;
+                    }
+                    targetCapacity-=2;
+                } else {
+                    length=2;
+                    goto outputBytes;
+                }
+            } else if((uint32_t)(c-0x3400)>=(0xf300-0x3400) /* c<0x3400 || c>=0xf300 */) {
+                /* compress BMP character if the following one is not an uncompressible ideograph */
+                if(!(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))) {
+                    if(((uint32_t)(c-0x30)<10 || (uint32_t)(c-0x61)<26 || (uint32_t)(c-0x41)<26)) {
+                        /* ASCII digit or letter */
+                        isSingleByteMode=TRUE;
+                        c|=((uint32_t)(UC0+dynamicWindow)<<8)|c;
+                        length=2;
+                        goto outputBytes;
+                    } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
+                        /* there is a dynamic window that contains this character, change to it */
+                        isSingleByteMode=TRUE;
+                        dynamicWindow=window;
+                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                        useDynamicWindow(scsu, dynamicWindow);
+                        c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                        length=2;
+                        goto outputBytes;
+                    } else if((code=getDynamicOffset(c, &offset))>=0) {
+                        /* define a dynamic window with this character */
+                        isSingleByteMode=TRUE;
+                        dynamicWindow=getNextDynamicWindow(scsu);
+                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                        useDynamicWindow(scsu, dynamicWindow);
+                        c=((uint32_t)(UD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                        length=3;
+                        goto outputBytes;
+                    }
+                }
+
+                /* don't know how to compress this character, just write it directly */
+                length=2;
+                goto outputBytes;
+            } else if(c<0xe000) {
+                /* c is a surrogate */
+                if(U16_IS_SURROGATE_LEAD(c)) {
+getTrailUnicode:
+                    lead=(UChar)c;
+                    if(source<sourceLimit) {
+                        /* test the following code unit */
+                        trail=*source;
+                        if(U16_IS_TRAIL(trail)) {
+                            ++source;
+                            ++nextSourceIndex;
+                            c=U16_GET_SUPPLEMENTARY(c, trail);
+                            /* convert this surrogate code point */
+                            /* exit this condition tree */
+                        } else {
+                            /* this is an unmatched lead code unit (1st surrogate) */
+                            /* callback(illegal) */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                    } else {
+                        /* no more input */
+                        break;
+                    }
+                } else {
+                    /* this is an unmatched trail code unit (2nd surrogate) */
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    goto endloop;
+                }
+
+                /* compress supplementary character */
+                if( (window=getWindow(scsu->fromUDynamicOffsets, c))>=0 &&
+                    !(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))
+                ) {
+                    /*
+                     * there is a dynamic window that contains this character and
+                     * the following character is not uncompressible,
+                     * change to the window
+                     */
+                    isSingleByteMode=TRUE;
+                    dynamicWindow=window;
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                    length=2;
+                    goto outputBytes;
+                } else if(source<sourceLimit && lead==*source && /* too lazy to check trail in same window as source[1] */
+                          (code=getDynamicOffset(c, &offset))>=0
+                ) {
+                    /* two supplementary characters in (probably) the same window - define an extended one */
+                    isSingleByteMode=TRUE;
+                    code-=0x200;
+                    dynamicWindow=getNextDynamicWindow(scsu);
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)UDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                    length=4;
+                    goto outputBytes;
+                } else {
+                    /* don't know how to compress this character, just write it directly */
+                    c=((uint32_t)lead<<16)|trail;
+                    length=4;
+                    goto outputBytes;
+                }
+            } else /* 0xe000<=c<0xf300 */ {
+                /* quote to avoid SCSU tags */
+                c|=UQU<<16;
+                length=3;
+                goto outputBytes;
+            }
+
+            /* normal end of conversion: prepare for a new character */
+            c=0;
+            sourceIndex=nextSourceIndex;
+        }
+    }
+endloop:
+
+    /* set the converter state back into UConverter */
+    scsu->fromUIsSingleByteMode=isSingleByteMode;
+    scsu->fromUDynamicWindow=dynamicWindow;
+
+    cnv->fromUChar32=c;
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=(char *)target;
+    pArgs->offsets=offsets;
+    return;
+
+outputBytes:
+    /* write the output character bytes from c and length [code copied from ucnvmbcs.c] */
+    /* from the first if in the loop we know that targetCapacity>0 */
+    if(length<=targetCapacity) {
+        if(offsets==NULL) {
+            switch(length) {
+                /* each branch falls through to the next one */
+            case 4:
+                *target++=(uint8_t)(c>>24);
+                U_FALLTHROUGH;
+            case 3:
+                *target++=(uint8_t)(c>>16);
+                U_FALLTHROUGH;
+            case 2:
+                *target++=(uint8_t)(c>>8);
+                U_FALLTHROUGH;
+            case 1:
+                *target++=(uint8_t)c;
+                U_FALLTHROUGH;
+            default:
+                /* will never occur */
+                break;
+            }
+        } else {
+            switch(length) {
+                /* each branch falls through to the next one */
+            case 4:
+                *target++=(uint8_t)(c>>24);
+                *offsets++=sourceIndex;
+                U_FALLTHROUGH;
+            case 3:
+                *target++=(uint8_t)(c>>16);
+                *offsets++=sourceIndex;
+                U_FALLTHROUGH;
+            case 2:
+                *target++=(uint8_t)(c>>8);
+                *offsets++=sourceIndex;
+                U_FALLTHROUGH;
+            case 1:
+                *target++=(uint8_t)c;
+                *offsets++=sourceIndex;
+                U_FALLTHROUGH;
+            default:
+                /* will never occur */
+                break;
+            }
+        }
+        targetCapacity-=length;
+
+        /* normal end of conversion: prepare for a new character */
+        c=0;
+        sourceIndex=nextSourceIndex;
+        goto loop;
+    } else {
+        uint8_t *p;
+
+        /*
+         * We actually do this backwards here:
+         * In order to save an intermediate variable, we output
+         * first to the overflow buffer what does not fit into the
+         * regular target.
+         */
+        /* we know that 0<=targetCapacity<length<=4 */
+        /* targetCapacity==0 when SCU+supplementary where SCU used up targetCapacity==1 */
+        length-=targetCapacity;
+        p=(uint8_t *)cnv->charErrorBuffer;
+        switch(length) {
+            /* each branch falls through to the next one */
+        case 4:
+            *p++=(uint8_t)(c>>24);
+            U_FALLTHROUGH;
+        case 3:
+            *p++=(uint8_t)(c>>16);
+            U_FALLTHROUGH;
+        case 2:
+            *p++=(uint8_t)(c>>8);
+            U_FALLTHROUGH;
+        case 1:
+            *p=(uint8_t)c;
+            U_FALLTHROUGH;
+        default:
+            /* will never occur */
+            break;
+        }
+        cnv->charErrorBufferLength=(int8_t)length;
+
+        /* now output what fits into the regular target */
+        c>>=8*length; /* length was reduced by targetCapacity */
+        switch(targetCapacity) {
+            /* each branch falls through to the next one */
+        case 3:
+            *target++=(uint8_t)(c>>16);
+            if(offsets!=NULL) {
+                *offsets++=sourceIndex;
+            }
+            U_FALLTHROUGH;
+        case 2:
+            *target++=(uint8_t)(c>>8);
+            if(offsets!=NULL) {
+                *offsets++=sourceIndex;
+            }
+            U_FALLTHROUGH;
+        case 1:
+            *target++=(uint8_t)c;
+            if(offsets!=NULL) {
+                *offsets++=sourceIndex;
+            }
+            U_FALLTHROUGH;
+        default:
+            break;
+        }
+
+        /* target overflow */
+        targetCapacity=0;
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        c=0;
+        goto endloop;
+    }
+}
+
+/*
+ * Identical to _SCSUFromUnicodeWithOffsets but without offset handling.
+ * If a change is made in the original function, then either
+ * change this function the same way or
+ * re-copy the original function and remove the variables
+ * offsets, sourceIndex, and nextSourceIndex.
+ */
+static void
+_SCSUFromUnicode(UConverterFromUnicodeArgs *pArgs,
+                 UErrorCode *pErrorCode) {
+    UConverter *cnv;
+    SCSUData *scsu;
+    const UChar *source, *sourceLimit;
+    uint8_t *target;
+    int32_t targetCapacity;
+
+    UBool isSingleByteMode;
+    uint8_t dynamicWindow;
+    uint32_t currentOffset;
+
+    uint32_t c, delta;
+
+    int32_t length;
+
+    /* variables for compression heuristics */
+    uint32_t offset;
+    UChar lead, trail;
+    int code;
+    int8_t window;
+
+    /* set up the local pointers */
+    cnv=pArgs->converter;
+    scsu=(SCSUData *)cnv->extraInfo;
+
+    /* set up the local pointers */
+    source=pArgs->source;
+    sourceLimit=pArgs->sourceLimit;
+    target=(uint8_t *)pArgs->target;
+    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
+
+    /* get the state machine state */
+    isSingleByteMode=scsu->fromUIsSingleByteMode;
+    dynamicWindow=scsu->fromUDynamicWindow;
+    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+
+    c=cnv->fromUChar32;
+
+    /* similar conversion "loop" as in toUnicode */
+loop:
+    if(isSingleByteMode) {
+        if(c!=0 && targetCapacity>0) {
+            goto getTrailSingle;
+        }
+
+        /* state machine for single-byte mode */
+/* singleByteMode: */
+        while(source<sourceLimit) {
+            if(targetCapacity<=0) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            c=*source++;
+
+            if((c-0x20)<=0x5f) {
+                /* pass US-ASCII graphic character through */
+                *target++=(uint8_t)c;
+                --targetCapacity;
+            } else if(c<0x20) {
+                if((1UL<<c)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
+                    /* CR/LF/TAB/NUL */
+                    *target++=(uint8_t)c;
+                    --targetCapacity;
+                } else {
+                    /* quote C0 control character */
+                    c|=SQ0<<8;
+                    length=2;
+                    goto outputBytes;
+                }
+            } else if((delta=c-currentOffset)<=0x7f) {
+                /* use the current dynamic window */
+                *target++=(uint8_t)(delta|0x80);
+                --targetCapacity;
+            } else if(U16_IS_SURROGATE(c)) {
+                if(U16_IS_SURROGATE_LEAD(c)) {
+getTrailSingle:
+                    lead=(UChar)c;
+                    if(source<sourceLimit) {
+                        /* test the following code unit */
+                        trail=*source;
+                        if(U16_IS_TRAIL(trail)) {
+                            ++source;
+                            c=U16_GET_SUPPLEMENTARY(c, trail);
+                            /* convert this surrogate code point */
+                            /* exit this condition tree */
+                        } else {
+                            /* this is an unmatched lead code unit (1st surrogate) */
+                            /* callback(illegal) */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                    } else {
+                        /* no more input */
+                        break;
+                    }
+                } else {
+                    /* this is an unmatched trail code unit (2nd surrogate) */
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    goto endloop;
+                }
+
+                /* compress supplementary character U+10000..U+10ffff */
+                if((delta=c-currentOffset)<=0x7f) {
+                    /* use the current dynamic window */
+                    *target++=(uint8_t)(delta|0x80);
+                    --targetCapacity;
+                } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
+                    /* there is a dynamic window that contains this character, change to it */
+                    dynamicWindow=window;
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                    length=2;
+                    goto outputBytes;
+                } else if((code=getDynamicOffset(c, &offset))>=0) {
+                    /* might check if there are more characters in this window to come */
+                    /* define an extended window with this character */
+                    code-=0x200;
+                    dynamicWindow=getNextDynamicWindow(scsu);
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)SDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                    length=4;
+                    goto outputBytes;
+                } else {
+                    /* change to Unicode mode and output this (lead, trail) pair */
+                    isSingleByteMode=FALSE;
+                    *target++=(uint8_t)SCU;
+                    --targetCapacity;
+                    c=((uint32_t)lead<<16)|trail;
+                    length=4;
+                    goto outputBytes;
+                }
+            } else if(c<0xa0) {
+                /* quote C1 control character */
+                c=(c&0x7f)|(SQ0+1)<<8; /* SQ0+1==SQ1 */
+                length=2;
+                goto outputBytes;
+            } else if(c==0xfeff || c>=0xfff0) {
+                /* quote signature character=byte order mark and specials */
+                c|=SQU<<16;
+                length=3;
+                goto outputBytes;
+            } else {
+                /* compress all other BMP characters */
+                if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
+                    /* there is a window defined that contains this character - switch to it or quote from it? */
+                    if(source>=sourceLimit || isInOffsetWindowOrDirect(scsu->fromUDynamicOffsets[window], *source)) {
+                        /* change to dynamic window */
+                        dynamicWindow=window;
+                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                        useDynamicWindow(scsu, dynamicWindow);
+                        c=((uint32_t)(SC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                        length=2;
+                        goto outputBytes;
+                    } else {
+                        /* quote from dynamic window */
+                        c=((uint32_t)(SQ0+window)<<8)|(c-scsu->fromUDynamicOffsets[window])|0x80;
+                        length=2;
+                        goto outputBytes;
+                    }
+                } else if((window=getWindow(staticOffsets, c))>=0) {
+                    /* quote from static window */
+                    c=((uint32_t)(SQ0+window)<<8)|(c-staticOffsets[window]);
+                    length=2;
+                    goto outputBytes;
+                } else if((code=getDynamicOffset(c, &offset))>=0) {
+                    /* define a dynamic window with this character */
+                    dynamicWindow=getNextDynamicWindow(scsu);
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)(SD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                    length=3;
+                    goto outputBytes;
+                } else if((uint32_t)(c-0x3400)<(0xd800-0x3400) &&
+                          (source>=sourceLimit || (uint32_t)(*source-0x3400)<(0xd800-0x3400))
+                ) {
+                    /*
+                     * this character is not compressible (a BMP ideograph or similar);
+                     * switch to Unicode mode if this is the last character in the block
+                     * or there is at least one more ideograph following immediately
+                     */
+                    isSingleByteMode=FALSE;
+                    c|=SCU<<16;
+                    length=3;
+                    goto outputBytes;
+                } else {
+                    /* quote Unicode */
+                    c|=SQU<<16;
+                    length=3;
+                    goto outputBytes;
+                }
+            }
+
+            /* normal end of conversion: prepare for a new character */
+            c=0;
+        }
+    } else {
+        if(c!=0 && targetCapacity>0) {
+            goto getTrailUnicode;
+        }
+
+        /* state machine for Unicode mode */
+/* unicodeByteMode: */
+        while(source<sourceLimit) {
+            if(targetCapacity<=0) {
+                /* target is full */
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+                break;
+            }
+            c=*source++;
+
+            if((uint32_t)(c-0x3400)<(0xd800-0x3400)) {
+                /* not compressible, write character directly */
+                if(targetCapacity>=2) {
+                    *target++=(uint8_t)(c>>8);
+                    *target++=(uint8_t)c;
+                    targetCapacity-=2;
+                } else {
+                    length=2;
+                    goto outputBytes;
+                }
+            } else if((uint32_t)(c-0x3400)>=(0xf300-0x3400) /* c<0x3400 || c>=0xf300 */) {
+                /* compress BMP character if the following one is not an uncompressible ideograph */
+                if(!(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))) {
+                    if(((uint32_t)(c-0x30)<10 || (uint32_t)(c-0x61)<26 || (uint32_t)(c-0x41)<26)) {
+                        /* ASCII digit or letter */
+                        isSingleByteMode=TRUE;
+                        c|=((uint32_t)(UC0+dynamicWindow)<<8)|c;
+                        length=2;
+                        goto outputBytes;
+                    } else if((window=getWindow(scsu->fromUDynamicOffsets, c))>=0) {
+                        /* there is a dynamic window that contains this character, change to it */
+                        isSingleByteMode=TRUE;
+                        dynamicWindow=window;
+                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                        useDynamicWindow(scsu, dynamicWindow);
+                        c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                        length=2;
+                        goto outputBytes;
+                    } else if((code=getDynamicOffset(c, &offset))>=0) {
+                        /* define a dynamic window with this character */
+                        isSingleByteMode=TRUE;
+                        dynamicWindow=getNextDynamicWindow(scsu);
+                        currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                        useDynamicWindow(scsu, dynamicWindow);
+                        c=((uint32_t)(UD0+dynamicWindow)<<16)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                        length=3;
+                        goto outputBytes;
+                    }
+                }
+
+                /* don't know how to compress this character, just write it directly */
+                length=2;
+                goto outputBytes;
+            } else if(c<0xe000) {
+                /* c is a surrogate */
+                if(U16_IS_SURROGATE_LEAD(c)) {
+getTrailUnicode:
+                    lead=(UChar)c;
+                    if(source<sourceLimit) {
+                        /* test the following code unit */
+                        trail=*source;
+                        if(U16_IS_TRAIL(trail)) {
+                            ++source;
+                            c=U16_GET_SUPPLEMENTARY(c, trail);
+                            /* convert this surrogate code point */
+                            /* exit this condition tree */
+                        } else {
+                            /* this is an unmatched lead code unit (1st surrogate) */
+                            /* callback(illegal) */
+                            *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                            goto endloop;
+                        }
+                    } else {
+                        /* no more input */
+                        break;
+                    }
+                } else {
+                    /* this is an unmatched trail code unit (2nd surrogate) */
+                    /* callback(illegal) */
+                    *pErrorCode=U_ILLEGAL_CHAR_FOUND;
+                    goto endloop;
+                }
+
+                /* compress supplementary character */
+                if( (window=getWindow(scsu->fromUDynamicOffsets, c))>=0 &&
+                    !(source<sourceLimit && (uint32_t)(*source-0x3400)<(0xd800-0x3400))
+                ) {
+                    /*
+                     * there is a dynamic window that contains this character and
+                     * the following character is not uncompressible,
+                     * change to the window
+                     */
+                    isSingleByteMode=TRUE;
+                    dynamicWindow=window;
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow];
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)(UC0+dynamicWindow)<<8)|(c-currentOffset)|0x80;
+                    length=2;
+                    goto outputBytes;
+                } else if(source<sourceLimit && lead==*source && /* too lazy to check trail in same window as source[1] */
+                          (code=getDynamicOffset(c, &offset))>=0
+                ) {
+                    /* two supplementary characters in (probably) the same window - define an extended one */
+                    isSingleByteMode=TRUE;
+                    code-=0x200;
+                    dynamicWindow=getNextDynamicWindow(scsu);
+                    currentOffset=scsu->fromUDynamicOffsets[dynamicWindow]=offset;
+                    useDynamicWindow(scsu, dynamicWindow);
+                    c=((uint32_t)UDX<<24)|((uint32_t)dynamicWindow<<21)|((uint32_t)code<<8)|(c-currentOffset)|0x80;
+                    length=4;
+                    goto outputBytes;
+                } else {
+                    /* don't know how to compress this character, just write it directly */
+                    c=((uint32_t)lead<<16)|trail;
+                    length=4;
+                    goto outputBytes;
+                }
+            } else /* 0xe000<=c<0xf300 */ {
+                /* quote to avoid SCSU tags */
+                c|=UQU<<16;
+                length=3;
+                goto outputBytes;
+            }
+
+            /* normal end of conversion: prepare for a new character */
+            c=0;
+        }
+    }
+endloop:
+
+    /* set the converter state back into UConverter */
+    scsu->fromUIsSingleByteMode=isSingleByteMode;
+    scsu->fromUDynamicWindow=dynamicWindow;
+
+    cnv->fromUChar32=c;
+
+    /* write back the updated pointers */
+    pArgs->source=source;
+    pArgs->target=(char *)target;
+    return;
+
+outputBytes:
+    /* write the output character bytes from c and length [code copied from ucnvmbcs.c] */
+    /* from the first if in the loop we know that targetCapacity>0 */
+    if(length<=targetCapacity) {
+        switch(length) {
+            /* each branch falls through to the next one */
+        case 4:
+            *target++=(uint8_t)(c>>24);
+            U_FALLTHROUGH;
+        case 3:
+            *target++=(uint8_t)(c>>16);
+            U_FALLTHROUGH;
+        case 2:
+            *target++=(uint8_t)(c>>8);
+            U_FALLTHROUGH;
+        case 1:
+            *target++=(uint8_t)c;
+            U_FALLTHROUGH;
+        default:
+            /* will never occur */
+            break;
+        }
+        targetCapacity-=length;
+
+        /* normal end of conversion: prepare for a new character */
+        c=0;
+        goto loop;
+    } else {
+        uint8_t *p;
+
+        /*
+         * We actually do this backwards here:
+         * In order to save an intermediate variable, we output
+         * first to the overflow buffer what does not fit into the
+         * regular target.
+         */
+        /* we know that 0<=targetCapacity<length<=4 */
+        /* targetCapacity==0 when SCU+supplementary where SCU used up targetCapacity==1 */
+        length-=targetCapacity;
+        p=(uint8_t *)cnv->charErrorBuffer;
+        switch(length) {
+            /* each branch falls through to the next one */
+        case 4:
+            *p++=(uint8_t)(c>>24);
+            U_FALLTHROUGH;
+        case 3:
+            *p++=(uint8_t)(c>>16);
+            U_FALLTHROUGH;
+        case 2:
+            *p++=(uint8_t)(c>>8);
+            U_FALLTHROUGH;
+        case 1:
+            *p=(uint8_t)c;
+            U_FALLTHROUGH;
+        default:
+            /* will never occur */
+            break;
+        }
+        cnv->charErrorBufferLength=(int8_t)length;
+
+        /* now output what fits into the regular target */
+        c>>=8*length; /* length was reduced by targetCapacity */
+        switch(targetCapacity) {
+            /* each branch falls through to the next one */
+        case 3:
+            *target++=(uint8_t)(c>>16);
+            U_FALLTHROUGH;
+        case 2:
+            *target++=(uint8_t)(c>>8);
+            U_FALLTHROUGH;
+        case 1:
+            *target++=(uint8_t)c;
+            U_FALLTHROUGH;
+        default:
+            break;
+        }
+
+        /* target overflow */
+        targetCapacity=0;
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        c=0;
+        goto endloop;
+    }
+}
+
+/* miscellaneous ------------------------------------------------------------ */
+
+static const char *
+_SCSUGetName(const UConverter *cnv) {
+    SCSUData *scsu=(SCSUData *)cnv->extraInfo;
+
+    switch(scsu->locale) {
+    case l_ja:
+        return "SCSU,locale=ja";
+    default:
+        return "SCSU";
+    }
+}
+
+/* structure for SafeClone calculations */
+struct cloneSCSUStruct
+{
+    UConverter cnv;
+    SCSUData mydata;
+};
+
+static UConverter * 
+_SCSUSafeClone(const UConverter *cnv, 
+               void *stackBuffer, 
+               int32_t *pBufferSize, 
+               UErrorCode *status)
+{
+    struct cloneSCSUStruct * localClone;
+    int32_t bufferSizeNeeded = sizeof(struct cloneSCSUStruct);
+
+    if (U_FAILURE(*status)){
+        return 0;
+    }
+
+    if (*pBufferSize == 0){ /* 'preflighting' request - set needed size into *pBufferSize */
+        *pBufferSize = bufferSizeNeeded;
+        return 0;
+    }
+
+    localClone = (struct cloneSCSUStruct *)stackBuffer;
+    /* ucnv.c/ucnv_safeClone() copied the main UConverter already */
+
+    uprv_memcpy(&localClone->mydata, cnv->extraInfo, sizeof(SCSUData));
+    localClone->cnv.extraInfo = &localClone->mydata;
+    localClone->cnv.isExtraLocal = TRUE;
+
+    return &localClone->cnv;
+}
+
+
+static const UConverterImpl _SCSUImpl={
+    UCNV_SCSU,
+
+    NULL,
+    NULL,
+
+    _SCSUOpen,
+    _SCSUClose,
+    _SCSUReset,
+
+    _SCSUToUnicode,
+    _SCSUToUnicodeWithOffsets,
+    _SCSUFromUnicode,
+    _SCSUFromUnicodeWithOffsets,
+    NULL,
+
+    NULL,
+    _SCSUGetName,
+    NULL,
+    _SCSUSafeClone,
+    ucnv_getCompleteUnicodeSet
+};
+
+static const UConverterStaticData _SCSUStaticData={
+    sizeof(UConverterStaticData),
+    "SCSU",
+    1212, /* CCSID for SCSU */
+    UCNV_IBM, UCNV_SCSU,
+    1, 3, /* one UChar generates at least 1 byte and at most 3 bytes */
+    /*
+     * The subchar here is ignored because _SCSUOpen() sets U+fffd as a Unicode
+     * substitution string.
+     */
+    { 0x0e, 0xff, 0xfd, 0 }, 3,
+    FALSE, FALSE,
+    0,
+    0,
+    { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */
+};
+
+const UConverterSharedData _SCSUData=
+        UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_SCSUStaticData, &_SCSUImpl);
+
+#endif
index ba062b3..573e8b0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 83f54ab..cdd328e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol_data.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1822705..151800d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucol_swp.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fd8be9a..422436d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucol_swp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 885ca3a..db38173 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -1030,8 +1030,7 @@ collectCurrencyNames(const char* locale,
                 const UnicodeString *symbol;
                 while ((symbol = iter.next()) != NULL) {
                     (*currencySymbols)[*total_currency_symbol_count].IsoCode = iso;
-                    (*currencySymbols)[*total_currency_symbol_count].currencyName =
-                        const_cast<UChar*>(symbol->getBuffer());
+                    (*currencySymbols)[*total_currency_symbol_count].currencyName = (UChar*) symbol->getBuffer();
                     (*currencySymbols)[*total_currency_symbol_count].flag = 0;
                     (*currencySymbols)[(*total_currency_symbol_count)++].currencyNameLen = symbol->length();
                 }
index 6e468fd..b35d6f4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 29074a6..ec72a0c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  udata.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -110,12 +110,8 @@ static u_atomic_int32_t gHaveTriedToLoadCommonData = ATOMIC_INT32_T_INITIALIZER(
 static UHashtable  *gCommonDataCache = NULL;  /* Global hash table of opened ICU data files.  */
 static icu::UInitOnce gCommonDataCacheInitOnce = U_INITONCE_INITIALIZER;
 
-#if U_PLATFORM_HAS_WINUWP_API == 0 
 static UDataFileAccess  gDataFileAccess = UDATA_DEFAULT_ACCESS;  // Access not synchronized.
                                                                  // Modifying is documented as thread-unsafe.
-#else
-static UDataFileAccess  gDataFileAccess = UDATA_NO_FILES;        // Windows UWP looks in one spot explicitly
-#endif
 
 static UBool U_CALLCONV
 udata_cleanup(void)
@@ -623,14 +619,12 @@ U_NAMESPACE_END
 
 /*----------------------------------------------------------------------*
  *                                                                      *
- *  Add a static reference to the common data library                   *
+ *  Add a static reference to the common data  library                  *
  *   Unless overridden by an explicit udata_setCommonData, this will be *
  *      our common data.                                                *
  *                                                                      *
  *----------------------------------------------------------------------*/
-#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
 extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
-#endif
 
 /*
  * This would be a good place for weak-linkage declarations of
@@ -678,7 +672,6 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
             if(gCommonICUDataArray[commonDataIndex] != NULL) {
                 return gCommonICUDataArray[commonDataIndex];
             }
-#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
             int32_t i;
             for(i = 0; i < commonDataIndex; ++i) {
                 if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
@@ -686,7 +679,6 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
                     return NULL;
                 }
             }
-#endif
         }
 
         /* Add the linked-in data to the list. */
@@ -702,13 +694,11 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
             setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
         }
         */
-#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
         setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
         {
             Mutex lock;
             return gCommonICUDataArray[commonDataIndex];
         }
-#endif
     }
 
 
@@ -1255,14 +1245,9 @@ doOpenChoice(const char *path, const char *type, const char *name,
     fprintf(stderr, " tocEntryPath = %s\n", tocEntryName.data());
 #endif
 
-#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
     if(path == NULL) {
         path = COMMON_DATA_NAME; /* "icudt26e" */
     }
-#else
-    // Windows UWP expects only a single data file.
-    path = COMMON_DATA_NAME; /* "icudt26e" */
-#endif
 
     /************************ Begin loop looking for ind. files ***************/
 #ifdef UDATA_DEBUG
diff --git a/source/common/udatamem.c b/source/common/udatamem.c
new file mode 100644 (file)
index 0000000..daa9193
--- /dev/null
@@ -0,0 +1,161 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************/
+
+
+/*----------------------------------------------------------------------------------
+ *
+ *  UDataMemory     A class-like struct that serves as a handle to a piece of memory
+ *                  that contains some ICU data (resource, converters, whatever.)
+ *
+ *                  When an application opens ICU data (with udata_open, for example,
+ *                  a UDataMemory * is returned.
+ *
+ *----------------------------------------------------------------------------------*/
+
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "unicode/udata.h"
+
+#include "udatamem.h"
+
+U_CFUNC void UDataMemory_init(UDataMemory *This) {
+    uprv_memset(This, 0, sizeof(UDataMemory));
+    This->length=-1;
+}
+
+
+U_CFUNC void UDatamemory_assign(UDataMemory *dest, UDataMemory *source) {
+    /* UDataMemory Assignment.  Destination UDataMemory must be initialized first.  */
+    UBool mallocedFlag = dest->heapAllocated;
+    uprv_memcpy(dest, source, sizeof(UDataMemory));
+    dest->heapAllocated = mallocedFlag;
+}
+
+U_CFUNC UDataMemory *UDataMemory_createNewInstance(UErrorCode *pErr) {
+    UDataMemory *This;
+
+    if (U_FAILURE(*pErr)) {
+        return NULL;
+    }
+    This = uprv_malloc(sizeof(UDataMemory));
+    if (This == NULL) {
+        *pErr = U_MEMORY_ALLOCATION_ERROR; }
+    else {
+        UDataMemory_init(This);
+        This->heapAllocated = TRUE;
+    }
+    return This;
+}
+
+
+U_CFUNC const DataHeader *
+UDataMemory_normalizeDataPointer(const void *p) {
+    /* allow the data to be optionally prepended with an alignment-forcing double value */
+    const DataHeader *pdh = (const DataHeader *)p;
+    if(pdh==NULL || (pdh->dataHeader.magic1==0xda && pdh->dataHeader.magic2==0x27)) {
+        return pdh;
+    } else {
+#if U_PLATFORM == U_PF_OS400
+        /*
+        TODO: Fix this once the compiler implements this feature. Keep in sync with genccode.c
+
+        This is here because this platform can't currently put
+        const data into the read-only pages of an object or
+        shared library (service program). Only strings are allowed in read-only
+        pages, so we use char * strings to store the data.
+
+        In order to prevent the beginning of the data from ever matching the
+        magic numbers we must skip the initial double.
+        [grhoten 4/24/2003]
+        */
+        return (const DataHeader *)*((const void **)p+1);
+#else
+        return (const DataHeader *)((const double *)p+1);
+#endif
+    }
+}
+
+
+U_CFUNC void UDataMemory_setData (UDataMemory *This, const void *dataAddr) {
+    This->pHeader = UDataMemory_normalizeDataPointer(dataAddr);
+}
+
+
+U_CAPI void U_EXPORT2
+udata_close(UDataMemory *pData) {
+    if(pData!=NULL) {
+        uprv_unmapFile(pData);
+        if(pData->heapAllocated ) {
+            uprv_free(pData);
+        } else {
+            UDataMemory_init(pData);
+        }
+    }
+}
+
+U_CAPI const void * U_EXPORT2
+udata_getMemory(UDataMemory *pData) {
+    if(pData!=NULL && pData->pHeader!=NULL) {
+        return (char *)(pData->pHeader)+udata_getHeaderSize(pData->pHeader);
+    } else {
+        return NULL;
+    }
+}
+
+/**
+ * Get the length of the data item if possible.
+ * The length may be up to 15 bytes larger than the actual data.
+ *
+ * TODO Consider making this function public.
+ * It would have to return the actual length in more cases.
+ * For example, the length of the last item in a .dat package could be
+ * computed from the size of the whole .dat package minus the offset of the
+ * last item.
+ * The size of a file that was directly memory-mapped could be determined
+ * using some system API.
+ *
+ * In order to get perfect values for all data items, we may have to add a
+ * length field to UDataInfo, but that complicates data generation
+ * and may be overkill.
+ *
+ * @param pData The data item.
+ * @return the length of the data item, or -1 if not known
+ * @internal Currently used only in cintltst/udatatst.c
+ */
+U_CAPI int32_t U_EXPORT2
+udata_getLength(const UDataMemory *pData) {
+    if(pData!=NULL && pData->pHeader!=NULL && pData->length>=0) {
+        /*
+         * subtract the header size,
+         * return only the size of the actual data starting at udata_getMemory()
+         */
+        return pData->length-udata_getHeaderSize(pData->pHeader);
+    } else {
+        return -1;
+    }
+}
+
+/**
+ * Get the memory including the data header.
+ * Used in cintltst/udatatst.c
+ * @internal
+ */
+U_CAPI const void * U_EXPORT2
+udata_getRawMemory(const UDataMemory *pData) {
+    if(pData!=NULL && pData->pHeader!=NULL) {
+        return pData->pHeader;
+    } else {
+        return NULL;
+    }
+}
+
+U_CFUNC UBool UDataMemory_isLoaded(const UDataMemory *This) {
+    return This->pHeader != NULL;
+}
index a05dd69..385a777 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/udataswp.c b/source/common/udataswp.c
new file mode 100644 (file)
index 0000000..f47ac1f
--- /dev/null
@@ -0,0 +1,473 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2003-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  udataswp.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2003jun05
+*   created by: Markus W. Scherer
+*
+*   Definitions for ICU data transformations for different platforms,
+*   changing between big- and little-endian data and/or between
+*   charset families (ASCII<->EBCDIC).
+*/
+
+#include <stdarg.h>
+#include "unicode/utypes.h"
+#include "unicode/udata.h" /* UDataInfo */
+#include "ucmndata.h" /* DataHeader */
+#include "cmemory.h"
+#include "udataswp.h"
+
+/* swapping primitives ------------------------------------------------------ */
+
+static int32_t U_CALLCONV
+uprv_swapArray16(const UDataSwapper *ds,
+                 const void *inData, int32_t length, void *outData,
+                 UErrorCode *pErrorCode) {
+    const uint16_t *p;
+    uint16_t *q;
+    int32_t count;
+    uint16_t x;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length&1)!=0 || outData==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and swapping */
+    p=(const uint16_t *)inData;
+    q=(uint16_t *)outData;
+    count=length/2;
+    while(count>0) {
+        x=*p++;
+        *q++=(uint16_t)((x<<8)|(x>>8));
+        --count;
+    }
+
+    return length;
+}
+
+static int32_t U_CALLCONV
+uprv_copyArray16(const UDataSwapper *ds,
+                 const void *inData, int32_t length, void *outData,
+                 UErrorCode *pErrorCode) {
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length&1)!=0 || outData==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(length>0 && inData!=outData) {
+        uprv_memcpy(outData, inData, length);
+    }
+    return length;
+}
+
+static int32_t U_CALLCONV
+uprv_swapArray32(const UDataSwapper *ds,
+                 const void *inData, int32_t length, void *outData,
+                 UErrorCode *pErrorCode) {
+    const uint32_t *p;
+    uint32_t *q;
+    int32_t count;
+    uint32_t x;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length&3)!=0 || outData==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and swapping */
+    p=(const uint32_t *)inData;
+    q=(uint32_t *)outData;
+    count=length/4;
+    while(count>0) {
+        x=*p++;
+        *q++=(uint32_t)((x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24));
+        --count;
+    }
+
+    return length;
+}
+
+static int32_t U_CALLCONV
+uprv_copyArray32(const UDataSwapper *ds,
+                 const void *inData, int32_t length, void *outData,
+                 UErrorCode *pErrorCode) {
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length&3)!=0 || outData==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(length>0 && inData!=outData) {
+        uprv_memcpy(outData, inData, length);
+    }
+    return length;
+}
+
+static int32_t U_CALLCONV
+uprv_swapArray64(const UDataSwapper *ds,
+                 const void *inData, int32_t length, void *outData,
+                 UErrorCode *pErrorCode) {
+    const uint64_t *p;
+    uint64_t *q;
+    int32_t count;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length&7)!=0 || outData==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and swapping */
+    p=(const uint64_t *)inData;
+    q=(uint64_t *)outData;
+    count=length/8;
+    while(count>0) {
+        uint64_t x=*p++;
+        x=(x<<56)|((x&0xff00)<<40)|((x&0xff0000)<<24)|((x&0xff000000)<<8)|
+            ((x>>8)&0xff000000)|((x>>24)&0xff0000)|((x>>40)&0xff00)|(x>>56);
+        *q++=x;
+        --count;
+    }
+
+    return length;
+}
+
+static int32_t U_CALLCONV
+uprv_copyArray64(const UDataSwapper *ds,
+                 const void *inData, int32_t length, void *outData,
+                 UErrorCode *pErrorCode) {
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length&7)!=0 || outData==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(length>0 && inData!=outData) {
+        uprv_memcpy(outData, inData, length);
+    }
+    return length;
+}
+
+static uint16_t U_CALLCONV
+uprv_readSwapUInt16(uint16_t x) {
+    return (uint16_t)((x<<8)|(x>>8));
+}
+
+static uint16_t U_CALLCONV
+uprv_readDirectUInt16(uint16_t x) {
+    return x;
+}
+
+static uint32_t U_CALLCONV
+uprv_readSwapUInt32(uint32_t x) {
+    return (uint32_t)((x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24));
+}
+
+static uint32_t U_CALLCONV
+uprv_readDirectUInt32(uint32_t x) {
+    return x;
+}
+
+static void U_CALLCONV
+uprv_writeSwapUInt16(uint16_t *p, uint16_t x) {
+    *p=(uint16_t)((x<<8)|(x>>8));
+}
+
+static void U_CALLCONV
+uprv_writeDirectUInt16(uint16_t *p, uint16_t x) {
+    *p=x;
+}
+
+static void U_CALLCONV
+uprv_writeSwapUInt32(uint32_t *p, uint32_t x) {
+    *p=(uint32_t)((x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24));
+}
+
+static void U_CALLCONV
+uprv_writeDirectUInt32(uint32_t *p, uint32_t x) {
+    *p=x;
+}
+
+U_CAPI int16_t U_EXPORT2
+udata_readInt16(const UDataSwapper *ds, int16_t x) {
+    return (int16_t)ds->readUInt16((uint16_t)x);
+}
+
+U_CAPI int32_t U_EXPORT2
+udata_readInt32(const UDataSwapper *ds, int32_t x) {
+    return (int32_t)ds->readUInt32((uint32_t)x);
+}
+
+/**
+ * Swap a block of invariant, NUL-terminated strings, but not padding
+ * bytes after the last string.
+ * @internal
+ */
+U_CAPI int32_t U_EXPORT2
+udata_swapInvStringBlock(const UDataSwapper *ds,
+                         const void *inData, int32_t length, void *outData,
+                         UErrorCode *pErrorCode) {
+    const char *inChars;
+    int32_t stringsLength;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* reduce the strings length to not include bytes after the last NUL */
+    inChars=(const char *)inData;
+    stringsLength=length;
+    while(stringsLength>0 && inChars[stringsLength-1]!=0) {
+        --stringsLength;
+    }
+
+    /* swap up to the last NUL */
+    ds->swapInvChars(ds, inData, stringsLength, outData, pErrorCode);
+
+    /* copy the bytes after the last NUL */
+    if(inData!=outData && length>stringsLength) {
+        uprv_memcpy((char *)outData+stringsLength, inChars+stringsLength, length-stringsLength);
+    }
+
+    /* return the length including padding bytes */
+    if(U_SUCCESS(*pErrorCode)) {
+        return length;
+    } else {
+        return 0;
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_printError(const UDataSwapper *ds,
+                 const char *fmt,
+                 ...) {
+    va_list args;
+
+    if(ds->printError!=NULL) {
+        va_start(args, fmt);
+        ds->printError(ds->printErrorContext, fmt, args);
+        va_end(args);
+    }
+}
+
+/* swap a data header ------------------------------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+udata_swapDataHeader(const UDataSwapper *ds,
+                     const void *inData, int32_t length, void *outData,
+                     UErrorCode *pErrorCode) {
+    const DataHeader *pHeader;
+    uint16_t headerSize, infoSize;
+
+    /* argument checking */
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<-1 || (length>0 && outData==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* check minimum length and magic bytes */
+    pHeader=(const DataHeader *)inData;
+    if( (length>=0 && length<(int32_t)sizeof(DataHeader)) ||
+        pHeader->dataHeader.magic1!=0xda ||
+        pHeader->dataHeader.magic2!=0x27 ||
+        pHeader->info.sizeofUChar!=2
+    ) {
+        udata_printError(ds, "udata_swapDataHeader(): initial bytes do not look like ICU data\n");
+        *pErrorCode=U_UNSUPPORTED_ERROR;
+        return 0;
+    }
+
+    headerSize=ds->readUInt16(pHeader->dataHeader.headerSize);
+    infoSize=ds->readUInt16(pHeader->info.size);
+
+    if( headerSize<sizeof(DataHeader) ||
+        infoSize<sizeof(UDataInfo) ||
+        headerSize<(sizeof(pHeader->dataHeader)+infoSize) ||
+        (length>=0 && length<headerSize)
+    ) {
+        udata_printError(ds, "udata_swapDataHeader(): header size mismatch - headerSize %d infoSize %d length %d\n",
+                         headerSize, infoSize, length);
+        *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+        return 0;
+    }
+
+    if(length>0) {
+        DataHeader *outHeader;
+        const char *s;
+        int32_t maxLength;
+
+        /* Most of the fields are just bytes and need no swapping. */
+        if(inData!=outData) {
+            uprv_memcpy(outData, inData, headerSize);
+        }
+        outHeader=(DataHeader *)outData;
+
+        outHeader->info.isBigEndian = ds->outIsBigEndian;
+        outHeader->info.charsetFamily = ds->outCharset;
+
+        /* swap headerSize */
+        ds->swapArray16(ds, &pHeader->dataHeader.headerSize, 2, &outHeader->dataHeader.headerSize, pErrorCode);
+
+        /* swap UDataInfo size and reservedWord */
+        ds->swapArray16(ds, &pHeader->info.size, 4, &outHeader->info.size, pErrorCode);
+
+        /* swap copyright statement after the UDataInfo */
+        infoSize+=sizeof(pHeader->dataHeader);
+        s=(const char *)inData+infoSize;
+        maxLength=headerSize-infoSize;
+        /* get the length of the string */
+        for(length=0; length<maxLength && s[length]!=0; ++length) {}
+        /* swap the string contents */
+        ds->swapInvChars(ds, s, length, (char *)outData+infoSize, pErrorCode);
+    }
+
+    return headerSize;
+}
+
+/* API functions ------------------------------------------------------------ */
+
+U_CAPI UDataSwapper * U_EXPORT2
+udata_openSwapper(UBool inIsBigEndian, uint8_t inCharset,
+                  UBool outIsBigEndian, uint8_t outCharset,
+                  UErrorCode *pErrorCode) {
+    UDataSwapper *swapper;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return NULL;
+    }
+    if(inCharset>U_EBCDIC_FAMILY || outCharset>U_EBCDIC_FAMILY) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+
+    /* allocate the swapper */
+    swapper=uprv_malloc(sizeof(UDataSwapper));
+    if(swapper==NULL) {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    uprv_memset(swapper, 0, sizeof(UDataSwapper));
+
+    /* set values and functions pointers according to in/out parameters */
+    swapper->inIsBigEndian=inIsBigEndian;
+    swapper->inCharset=inCharset;
+    swapper->outIsBigEndian=outIsBigEndian;
+    swapper->outCharset=outCharset;
+
+    swapper->readUInt16= inIsBigEndian==U_IS_BIG_ENDIAN ? uprv_readDirectUInt16 : uprv_readSwapUInt16;
+    swapper->readUInt32= inIsBigEndian==U_IS_BIG_ENDIAN ? uprv_readDirectUInt32 : uprv_readSwapUInt32;
+
+    swapper->writeUInt16= outIsBigEndian==U_IS_BIG_ENDIAN ? uprv_writeDirectUInt16 : uprv_writeSwapUInt16;
+    swapper->writeUInt32= outIsBigEndian==U_IS_BIG_ENDIAN ? uprv_writeDirectUInt32 : uprv_writeSwapUInt32;
+
+    swapper->compareInvChars= outCharset==U_ASCII_FAMILY ? uprv_compareInvAscii : uprv_compareInvEbcdic;
+
+    if(inIsBigEndian==outIsBigEndian) {
+        swapper->swapArray16=uprv_copyArray16;
+        swapper->swapArray32=uprv_copyArray32;
+        swapper->swapArray64=uprv_copyArray64;
+    } else {
+        swapper->swapArray16=uprv_swapArray16;
+        swapper->swapArray32=uprv_swapArray32;
+        swapper->swapArray64=uprv_swapArray64;
+    }
+
+    if(inCharset==U_ASCII_FAMILY) {
+        swapper->swapInvChars= outCharset==U_ASCII_FAMILY ? uprv_copyAscii : uprv_ebcdicFromAscii;
+    } else /* U_EBCDIC_FAMILY */ {
+        swapper->swapInvChars= outCharset==U_EBCDIC_FAMILY ? uprv_copyEbcdic : uprv_asciiFromEbcdic;
+    }
+
+    return swapper;
+}
+
+U_CAPI UDataSwapper * U_EXPORT2
+udata_openSwapperForInputData(const void *data, int32_t length,
+                              UBool outIsBigEndian, uint8_t outCharset,
+                              UErrorCode *pErrorCode) {
+    const DataHeader *pHeader;
+    uint16_t headerSize, infoSize;
+    UBool inIsBigEndian;
+    int8_t inCharset;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return NULL;
+    }
+    if( data==NULL ||
+        (length>=0 && length<(int32_t)sizeof(DataHeader)) ||
+        outCharset>U_EBCDIC_FAMILY
+    ) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+
+    pHeader=(const DataHeader *)data;
+    if( (length>=0 && length<sizeof(DataHeader)) ||
+        pHeader->dataHeader.magic1!=0xda ||
+        pHeader->dataHeader.magic2!=0x27 ||
+        pHeader->info.sizeofUChar!=2
+    ) {
+        *pErrorCode=U_UNSUPPORTED_ERROR;
+        return 0;
+    }
+
+    inIsBigEndian=(UBool)pHeader->info.isBigEndian;
+    inCharset=pHeader->info.charsetFamily;
+
+    if(inIsBigEndian==U_IS_BIG_ENDIAN) {
+        headerSize=pHeader->dataHeader.headerSize;
+        infoSize=pHeader->info.size;
+    } else {
+        headerSize=uprv_readSwapUInt16(pHeader->dataHeader.headerSize);
+        infoSize=uprv_readSwapUInt16(pHeader->info.size);
+    }
+
+    if( headerSize<sizeof(DataHeader) ||
+        infoSize<sizeof(UDataInfo) ||
+        headerSize<(sizeof(pHeader->dataHeader)+infoSize) ||
+        (length>=0 && length<headerSize)
+    ) {
+        *pErrorCode=U_UNSUPPORTED_ERROR;
+        return 0;
+    }
+
+    return udata_openSwapper(inIsBigEndian, inCharset, outIsBigEndian, outCharset, pErrorCode);
+}
+
+U_CAPI void U_EXPORT2
+udata_closeSwapper(UDataSwapper *ds) {
+    uprv_free(ds);
+}
index 5303870..07e06c2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udataswp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 05f36a0..5bd7ad3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uelement.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/uenum.c b/source/common/uenum.c
new file mode 100644 (file)
index 0000000..71c06b5
--- /dev/null
@@ -0,0 +1,189 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2002-2012, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  uenum.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:2
+*
+*   created on: 2002jul08
+*   created by: Vladimir Weinstein
+*/
+
+#include "unicode/putil.h"
+#include "uenumimp.h"
+#include "cmemory.h"
+
+/* Layout of the baseContext buffer. */
+typedef struct {
+    int32_t len;  /* number of bytes available starting at 'data' */
+    char    data; /* actual data starts here */
+} _UEnumBuffer;
+
+/* Extra bytes to allocate in the baseContext buffer. */
+static const int32_t PAD = 8;
+
+/* Return a pointer to the baseContext buffer, possibly allocating
+   or reallocating it if at least 'capacity' bytes are not available. */
+static void* _getBuffer(UEnumeration* en, int32_t capacity) {
+
+    if (en->baseContext != NULL) {
+        if (((_UEnumBuffer*) en->baseContext)->len < capacity) {
+            capacity += PAD;
+            en->baseContext = uprv_realloc(en->baseContext,
+                                           sizeof(int32_t) + capacity);
+            if (en->baseContext == NULL) {
+                return NULL;
+            }
+            ((_UEnumBuffer*) en->baseContext)->len = capacity;
+        }
+    } else {
+        capacity += PAD;
+        en->baseContext = uprv_malloc(sizeof(int32_t) + capacity);
+        if (en->baseContext == NULL) {
+            return NULL;
+        }
+        ((_UEnumBuffer*) en->baseContext)->len = capacity;
+    }
+    
+    return (void*) & ((_UEnumBuffer*) en->baseContext)->data;
+}
+
+U_CAPI void U_EXPORT2
+uenum_close(UEnumeration* en)
+{
+    if (en) {
+        if (en->close != NULL) {
+            if (en->baseContext) {
+                uprv_free(en->baseContext);
+            }
+            en->close(en);
+        } else { /* this seems dangerous, but we better kill the object */
+            uprv_free(en);
+        }
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+uenum_count(UEnumeration* en, UErrorCode* status)
+{
+    if (!en || U_FAILURE(*status)) {
+        return -1;
+    }
+    if (en->count != NULL) {
+        return en->count(en, status);
+    } else {
+        *status = U_UNSUPPORTED_ERROR;
+        return -1;
+    }
+}
+
+/* Don't call this directly. Only uenum_unext should be calling this. */
+U_CAPI const UChar* U_EXPORT2
+uenum_unextDefault(UEnumeration* en,
+            int32_t* resultLength,
+            UErrorCode* status)
+{
+    UChar *ustr = NULL;
+    int32_t len = 0;
+    if (en->next != NULL) {
+        const char *cstr = en->next(en, &len, status);
+        if (cstr != NULL) {
+            ustr = (UChar*) _getBuffer(en, (len+1) * sizeof(UChar));
+            if (ustr == NULL) {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+            } else {
+                u_charsToUChars(cstr, ustr, len+1);
+            }
+        }
+    } else {
+        *status = U_UNSUPPORTED_ERROR;
+    }
+    if (resultLength) {
+        *resultLength = len;
+    }
+    return ustr;
+}
+
+/* Don't call this directly. Only uenum_next should be calling this. */
+U_CAPI const char* U_EXPORT2
+uenum_nextDefault(UEnumeration* en,
+            int32_t* resultLength,
+            UErrorCode* status)
+{
+    if (en->uNext != NULL) {
+        char *tempCharVal;
+        const UChar *tempUCharVal = en->uNext(en, resultLength, status);
+        if (tempUCharVal == NULL) {
+            return NULL;
+        }
+        tempCharVal = (char*)
+            _getBuffer(en, (*resultLength+1) * sizeof(char));
+        if (!tempCharVal) {
+            *status = U_MEMORY_ALLOCATION_ERROR;
+            return NULL;
+        }
+        u_UCharsToChars(tempUCharVal, tempCharVal, *resultLength + 1);
+        return tempCharVal;
+    } else {
+        *status = U_UNSUPPORTED_ERROR;
+        return NULL;
+    }
+}
+
+U_CAPI const UChar* U_EXPORT2
+uenum_unext(UEnumeration* en,
+            int32_t* resultLength,
+            UErrorCode* status)
+{
+    if (!en || U_FAILURE(*status)) {
+        return NULL;
+    }
+    if (en->uNext != NULL) {
+        return en->uNext(en, resultLength, status);
+    } else {
+        *status = U_UNSUPPORTED_ERROR;
+        return NULL;
+    }
+}
+
+U_CAPI const char* U_EXPORT2
+uenum_next(UEnumeration* en,
+          int32_t* resultLength,
+          UErrorCode* status)
+{
+    if (!en || U_FAILURE(*status)) {
+        return NULL;
+    }
+    if (en->next != NULL) {
+        if (resultLength != NULL) {
+            return en->next(en, resultLength, status);
+        }
+        else {
+            int32_t dummyLength=0;
+            return en->next(en, &dummyLength, status);
+        }
+    } else {
+        *status = U_UNSUPPORTED_ERROR;
+        return NULL;
+    }
+}
+
+U_CAPI void U_EXPORT2
+uenum_reset(UEnumeration* en, UErrorCode* status)
+{
+    if (!en || U_FAILURE(*status)) {
+        return;
+    }
+    if (en->reset != NULL) {
+        en->reset(en, status);
+    } else {
+        *status = U_UNSUPPORTED_ERROR;
+    }
+}
index 9c9df75..5d01f01 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uenumimp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
diff --git a/source/common/uhash.c b/source/common/uhash.c
new file mode 100644 (file)
index 0000000..282f89f
--- /dev/null
@@ -0,0 +1,975 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*   Copyright (C) 1997-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+******************************************************************************
+*   Date        Name        Description
+*   03/22/00    aliu        Adapted from original C++ ICU Hashtable.
+*   07/06/01    aliu        Modified to support int32_t keys on
+*                           platforms with sizeof(void*) < 32.
+******************************************************************************
+*/
+
+#include "uhash.h"
+#include "unicode/ustring.h"
+#include "cstring.h"
+#include "cmemory.h"
+#include "uassert.h"
+#include "ustr_imp.h"
+
+/* This hashtable is implemented as a double hash.  All elements are
+ * stored in a single array with no secondary storage for collision
+ * resolution (no linked list, etc.).  When there is a hash collision
+ * (when two unequal keys have the same hashcode) we resolve this by
+ * using a secondary hash.  The secondary hash is an increment
+ * computed as a hash function (a different one) of the primary
+ * hashcode.  This increment is added to the initial hash value to
+ * obtain further slots assigned to the same hash code.  For this to
+ * work, the length of the array and the increment must be relatively
+ * prime.  The easiest way to achieve this is to have the length of
+ * the array be prime, and the increment be any value from
+ * 1..length-1.
+ *
+ * Hashcodes are 32-bit integers.  We make sure all hashcodes are
+ * non-negative by masking off the top bit.  This has two effects: (1)
+ * modulo arithmetic is simplified.  If we allowed negative hashcodes,
+ * then when we computed hashcode % length, we could get a negative
+ * result, which we would then have to adjust back into range.  It's
+ * simpler to just make hashcodes non-negative. (2) It makes it easy
+ * to check for empty vs. occupied slots in the table.  We just mark
+ * empty or deleted slots with a negative hashcode.
+ *
+ * The central function is _uhash_find().  This function looks for a
+ * slot matching the given key and hashcode.  If one is found, it
+ * returns a pointer to that slot.  If the table is full, and no match
+ * is found, it returns NULL -- in theory.  This would make the code
+ * more complicated, since all callers of _uhash_find() would then
+ * have to check for a NULL result.  To keep this from happening, we
+ * don't allow the table to fill.  When there is only one
+ * empty/deleted slot left, uhash_put() will refuse to increase the
+ * count, and fail.  This simplifies the code.  In practice, one will
+ * seldom encounter this using default UHashtables.  However, if a
+ * hashtable is set to a U_FIXED resize policy, or if memory is
+ * exhausted, then the table may fill.
+ *
+ * High and low water ratios control rehashing.  They establish levels
+ * of fullness (from 0 to 1) outside of which the data array is
+ * reallocated and repopulated.  Setting the low water ratio to zero
+ * means the table will never shrink.  Setting the high water ratio to
+ * one means the table will never grow.  The ratios should be
+ * coordinated with the ratio between successive elements of the
+ * PRIMES table, so that when the primeIndex is incremented or
+ * decremented during rehashing, it brings the ratio of count / length
+ * back into the desired range (between low and high water ratios).
+ */
+
+/********************************************************************
+ * PRIVATE Constants, Macros
+ ********************************************************************/
+
+/* This is a list of non-consecutive primes chosen such that
+ * PRIMES[i+1] ~ 2*PRIMES[i].  (Currently, the ratio ranges from 1.81
+ * to 2.18; the inverse ratio ranges from 0.459 to 0.552.)  If this
+ * ratio is changed, the low and high water ratios should also be
+ * adjusted to suit.
+ *
+ * These prime numbers were also chosen so that they are the largest
+ * prime number while being less than a power of two.
+ */
+static const int32_t PRIMES[] = {
+    13, 31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
+    65521, 131071, 262139, 524287, 1048573, 2097143, 4194301, 8388593,
+    16777213, 33554393, 67108859, 134217689, 268435399, 536870909,
+    1073741789, 2147483647 /*, 4294967291 */
+};
+
+#define PRIMES_LENGTH UPRV_LENGTHOF(PRIMES)
+#define DEFAULT_PRIME_INDEX 3
+
+/* These ratios are tuned to the PRIMES array such that a resize
+ * places the table back into the zone of non-resizing.  That is,
+ * after a call to _uhash_rehash(), a subsequent call to
+ * _uhash_rehash() should do nothing (should not churn).  This is only
+ * a potential problem with U_GROW_AND_SHRINK.
+ */
+static const float RESIZE_POLICY_RATIO_TABLE[6] = {
+    /* low, high water ratio */
+    0.0F, 0.5F, /* U_GROW: Grow on demand, do not shrink */
+    0.1F, 0.5F, /* U_GROW_AND_SHRINK: Grow and shrink on demand */
+    0.0F, 1.0F  /* U_FIXED: Never change size */
+};
+
+/*
+  Invariants for hashcode values:
+
+  * DELETED < 0
+  * EMPTY < 0
+  * Real hashes >= 0
+
+  Hashcodes may not start out this way, but internally they are
+  adjusted so that they are always positive.  We assume 32-bit
+  hashcodes; adjust these constants for other hashcode sizes.
+*/
+#define HASH_DELETED    ((int32_t) 0x80000000)
+#define HASH_EMPTY      ((int32_t) HASH_DELETED + 1)
+
+#define IS_EMPTY_OR_DELETED(x) ((x) < 0)
+
+/* This macro expects a UHashTok.pointer as its keypointer and
+   valuepointer parameters */
+#define HASH_DELETE_KEY_VALUE(hash, keypointer, valuepointer) \
+            if (hash->keyDeleter != NULL && keypointer != NULL) { \
+                (*hash->keyDeleter)(keypointer); \
+            } \
+            if (hash->valueDeleter != NULL && valuepointer != NULL) { \
+                (*hash->valueDeleter)(valuepointer); \
+            }
+
+/*
+ * Constants for hinting whether a key or value is an integer
+ * or a pointer.  If a hint bit is zero, then the associated
+ * token is assumed to be an integer.
+ */
+#define HINT_KEY_POINTER   (1)
+#define HINT_VALUE_POINTER (2)
+
+/********************************************************************
+ * PRIVATE Implementation
+ ********************************************************************/
+
+static UHashTok
+_uhash_setElement(UHashtable *hash, UHashElement* e,
+                  int32_t hashcode,
+                  UHashTok key, UHashTok value, int8_t hint) {
+
+    UHashTok oldValue = e->value;
+    if (hash->keyDeleter != NULL && e->key.pointer != NULL &&
+        e->key.pointer != key.pointer) { /* Avoid double deletion */
+        (*hash->keyDeleter)(e->key.pointer);
+    }
+    if (hash->valueDeleter != NULL) {
+        if (oldValue.pointer != NULL &&
+            oldValue.pointer != value.pointer) { /* Avoid double deletion */
+            (*hash->valueDeleter)(oldValue.pointer);
+        }
+        oldValue.pointer = NULL;
+    }
+    /* Compilers should copy the UHashTok union correctly, but even if
+     * they do, memory heap tools (e.g. BoundsChecker) can get
+     * confused when a pointer is cloaked in a union and then copied.
+     * TO ALLEVIATE THIS, we use hints (based on what API the user is
+     * calling) to copy pointers when we know the user thinks
+     * something is a pointer. */
+    if (hint & HINT_KEY_POINTER) {
+        e->key.pointer = key.pointer;
+    } else {
+        e->key = key;
+    }
+    if (hint & HINT_VALUE_POINTER) {
+        e->value.pointer = value.pointer;
+    } else {
+        e->value = value;
+    }
+    e->hashcode = hashcode;
+    return oldValue;
+}
+
+/**
+ * Assumes that the given element is not empty or deleted.
+ */
+static UHashTok
+_uhash_internalRemoveElement(UHashtable *hash, UHashElement* e) {
+    UHashTok empty;
+    U_ASSERT(!IS_EMPTY_OR_DELETED(e->hashcode));
+    --hash->count;
+    empty.pointer = NULL; empty.integer = 0;
+    return _uhash_setElement(hash, e, HASH_DELETED, empty, empty, 0);
+}
+
+static void
+_uhash_internalSetResizePolicy(UHashtable *hash, enum UHashResizePolicy policy) {
+    U_ASSERT(hash != NULL);
+    U_ASSERT(((int32_t)policy) >= 0);
+    U_ASSERT(((int32_t)policy) < 3);
+    hash->lowWaterRatio  = RESIZE_POLICY_RATIO_TABLE[policy * 2];
+    hash->highWaterRatio = RESIZE_POLICY_RATIO_TABLE[policy * 2 + 1];
+}
+
+/**
+ * Allocate internal data array of a size determined by the given
+ * prime index.  If the index is out of range it is pinned into range.
+ * If the allocation fails the status is set to
+ * U_MEMORY_ALLOCATION_ERROR and all array storage is freed.  In
+ * either case the previous array pointer is overwritten.
+ *
+ * Caller must ensure primeIndex is in range 0..PRIME_LENGTH-1.
+ */
+static void
+_uhash_allocate(UHashtable *hash,
+                int32_t primeIndex,
+                UErrorCode *status) {
+
+    UHashElement *p, *limit;
+    UHashTok emptytok;
+
+    if (U_FAILURE(*status)) return;
+
+    U_ASSERT(primeIndex >= 0 && primeIndex < PRIMES_LENGTH);
+
+    hash->primeIndex = primeIndex;
+    hash->length = PRIMES[primeIndex];
+
+    p = hash->elements = (UHashElement*)
+        uprv_malloc(sizeof(UHashElement) * hash->length);
+
+    if (hash->elements == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+
+    emptytok.pointer = NULL; /* Only one of these two is needed */
+    emptytok.integer = 0;    /* but we don't know which one. */
+    
+    limit = p + hash->length;
+    while (p < limit) {
+        p->key = emptytok;
+        p->value = emptytok;
+        p->hashcode = HASH_EMPTY;
+        ++p;
+    }
+
+    hash->count = 0;
+    hash->lowWaterMark = (int32_t)(hash->length * hash->lowWaterRatio);
+    hash->highWaterMark = (int32_t)(hash->length * hash->highWaterRatio);
+}
+
+static UHashtable*
+_uhash_init(UHashtable *result,
+              UHashFunction *keyHash, 
+              UKeyComparator *keyComp,
+              UValueComparator *valueComp,
+              int32_t primeIndex,
+              UErrorCode *status)
+{
+    if (U_FAILURE(*status)) return NULL;
+    U_ASSERT(keyHash != NULL);
+    U_ASSERT(keyComp != NULL);
+
+    result->keyHasher       = keyHash;
+    result->keyComparator   = keyComp;
+    result->valueComparator = valueComp;
+    result->keyDeleter      = NULL;
+    result->valueDeleter    = NULL;
+    result->allocated       = FALSE;
+    _uhash_internalSetResizePolicy(result, U_GROW);
+
+    _uhash_allocate(result, primeIndex, status);
+
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+
+    return result;
+}
+
+static UHashtable*
+_uhash_create(UHashFunction *keyHash, 
+              UKeyComparator *keyComp,
+              UValueComparator *valueComp,
+              int32_t primeIndex,
+              UErrorCode *status) {
+    UHashtable *result;
+
+    if (U_FAILURE(*status)) return NULL;
+
+    result = (UHashtable*) uprv_malloc(sizeof(UHashtable));
+    if (result == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+
+    _uhash_init(result, keyHash, keyComp, valueComp, primeIndex, status);
+    result->allocated       = TRUE;
+
+    if (U_FAILURE(*status)) {
+        uprv_free(result);
+        return NULL;
+    }
+
+    return result;
+}
+
+/**
+ * Look for a key in the table, or if no such key exists, the first
+ * empty slot matching the given hashcode.  Keys are compared using
+ * the keyComparator function.
+ *
+ * First find the start position, which is the hashcode modulo
+ * the length.  Test it to see if it is:
+ *
+ * a. identical:  First check the hash values for a quick check,
+ *    then compare keys for equality using keyComparator.
+ * b. deleted
+ * c. empty
+ *
+ * Stop if it is identical or empty, otherwise continue by adding a
+ * "jump" value (moduloing by the length again to keep it within
+ * range) and retesting.  For efficiency, there need enough empty
+ * values so that the searchs stop within a reasonable amount of time.
+ * This can be changed by changing the high/low water marks.
+ *
+ * In theory, this function can return NULL, if it is full (no empty
+ * or deleted slots) and if no matching key is found.  In practice, we
+ * prevent this elsewhere (in uhash_put) by making sure the last slot
+ * in the table is never filled.
+ *
+ * The size of the table should be prime for this algorithm to work;
+ * otherwise we are not guaranteed that the jump value (the secondary
+ * hash) is relatively prime to the table length.
+ */
+static UHashElement*
+_uhash_find(const UHashtable *hash, UHashTok key,
+            int32_t hashcode) {
+
+    int32_t firstDeleted = -1;  /* assume invalid index */
+    int32_t theIndex, startIndex;
+    int32_t jump = 0; /* lazy evaluate */
+    int32_t tableHash;
+    UHashElement *elements = hash->elements;
+
+    hashcode &= 0x7FFFFFFF; /* must be positive */
+    startIndex = theIndex = (hashcode ^ 0x4000000) % hash->length;
+
+    do {
+        tableHash = elements[theIndex].hashcode;
+        if (tableHash == hashcode) {          /* quick check */
+            if ((*hash->keyComparator)(key, elements[theIndex].key)) {
+                return &(elements[theIndex]);
+            }
+        } else if (!IS_EMPTY_OR_DELETED(tableHash)) {
+            /* We have hit a slot which contains a key-value pair,
+             * but for which the hash code does not match.  Keep
+             * looking.
+             */
+        } else if (tableHash == HASH_EMPTY) { /* empty, end o' the line */
+            break;
+        } else if (firstDeleted < 0) { /* remember first deleted */
+            firstDeleted = theIndex;
+        }
+        if (jump == 0) { /* lazy compute jump */
+            /* The jump value must be relatively prime to the table
+             * length.  As long as the length is prime, then any value
+             * 1..length-1 will be relatively prime to it.
+             */
+            jump = (hashcode % (hash->length - 1)) + 1;
+        }
+        theIndex = (theIndex + jump) % hash->length;
+    } while (theIndex != startIndex);
+
+    if (firstDeleted >= 0) {
+        theIndex = firstDeleted; /* reset if had deleted slot */
+    } else if (tableHash != HASH_EMPTY) {
+        /* We get to this point if the hashtable is full (no empty or
+         * deleted slots), and we've failed to find a match.  THIS
+         * WILL NEVER HAPPEN as long as uhash_put() makes sure that
+         * count is always < length.
+         */
+        U_ASSERT(FALSE);
+        return NULL; /* Never happens if uhash_put() behaves */
+    }
+    return &(elements[theIndex]);
+}
+
+/**
+ * Attempt to grow or shrink the data arrays in order to make the
+ * count fit between the high and low water marks.  hash_put() and
+ * hash_remove() call this method when the count exceeds the high or
+ * low water marks.  This method may do nothing, if memory allocation
+ * fails, or if the count is already in range, or if the length is
+ * already at the low or high limit.  In any case, upon return the
+ * arrays will be valid.
+ */
+static void
+_uhash_rehash(UHashtable *hash, UErrorCode *status) {
+
+    UHashElement *old = hash->elements;
+    int32_t oldLength = hash->length;
+    int32_t newPrimeIndex = hash->primeIndex;
+    int32_t i;
+
+    if (hash->count > hash->highWaterMark) {
+        if (++newPrimeIndex >= PRIMES_LENGTH) {
+            return;
+        }
+    } else if (hash->count < hash->lowWaterMark) {
+        if (--newPrimeIndex < 0) {
+            return;
+        }
+    } else {
+        return;
+    }
+
+    _uhash_allocate(hash, newPrimeIndex, status);
+
+    if (U_FAILURE(*status)) {
+        hash->elements = old;
+        hash->length = oldLength;       
+        return;
+    }
+
+    for (i = oldLength - 1; i >= 0; --i) {
+        if (!IS_EMPTY_OR_DELETED(old[i].hashcode)) {
+            UHashElement *e = _uhash_find(hash, old[i].key, old[i].hashcode);
+            U_ASSERT(e != NULL);
+            U_ASSERT(e->hashcode == HASH_EMPTY);
+            e->key = old[i].key;
+            e->value = old[i].value;
+            e->hashcode = old[i].hashcode;
+            ++hash->count;
+        }
+    }
+
+    uprv_free(old);
+}
+
+static UHashTok
+_uhash_remove(UHashtable *hash,
+              UHashTok key) {
+    /* First find the position of the key in the table.  If the object
+     * has not been removed already, remove it.  If the user wanted
+     * keys deleted, then delete it also.  We have to put a special
+     * hashcode in that position that means that something has been
+     * deleted, since when we do a find, we have to continue PAST any
+     * deleted values.
+     */
+    UHashTok result;
+    UHashElement* e = _uhash_find(hash, key, hash->keyHasher(key));
+    U_ASSERT(e != NULL);
+    result.pointer = NULL;
+    result.integer = 0;
+    if (!IS_EMPTY_OR_DELETED(e->hashcode)) {
+        result = _uhash_internalRemoveElement(hash, e);
+        if (hash->count < hash->lowWaterMark) {
+            UErrorCode status = U_ZERO_ERROR;
+            _uhash_rehash(hash, &status);
+        }
+    }
+    return result;
+}
+
+static UHashTok
+_uhash_put(UHashtable *hash,
+           UHashTok key,
+           UHashTok value,
+           int8_t hint,
+           UErrorCode *status) {
+
+    /* Put finds the position in the table for the new value.  If the
+     * key is already in the table, it is deleted, if there is a
+     * non-NULL keyDeleter.  Then the key, the hash and the value are
+     * all put at the position in their respective arrays.
+     */
+    int32_t hashcode;
+    UHashElement* e;
+    UHashTok emptytok;
+
+    if (U_FAILURE(*status)) {
+        goto err;
+    }
+    U_ASSERT(hash != NULL);
+    /* Cannot always check pointer here or iSeries sees NULL every time. */
+    if ((hint & HINT_VALUE_POINTER) && value.pointer == NULL) {
+        /* Disallow storage of NULL values, since NULL is returned by
+         * get() to indicate an absent key.  Storing NULL == removing.
+         */
+        return _uhash_remove(hash, key);
+    }
+    if (hash->count > hash->highWaterMark) {
+        _uhash_rehash(hash, status);
+        if (U_FAILURE(*status)) {
+            goto err;
+        }
+    }
+
+    hashcode = (*hash->keyHasher)(key);
+    e = _uhash_find(hash, key, hashcode);
+    U_ASSERT(e != NULL);
+
+    if (IS_EMPTY_OR_DELETED(e->hashcode)) {
+        /* Important: We must never actually fill the table up.  If we
+         * do so, then _uhash_find() will return NULL, and we'll have
+         * to check for NULL after every call to _uhash_find().  To
+         * avoid this we make sure there is always at least one empty
+         * or deleted slot in the table.  This only is a problem if we
+         * are out of memory and rehash isn't working.
+         */
+        ++hash->count;
+        if (hash->count == hash->length) {
+            /* Don't allow count to reach length */
+            --hash->count;
+            *status = U_MEMORY_ALLOCATION_ERROR;
+            goto err;
+        }
+    }
+
+    /* We must in all cases handle storage properly.  If there was an
+     * old key, then it must be deleted (if the deleter != NULL).
+     * Make hashcodes stored in table positive.
+     */
+    return _uhash_setElement(hash, e, hashcode & 0x7FFFFFFF, key, value, hint);
+
+ err:
+    /* If the deleters are non-NULL, this method adopts its key and/or
+     * value arguments, and we must be sure to delete the key and/or
+     * value in all cases, even upon failure.
+     */
+    HASH_DELETE_KEY_VALUE(hash, key.pointer, value.pointer);
+    emptytok.pointer = NULL; emptytok.integer = 0;
+    return emptytok;
+}
+
+
+/********************************************************************
+ * PUBLIC API
+ ********************************************************************/
+
+U_CAPI UHashtable* U_EXPORT2
+uhash_open(UHashFunction *keyHash, 
+           UKeyComparator *keyComp,
+           UValueComparator *valueComp,
+           UErrorCode *status) {
+
+    return _uhash_create(keyHash, keyComp, valueComp, DEFAULT_PRIME_INDEX, status);
+}
+
+U_CAPI UHashtable* U_EXPORT2
+uhash_openSize(UHashFunction *keyHash, 
+               UKeyComparator *keyComp,
+               UValueComparator *valueComp,
+               int32_t size,
+               UErrorCode *status) {
+
+    /* Find the smallest index i for which PRIMES[i] >= size. */
+    int32_t i = 0;
+    while (i<(PRIMES_LENGTH-1) && PRIMES[i]<size) {
+        ++i;
+    }
+
+    return _uhash_create(keyHash, keyComp, valueComp, i, status);
+}
+
+U_CAPI UHashtable* U_EXPORT2
+uhash_init(UHashtable *fillinResult,
+           UHashFunction *keyHash, 
+           UKeyComparator *keyComp,
+           UValueComparator *valueComp,
+           UErrorCode *status) {
+
+    return _uhash_init(fillinResult, keyHash, keyComp, valueComp, DEFAULT_PRIME_INDEX, status);
+}
+
+U_CAPI void U_EXPORT2
+uhash_close(UHashtable *hash) {
+    if (hash == NULL) {
+        return;
+    }
+    if (hash->elements != NULL) {
+        if (hash->keyDeleter != NULL || hash->valueDeleter != NULL) {
+            int32_t pos=UHASH_FIRST;
+            UHashElement *e;
+            while ((e = (UHashElement*) uhash_nextElement(hash, &pos)) != NULL) {
+                HASH_DELETE_KEY_VALUE(hash, e->key.pointer, e->value.pointer);
+            }
+        }
+        uprv_free(hash->elements);
+        hash->elements = NULL;
+    }
+    if (hash->allocated) {
+        uprv_free(hash);
+    }
+}
+
+U_CAPI UHashFunction *U_EXPORT2
+uhash_setKeyHasher(UHashtable *hash, UHashFunction *fn) {
+    UHashFunction *result = hash->keyHasher;
+    hash->keyHasher = fn;
+    return result;
+}
+
+U_CAPI UKeyComparator *U_EXPORT2
+uhash_setKeyComparator(UHashtable *hash, UKeyComparator *fn) {
+    UKeyComparator *result = hash->keyComparator;
+    hash->keyComparator = fn;
+    return result;
+}
+U_CAPI UValueComparator *U_EXPORT2 
+uhash_setValueComparator(UHashtable *hash, UValueComparator *fn){
+    UValueComparator *result = hash->valueComparator;
+    hash->valueComparator = fn;
+    return result;
+}
+
+U_CAPI UObjectDeleter *U_EXPORT2
+uhash_setKeyDeleter(UHashtable *hash, UObjectDeleter *fn) {
+    UObjectDeleter *result = hash->keyDeleter;
+    hash->keyDeleter = fn;
+    return result;
+}
+
+U_CAPI UObjectDeleter *U_EXPORT2
+uhash_setValueDeleter(UHashtable *hash, UObjectDeleter *fn) {
+    UObjectDeleter *result = hash->valueDeleter;
+    hash->valueDeleter = fn;
+    return result;
+}
+
+U_CAPI void U_EXPORT2
+uhash_setResizePolicy(UHashtable *hash, enum UHashResizePolicy policy) {
+    UErrorCode status = U_ZERO_ERROR;
+    _uhash_internalSetResizePolicy(hash, policy);
+    hash->lowWaterMark  = (int32_t)(hash->length * hash->lowWaterRatio);
+    hash->highWaterMark = (int32_t)(hash->length * hash->highWaterRatio);    
+    _uhash_rehash(hash, &status);
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_count(const UHashtable *hash) {
+    return hash->count;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_get(const UHashtable *hash,
+          const void* key) {
+    UHashTok keyholder;
+    keyholder.pointer = (void*) key;
+    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.pointer;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_iget(const UHashtable *hash,
+           int32_t key) {
+    UHashTok keyholder;
+    keyholder.integer = key;
+    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.pointer;
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_geti(const UHashtable *hash,
+           const void* key) {
+    UHashTok keyholder;
+    keyholder.pointer = (void*) key;
+    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.integer;
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_igeti(const UHashtable *hash,
+           int32_t key) {
+    UHashTok keyholder;
+    keyholder.integer = key;
+    return _uhash_find(hash, keyholder, hash->keyHasher(keyholder))->value.integer;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_put(UHashtable *hash,
+          void* key,
+          void* value,
+          UErrorCode *status) {
+    UHashTok keyholder, valueholder;
+    keyholder.pointer = key;
+    valueholder.pointer = value;
+    return _uhash_put(hash, keyholder, valueholder,
+                      HINT_KEY_POINTER | HINT_VALUE_POINTER,
+                      status).pointer;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_iput(UHashtable *hash,
+           int32_t key,
+           void* value,
+           UErrorCode *status) {
+    UHashTok keyholder, valueholder;
+    keyholder.integer = key;
+    valueholder.pointer = value;
+    return _uhash_put(hash, keyholder, valueholder,
+                      HINT_VALUE_POINTER,
+                      status).pointer;
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_puti(UHashtable *hash,
+           void* key,
+           int32_t value,
+           UErrorCode *status) {
+    UHashTok keyholder, valueholder;
+    keyholder.pointer = key;
+    valueholder.integer = value;
+    return _uhash_put(hash, keyholder, valueholder,
+                      HINT_KEY_POINTER,
+                      status).integer;
+}
+
+
+U_CAPI int32_t U_EXPORT2
+uhash_iputi(UHashtable *hash,
+           int32_t key,
+           int32_t value,
+           UErrorCode *status) {
+    UHashTok keyholder, valueholder;
+    keyholder.integer = key;
+    valueholder.integer = value;
+    return _uhash_put(hash, keyholder, valueholder,
+                      0, /* neither is a ptr */
+                      status).integer;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_remove(UHashtable *hash,
+             const void* key) {
+    UHashTok keyholder;
+    keyholder.pointer = (void*) key;
+    return _uhash_remove(hash, keyholder).pointer;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_iremove(UHashtable *hash,
+              int32_t key) {
+    UHashTok keyholder;
+    keyholder.integer = key;
+    return _uhash_remove(hash, keyholder).pointer;
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_removei(UHashtable *hash,
+              const void* key) {
+    UHashTok keyholder;
+    keyholder.pointer = (void*) key;
+    return _uhash_remove(hash, keyholder).integer;
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_iremovei(UHashtable *hash,
+               int32_t key) {
+    UHashTok keyholder;
+    keyholder.integer = key;
+    return _uhash_remove(hash, keyholder).integer;
+}
+
+U_CAPI void U_EXPORT2
+uhash_removeAll(UHashtable *hash) {
+    int32_t pos = UHASH_FIRST;
+    const UHashElement *e;
+    U_ASSERT(hash != NULL);
+    if (hash->count != 0) {
+        while ((e = uhash_nextElement(hash, &pos)) != NULL) {
+            uhash_removeElement(hash, e);
+        }
+    }
+    U_ASSERT(hash->count == 0);
+}
+
+U_CAPI const UHashElement* U_EXPORT2
+uhash_find(const UHashtable *hash, const void* key) {
+    UHashTok keyholder;
+    const UHashElement *e;
+    keyholder.pointer = (void*) key;
+    e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));
+    return IS_EMPTY_OR_DELETED(e->hashcode) ? NULL : e;
+}
+
+U_CAPI const UHashElement* U_EXPORT2
+uhash_nextElement(const UHashtable *hash, int32_t *pos) {
+    /* Walk through the array until we find an element that is not
+     * EMPTY and not DELETED.
+     */
+    int32_t i;
+    U_ASSERT(hash != NULL);
+    for (i = *pos + 1; i < hash->length; ++i) {
+        if (!IS_EMPTY_OR_DELETED(hash->elements[i].hashcode)) {
+            *pos = i;
+            return &(hash->elements[i]);
+        }
+    }
+
+    /* No more elements */
+    return NULL;
+}
+
+U_CAPI void* U_EXPORT2
+uhash_removeElement(UHashtable *hash, const UHashElement* e) {
+    U_ASSERT(hash != NULL);
+    U_ASSERT(e != NULL);
+    if (!IS_EMPTY_OR_DELETED(e->hashcode)) {
+        UHashElement *nce = (UHashElement *)e;
+        return _uhash_internalRemoveElement(hash, nce).pointer;
+    }
+    return NULL;
+}
+
+/********************************************************************
+ * UHashTok convenience
+ ********************************************************************/
+
+/**
+ * Return a UHashTok for an integer.
+ */
+/*U_CAPI UHashTok U_EXPORT2
+uhash_toki(int32_t i) {
+    UHashTok tok;
+    tok.integer = i;
+    return tok;
+}*/
+
+/**
+ * Return a UHashTok for a pointer.
+ */
+/*U_CAPI UHashTok U_EXPORT2
+uhash_tokp(void* p) {
+    UHashTok tok;
+    tok.pointer = p;
+    return tok;
+}*/
+
+/********************************************************************
+ * PUBLIC Key Hash Functions
+ ********************************************************************/
+
+U_CAPI int32_t U_EXPORT2
+uhash_hashUChars(const UHashTok key) {
+    const UChar *s = (const UChar *)key.pointer;
+    return s == NULL ? 0 : ustr_hashUCharsN(s, u_strlen(s));
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_hashChars(const UHashTok key) {
+    const char *s = (const char *)key.pointer;
+    return s == NULL ? 0 : ustr_hashCharsN(s, uprv_strlen(s));
+}
+
+U_CAPI int32_t U_EXPORT2
+uhash_hashIChars(const UHashTok key) {
+    const char *s = (const char *)key.pointer;
+    return s == NULL ? 0 : ustr_hashICharsN(s, uprv_strlen(s));
+}
+
+U_CAPI UBool U_EXPORT2 
+uhash_equals(const UHashtable* hash1, const UHashtable* hash2){
+    int32_t count1, count2, pos, i;
+
+    if(hash1==hash2){
+        return TRUE;
+    }
+
+    /*
+     * Make sure that we are comparing 2 valid hashes of the same type
+     * with valid comparison functions.
+     * Without valid comparison functions, a binary comparison
+     * of the hash values will yield random results on machines
+     * with 64-bit pointers and 32-bit integer hashes.
+     * A valueComparator is normally optional.
+     */
+    if (hash1==NULL || hash2==NULL ||
+        hash1->keyComparator != hash2->keyComparator ||
+        hash1->valueComparator != hash2->valueComparator ||
+        hash1->valueComparator == NULL)
+    {
+        /*
+        Normally we would return an error here about incompatible hash tables,
+        but we return FALSE instead.
+        */
+        return FALSE;
+    }
+
+    count1 = uhash_count(hash1);
+    count2 = uhash_count(hash2);
+    if(count1!=count2){
+        return FALSE;
+    }
+    
+    pos=UHASH_FIRST;
+    for(i=0; i<count1; i++){
+        const UHashElement* elem1 = uhash_nextElement(hash1, &pos);
+        const UHashTok key1 = elem1->key;
+        const UHashTok val1 = elem1->value;
+        /* here the keys are not compared, instead the key form hash1 is used to fetch
+         * value from hash2. If the hashes are equal then then both hashes should 
+         * contain equal values for the same key!
+         */
+        const UHashElement* elem2 = _uhash_find(hash2, key1, hash2->keyHasher(key1));
+        const UHashTok val2 = elem2->value;
+        if(hash1->valueComparator(val1, val2)==FALSE){
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
+/********************************************************************
+ * PUBLIC Comparator Functions
+ ********************************************************************/
+
+U_CAPI UBool U_EXPORT2
+uhash_compareUChars(const UHashTok key1, const UHashTok key2) {
+    const UChar *p1 = (const UChar*) key1.pointer;
+    const UChar *p2 = (const UChar*) key2.pointer;
+    if (p1 == p2) {
+        return TRUE;
+    }
+    if (p1 == NULL || p2 == NULL) {
+        return FALSE;
+    }
+    while (*p1 != 0 && *p1 == *p2) {
+        ++p1;
+        ++p2;
+    }
+    return (UBool)(*p1 == *p2);
+}
+
+U_CAPI UBool U_EXPORT2
+uhash_compareChars(const UHashTok key1, const UHashTok key2) {
+    const char *p1 = (const char*) key1.pointer;
+    const char *p2 = (const char*) key2.pointer;
+    if (p1 == p2) {
+        return TRUE;
+    }
+    if (p1 == NULL || p2 == NULL) {
+        return FALSE;
+    }
+    while (*p1 != 0 && *p1 == *p2) {
+        ++p1;
+        ++p2;
+    }
+    return (UBool)(*p1 == *p2);
+}
+
+U_CAPI UBool U_EXPORT2
+uhash_compareIChars(const UHashTok key1, const UHashTok key2) {
+    const char *p1 = (const char*) key1.pointer;
+    const char *p2 = (const char*) key2.pointer;
+    if (p1 == p2) {
+        return TRUE;
+    }
+    if (p1 == NULL || p2 == NULL) {
+        return FALSE;
+    }
+    while (*p1 != 0 && uprv_tolower(*p1) == uprv_tolower(*p2)) {
+        ++p1;
+        ++p2;
+    }
+    return (UBool)(*p1 == *p2);
+}
+
+/********************************************************************
+ * PUBLIC int32_t Support Functions
+ ********************************************************************/
+
+U_CAPI int32_t U_EXPORT2
+uhash_hashLong(const UHashTok key) {
+    return key.integer;
+}
+
+U_CAPI UBool U_EXPORT2
+uhash_compareLong(const UHashTok key1, const UHashTok key2) {
+    return (UBool)(key1.integer == key2.integer);
+}
index 6369f8e..e53ce73 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index ef482c2..ac76c1b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 7cc97a9..e01c9ae 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  uidna.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 624431b..34e82a3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  uinit.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/uinvchar.c b/source/common/uinvchar.c
new file mode 100644 (file)
index 0000000..79dd051
--- /dev/null
@@ -0,0 +1,613 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 1999-2010, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  uinvchar.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:2
+*
+*   created on: 2004sep14
+*   created by: Markus W. Scherer
+*
+*   Functions for handling invariant characters, moved here from putil.c
+*   for better modularization.
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "udataswp.h"
+#include "cstring.h"
+#include "cmemory.h"
+#include "uassert.h"
+#include "uinvchar.h"
+
+/* invariant-character handling --------------------------------------------- */
+
+/*
+ * These maps for ASCII to/from EBCDIC map invariant characters (see utypes.h)
+ * appropriately for most EBCDIC codepages.
+ *
+ * They currently also map most other ASCII graphic characters,
+ * appropriately for codepages 37 and 1047.
+ * Exceptions: The characters for []^ have different codes in 37 & 1047.
+ * Both versions are mapped to ASCII.
+ *
+ *    ASCII 37 1047
+ * [     5B BA   AD
+ * ]     5D BB   BD
+ * ^     5E B0   5F
+ *
+ * There are no mappings for variant characters from Unicode to EBCDIC.
+ *
+ * Currently, C0 control codes are also included in these maps.
+ * Exceptions: S/390 Open Edition swaps LF and NEL codes compared with other
+ * EBCDIC platforms; both codes (15 and 25) are mapped to ASCII LF (0A),
+ * but there is no mapping for ASCII LF back to EBCDIC.
+ *
+ *    ASCII EBCDIC S/390-OE
+ * LF    0A     25       15
+ * NEL   85     15       25
+ *
+ * The maps below explicitly exclude the variant
+ * control and graphical characters that are in ASCII-based
+ * codepages at 0x80 and above.
+ * "No mapping" is expressed by mapping to a 00 byte.
+ *
+ * These tables do not establish a converter or a codepage.
+ */
+
+static const uint8_t asciiFromEbcdic[256]={
+    0x00, 0x01, 0x02, 0x03, 0x00, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x00, 0x0a, 0x08, 0x00, 0x18, 0x19, 0x00, 0x00, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x17, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07,
+    0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x15, 0x00, 0x1a,
+
+    0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
+    0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
+    0x2d, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
+
+    0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
+    0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5d, 0x00, 0x5d, 0x00, 0x00,
+
+    0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x5c, 0x00, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t ebcdicFromAscii[256]={
+    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 0x16, 0x05, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x40, 0x00, 0x7f, 0x00, 0x00, 0x6c, 0x50, 0x7d, 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
+
+    0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x6d,
+    0x00, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
+    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x07,
+
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* Same as asciiFromEbcdic[] except maps all letters to lowercase. */
+static const uint8_t lowercaseAsciiFromEbcdic[256]={
+    0x00, 0x01, 0x02, 0x03, 0x00, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+    0x10, 0x11, 0x12, 0x13, 0x00, 0x0a, 0x08, 0x00, 0x18, 0x19, 0x00, 0x00, 0x1c, 0x1d, 0x1e, 0x1f,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x17, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07,
+    0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x15, 0x00, 0x1a,
+
+    0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
+    0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
+    0x2d, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
+
+    0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
+    0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5d, 0x00, 0x5d, 0x00, 0x00,
+
+    0x7b, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x7d, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x7c, 0x00, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+/*
+ * Bit sets indicating which characters of the ASCII repertoire
+ * (by ASCII/Unicode code) are "invariant".
+ * See utypes.h for more details.
+ *
+ * As invariant are considered the characters of the ASCII repertoire except
+ * for the following:
+ * 21  '!' <exclamation mark>
+ * 23  '#' <number sign>
+ * 24  '$' <dollar sign>
+ *
+ * 40  '@' <commercial at>
+ *
+ * 5b  '[' <left bracket>
+ * 5c  '\' <backslash>
+ * 5d  ']' <right bracket>
+ * 5e  '^' <circumflex>
+ *
+ * 60  '`' <grave accent>
+ *
+ * 7b  '{' <left brace>
+ * 7c  '|' <vertical line>
+ * 7d  '}' <right brace>
+ * 7e  '~' <tilde>
+ */
+static const uint32_t invariantChars[4]={
+    0xfffffbff, /* 00..1f but not 0a */
+    0xffffffe5, /* 20..3f but not 21 23 24 */
+    0x87fffffe, /* 40..5f but not 40 5b..5e */
+    0x87fffffe  /* 60..7f but not 60 7b..7e */
+};
+
+/*
+ * test unsigned types (or values known to be non-negative) for invariant characters,
+ * tests ASCII-family character values
+ */
+#define UCHAR_IS_INVARIANT(c) (((c)<=0x7f) && (invariantChars[(c)>>5]&((uint32_t)1<<((c)&0x1f)))!=0)
+
+/* test signed types for invariant characters, adds test for positive values */
+#define SCHAR_IS_INVARIANT(c) ((0<=(c)) && UCHAR_IS_INVARIANT(c))
+
+#if U_CHARSET_FAMILY==U_ASCII_FAMILY
+#define CHAR_TO_UCHAR(c) c
+#define UCHAR_TO_CHAR(c) c
+#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
+#define CHAR_TO_UCHAR(u) asciiFromEbcdic[u]
+#define UCHAR_TO_CHAR(u) ebcdicFromAscii[u]
+#else
+#   error U_CHARSET_FAMILY is not valid
+#endif
+
+
+U_CAPI void U_EXPORT2
+u_charsToUChars(const char *cs, UChar *us, int32_t length) {
+    UChar u;
+    uint8_t c;
+
+    /*
+     * Allow the entire ASCII repertoire to be mapped _to_ Unicode.
+     * For EBCDIC systems, this works for characters with codes from
+     * codepages 37 and 1047 or compatible.
+     */
+    while(length>0) {
+        c=(uint8_t)(*cs++);
+        u=(UChar)CHAR_TO_UCHAR(c);
+        U_ASSERT((u!=0 || c==0)); /* only invariant chars converted? */
+        *us++=u;
+        --length;
+    }
+}
+
+U_CAPI void U_EXPORT2
+u_UCharsToChars(const UChar *us, char *cs, int32_t length) {
+    UChar u;
+
+    while(length>0) {
+        u=*us++;
+        if(!UCHAR_IS_INVARIANT(u)) {
+            U_ASSERT(FALSE); /* Variant characters were used. These are not portable in ICU. */
+            u=0;
+        }
+        *cs++=(char)UCHAR_TO_CHAR(u);
+        --length;
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+uprv_isInvariantString(const char *s, int32_t length) {
+    uint8_t c;
+
+    for(;;) {
+        if(length<0) {
+            /* NUL-terminated */
+            c=(uint8_t)*s++;
+            if(c==0) {
+                break;
+            }
+        } else {
+            /* count length */
+            if(length==0) {
+                break;
+            }
+            --length;
+            c=(uint8_t)*s++;
+            if(c==0) {
+                continue; /* NUL is invariant */
+            }
+        }
+        /* c!=0 now, one branch below checks c==0 for variant characters */
+
+        /*
+         * no assertions here because these functions are legitimately called
+         * for strings with variant characters
+         */
+#if U_CHARSET_FAMILY==U_ASCII_FAMILY
+        if(!UCHAR_IS_INVARIANT(c)) {
+            return FALSE; /* found a variant char */
+        }
+#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
+        c=CHAR_TO_UCHAR(c);
+        if(c==0 || !UCHAR_IS_INVARIANT(c)) {
+            return FALSE; /* found a variant char */
+        }
+#else
+#   error U_CHARSET_FAMILY is not valid
+#endif
+    }
+    return TRUE;
+}
+
+U_CAPI UBool U_EXPORT2
+uprv_isInvariantUString(const UChar *s, int32_t length) {
+    UChar c;
+
+    for(;;) {
+        if(length<0) {
+            /* NUL-terminated */
+            c=*s++;
+            if(c==0) {
+                break;
+            }
+        } else {
+            /* count length */
+            if(length==0) {
+                break;
+            }
+            --length;
+            c=*s++;
+        }
+
+        /*
+         * no assertions here because these functions are legitimately called
+         * for strings with variant characters
+         */
+        if(!UCHAR_IS_INVARIANT(c)) {
+            return FALSE; /* found a variant char */
+        }
+    }
+    return TRUE;
+}
+
+/* UDataSwapFn implementations used in udataswp.c ------- */
+
+/* convert ASCII to EBCDIC and verify that all characters are invariant */
+U_CAPI int32_t U_EXPORT2
+uprv_ebcdicFromAscii(const UDataSwapper *ds,
+                     const void *inData, int32_t length, void *outData,
+                     UErrorCode *pErrorCode) {
+    const uint8_t *s;
+    uint8_t *t;
+    uint8_t c;
+
+    int32_t count;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and swapping */
+    s=(const uint8_t *)inData;
+    t=(uint8_t *)outData;
+    count=length;
+    while(count>0) {
+        c=*s++;
+        if(!UCHAR_IS_INVARIANT(c)) {
+            udata_printError(ds, "uprv_ebcdicFromAscii() string[%d] contains a variant character in position %d\n",
+                             length, length-count);
+            *pErrorCode=U_INVALID_CHAR_FOUND;
+            return 0;
+        }
+        *t++=ebcdicFromAscii[c];
+        --count;
+    }
+
+    return length;
+}
+
+/* this function only checks and copies ASCII strings without conversion */
+U_CFUNC int32_t
+uprv_copyAscii(const UDataSwapper *ds,
+               const void *inData, int32_t length, void *outData,
+               UErrorCode *pErrorCode) {
+    const uint8_t *s;
+    uint8_t c;
+
+    int32_t count;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and checking */
+    s=(const uint8_t *)inData;
+    count=length;
+    while(count>0) {
+        c=*s++;
+        if(!UCHAR_IS_INVARIANT(c)) {
+            udata_printError(ds, "uprv_copyFromAscii() string[%d] contains a variant character in position %d\n",
+                             length, length-count);
+            *pErrorCode=U_INVALID_CHAR_FOUND;
+            return 0;
+        }
+        --count;
+    }
+
+    if(length>0 && inData!=outData) {
+        uprv_memcpy(outData, inData, length);
+    }
+
+    return length;
+}
+
+/* convert EBCDIC to ASCII and verify that all characters are invariant */
+U_CFUNC int32_t
+uprv_asciiFromEbcdic(const UDataSwapper *ds,
+                     const void *inData, int32_t length, void *outData,
+                     UErrorCode *pErrorCode) {
+    const uint8_t *s;
+    uint8_t *t;
+    uint8_t c;
+
+    int32_t count;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 ||  (length>0 && outData==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and swapping */
+    s=(const uint8_t *)inData;
+    t=(uint8_t *)outData;
+    count=length;
+    while(count>0) {
+        c=*s++;
+        if(c!=0 && ((c=asciiFromEbcdic[c])==0 || !UCHAR_IS_INVARIANT(c))) {
+            udata_printError(ds, "uprv_asciiFromEbcdic() string[%d] contains a variant character in position %d\n",
+                             length, length-count);
+            *pErrorCode=U_INVALID_CHAR_FOUND;
+            return 0;
+        }
+        *t++=c;
+        --count;
+    }
+
+    return length;
+}
+
+/* this function only checks and copies EBCDIC strings without conversion */
+U_CFUNC int32_t
+uprv_copyEbcdic(const UDataSwapper *ds,
+                const void *inData, int32_t length, void *outData,
+                UErrorCode *pErrorCode) {
+    const uint8_t *s;
+    uint8_t c;
+
+    int32_t count;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* setup and checking */
+    s=(const uint8_t *)inData;
+    count=length;
+    while(count>0) {
+        c=*s++;
+        if(c!=0 && ((c=asciiFromEbcdic[c])==0 || !UCHAR_IS_INVARIANT(c))) {
+            udata_printError(ds, "uprv_copyEbcdic() string[%] contains a variant character in position %d\n",
+                             length, length-count);
+            *pErrorCode=U_INVALID_CHAR_FOUND;
+            return 0;
+        }
+        --count;
+    }
+
+    if(length>0 && inData!=outData) {
+        uprv_memcpy(outData, inData, length);
+    }
+
+    return length;
+}
+
+/* compare invariant strings; variant characters compare less than others and unlike each other */
+U_CFUNC int32_t
+uprv_compareInvAscii(const UDataSwapper *ds,
+                     const char *outString, int32_t outLength,
+                     const UChar *localString, int32_t localLength) {
+    int32_t minLength;
+    UChar32 c1, c2;
+    uint8_t c;
+
+    if(outString==NULL || outLength<-1 || localString==NULL || localLength<-1) {
+        return 0;
+    }
+
+    if(outLength<0) {
+        outLength=(int32_t)uprv_strlen(outString);
+    }
+    if(localLength<0) {
+        localLength=u_strlen(localString);
+    }
+
+    minLength= outLength<localLength ? outLength : localLength;
+
+    while(minLength>0) {
+        c=(uint8_t)*outString++;
+        if(UCHAR_IS_INVARIANT(c)) {
+            c1=c;
+        } else {
+            c1=-1;
+        }
+
+        c2=*localString++;
+        if(!UCHAR_IS_INVARIANT(c2)) {
+            c2=-2;
+        }
+
+        if((c1-=c2)!=0) {
+            return c1;
+        }
+
+        --minLength;
+    }
+
+    /* strings start with same prefix, compare lengths */
+    return outLength-localLength;
+}
+
+U_CFUNC int32_t
+uprv_compareInvEbcdic(const UDataSwapper *ds,
+                      const char *outString, int32_t outLength,
+                      const UChar *localString, int32_t localLength) {
+    int32_t minLength;
+    UChar32 c1, c2;
+    uint8_t c;
+
+    if(outString==NULL || outLength<-1 || localString==NULL || localLength<-1) {
+        return 0;
+    }
+
+    if(outLength<0) {
+        outLength=(int32_t)uprv_strlen(outString);
+    }
+    if(localLength<0) {
+        localLength=u_strlen(localString);
+    }
+
+    minLength= outLength<localLength ? outLength : localLength;
+
+    while(minLength>0) {
+        c=(uint8_t)*outString++;
+        if(c==0) {
+            c1=0;
+        } else if((c1=asciiFromEbcdic[c])!=0 && UCHAR_IS_INVARIANT(c1)) {
+            /* c1 is set */
+        } else {
+            c1=-1;
+        }
+
+        c2=*localString++;
+        if(!UCHAR_IS_INVARIANT(c2)) {
+            c2=-2;
+        }
+
+        if((c1-=c2)!=0) {
+            return c1;
+        }
+
+        --minLength;
+    }
+
+    /* strings start with same prefix, compare lengths */
+    return outLength-localLength;
+}
+
+U_CAPI int32_t U_EXPORT2
+uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2) {
+    int32_t c1, c2;
+
+    for(;; ++s1, ++s2) {
+        c1=(uint8_t)*s1;
+        c2=(uint8_t)*s2;
+        if(c1!=c2) {
+            if(c1!=0 && ((c1=asciiFromEbcdic[c1])==0 || !UCHAR_IS_INVARIANT(c1))) {
+                c1=-(int32_t)(uint8_t)*s1;
+            }
+            if(c2!=0 && ((c2=asciiFromEbcdic[c2])==0 || !UCHAR_IS_INVARIANT(c2))) {
+                c2=-(int32_t)(uint8_t)*s2;
+            }
+            return c1-c2;
+        } else if(c1==0) {
+            return 0;
+        }
+    }
+}
+
+U_CAPI char U_EXPORT2
+uprv_ebcdicToLowercaseAscii(char c) {
+    return (char)lowercaseAsciiFromEbcdic[(uint8_t)c];
+}
+
+U_INTERNAL uint8_t* U_EXPORT2
+uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n)
+{
+  uint8_t *orig_dst = dst;
+
+  if(n==-1) { 
+    n = uprv_strlen((const char*)src)+1; /* copy NUL */
+  }
+  /* copy non-null */
+  while(*src && n>0) {
+    *(dst++) = asciiFromEbcdic[*(src++)];
+    n--;
+  }
+  /* pad */
+  while(n>0) {
+    *(dst++) = 0;
+    n--;
+  }
+  return orig_dst;
+}
+
+U_INTERNAL uint8_t* U_EXPORT2
+uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n)
+{
+  uint8_t *orig_dst = dst;
+
+  if(n==-1) { 
+    n = uprv_strlen((const char*)src)+1; /* copy NUL */
+  }
+  /* copy non-null */
+  while(*src && n>0) {
+    char ch = ebcdicFromAscii[*(src++)];
+    if(ch == 0) {
+      ch = ebcdicFromAscii[0x3f]; /* questionmark (subchar) */
+    }
+    *(dst++) = ch;
+    n--;
+  }
+  /* pad */
+  while(n>0) {
+    *(dst++) = 0;
+    n--;
+  }
+  return orig_dst;
+}
+
index c4f9f88..19a3b26 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uinvchar.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
@@ -64,7 +64,7 @@ uprv_isInvariantUString(const UChar *s, int32_t length);
  */
 U_INTERNAL inline UBool U_EXPORT2
 uprv_isInvariantUnicodeString(const icu::UnicodeString &s) {
-    return uprv_isInvariantUString(icu::toUCharPtr(s.getBuffer()), s.length());
+    return uprv_isInvariantUString(s.getBuffer(), s.length());
 }
 
 #endif  /* __cplusplus */
index b9252d8..26ca877 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uiter.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ulist.c b/source/common/ulist.c
new file mode 100644 (file)
index 0000000..7f7fdd9
--- /dev/null
@@ -0,0 +1,275 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*   Copyright (C) 2009-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+******************************************************************************
+*/
+
+#include "ulist.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "uenumimp.h"
+
+typedef struct UListNode UListNode;
+struct UListNode {
+    void *data;
+    
+    UListNode *next;
+    UListNode *previous;
+    
+    /* When data is created with uprv_malloc, needs to be freed during deleteList function. */
+    UBool forceDelete;
+};
+
+struct UList {
+    UListNode *curr;
+    UListNode *head;
+    UListNode *tail;
+    
+    int32_t size;
+    int32_t currentIndex;
+};
+
+static void ulist_addFirstItem(UList *list, UListNode *newItem);
+
+U_CAPI UList *U_EXPORT2 ulist_createEmptyList(UErrorCode *status) {
+    UList *newList = NULL;
+    
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+    
+    newList = (UList *)uprv_malloc(sizeof(UList));
+    if (newList == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    
+    newList->curr = NULL;
+    newList->head = NULL;
+    newList->tail = NULL;
+    newList->size = 0;
+    newList->currentIndex = -1;
+    
+    return newList;
+}
+
+/*
+ * Function called by addItemEndList or addItemBeginList when the first item is added to the list.
+ * This function properly sets the pointers for the first item added.
+ */
+static void ulist_addFirstItem(UList *list, UListNode *newItem) {
+    newItem->next = NULL;
+    newItem->previous = NULL;
+    list->head = newItem;
+    list->tail = newItem;
+}
+
+static void ulist_removeItem(UList *list, UListNode *p) {
+    if (p->previous == NULL) {
+        // p is the list head.
+        list->head = p->next;
+    } else {
+        p->previous->next = p->next;
+    }
+    if (p->next == NULL) {
+        // p is the list tail.
+        list->tail = p->previous;
+    } else {
+        p->next->previous = p->previous;
+    }
+    list->curr = NULL;
+    list->currentIndex = 0;
+    --list->size;
+    if (p->forceDelete) {
+        uprv_free(p->data);
+    }
+    uprv_free(p);
+}
+
+U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) {
+    UListNode *newItem = NULL;
+    
+    if (U_FAILURE(*status) || list == NULL || data == NULL) {
+        if (forceDelete) {
+            uprv_free((void *)data);
+        }
+        return;
+    }
+    
+    newItem = (UListNode *)uprv_malloc(sizeof(UListNode));
+    if (newItem == NULL) {
+        if (forceDelete) {
+            uprv_free((void *)data);
+        }
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    newItem->data = (void *)(data);
+    newItem->forceDelete = forceDelete;
+    
+    if (list->size == 0) {
+        ulist_addFirstItem(list, newItem);
+    } else {
+        newItem->next = NULL;
+        newItem->previous = list->tail;
+        list->tail->next = newItem;
+        list->tail = newItem;
+    }
+    
+    list->size++;
+}
+
+U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) {
+    UListNode *newItem = NULL;
+    
+    if (U_FAILURE(*status) || list == NULL || data == NULL) {
+        if (forceDelete) {
+            uprv_free((void *)data);
+        }
+        return;
+    }
+    
+    newItem = (UListNode *)uprv_malloc(sizeof(UListNode));
+    if (newItem == NULL) {
+        if (forceDelete) {
+            uprv_free((void *)data);
+        }
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    newItem->data = (void *)(data);
+    newItem->forceDelete = forceDelete;
+    
+    if (list->size == 0) {
+        ulist_addFirstItem(list, newItem);
+    } else {
+        newItem->previous = NULL;
+        newItem->next = list->head;
+        list->head->previous = newItem;
+        list->head = newItem;
+        list->currentIndex++;
+    }
+    
+    list->size++;
+}
+
+U_CAPI UBool U_EXPORT2 ulist_containsString(const UList *list, const char *data, int32_t length) {
+    if (list != NULL) {
+        const UListNode *pointer;
+        for (pointer = list->head; pointer != NULL; pointer = pointer->next) {
+            if (length == uprv_strlen(pointer->data)) {
+                if (uprv_memcmp(data, pointer->data, length) == 0) {
+                    return TRUE;
+                }
+            }
+        }
+    }
+    return FALSE;
+}
+
+U_CAPI UBool U_EXPORT2 ulist_removeString(UList *list, const char *data) {
+    if (list != NULL) {
+        UListNode *pointer;
+        for (pointer = list->head; pointer != NULL; pointer = pointer->next) {
+            if (uprv_strcmp(data, pointer->data) == 0) {
+                ulist_removeItem(list, pointer);
+                // Remove only the first occurrence, like Java LinkedList.remove(Object).
+                return TRUE;
+            }
+        }
+    }
+    return FALSE;
+}
+
+U_CAPI void *U_EXPORT2 ulist_getNext(UList *list) {
+    UListNode *curr = NULL;
+    
+    if (list == NULL || list->curr == NULL) {
+        return NULL;
+    }
+    
+    curr = list->curr;
+    list->curr = curr->next;
+    list->currentIndex++;
+    
+    return curr->data;
+}
+
+U_CAPI int32_t U_EXPORT2 ulist_getListSize(const UList *list) {
+    if (list != NULL) {
+        return list->size;
+    }
+    
+    return -1;
+}
+
+U_CAPI void U_EXPORT2 ulist_resetList(UList *list) {
+    if (list != NULL) {
+        list->curr = list->head;
+        list->currentIndex = 0;
+    }
+}
+
+U_CAPI void U_EXPORT2 ulist_deleteList(UList *list) {
+    UListNode *listHead = NULL;
+
+    if (list != NULL) {
+        listHead = list->head;
+        while (listHead != NULL) {
+            UListNode *listPointer = listHead->next;
+
+            if (listHead->forceDelete) {
+                uprv_free(listHead->data);
+            }
+
+            uprv_free(listHead);
+            listHead = listPointer;
+        }
+        uprv_free(list);
+        list = NULL;
+    }
+}
+
+U_CAPI void U_EXPORT2 ulist_close_keyword_values_iterator(UEnumeration *en) {
+    if (en != NULL) {
+        ulist_deleteList((UList *)(en->context));
+        uprv_free(en);
+    }
+}
+
+U_CAPI int32_t U_EXPORT2 ulist_count_keyword_values(UEnumeration *en, UErrorCode *status) {
+    if (U_FAILURE(*status)) {
+        return -1;
+    }
+    
+    return ulist_getListSize((UList *)(en->context));
+}
+
+U_CAPI const char * U_EXPORT2 ulist_next_keyword_value(UEnumeration *en, int32_t *resultLength, UErrorCode *status) {
+    const char *s;
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+
+    s = (const char *)ulist_getNext((UList *)(en->context));
+    if (s != NULL && resultLength != NULL) {
+        *resultLength = uprv_strlen(s);
+    }
+    return s;
+}
+
+U_CAPI void U_EXPORT2 ulist_reset_keyword_values_iterator(UEnumeration *en, UErrorCode *status) {
+    if (U_FAILURE(*status)) {
+        return ;
+    }
+    
+    ulist_resetList((UList *)(en->context));
+}
+
+U_CAPI UList * U_EXPORT2 ulist_getListFromEnum(UEnumeration *en) {
+    return (UList *)(en->context);
+}
+
index de58a4a..6f292bf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index c140c78..98aa50e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 4d854bb..2a02b27 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 #include "uarrsort.h"
 #include "uenumimp.h"
 #include "uassert.h"
-#include "charstr.h"
 
 #include <stdio.h> /* for sprintf */
 
-U_NAMESPACE_USE
+using namespace icu;
 
 /* ### Declarations **************************************************/
 
@@ -102,7 +101,7 @@ static const char * const LANGUAGES[] = {
     "aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "aeb",
     "af",  "afh", "agq", "ain", "ak",  "akk", "akz", "ale",
     "aln", "alt", "am",  "an",  "ang", "anp", "ar",  "arc",
-    "arn", "aro", "arp", "arq", "ars", "arw", "ary", "arz", "as",
+    "arn", "aro", "arp", "arq", "arw", "ary", "arz", "as",
     "asa", "ase", "ast", "av",  "avk", "awa", "ay",  "az",
     "ba",  "bal", "ban", "bar", "bas", "bax", "bbc", "bbj",
     "be",  "bej", "bem", "bew", "bez", "bfd", "bfq", "bg",
@@ -217,7 +216,7 @@ static const char * const LANGUAGES_3[] = {
     "aar", "abk", "ace", "ach", "ada", "ady", "ave", "aeb",
     "afr", "afh", "agq", "ain", "aka", "akk", "akz", "ale",
     "aln", "alt", "amh", "arg", "ang", "anp", "ara", "arc",
-    "arn", "aro", "arp", "arq", "ars", "arw", "ary", "arz", "asm",
+    "arn", "aro", "arp", "arq", "arw", "ary", "arz", "asm",
     "asa", "ase", "ast", "ava", "avk", "awa", "aym", "aze",
     "bak", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj",
     "bel", "bej", "bem", "bew", "bez", "bfd", "bfq", "bul",
@@ -561,10 +560,6 @@ static int32_t getShortestSubtagLength(const char *localeID) {
 }
 
 /* ### Keywords **************************************************/
-#define UPRV_ISDIGIT(c) (((c) >= '0') && ((c) <= '9'))
-#define UPRV_ISALPHANUM(c) (uprv_isASCIILetter(c) || UPRV_ISDIGIT(c) )
-/* Punctuation/symbols allowed in legacy key values */
-#define UPRV_OK_VALUE_PUNCTUATION(c) ((c) == '_' || (c) == '-' || (c) == '+' || (c) == '/')
 
 #define ULOC_KEYWORD_BUFFER_LEN 25
 #define ULOC_MAX_NO_KEYWORDS 25
@@ -601,26 +596,20 @@ locale_getKeywordsStart(const char *localeID) {
  */
 static int32_t locale_canonKeywordName(char *buf, const char *keywordName, UErrorCode *status)
 {
-  int32_t keywordNameLen = 0;
+  int32_t i;
+  int32_t keywordNameLen = (int32_t)uprv_strlen(keywordName);
 
-  for (; *keywordName != 0; keywordName++) {
-    if (!UPRV_ISALPHANUM(*keywordName)) {
-      *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
-      return 0;
-    }
-    if (keywordNameLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
-      buf[keywordNameLen++] = uprv_tolower(*keywordName);
-    } else {
-      /* keyword name too long for internal buffer */
-      *status = U_INTERNAL_PROGRAM_ERROR;
-      return 0;
-    }
+  if(keywordNameLen >= ULOC_KEYWORD_BUFFER_LEN) {
+    /* keyword name too long for internal buffer */
+    *status = U_INTERNAL_PROGRAM_ERROR;
+          return 0;
   }
-  if (keywordNameLen == 0) {
-    *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name */
-    return 0;
+
+  /* normalize the keyword name */
+  for(i = 0; i < keywordNameLen; i++) {
+    buf[i] = uprv_tolower(keywordName[i]);
   }
-  buf[keywordNameLen] = 0; /* terminate */
+  buf[i] = 0;
 
   return keywordNameLen;
 }
@@ -848,108 +837,87 @@ uloc_getKeywordValue(const char* localeID,
     const char* nextSeparator = NULL;
     char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
     char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
+    int32_t i = 0;
     int32_t result = 0;
 
     if(status && U_SUCCESS(*status) && localeID) {
       char tempBuffer[ULOC_FULLNAME_CAPACITY];
       const char* tmpLocaleID;
 
-      if (keywordName == NULL || keywordName[0] == 0) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-      }
-
-      locale_canonKeywordName(keywordNameBuffer, keywordName, status);
-      if(U_FAILURE(*status)) {
-        return 0;
-      }
-
       if (_hasBCP47Extension(localeID)) {
           _ConvertBCP47(tmpLocaleID, localeID, tempBuffer, sizeof(tempBuffer), status);
       } else {
           tmpLocaleID=localeID;
       }
 
-      startSearchHere = locale_getKeywordsStart(tmpLocaleID);
+      startSearchHere = uprv_strchr(tmpLocaleID, '@'); /* TODO: REVISIT: shouldn't this be locale_getKeywordsStart ? */
       if(startSearchHere == NULL) {
           /* no keywords, return at once */
           return 0;
       }
 
+      locale_canonKeywordName(keywordNameBuffer, keywordName, status);
+      if(U_FAILURE(*status)) {
+        return 0;
+      }
+
       /* find the first keyword */
       while(startSearchHere) {
-          const char* keyValueTail;
-          int32_t keyValueLen;
-
-          startSearchHere++; /* skip @ or ; */
-          nextSeparator = uprv_strchr(startSearchHere, '=');
-          if(!nextSeparator) {
-              *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
-              return 0;
-          }
-          /* strip leading & trailing spaces (TC decided to tolerate these) */
+          startSearchHere++;
+          /* skip leading spaces (allowed?) */
           while(*startSearchHere == ' ') {
               startSearchHere++;
           }
-          keyValueTail = nextSeparator;
-          while (keyValueTail > startSearchHere && *(keyValueTail-1) == ' ') {
-              keyValueTail--;
-          }
-          /* now keyValueTail points to first char after the keyName */
-          /* copy & normalize keyName from locale */
-          if (startSearchHere == keyValueTail) {
-              *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
-              return 0;
+          nextSeparator = uprv_strchr(startSearchHere, '=');
+          /* need to normalize both keyword and keyword name */
+          if(!nextSeparator) {
+              break;
           }
-          keyValueLen = 0;
-          while (startSearchHere < keyValueTail) {
-            if (!UPRV_ISALPHANUM(*startSearchHere)) {
-              *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
-              return 0;
-            }
-            if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
-              localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*startSearchHere++);
-            } else {
+          if(nextSeparator - startSearchHere >= ULOC_KEYWORD_BUFFER_LEN) {
               /* keyword name too long for internal buffer */
               *status = U_INTERNAL_PROGRAM_ERROR;
               return 0;
-            }
           }
-          localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
+          for(i = 0; i < nextSeparator - startSearchHere; i++) {
+              localeKeywordNameBuffer[i] = uprv_tolower(startSearchHere[i]);
+          }
+          /* trim trailing spaces */
+          while(startSearchHere[i-1] == ' ') {
+              i--;
+              U_ASSERT(i>=0);
+          }
+          localeKeywordNameBuffer[i] = 0;
 
           startSearchHere = uprv_strchr(nextSeparator, ';');
 
           if(uprv_strcmp(keywordNameBuffer, localeKeywordNameBuffer) == 0) {
-               /* current entry matches the keyword. */
-             nextSeparator++; /* skip '=' */
-              /* First strip leading & trailing spaces (TC decided to tolerate these) */
+              nextSeparator++;
               while(*nextSeparator == ' ') {
-                nextSeparator++;
-              }
-              keyValueTail = (startSearchHere)? startSearchHere: nextSeparator + uprv_strlen(nextSeparator);
-              while(keyValueTail > nextSeparator && *(keyValueTail-1) == ' ') {
-                keyValueTail--;
-              }
-              /* Now copy the value, but check well-formedness */
-              if (nextSeparator == keyValueTail) {
-                *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value name in passed-in locale */
-                return 0;
-              }
-              keyValueLen = 0;
-              while (nextSeparator < keyValueTail) {
-                if (!UPRV_ISALPHANUM(*nextSeparator) && !UPRV_OK_VALUE_PUNCTUATION(*nextSeparator)) {
-                  *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
-                  return 0;
-                }
-                if (keyValueLen < bufferCapacity) {
-                  /* Should we lowercase value to return here? Tests expect as-is. */
-                  buffer[keyValueLen++] = *nextSeparator++;
-                } else { /* keep advancing so we return correct length in case of overflow */
-                  keyValueLen++;
                   nextSeparator++;
-                }
               }
-              result = u_terminateChars(buffer, bufferCapacity, keyValueLen, status);
+              /* we actually found the keyword. Copy the value */
+              if(startSearchHere && startSearchHere - nextSeparator < bufferCapacity) {
+                  while(*(startSearchHere-1) == ' ') {
+                      startSearchHere--;
+                  }
+                  uprv_strncpy(buffer, nextSeparator, startSearchHere - nextSeparator);
+                  result = u_terminateChars(buffer, bufferCapacity, (int32_t)(startSearchHere - nextSeparator), status);
+              } else if(!startSearchHere && (int32_t)uprv_strlen(nextSeparator) < bufferCapacity) { /* last item in string */
+                  i = (int32_t)uprv_strlen(nextSeparator);
+                  while(nextSeparator[i - 1] == ' ') {
+                      i--;
+                  }
+                  uprv_strncpy(buffer, nextSeparator, i);
+                  result = u_terminateChars(buffer, bufferCapacity, i, status);
+              } else {
+                  /* give a bigger buffer, please */
+                  *status = U_BUFFER_OVERFLOW_ERROR;
+                  if(startSearchHere) {
+                      result = (int32_t)(startSearchHere - nextSeparator);
+                  } else {
+                      result = (int32_t)uprv_strlen(nextSeparator);
+                  }
+              }
               return result;
           }
       }
@@ -968,59 +936,46 @@ uloc_setKeywordValue(const char* keywordName,
     int32_t keywordValueLen;
     int32_t bufLen;
     int32_t needLen = 0;
+    int32_t foundValueLen;
+    int32_t keywordAtEnd = 0; /* is the keyword at the end of the string? */
     char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
-    char keywordValueBuffer[ULOC_KEYWORDS_CAPACITY+1];
     char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
+    int32_t i = 0;
     int32_t rc;
     char* nextSeparator = NULL;
     char* nextEqualsign = NULL;
     char* startSearchHere = NULL;
     char* keywordStart = NULL;
-    CharString updatedKeysAndValues;
-    int32_t updatedKeysAndValuesLen;
-    UBool handledInputKeyAndValue = FALSE;
-    char keyValuePrefix = '@';
-
+    char *insertHere = NULL;
     if(U_FAILURE(*status)) {
         return -1;
     }
-    if (keywordName == NULL || keywordName[0] == 0 || bufferCapacity <= 1) {
+    if(bufferCapacity>1) {
+        bufLen = (int32_t)uprv_strlen(buffer);
+    } else {
         *status = U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
-    bufLen = (int32_t)uprv_strlen(buffer);
     if(bufferCapacity<bufLen) {
         /* The capacity is less than the length?! Is this NULL terminated? */
         *status = U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
+    if(keywordValue && !*keywordValue) {
+        keywordValue = NULL;
+    }
+    if(keywordValue) {
+        keywordValueLen = (int32_t)uprv_strlen(keywordValue);
+    } else {
+        keywordValueLen = 0;
+    }
     keywordNameLen = locale_canonKeywordName(keywordNameBuffer, keywordName, status);
     if(U_FAILURE(*status)) {
         return 0;
     }
-
-    keywordValueLen = 0;
-    if(keywordValue) {
-        while (*keywordValue != 0) {
-            if (!UPRV_ISALPHANUM(*keywordValue) && !UPRV_OK_VALUE_PUNCTUATION(*keywordValue)) {
-                *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
-                return 0;
-            }
-            if (keywordValueLen < ULOC_KEYWORDS_CAPACITY) {
-                /* Should we force lowercase in value to set? */
-                keywordValueBuffer[keywordValueLen++] = *keywordValue++;
-            } else {
-                /* keywordValue too long for internal buffer */
-                *status = U_INTERNAL_PROGRAM_ERROR;
-                return 0;
-            }
-        }
-    }
-    keywordValueBuffer[keywordValueLen] = 0; /* terminate */
-
     startSearchHere = (char*)locale_getKeywordsStart(buffer);
     if(startSearchHere == NULL || (startSearchHere[1]==0)) {
-        if(keywordValueLen == 0) { /* no keywords = nothing to remove */
+        if(!keywordValue) { /* no keywords = nothing to remove */
             return bufLen;
         }
 
@@ -1035,137 +990,133 @@ uloc_setKeywordValue(const char* keywordName,
             *status = U_BUFFER_OVERFLOW_ERROR;
             return needLen; /* no change */
         }
-        *startSearchHere++ = '@';
+        *startSearchHere = '@';
+        startSearchHere++;
         uprv_strcpy(startSearchHere, keywordNameBuffer);
         startSearchHere += keywordNameLen;
-        *startSearchHere++ = '=';
-        uprv_strcpy(startSearchHere, keywordValueBuffer);
+        *startSearchHere = '=';
+        startSearchHere++;
+        uprv_strcpy(startSearchHere, keywordValue);
+        startSearchHere+=keywordValueLen;
         return needLen;
     } /* end shortcut - no @ */
 
     keywordStart = startSearchHere;
     /* search for keyword */
     while(keywordStart) {
-        const char* keyValueTail;
-        int32_t keyValueLen;
-
-        keywordStart++; /* skip @ or ; */
-        nextEqualsign = uprv_strchr(keywordStart, '=');
-        if (!nextEqualsign) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
-            return 0;
-        }
-        /* strip leading & trailing spaces (TC decided to tolerate these) */
+        keywordStart++;
+        /* skip leading spaces (allowed?) */
         while(*keywordStart == ' ') {
             keywordStart++;
         }
-        keyValueTail = nextEqualsign;
-        while (keyValueTail > keywordStart && *(keyValueTail-1) == ' ') {
-            keyValueTail--;
+        nextEqualsign = uprv_strchr(keywordStart, '=');
+        /* need to normalize both keyword and keyword name */
+        if(!nextEqualsign) {
+            break;
         }
-        /* now keyValueTail points to first char after the keyName */
-        /* copy & normalize keyName from locale */
-        if (keywordStart == keyValueTail) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
+        if(nextEqualsign - keywordStart >= ULOC_KEYWORD_BUFFER_LEN) {
+            /* keyword name too long for internal buffer */
+            *status = U_INTERNAL_PROGRAM_ERROR;
             return 0;
         }
-        keyValueLen = 0;
-        while (keywordStart < keyValueTail) {
-            if (!UPRV_ISALPHANUM(*keywordStart)) {
-                *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
-                return 0;
-            }
-            if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
-                localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*keywordStart++);
-            } else {
-                /* keyword name too long for internal buffer */
-                *status = U_INTERNAL_PROGRAM_ERROR;
-                return 0;
-            }
-        }
-        localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
-
-        nextSeparator = uprv_strchr(nextEqualsign, ';');
-
-        /* start processing the value part */
-        nextEqualsign++; /* skip '=' */
-        /* First strip leading & trailing spaces (TC decided to tolerate these) */
-        while(*nextEqualsign == ' ') {
-            nextEqualsign++;
-        }
-        keyValueTail = (nextSeparator)? nextSeparator: nextEqualsign + uprv_strlen(nextEqualsign);
-        while(keyValueTail > nextEqualsign && *(keyValueTail-1) == ' ') {
-            keyValueTail--;
+        for(i = 0; i < nextEqualsign - keywordStart; i++) {
+            localeKeywordNameBuffer[i] = uprv_tolower(keywordStart[i]);
         }
-        if (nextEqualsign == keyValueTail) {
-            *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value in passed-in locale */
-            return 0;
+        /* trim trailing spaces */
+        while(keywordStart[i-1] == ' ') {
+            i--;
         }
+        U_ASSERT(i>=0 && i<ULOC_KEYWORD_BUFFER_LEN);
+        localeKeywordNameBuffer[i] = 0;
 
+        nextSeparator = uprv_strchr(nextEqualsign, ';');
         rc = uprv_strcmp(keywordNameBuffer, localeKeywordNameBuffer);
         if(rc == 0) {
-            /* Current entry matches the input keyword. Update the entry */
-            if(keywordValueLen > 0) { /* updating a value */
-                updatedKeysAndValues.append(keyValuePrefix, *status);
-                keyValuePrefix = ';'; /* for any subsequent key-value pair */
-                updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
-                updatedKeysAndValues.append('=', *status);
-                updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
-            } /* else removing this entry, don't emit anything */
-            handledInputKeyAndValue = TRUE;
-        } else {
-           /* input keyword sorts earlier than current entry, add before current entry */
-            if (rc < 0 && keywordValueLen > 0 && !handledInputKeyAndValue) {
-                /* insert new entry at this location */
-                updatedKeysAndValues.append(keyValuePrefix, *status);
-                keyValuePrefix = ';'; /* for any subsequent key-value pair */
-                updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
-                updatedKeysAndValues.append('=', *status);
-                updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
-                handledInputKeyAndValue = TRUE;
+            nextEqualsign++;
+            while(*nextEqualsign == ' ') {
+                nextEqualsign++;
+            }
+            /* we actually found the keyword. Change the value */
+            if (nextSeparator) {
+                keywordAtEnd = 0;
+                foundValueLen = (int32_t)(nextSeparator - nextEqualsign);
+            } else {
+                keywordAtEnd = 1;
+                foundValueLen = (int32_t)uprv_strlen(nextEqualsign);
+            }
+            if(keywordValue) { /* adding a value - not removing */
+              if(foundValueLen == keywordValueLen) {
+                uprv_strncpy(nextEqualsign, keywordValue, keywordValueLen);
+                return bufLen; /* no change in size */
+              } else if(foundValueLen > keywordValueLen) {
+                int32_t delta = foundValueLen - keywordValueLen;
+                if(nextSeparator) { /* RH side */
+                  uprv_memmove(nextSeparator - delta, nextSeparator, bufLen-(nextSeparator-buffer));
+                }
+                uprv_strncpy(nextEqualsign, keywordValue, keywordValueLen);
+                bufLen -= delta;
+                buffer[bufLen]=0;
+                return bufLen;
+              } else { /* FVL < KVL */
+                int32_t delta = keywordValueLen - foundValueLen;
+                if((bufLen+delta) >= bufferCapacity) {
+                  *status = U_BUFFER_OVERFLOW_ERROR;
+                  return bufLen+delta;
+                }
+                if(nextSeparator) { /* RH side */
+                  uprv_memmove(nextSeparator+delta,nextSeparator, bufLen-(nextSeparator-buffer));
+                }
+                uprv_strncpy(nextEqualsign, keywordValue, keywordValueLen);
+                bufLen += delta;
+                buffer[bufLen]=0;
+                return bufLen;
+              }
+            } else { /* removing a keyword */
+              if(keywordAtEnd) {
+                /* zero out the ';' or '@' just before startSearchhere */
+                keywordStart[-1] = 0;
+                return (int32_t)((keywordStart-buffer)-1); /* (string length without keyword) minus separator */
+              } else {
+                uprv_memmove(keywordStart, nextSeparator+1, bufLen-((nextSeparator+1)-buffer));
+                keywordStart[bufLen-((nextSeparator+1)-buffer)]=0;
+                return (int32_t)(bufLen-((nextSeparator+1)-keywordStart));
+              }
             }
-            /* copy the current entry */
-            updatedKeysAndValues.append(keyValuePrefix, *status);
-            keyValuePrefix = ';'; /* for any subsequent key-value pair */
-            updatedKeysAndValues.append(localeKeywordNameBuffer, keyValueLen, *status);
-            updatedKeysAndValues.append('=', *status);
-            updatedKeysAndValues.append(nextEqualsign, keyValueTail-nextEqualsign, *status);
-        }
-        if (!nextSeparator && keywordValueLen > 0 && !handledInputKeyAndValue) {
-            /* append new entry at the end, it sorts later than existing entries */
-            updatedKeysAndValues.append(keyValuePrefix, *status);
-            /* skip keyValuePrefix update, no subsequent key-value pair */
-            updatedKeysAndValues.append(keywordNameBuffer, keywordNameLen, *status);
-            updatedKeysAndValues.append('=', *status);
-            updatedKeysAndValues.append(keywordValueBuffer, keywordValueLen, *status);
-            handledInputKeyAndValue = TRUE;
+        } else if(rc<0){ /* end match keyword */
+          /* could insert at this location. */
+          insertHere = keywordStart;
         }
         keywordStart = nextSeparator;
     } /* end loop searching */
 
-    /* Any error from updatedKeysAndValues.append above would be internal and not due to
-     * problems with the passed-in locale. So if we did encounter problems with the
-     * passed-in locale above, those errors took precedence and overrode any error
-     * status from updatedKeysAndValues.append, and also caused a return of 0. If there
-     * are errors here they are from updatedKeysAndValues.append; they do cause an
-     * error return but the passed-in locale is unmodified and the original bufLen is
-     * returned.
-     */
-    if (!handledInputKeyAndValue || U_FAILURE(*status)) {
-        /* if input key/value specified removal of a keyword not present in locale, or
-         * there was an error in CharString.append, leave original locale alone. */
-        return bufLen;
-    }
-
-    updatedKeysAndValuesLen = updatedKeysAndValues.length();
-    /* needLen = length of the part before '@' + length of updated key-value part including '@' */
-    needLen = (int32_t)(startSearchHere - buffer) + updatedKeysAndValuesLen;
+    if(!keywordValue) {
+      return bufLen; /* removal of non-extant keyword - no change */
+    }
+
+    /* we know there is at least one keyword. */
+    needLen = bufLen+1+keywordNameLen+1+keywordValueLen;
     if(needLen >= bufferCapacity) {
         *status = U_BUFFER_OVERFLOW_ERROR;
         return needLen; /* no change */
     }
-    if (updatedKeysAndValuesLen > 0) {
-        uprv_strncpy(startSearchHere, updatedKeysAndValues.data(), updatedKeysAndValuesLen);
+
+    if(insertHere) {
+      uprv_memmove(insertHere+(1+keywordNameLen+1+keywordValueLen), insertHere, bufLen-(insertHere-buffer));
+      keywordStart = insertHere;
+    } else {
+      keywordStart = buffer+bufLen;
+      *keywordStart = ';';
+      keywordStart++;
+    }
+    uprv_strncpy(keywordStart, keywordNameBuffer, keywordNameLen);
+    keywordStart += keywordNameLen;
+    *keywordStart = '=';
+    keywordStart++;
+    uprv_strncpy(keywordStart, keywordValue, keywordValueLen); /* terminates. */
+    keywordStart+=keywordValueLen;
+    if(insertHere) {
+      *keywordStart = ';';
+      keywordStart++;
     }
     buffer[needLen]=0;
     return needLen;
@@ -2168,20 +2119,6 @@ uloc_getLCID(const char* localeID)
 {
     UErrorCode status = U_ZERO_ERROR;
     char       langID[ULOC_FULLNAME_CAPACITY];
-    uint32_t   lcid = 0;
-
-    /* Check for incomplete id. */
-    if (!localeID || uprv_strlen(localeID) < 2) {
-        return 0;
-    }
-
-    // Attempt platform lookup if available
-    lcid = uprv_convertToLCIDPlatform(localeID);
-    if (lcid > 0)
-    {
-        // Windows found an LCID, return that
-        return lcid;
-    }
 
     uloc_getLanguage(localeID, langID, sizeof(langID), &status);
     if (U_FAILURE(status)) {
@@ -2592,6 +2529,9 @@ uloc_toUnicodeLocaleType(const char* keyword, const char* value)
     return bcpType;
 }
 
+#define UPRV_ISDIGIT(c) (((c) >= '0') && ((c) <= '9'))
+#define UPRV_ISALPHANUM(c) (uprv_isASCIILetter(c) || UPRV_ISDIGIT(c) )
+
 static UBool
 isWellFormedLegacyKey(const char* legacyKey)
 {
@@ -2634,10 +2574,11 @@ uloc_toLegacyKey(const char* keyword)
         // Checks if the specified locale key is well-formed with the legacy locale syntax.
         //
         // Note:
-        //  LDML/CLDR provides some definition of keyword syntax in
-        //  * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier and
-        //  * http://www.unicode.org/reports/tr35/#Old_Locale_Extension_Syntax
-        //  Keys can only consist of [0-9a-zA-Z].
+        //  Neither ICU nor LDML/CLDR provides the definition of keyword syntax.
+        //  However, a key should not contain '=' obviously. For now, all existing
+        //  keys are using ASCII alphabetic letters only. We won't add any new key
+        //  that is not compatible with the BCP 47 syntax. Therefore, we assume
+        //  a valid key consist from [0-9a-zA-Z], no symbols.
         if (isWellFormedLegacyKey(keyword)) {
             return keyword;
         }
@@ -2653,11 +2594,12 @@ uloc_toLegacyType(const char* keyword, const char* value)
         // Checks if the specified locale type is well-formed with the legacy locale syntax.
         //
         // Note:
-        //  LDML/CLDR provides some definition of keyword syntax in
-        //  * http://www.unicode.org/reports/tr35/#Unicode_locale_identifier and
-        //  * http://www.unicode.org/reports/tr35/#Old_Locale_Extension_Syntax
-        //  Values (types) can only consist of [0-9a-zA-Z], plus for legacy values
-        //  we allow [/_-+] in the middle (e.g. "Etc/GMT+1", "Asia/Tel_Aviv")
+        //  Neither ICU nor LDML/CLDR provides the definition of keyword syntax.
+        //  However, a type should not contain '=' obviously. For now, all existing
+        //  types are using ASCII alphabetic letters with a few symbol letters. We won't
+        //  add any new type that is not compatible with the BCP 47 syntax except timezone
+        //  IDs. For now, we assume a valid type start with [0-9a-zA-Z], but may contain
+        //  '-' '_' '/' in the middle.
         if (isWellFormedLegacyType(value)) {
             return value;
         }
index 4eea504..fcb066c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/uloc_tag.c b/source/common/uloc_tag.c
new file mode 100644 (file)
index 0000000..224470a
--- /dev/null
@@ -0,0 +1,2531 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 2009-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/ures.h"
+#include "unicode/putil.h"
+#include "unicode/uloc.h"
+#include "ustr_imp.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "putilimp.h"
+#include "uinvchar.h"
+#include "ulocimp.h"
+#include "uassert.h"
+
+
+/* struct holding a single variant */
+typedef struct VariantListEntry {
+    const char              *variant;
+    struct VariantListEntry *next;
+} VariantListEntry;
+
+/* struct holding a single attribute value */
+typedef struct AttributeListEntry {
+    const char              *attribute;
+    struct AttributeListEntry *next;
+} AttributeListEntry;
+
+/* struct holding a single extension */
+typedef struct ExtensionListEntry {
+    const char                  *key;
+    const char                  *value;
+    struct ExtensionListEntry   *next;
+} ExtensionListEntry;
+
+#define MAXEXTLANG 3
+typedef struct ULanguageTag {
+    char                *buf;   /* holding parsed subtags */
+    const char          *language;
+    const char          *extlang[MAXEXTLANG];
+    const char          *script;
+    const char          *region;
+    VariantListEntry    *variants;
+    ExtensionListEntry  *extensions;
+    const char          *privateuse;
+    const char          *grandfathered;
+} ULanguageTag;
+
+#define MINLEN 2
+#define SEP '-'
+#define PRIVATEUSE 'x'
+#define LDMLEXT 'u'
+
+#define LOCALE_SEP '_'
+#define LOCALE_EXT_SEP '@'
+#define LOCALE_KEYWORD_SEP ';'
+#define LOCALE_KEY_TYPE_SEP '='
+
+#define ISALPHA(c) uprv_isASCIILetter(c)
+#define ISNUMERIC(c) ((c)>='0' && (c)<='9')
+
+static const char EMPTY[] = "";
+static const char LANG_UND[] = "und";
+static const char PRIVATEUSE_KEY[] = "x";
+static const char _POSIX[] = "_POSIX";
+static const char POSIX_KEY[] = "va";
+static const char POSIX_VALUE[] = "posix";
+static const char LOCALE_ATTRIBUTE_KEY[] = "attribute";
+static const char PRIVUSE_VARIANT_PREFIX[] = "lvariant";
+static const char LOCALE_TYPE_YES[] = "yes";
+
+#define LANG_UND_LEN 3
+
+static const char* const GRANDFATHERED[] = {
+/*  grandfathered   preferred */
+    "art-lojban",   "jbo",
+    "cel-gaulish",  "xtg-x-cel-gaulish",
+    "en-GB-oed",    "en-GB-x-oed",
+    "i-ami",        "ami",
+    "i-bnn",        "bnn",
+    "i-default",    "en-x-i-default",
+    "i-enochian",   "und-x-i-enochian",
+    "i-hak",        "hak",
+    "i-klingon",    "tlh",
+    "i-lux",        "lb",
+    "i-mingo",      "see-x-i-mingo",
+    "i-navajo",     "nv",
+    "i-pwn",        "pwn",
+    "i-tao",        "tao",
+    "i-tay",        "tay",
+    "i-tsu",        "tsu",
+    "no-bok",       "nb",
+    "no-nyn",       "nn",
+    "sgn-be-fr",    "sfb",
+    "sgn-be-nl",    "vgt",
+    "sgn-ch-de",    "sgg",
+    "zh-guoyu",     "cmn",
+    "zh-hakka",     "hak",
+    "zh-min",       "nan-x-zh-min",
+    "zh-min-nan",   "nan",
+    "zh-xiang",     "hsn",
+    NULL,           NULL
+};
+
+static const char DEPRECATEDLANGS[][4] = {
+/*  deprecated  new */
+    "iw",       "he",
+    "ji",       "yi",
+    "in",       "id"
+};
+
+/*
+* -------------------------------------------------
+*
+* These ultag_ functions may be exposed as APIs later
+*
+* -------------------------------------------------
+*/
+
+static ULanguageTag*
+ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status);
+
+static void
+ultag_close(ULanguageTag* langtag);
+
+static const char*
+ultag_getLanguage(const ULanguageTag* langtag);
+
+#if 0
+static const char*
+ultag_getJDKLanguage(const ULanguageTag* langtag);
+#endif
+
+static const char*
+ultag_getExtlang(const ULanguageTag* langtag, int32_t idx);
+
+static int32_t
+ultag_getExtlangSize(const ULanguageTag* langtag);
+
+static const char*
+ultag_getScript(const ULanguageTag* langtag);
+
+static const char*
+ultag_getRegion(const ULanguageTag* langtag);
+
+static const char*
+ultag_getVariant(const ULanguageTag* langtag, int32_t idx);
+
+static int32_t
+ultag_getVariantsSize(const ULanguageTag* langtag);
+
+static const char*
+ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx);
+
+static const char*
+ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx);
+
+static int32_t
+ultag_getExtensionsSize(const ULanguageTag* langtag);
+
+static const char*
+ultag_getPrivateUse(const ULanguageTag* langtag);
+
+#if 0
+static const char*
+ultag_getGrandfathered(const ULanguageTag* langtag);
+#endif
+
+/*
+* -------------------------------------------------
+*
+* Language subtag syntax validation functions
+*
+* -------------------------------------------------
+*/
+
+static UBool
+_isAlphaString(const char* s, int32_t len) {
+    int32_t i;
+    for (i = 0; i < len; i++) {
+        if (!ISALPHA(*(s + i))) {
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
+static UBool
+_isNumericString(const char* s, int32_t len) {
+    int32_t i;
+    for (i = 0; i < len; i++) {
+        if (!ISNUMERIC(*(s + i))) {
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
+static UBool
+_isAlphaNumericString(const char* s, int32_t len) {
+    int32_t i;
+    for (i = 0; i < len; i++) {
+        if (!ISALPHA(*(s + i)) && !ISNUMERIC(*(s + i))) {
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
+static UBool
+_isLanguageSubtag(const char* s, int32_t len) {
+    /*
+     * language      = 2*3ALPHA            ; shortest ISO 639 code
+     *                 ["-" extlang]       ; sometimes followed by
+     *                                     ;   extended language subtags
+     *               / 4ALPHA              ; or reserved for future use
+     *               / 5*8ALPHA            ; or registered language subtag
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len >= 2 && len <= 8 && _isAlphaString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isExtlangSubtag(const char* s, int32_t len) {
+    /*
+     * extlang       = 3ALPHA              ; selected ISO 639 codes
+     *                 *2("-" 3ALPHA)      ; permanently reserved
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len == 3 && _isAlphaString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isScriptSubtag(const char* s, int32_t len) {
+    /*
+     * script        = 4ALPHA              ; ISO 15924 code
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len == 4 && _isAlphaString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isRegionSubtag(const char* s, int32_t len) {
+    /*
+     * region        = 2ALPHA              ; ISO 3166-1 code
+     *               / 3DIGIT              ; UN M.49 code
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len == 2 && _isAlphaString(s, len)) {
+        return TRUE;
+    }
+    if (len == 3 && _isNumericString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isVariantSubtag(const char* s, int32_t len) {
+    /*
+     * variant       = 5*8alphanum         ; registered variants
+     *               / (DIGIT 3alphanum)
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len >= 5 && len <= 8 && _isAlphaNumericString(s, len)) {
+        return TRUE;
+    }
+    if (len == 4 && ISNUMERIC(*s) && _isAlphaNumericString(s + 1, 3)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isPrivateuseVariantSubtag(const char* s, int32_t len) {
+    /*
+     * variant       = 1*8alphanum         ; registered variants
+     *               / (DIGIT 3alphanum)
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len >= 1 && len <= 8 && _isAlphaNumericString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isExtensionSingleton(const char* s, int32_t len) {
+    /*
+     * extension     = singleton 1*("-" (2*8alphanum))
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len == 1 && ISALPHA(*s) && (uprv_tolower(*s) != PRIVATEUSE)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isExtensionSubtag(const char* s, int32_t len) {
+    /*
+     * extension     = singleton 1*("-" (2*8alphanum))
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len >= 2 && len <= 8 && _isAlphaNumericString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isExtensionSubtags(const char* s, int32_t len) {
+    const char *p = s;
+    const char *pSubtag = NULL;
+
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+
+    while ((p - s) < len) {
+        if (*p == SEP) {
+            if (pSubtag == NULL) {
+                return FALSE;
+            }
+            if (!_isExtensionSubtag(pSubtag, (int32_t)(p - pSubtag))) {
+                return FALSE;
+            }
+            pSubtag = NULL;
+        } else if (pSubtag == NULL) {
+            pSubtag = p;
+        }
+        p++;
+    }
+    if (pSubtag == NULL) {
+        return FALSE;
+    }
+    return _isExtensionSubtag(pSubtag, (int32_t)(p - pSubtag));
+}
+
+static UBool
+_isPrivateuseValueSubtag(const char* s, int32_t len) {
+    /*
+     * privateuse    = "x" 1*("-" (1*8alphanum))
+     */
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len >= 1 && len <= 8 && _isAlphaNumericString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+static UBool
+_isPrivateuseValueSubtags(const char* s, int32_t len) {
+    const char *p = s;
+    const char *pSubtag = NULL;
+
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+
+    while ((p - s) < len) {
+        if (*p == SEP) {
+            if (pSubtag == NULL) {
+                return FALSE;
+            }
+            if (!_isPrivateuseValueSubtag(pSubtag, (int32_t)(p - pSubtag))) {
+                return FALSE;
+            }
+            pSubtag = NULL;
+        } else if (pSubtag == NULL) {
+            pSubtag = p;
+        }
+        p++;
+    }
+    if (pSubtag == NULL) {
+        return FALSE;
+    }
+    return _isPrivateuseValueSubtag(pSubtag, (int32_t)(p - pSubtag));
+}
+
+U_CFUNC UBool
+ultag_isUnicodeLocaleKey(const char* s, int32_t len) {
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+    if (len == 2 && _isAlphaNumericString(s, len)) {
+        return TRUE;
+    }
+    return FALSE;
+}
+
+U_CFUNC UBool
+ultag_isUnicodeLocaleType(const char*s, int32_t len) {
+    const char* p;
+    int32_t subtagLen = 0;
+
+    if (len < 0) {
+        len = (int32_t)uprv_strlen(s);
+    }
+
+    for (p = s; len > 0; p++, len--) {
+        if (*p == SEP) {
+            if (subtagLen < 3) {
+                return FALSE;
+            }
+            subtagLen = 0;
+        } else if (ISALPHA(*p) || ISNUMERIC(*p)) {
+            subtagLen++;
+            if (subtagLen > 8) {
+                return FALSE;
+            }
+        } else {
+            return FALSE;
+        }
+    }
+
+    return (subtagLen >= 3);
+}
+/*
+* -------------------------------------------------
+*
+* Helper functions
+*
+* -------------------------------------------------
+*/
+
+static UBool
+_addVariantToList(VariantListEntry **first, VariantListEntry *var) {
+    UBool bAdded = TRUE;
+
+    if (*first == NULL) {
+        var->next = NULL;
+        *first = var;
+    } else {
+        VariantListEntry *prev, *cur;
+        int32_t cmp;
+
+        /* variants order should be preserved */
+        prev = NULL;
+        cur = *first;
+        while (TRUE) {
+            if (cur == NULL) {
+                prev->next = var;
+                var->next = NULL;
+                break;
+            }
+
+            /* Checking for duplicate variant */
+            cmp = uprv_compareInvCharsAsAscii(var->variant, cur->variant);
+            if (cmp == 0) {
+                /* duplicated variant */
+                bAdded = FALSE;
+                break;
+            }
+            prev = cur;
+            cur = cur->next;
+        }
+    }
+
+    return bAdded;
+}
+
+static UBool
+_addAttributeToList(AttributeListEntry **first, AttributeListEntry *attr) {
+    UBool bAdded = TRUE;
+
+    if (*first == NULL) {
+        attr->next = NULL;
+        *first = attr;
+    } else {
+        AttributeListEntry *prev, *cur;
+        int32_t cmp;
+
+        /* reorder variants in alphabetical order */
+        prev = NULL;
+        cur = *first;
+        while (TRUE) {
+            if (cur == NULL) {
+                prev->next = attr;
+                attr->next = NULL;
+                break;
+            }
+            cmp = uprv_compareInvCharsAsAscii(attr->attribute, cur->attribute);
+            if (cmp < 0) {
+                if (prev == NULL) {
+                    *first = attr;
+                } else {
+                    prev->next = attr;
+                }
+                attr->next = cur;
+                break;
+            }
+            if (cmp == 0) {
+                /* duplicated variant */
+                bAdded = FALSE;
+                break;
+            }
+            prev = cur;
+            cur = cur->next;
+        }
+    }
+
+    return bAdded;
+}
+
+
+static UBool
+_addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool localeToBCP) {
+    UBool bAdded = TRUE;
+
+    if (*first == NULL) {
+        ext->next = NULL;
+        *first = ext;
+    } else {
+        ExtensionListEntry *prev, *cur;
+        int32_t cmp;
+
+        /* reorder variants in alphabetical order */
+        prev = NULL;
+        cur = *first;
+        while (TRUE) {
+            if (cur == NULL) {
+                prev->next = ext;
+                ext->next = NULL;
+                break;
+            }
+            if (localeToBCP) {
+                /* special handling for locale to bcp conversion */
+                int32_t len, curlen;
+
+                len = (int32_t)uprv_strlen(ext->key);
+                curlen = (int32_t)uprv_strlen(cur->key);
+
+                if (len == 1 && curlen == 1) {
+                    if (*(ext->key) == *(cur->key)) {
+                        cmp = 0;
+                    } else if (*(ext->key) == PRIVATEUSE) {
+                        cmp = 1;
+                    } else if (*(cur->key) == PRIVATEUSE) {
+                        cmp = -1;
+                    } else {
+                        cmp = *(ext->key) - *(cur->key);
+                    }
+                } else if (len == 1) {
+                    cmp = *(ext->key) - LDMLEXT; 
+                } else if (curlen == 1) {
+                    cmp = LDMLEXT - *(cur->key);
+                } else {
+                    cmp = uprv_compareInvCharsAsAscii(ext->key, cur->key);
+                    /* Both are u extension keys - we need special handling for 'attribute' */
+                    if (cmp != 0) {
+                        if (uprv_strcmp(cur->key, LOCALE_ATTRIBUTE_KEY) == 0) {
+                            cmp = 1;
+                        } else if (uprv_strcmp(ext->key, LOCALE_ATTRIBUTE_KEY) == 0) {
+                            cmp = -1;
+                        }
+                    }
+                }
+            } else {
+                cmp = uprv_compareInvCharsAsAscii(ext->key, cur->key);
+            }
+            if (cmp < 0) {
+                if (prev == NULL) {
+                    *first = ext;
+                } else {
+                    prev->next = ext;
+                }
+                ext->next = cur;
+                break;
+            }
+            if (cmp == 0) {
+                /* duplicated extension key */
+                bAdded = FALSE;
+                break;
+            }
+            prev = cur;
+            cur = cur->next;
+        }
+    }
+
+    return bAdded;
+}
+
+static void
+_initializeULanguageTag(ULanguageTag* langtag) {
+    int32_t i;
+
+    langtag->buf = NULL;
+
+    langtag->language = EMPTY;
+    for (i = 0; i < MAXEXTLANG; i++) {
+        langtag->extlang[i] = NULL;
+    }
+
+    langtag->script = EMPTY;
+    langtag->region = EMPTY;
+
+    langtag->variants = NULL;
+    langtag->extensions = NULL;
+
+    langtag->grandfathered = EMPTY;
+    langtag->privateuse = EMPTY;
+}
+
+static int32_t
+_appendLanguageToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UErrorCode* status) {
+    char buf[ULOC_LANG_CAPACITY];
+    UErrorCode tmpStatus = U_ZERO_ERROR;
+    int32_t len, i;
+    int32_t reslen = 0;
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    len = uloc_getLanguage(localeID, buf, sizeof(buf), &tmpStatus);
+    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+        if (strict) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            return 0;
+        }
+        len = 0;
+    }
+
+    /* Note: returned language code is in lower case letters */
+
+    if (len == 0) {
+        if (reslen < capacity) {
+            uprv_memcpy(appendAt + reslen, LANG_UND, uprv_min(LANG_UND_LEN, capacity - reslen));
+        }
+        reslen += LANG_UND_LEN;
+    } else if (!_isLanguageSubtag(buf, len)) {
+            /* invalid language code */
+        if (strict) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            return 0;
+        }
+        if (reslen < capacity) {
+            uprv_memcpy(appendAt + reslen, LANG_UND, uprv_min(LANG_UND_LEN, capacity - reslen));
+        }
+        reslen += LANG_UND_LEN;
+    } else {
+        /* resolve deprecated */
+        for (i = 0; i < UPRV_LENGTHOF(DEPRECATEDLANGS); i += 2) {
+            if (uprv_compareInvCharsAsAscii(buf, DEPRECATEDLANGS[i]) == 0) {
+                uprv_strcpy(buf, DEPRECATEDLANGS[i + 1]);
+                len = (int32_t)uprv_strlen(buf);
+                break;
+            }
+        }
+        if (reslen < capacity) {
+            uprv_memcpy(appendAt + reslen, buf, uprv_min(len, capacity - reslen));
+        }
+        reslen += len;
+    }
+    u_terminateChars(appendAt, capacity, reslen, status);
+    return reslen;
+}
+
+static int32_t
+_appendScriptToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UErrorCode* status) {
+    char buf[ULOC_SCRIPT_CAPACITY];
+    UErrorCode tmpStatus = U_ZERO_ERROR;
+    int32_t len;
+    int32_t reslen = 0;
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    len = uloc_getScript(localeID, buf, sizeof(buf), &tmpStatus);
+    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+        if (strict) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+        }
+        return 0;
+    }
+
+    if (len > 0) {
+        if (!_isScriptSubtag(buf, len)) {
+            /* invalid script code */
+            if (strict) {
+                *status = U_ILLEGAL_ARGUMENT_ERROR;
+            }
+            return 0;
+        } else {
+            if (reslen < capacity) {
+                *(appendAt + reslen) = SEP;
+            }
+            reslen++;
+
+            if (reslen < capacity) {
+                uprv_memcpy(appendAt + reslen, buf, uprv_min(len, capacity - reslen));
+            }
+            reslen += len;
+        }
+    }
+    u_terminateChars(appendAt, capacity, reslen, status);
+    return reslen;
+}
+
+static int32_t
+_appendRegionToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UErrorCode* status) {
+    char buf[ULOC_COUNTRY_CAPACITY];
+    UErrorCode tmpStatus = U_ZERO_ERROR;
+    int32_t len;
+    int32_t reslen = 0;
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    len = uloc_getCountry(localeID, buf, sizeof(buf), &tmpStatus);
+    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+        if (strict) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+        }
+        return 0;
+    }
+
+    if (len > 0) {
+        if (!_isRegionSubtag(buf, len)) {
+            /* invalid region code */
+            if (strict) {
+                *status = U_ILLEGAL_ARGUMENT_ERROR;
+            }
+            return 0;
+        } else {
+            if (reslen < capacity) {
+                *(appendAt + reslen) = SEP;
+            }
+            reslen++;
+
+            if (reslen < capacity) {
+                uprv_memcpy(appendAt + reslen, buf, uprv_min(len, capacity - reslen));
+            }
+            reslen += len;
+        }
+    }
+    u_terminateChars(appendAt, capacity, reslen, status);
+    return reslen;
+}
+
+static int32_t
+_appendVariantsToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UBool *hadPosix, UErrorCode* status) {
+    char buf[ULOC_FULLNAME_CAPACITY];
+    UErrorCode tmpStatus = U_ZERO_ERROR;
+    int32_t len, i;
+    int32_t reslen = 0;
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    len = uloc_getVariant(localeID, buf, sizeof(buf), &tmpStatus);
+    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+        if (strict) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+        }
+        return 0;
+    }
+
+    if (len > 0) {
+        char *p, *pVar;
+        UBool bNext = TRUE;
+        VariantListEntry *var;
+        VariantListEntry *varFirst = NULL;
+
+        pVar = NULL;
+        p = buf;
+        while (bNext) {
+            if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
+                if (*p == 0) {
+                    bNext = FALSE;
+                } else {
+                    *p = 0; /* terminate */
+                }
+                if (pVar == NULL) {
+                    if (strict) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        break;
+                    }
+                    /* ignore empty variant */
+                } else {
+                    /* ICU uses upper case letters for variants, but
+                       the canonical format is lowercase in BCP47 */
+                    for (i = 0; *(pVar + i) != 0; i++) {
+                        *(pVar + i) = uprv_tolower(*(pVar + i));
+                    }
+
+                    /* validate */
+                    if (_isVariantSubtag(pVar, -1)) {
+                        if (uprv_strcmp(pVar,POSIX_VALUE) || len != uprv_strlen(POSIX_VALUE)) {
+                            /* emit the variant to the list */
+                            var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
+                            if (var == NULL) {
+                                *status = U_MEMORY_ALLOCATION_ERROR;
+                                break;
+                            }
+                            var->variant = pVar;
+                            if (!_addVariantToList(&varFirst, var)) {
+                                /* duplicated variant */
+                                uprv_free(var);
+                                if (strict) {
+                                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                                    break;
+                                }
+                            }
+                        } else {
+                            /* Special handling for POSIX variant, need to remember that we had it and then */
+                            /* treat it like an extension later. */
+                            *hadPosix = TRUE;
+                        }
+                    } else if (strict) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        break;
+                    } else if (_isPrivateuseValueSubtag(pVar, -1)) {
+                        /* Handle private use subtags separately */
+                        break;
+                    }
+                }
+                /* reset variant starting position */
+                pVar = NULL;
+            } else if (pVar == NULL) {
+                pVar = p;
+            }
+            p++;
+        }
+
+        if (U_SUCCESS(*status)) {
+            if (varFirst != NULL) {
+                int32_t varLen;
+
+                /* write out validated/normalized variants to the target */
+                var = varFirst;
+                while (var != NULL) {
+                    if (reslen < capacity) {
+                        *(appendAt + reslen) = SEP;
+                    }
+                    reslen++;
+                    varLen = (int32_t)uprv_strlen(var->variant);
+                    if (reslen < capacity) {
+                        uprv_memcpy(appendAt + reslen, var->variant, uprv_min(varLen, capacity - reslen));
+                    }
+                    reslen += varLen;
+                    var = var->next;
+                }
+            }
+        }
+
+        /* clean up */
+        var = varFirst;
+        while (var != NULL) {
+            VariantListEntry *tmpVar = var->next;
+            uprv_free(var);
+            var = tmpVar;
+        }
+
+        if (U_FAILURE(*status)) {
+            return 0;
+        }
+    }
+
+    u_terminateChars(appendAt, capacity, reslen, status);
+    return reslen;
+}
+
+static int32_t
+_appendKeywordsToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UBool hadPosix, UErrorCode* status) {
+    char buf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
+    char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY] = { 0 };
+    int32_t attrBufLength = 0;
+    UEnumeration *keywordEnum = NULL;
+    int32_t reslen = 0;
+
+    keywordEnum = uloc_openKeywords(localeID, status);
+    if (U_FAILURE(*status) && !hadPosix) {
+        uenum_close(keywordEnum);
+        return 0;
+    }
+    if (keywordEnum != NULL || hadPosix) {
+        /* reorder extensions */
+        int32_t len;
+        const char *key;
+        ExtensionListEntry *firstExt = NULL;
+        ExtensionListEntry *ext;
+        AttributeListEntry *firstAttr = NULL;
+        AttributeListEntry *attr;
+        char *attrValue;
+        char extBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
+        char *pExtBuf = extBuf;
+        int32_t extBufCapacity = sizeof(extBuf);
+        const char *bcpKey, *bcpValue;
+        UErrorCode tmpStatus = U_ZERO_ERROR;
+        int32_t keylen;
+        UBool isBcpUExt;
+
+        while (TRUE) {
+            key = uenum_next(keywordEnum, NULL, status);
+            if (key == NULL) {
+                break;
+            }
+            len = uloc_getKeywordValue(localeID, key, buf, sizeof(buf), &tmpStatus);
+            /* buf must be null-terminated */
+            if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+                if (strict) {
+                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                    break;
+                }
+                /* ignore this keyword */
+                tmpStatus = U_ZERO_ERROR;
+                continue;
+            }
+
+            keylen = (int32_t)uprv_strlen(key);
+            isBcpUExt = (keylen > 1);
+
+            /* special keyword used for representing Unicode locale attributes */
+            if (uprv_strcmp(key, LOCALE_ATTRIBUTE_KEY) == 0) {
+                if (len > 0) {
+                    int32_t i = 0;
+                    while (TRUE) {
+                        attrBufLength = 0;
+                        for (; i < len; i++) {
+                            if (buf[i] != '-') {
+                                attrBuf[attrBufLength++] = buf[i];
+                            } else {
+                                i++;
+                                break;
+                            }
+                        }
+                        if (attrBufLength > 0) {
+                            attrBuf[attrBufLength] = 0;
+
+                        } else if (i >= len){
+                            break;
+                        }
+
+                        /* create AttributeListEntry */
+                        attr = (AttributeListEntry*)uprv_malloc(sizeof(AttributeListEntry));
+                        if (attr == NULL) {
+                            *status = U_MEMORY_ALLOCATION_ERROR;
+                            break;
+                        }
+                        attrValue = (char*)uprv_malloc(attrBufLength + 1);
+                        if (attrValue == NULL) {
+                            *status = U_MEMORY_ALLOCATION_ERROR;
+                            break;
+                        }
+                        uprv_strcpy(attrValue, attrBuf);
+                        attr->attribute = attrValue;
+
+                        if (!_addAttributeToList(&firstAttr, attr)) {
+                            uprv_free(attr);
+                            uprv_free(attrValue);
+                            if (strict) {
+                                *status = U_ILLEGAL_ARGUMENT_ERROR;
+                                break;
+                            }
+                        }
+                    }
+                    /* for a place holder ExtensionListEntry */
+                    bcpKey = LOCALE_ATTRIBUTE_KEY;
+                    bcpValue = NULL;
+                }
+            } else if (isBcpUExt) {
+                bcpKey = uloc_toUnicodeLocaleKey(key);
+                if (bcpKey == NULL) {
+                    if (strict) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        break;
+                    }
+                    continue;
+                }
+
+                /* we've checked buf is null-terminated above */
+                bcpValue = uloc_toUnicodeLocaleType(key, buf);
+                if (bcpValue == NULL) {
+                    if (strict) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        break;
+                    }
+                    continue;
+                }
+                if (bcpValue == buf) {
+                    /* 
+                    When uloc_toUnicodeLocaleType(key, buf) returns the
+                    input value as is, the value is well-formed, but has
+                    no known mapping. This implementation normalizes the
+                    the value to lower case
+                    */
+                    int32_t bcpValueLen = uprv_strlen(bcpValue);
+                    if (bcpValueLen < extBufCapacity) {
+                        uprv_strcpy(pExtBuf, bcpValue);
+                        T_CString_toLowerCase(pExtBuf);
+
+                        bcpValue = pExtBuf;
+
+                        pExtBuf += (bcpValueLen + 1);
+                        extBufCapacity -= (bcpValueLen + 1);
+                    } else {
+                        if (strict) {
+                            *status = U_ILLEGAL_ARGUMENT_ERROR;
+                            break;
+                        }
+                        continue;
+                    }
+                }
+            } else {
+                if (*key == PRIVATEUSE) {
+                    if (!_isPrivateuseValueSubtags(buf, len)) {
+                        if (strict) {
+                            *status = U_ILLEGAL_ARGUMENT_ERROR;
+                            break;
+                        }
+                        continue;
+                    }
+                } else {
+                    if (!_isExtensionSingleton(key, keylen) || !_isExtensionSubtags(buf, len)) {
+                        if (strict) {
+                            *status = U_ILLEGAL_ARGUMENT_ERROR;
+                            break;
+                        }
+                        continue;
+                    }
+                }
+                bcpKey = key;
+                if ((len + 1) < extBufCapacity) {
+                    uprv_memcpy(pExtBuf, buf, len);
+                    bcpValue = pExtBuf;
+
+                    pExtBuf += len;
+
+                    *pExtBuf = 0;
+                    pExtBuf++;
+
+                    extBufCapacity -= (len + 1);
+                } else {
+                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                    break;
+                }
+            }
+
+            /* create ExtensionListEntry */
+            ext = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+            if (ext == NULL) {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+                break;
+            }
+            ext->key = bcpKey;
+            ext->value = bcpValue;
+
+            if (!_addExtensionToList(&firstExt, ext, TRUE)) {
+                uprv_free(ext);
+                if (strict) {
+                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                    break;
+                }
+            }
+        }
+
+        /* Special handling for POSIX variant - add the keywords for POSIX */
+        if (hadPosix) {
+            /* create ExtensionListEntry for POSIX */
+            ext = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+            if (ext == NULL) {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+                goto cleanup;
+            }
+            ext->key = POSIX_KEY;
+            ext->value = POSIX_VALUE;
+
+            if (!_addExtensionToList(&firstExt, ext, TRUE)) {
+                uprv_free(ext);
+            }
+        }
+
+        if (U_SUCCESS(*status) && (firstExt != NULL || firstAttr != NULL)) {
+            UBool startLDMLExtension = FALSE;
+            for (ext = firstExt; ext; ext = ext->next) {
+                if (!startLDMLExtension && uprv_strlen(ext->key) > 1) {
+                    /* first LDML u singlton extension */
+                   if (reslen < capacity) {
+                       *(appendAt + reslen) = SEP;
+                   }
+                   reslen++;
+                   if (reslen < capacity) {
+                       *(appendAt + reslen) = LDMLEXT;
+                   }
+                   reslen++;
+
+                   startLDMLExtension = TRUE;
+                }
+
+                /* write out the sorted BCP47 attributes, extensions and private use */
+                if (uprv_strcmp(ext->key, LOCALE_ATTRIBUTE_KEY) == 0) {
+                    /* write the value for the attributes */
+                    for (attr = firstAttr; attr; attr = attr->next) {
+                        if (reslen < capacity) {
+                            *(appendAt + reslen) = SEP;
+                        }
+                        reslen++;
+                        len = (int32_t)uprv_strlen(attr->attribute);
+                        if (reslen < capacity) {
+                            uprv_memcpy(appendAt + reslen, attr->attribute, uprv_min(len, capacity - reslen));
+                        }
+                        reslen += len;
+                    }
+                } else {
+                    if (reslen < capacity) {
+                        *(appendAt + reslen) = SEP;
+                    }
+                    reslen++;
+                    len = (int32_t)uprv_strlen(ext->key);
+                    if (reslen < capacity) {
+                        uprv_memcpy(appendAt + reslen, ext->key, uprv_min(len, capacity - reslen));
+                    }
+                    reslen += len;
+                    if (reslen < capacity) {
+                        *(appendAt + reslen) = SEP;
+                    }
+                    reslen++;
+                    len = (int32_t)uprv_strlen(ext->value);
+                    if (reslen < capacity) {
+                        uprv_memcpy(appendAt + reslen, ext->value, uprv_min(len, capacity - reslen));
+                    }
+                    reslen += len;
+                }
+            }
+        }
+cleanup:
+        /* clean up */
+        ext = firstExt;
+        while (ext != NULL) {
+            ExtensionListEntry *tmpExt = ext->next;
+            uprv_free(ext);
+            ext = tmpExt;
+        }
+
+        attr = firstAttr;
+        while (attr != NULL) {
+            AttributeListEntry *tmpAttr = attr->next;
+            char *pValue = (char *)attr->attribute;
+            uprv_free(pValue);
+            uprv_free(attr);
+            attr = tmpAttr;
+        }
+
+        uenum_close(keywordEnum);
+
+        if (U_FAILURE(*status)) {
+            return 0;
+        }
+    }
+
+    return u_terminateChars(appendAt, capacity, reslen, status);
+}
+
+/**
+ * Append keywords parsed from LDML extension value
+ * e.g. "u-ca-gregory-co-trad" -> {calendar = gregorian} {collation = traditional}
+ * Note: char* buf is used for storing keywords
+ */
+static void
+_appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendTo, char* buf, int32_t bufSize, UBool *posixVariant, UErrorCode *status) {
+    const char *pTag;   /* beginning of current subtag */
+    const char *pKwds;  /* beginning of key-type pairs */
+    UBool variantExists = *posixVariant;
+
+    ExtensionListEntry *kwdFirst = NULL;    /* first LDML keyword */
+    ExtensionListEntry *kwd, *nextKwd;
+
+    AttributeListEntry *attrFirst = NULL;   /* first attribute */
+    AttributeListEntry *attr, *nextAttr;
+
+    int32_t len;
+    int32_t bufIdx = 0;
+
+    char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
+    int32_t attrBufIdx = 0;
+
+    /* Reset the posixVariant value */
+    *posixVariant = FALSE;
+
+    pTag = ldmlext;
+    pKwds = NULL;
+
+    /* Iterate through u extension attributes */
+    while (*pTag) {
+        /* locate next separator char */
+        for (len = 0; *(pTag + len) && *(pTag + len) != SEP; len++);
+
+        if (ultag_isUnicodeLocaleKey(pTag, len)) {
+            pKwds = pTag;
+            break;
+        }
+
+        /* add this attribute to the list */
+        attr = (AttributeListEntry*)uprv_malloc(sizeof(AttributeListEntry));
+        if (attr == NULL) {
+            *status = U_MEMORY_ALLOCATION_ERROR;
+            goto cleanup;
+        }
+
+        if (len < (int32_t)sizeof(attrBuf) - attrBufIdx) {
+            uprv_memcpy(&attrBuf[attrBufIdx], pTag, len);
+            attrBuf[attrBufIdx + len] = 0;
+            attr->attribute = &attrBuf[attrBufIdx];
+            attrBufIdx += (len + 1);
+        } else {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            goto cleanup;
+        }
+
+        if (!_addAttributeToList(&attrFirst, attr)) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            uprv_free(attr);
+            goto cleanup;
+        }
+
+        /* next tag */
+        pTag += len;
+        if (*pTag) {
+            /* next to the separator */
+            pTag++;
+        }
+    }
+
+    if (attrFirst) {
+        /* emit attributes as an LDML keyword, e.g. attribute=attr1-attr2 */
+
+        if (attrBufIdx > bufSize) {
+            /* attrBufIdx == <total length of attribute subtag> + 1 */
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            goto cleanup;
+        }
+
+        kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+        if (kwd == NULL) {
+            *status = U_MEMORY_ALLOCATION_ERROR;
+            goto cleanup;
+        }
+
+        kwd->key = LOCALE_ATTRIBUTE_KEY;
+        kwd->value = buf;
+
+        /* attribute subtags sorted in alphabetical order as type */
+        attr = attrFirst;
+        while (attr != NULL) {
+            nextAttr = attr->next;
+
+            /* buffer size check is done above */
+            if (attr != attrFirst) {
+                *(buf + bufIdx) = SEP;
+                bufIdx++;
+            }
+
+            len = uprv_strlen(attr->attribute);
+            uprv_memcpy(buf + bufIdx, attr->attribute, len);
+            bufIdx += len;
+
+            attr = nextAttr;
+        }
+        *(buf + bufIdx) = 0;
+        bufIdx++;
+
+        if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            uprv_free(kwd);
+            goto cleanup;
+        }
+
+        /* once keyword entry is created, delete the attribute list */
+        attr = attrFirst;
+        while (attr != NULL) {
+            nextAttr = attr->next;
+            uprv_free(attr);
+            attr = nextAttr;
+        }
+        attrFirst = NULL;
+    }
+
+    if (pKwds) {
+        const char *pBcpKey = NULL;     /* u extenstion key subtag */
+        const char *pBcpType = NULL;    /* beginning of u extension type subtag(s) */
+        int32_t bcpKeyLen = 0;
+        int32_t bcpTypeLen = 0;
+        UBool isDone = FALSE;
+
+        pTag = pKwds;
+        /* BCP47 representation of LDML key/type pairs */
+        while (!isDone) {
+            const char *pNextBcpKey = NULL;
+            int32_t nextBcpKeyLen = 0;
+            UBool emitKeyword = FALSE;
+
+            if (*pTag) {
+                /* locate next separator char */
+                for (len = 0; *(pTag + len) && *(pTag + len) != SEP; len++);
+
+                if (ultag_isUnicodeLocaleKey(pTag, len)) {
+                    if (pBcpKey) {
+                        emitKeyword = TRUE;
+                        pNextBcpKey = pTag;
+                        nextBcpKeyLen = len;
+                    } else {
+                        pBcpKey = pTag;
+                        bcpKeyLen = len;
+                    }
+                } else {
+                    U_ASSERT(pBcpKey != NULL);
+                    /* within LDML type subtags */
+                    if (pBcpType) {
+                        bcpTypeLen += (len + 1);
+                    } else {
+                        pBcpType = pTag;
+                        bcpTypeLen = len;
+                    }
+                }
+
+                /* next tag */
+                pTag += len;
+                if (*pTag) {
+                    /* next to the separator */
+                    pTag++;
+                }
+            } else {
+                /* processing last one */
+                emitKeyword = TRUE;
+                isDone = TRUE;
+            }
+
+            if (emitKeyword) {
+                const char *pKey = NULL;    /* LDML key */
+                const char *pType = NULL;   /* LDML type */
+
+                char bcpKeyBuf[9];          /* BCP key length is always 2 for now */
+
+                U_ASSERT(pBcpKey != NULL);
+
+                if (bcpKeyLen >= sizeof(bcpKeyBuf)) {
+                    /* the BCP key is invalid */
+                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                    goto cleanup;
+                }
+
+                uprv_strncpy(bcpKeyBuf, pBcpKey, bcpKeyLen);
+                bcpKeyBuf[bcpKeyLen] = 0;
+
+                /* u extension key to LDML key */
+                pKey = uloc_toLegacyKey(bcpKeyBuf);
+                if (pKey == NULL) {
+                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                    goto cleanup;
+                }
+                if (pKey == bcpKeyBuf) {
+                    /*
+                    The key returned by toLegacyKey points to the input buffer.
+                    We normalize the result key to lower case.
+                    */
+                    T_CString_toLowerCase(bcpKeyBuf);
+                    if (bufSize - bufIdx - 1 >= bcpKeyLen) {
+                        uprv_memcpy(buf + bufIdx, bcpKeyBuf, bcpKeyLen);
+                        pKey = buf + bufIdx;
+                        bufIdx += bcpKeyLen;
+                        *(buf + bufIdx) = 0;
+                        bufIdx++;
+                    } else {
+                        *status = U_BUFFER_OVERFLOW_ERROR;
+                        goto cleanup;
+                    }
+                }
+
+                if (pBcpType) {
+                    char bcpTypeBuf[128];       /* practically long enough even considering multiple subtag type */
+                    if (bcpTypeLen >= sizeof(bcpTypeBuf)) {
+                        /* the BCP type is too long */
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        goto cleanup;
+                    }
+
+                    uprv_strncpy(bcpTypeBuf, pBcpType, bcpTypeLen);
+                    bcpTypeBuf[bcpTypeLen] = 0;
+
+                    /* BCP type to locale type */
+                    pType = uloc_toLegacyType(pKey, bcpTypeBuf);
+                    if (pType == NULL) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        goto cleanup;
+                    }
+                    if (pType == bcpTypeBuf) {
+                        /*
+                        The type returned by toLegacyType points to the input buffer.
+                        We normalize the result type to lower case.
+                        */
+                        /* normalize to lower case */
+                        T_CString_toLowerCase(bcpTypeBuf);
+                        if (bufSize - bufIdx - 1 >= bcpTypeLen) {
+                            uprv_memcpy(buf + bufIdx, bcpTypeBuf, bcpTypeLen);
+                            pType = buf + bufIdx;
+                            bufIdx += bcpTypeLen;
+                            *(buf + bufIdx) = 0;
+                            bufIdx++;
+                        } else {
+                            *status = U_BUFFER_OVERFLOW_ERROR;
+                            goto cleanup;
+                        }
+                    }
+                } else {
+                    /* typeless - default type value is "yes" */
+                    pType = LOCALE_TYPE_YES;
+                }
+
+                /* Special handling for u-va-posix, since we want to treat this as a variant, 
+                   not as a keyword */
+                if (!variantExists && !uprv_strcmp(pKey, POSIX_KEY) && !uprv_strcmp(pType, POSIX_VALUE) ) {
+                    *posixVariant = TRUE;
+                } else {
+                    /* create an ExtensionListEntry for this keyword */
+                    kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+                    if (kwd == NULL) {
+                        *status = U_MEMORY_ALLOCATION_ERROR;
+                        goto cleanup;
+                    }
+
+                    kwd->key = pKey;
+                    kwd->value = pType;
+
+                    if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        uprv_free(kwd);
+                        goto cleanup;
+                    }
+                }
+
+                pBcpKey = pNextBcpKey;
+                bcpKeyLen = pNextBcpKey != NULL ? nextBcpKeyLen : 0;
+                pBcpType = NULL;
+                bcpTypeLen = 0;
+            }
+        }
+    }
+
+    kwd = kwdFirst;
+    while (kwd != NULL) {
+        nextKwd = kwd->next;
+        _addExtensionToList(appendTo, kwd, FALSE);
+        kwd = nextKwd;
+    }
+
+    return;
+
+cleanup:
+    attr = attrFirst;
+    while (attr != NULL) {
+        nextAttr = attr->next;
+        uprv_free(attr);
+        attr = nextAttr;
+    }
+
+    kwd = kwdFirst;
+    while (kwd != NULL) {
+        nextKwd = kwd->next;
+        uprv_free(kwd);
+        kwd = nextKwd;
+    }
+}
+
+
+static int32_t
+_appendKeywords(ULanguageTag* langtag, char* appendAt, int32_t capacity, UErrorCode* status) {
+    int32_t reslen = 0;
+    int32_t i, n;
+    int32_t len;
+    ExtensionListEntry *kwdFirst = NULL;
+    ExtensionListEntry *kwd;
+    const char *key, *type;
+    char *kwdBuf = NULL;
+    int32_t kwdBufLength = capacity;
+    UBool posixVariant = FALSE;
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    kwdBuf = (char*)uprv_malloc(kwdBufLength);
+    if (kwdBuf == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return 0;
+    }
+
+    /* Determine if variants already exists */
+    if (ultag_getVariantsSize(langtag)) {
+        posixVariant = TRUE;
+    }
+
+    n = ultag_getExtensionsSize(langtag);
+
+    /* resolve locale keywords and reordering keys */
+    for (i = 0; i < n; i++) {
+        key = ultag_getExtensionKey(langtag, i);
+        type = ultag_getExtensionValue(langtag, i);
+        if (*key == LDMLEXT) {
+            _appendLDMLExtensionAsKeywords(type, &kwdFirst, kwdBuf, kwdBufLength, &posixVariant, status);
+            if (U_FAILURE(*status)) {
+                break;
+            }
+        } else {
+            kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+            if (kwd == NULL) {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+                break;
+            }
+            kwd->key = key;
+            kwd->value = type;
+            if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
+                uprv_free(kwd);
+                *status = U_ILLEGAL_ARGUMENT_ERROR;
+                break;
+            }
+        }
+    }
+
+    if (U_SUCCESS(*status)) {
+        type = ultag_getPrivateUse(langtag);
+        if ((int32_t)uprv_strlen(type) > 0) {
+            /* add private use as a keyword */
+            kwd = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+            if (kwd == NULL) {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+            } else {
+                kwd->key = PRIVATEUSE_KEY;
+                kwd->value = type;
+                if (!_addExtensionToList(&kwdFirst, kwd, FALSE)) {
+                    uprv_free(kwd);
+                    *status = U_ILLEGAL_ARGUMENT_ERROR;
+                }
+            }
+        }
+    }
+
+    /* If a POSIX variant was in the extensions, write it out before writing the keywords. */
+
+    if (U_SUCCESS(*status) && posixVariant) {
+        len = (int32_t) uprv_strlen(_POSIX);
+        if (reslen < capacity) {
+            uprv_memcpy(appendAt + reslen, _POSIX, uprv_min(len, capacity - reslen));
+        }
+        reslen += len;
+    }
+
+    if (U_SUCCESS(*status) && kwdFirst != NULL) {
+        /* write out the sorted keywords */
+        UBool firstValue = TRUE;
+        kwd = kwdFirst;
+        do {
+            if (reslen < capacity) {
+                if (firstValue) {
+                    /* '@' */
+                    *(appendAt + reslen) = LOCALE_EXT_SEP;
+                    firstValue = FALSE;
+                } else {
+                    /* ';' */
+                    *(appendAt + reslen) = LOCALE_KEYWORD_SEP;
+                }
+            }
+            reslen++;
+
+            /* key */
+            len = (int32_t)uprv_strlen(kwd->key);
+            if (reslen < capacity) {
+                uprv_memcpy(appendAt + reslen, kwd->key, uprv_min(len, capacity - reslen));
+            }
+            reslen += len;
+
+            /* '=' */
+            if (reslen < capacity) {
+                *(appendAt + reslen) = LOCALE_KEY_TYPE_SEP;
+            }
+            reslen++;
+
+            /* type */
+            len = (int32_t)uprv_strlen(kwd->value);
+            if (reslen < capacity) {
+                uprv_memcpy(appendAt + reslen, kwd->value, uprv_min(len, capacity - reslen));
+            }
+            reslen += len;
+
+            kwd = kwd->next;
+        } while (kwd);
+    }
+
+    /* clean up */
+    kwd = kwdFirst;
+    while (kwd != NULL) {
+        ExtensionListEntry *tmpKwd = kwd->next;
+        uprv_free(kwd);
+        kwd = tmpKwd;
+    }
+
+    uprv_free(kwdBuf);
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    return u_terminateChars(appendAt, capacity, reslen, status);
+}
+
+static int32_t
+_appendPrivateuseToLanguageTag(const char* localeID, char* appendAt, int32_t capacity, UBool strict, UBool hadPosix, UErrorCode* status) {
+    char buf[ULOC_FULLNAME_CAPACITY];
+    char tmpAppend[ULOC_FULLNAME_CAPACITY];
+    UErrorCode tmpStatus = U_ZERO_ERROR;
+    int32_t len, i;
+    int32_t reslen = 0;
+
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    len = uloc_getVariant(localeID, buf, sizeof(buf), &tmpStatus);
+    if (U_FAILURE(tmpStatus) || tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
+        if (strict) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+        }
+        return 0;
+    }
+
+    if (len > 0) {
+        char *p, *pPriv;
+        UBool bNext = TRUE;
+        UBool firstValue = TRUE;
+        UBool writeValue;
+
+        pPriv = NULL;
+        p = buf;
+        while (bNext) {
+            writeValue = FALSE;
+            if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
+                if (*p == 0) {
+                    bNext = FALSE;
+                } else {
+                    *p = 0; /* terminate */
+                }
+                if (pPriv != NULL) {
+                    /* Private use in the canonical format is lowercase in BCP47 */
+                    for (i = 0; *(pPriv + i) != 0; i++) {
+                        *(pPriv + i) = uprv_tolower(*(pPriv + i));
+                    }
+
+                    /* validate */
+                    if (_isPrivateuseValueSubtag(pPriv, -1)) {
+                        if (firstValue) {
+                            if (!_isVariantSubtag(pPriv, -1)) {
+                                writeValue = TRUE;
+                            }
+                        } else {
+                            writeValue = TRUE;
+                        }
+                    } else if (strict) {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        break;
+                    } else {
+                        break;
+                    }
+
+                    if (writeValue) {
+                        if (reslen < capacity) {
+                            tmpAppend[reslen++] = SEP;
+                        }
+
+                        if (firstValue) {
+                            if (reslen < capacity) {
+                                tmpAppend[reslen++] = *PRIVATEUSE_KEY;
+                            }
+
+                            if (reslen < capacity) {
+                                tmpAppend[reslen++] = SEP;
+                            }
+
+                            len = (int32_t)uprv_strlen(PRIVUSE_VARIANT_PREFIX);
+                            if (reslen < capacity) {
+                                uprv_memcpy(tmpAppend + reslen, PRIVUSE_VARIANT_PREFIX, uprv_min(len, capacity - reslen));
+                            }
+                            reslen += len;
+
+                            if (reslen < capacity) {
+                                tmpAppend[reslen++] = SEP;
+                            }
+
+                            firstValue = FALSE;
+                        }
+
+                        len = (int32_t)uprv_strlen(pPriv);
+                        if (reslen < capacity) {
+                            uprv_memcpy(tmpAppend + reslen, pPriv, uprv_min(len, capacity - reslen));
+                        }
+                        reslen += len;
+                    }
+                }
+                /* reset private use starting position */
+                pPriv = NULL;
+            } else if (pPriv == NULL) {
+                pPriv = p;
+            }
+            p++;
+        }
+
+        if (U_FAILURE(*status)) {
+            return 0;
+        }
+    }
+
+    if (U_SUCCESS(*status)) {
+        len = reslen;
+        if (reslen < capacity) {
+            uprv_memcpy(appendAt, tmpAppend, uprv_min(len, capacity - reslen));
+        }
+    }
+
+    u_terminateChars(appendAt, capacity, reslen, status);
+
+    return reslen;
+}
+
+/*
+* -------------------------------------------------
+*
+* ultag_ functions
+*
+* -------------------------------------------------
+*/
+
+/* Bit flags used by the parser */
+#define LANG 0x0001
+#define EXTL 0x0002
+#define SCRT 0x0004
+#define REGN 0x0008
+#define VART 0x0010
+#define EXTS 0x0020
+#define EXTV 0x0040
+#define PRIV 0x0080
+
+/**
+ * Ticket #12705 - Visual Studio 2015 Update 3 contains a new code optimizer which has problems optimizing
+ * this function. (See https://blogs.msdn.microsoft.com/vcblog/2016/05/04/new-code-optimizer/ )
+ * As a workaround, we will turn off optimization just for this function on VS2015 Update 3 and above.
+ */
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190024210))
+#pragma optimize( "", off )
+#endif
+
+static ULanguageTag*
+ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status) {
+    ULanguageTag *t;
+    char *tagBuf;
+    int16_t next;
+    char *pSubtag, *pNext, *pLastGoodPosition;
+    int32_t subtagLen;
+    int32_t extlangIdx;
+    ExtensionListEntry *pExtension;
+    char *pExtValueSubtag, *pExtValueSubtagEnd;
+    int32_t i;
+    UBool privateuseVar = FALSE;
+    int32_t grandfatheredLen = 0;
+
+    if (parsedLen != NULL) {
+        *parsedLen = 0;
+    }
+
+    if (U_FAILURE(*status)) {
+        return NULL;
+    }
+
+    if (tagLen < 0) {
+        tagLen = (int32_t)uprv_strlen(tag);
+    }
+
+    /* copy the entire string */
+    tagBuf = (char*)uprv_malloc(tagLen + 1);
+    if (tagBuf == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    uprv_memcpy(tagBuf, tag, tagLen);
+    *(tagBuf + tagLen) = 0;
+
+    /* create a ULanguageTag */
+    t = (ULanguageTag*)uprv_malloc(sizeof(ULanguageTag));
+    if (t == NULL) {
+        uprv_free(tagBuf);
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    _initializeULanguageTag(t);
+    t->buf = tagBuf;
+
+    if (tagLen < MINLEN) {
+        /* the input tag is too short - return empty ULanguageTag */
+        return t;
+    }
+
+    /* check if the tag is grandfathered */
+    for (i = 0; GRANDFATHERED[i] != NULL; i += 2) {
+        if (uprv_stricmp(GRANDFATHERED[i], tagBuf) == 0) {
+            int32_t newTagLength;
+
+            grandfatheredLen = tagLen;  /* back up for output parsedLen */
+            newTagLength = uprv_strlen(GRANDFATHERED[i+1]);
+            if (tagLen < newTagLength) {
+                uprv_free(tagBuf);
+                tagBuf = (char*)uprv_malloc(newTagLength + 1);
+                if (tagBuf == NULL) {
+                    *status = U_MEMORY_ALLOCATION_ERROR;
+                    ultag_close(t);
+                    return NULL;
+                }
+                t->buf = tagBuf;
+                tagLen = newTagLength;
+            }
+            uprv_strcpy(t->buf, GRANDFATHERED[i + 1]);
+            break;
+        }
+    }
+
+    /*
+     * langtag      =   language
+     *                  ["-" script]
+     *                  ["-" region]
+     *                  *("-" variant)
+     *                  *("-" extension)
+     *                  ["-" privateuse]
+     */
+
+    next = LANG | PRIV;
+    pNext = pLastGoodPosition = tagBuf;
+    extlangIdx = 0;
+    pExtension = NULL;
+    pExtValueSubtag = NULL;
+    pExtValueSubtagEnd = NULL;
+
+    while (pNext) {
+        char *pSep;
+
+        pSubtag = pNext;
+
+        /* locate next separator char */
+        pSep = pSubtag;
+        while (*pSep) {
+            if (*pSep == SEP) {
+                break;
+            }
+            pSep++;
+        }
+        if (*pSep == 0) {
+            /* last subtag */
+            pNext = NULL;
+        } else {
+            pNext = pSep + 1;
+        }
+        subtagLen = (int32_t)(pSep - pSubtag);
+
+        if (next & LANG) {
+            if (_isLanguageSubtag(pSubtag, subtagLen)) {
+                *pSep = 0;  /* terminate */
+                t->language = T_CString_toLowerCase(pSubtag);
+
+                pLastGoodPosition = pSep;
+                next = EXTL | SCRT | REGN | VART | EXTS | PRIV;
+                continue;
+            }
+        }
+        if (next & EXTL) {
+            if (_isExtlangSubtag(pSubtag, subtagLen)) {
+                *pSep = 0;
+                t->extlang[extlangIdx++] = T_CString_toLowerCase(pSubtag);
+
+                pLastGoodPosition = pSep;
+                if (extlangIdx < 3) {
+                    next = EXTL | SCRT | REGN | VART | EXTS | PRIV;
+                } else {
+                    next = SCRT | REGN | VART | EXTS | PRIV;
+                }
+                continue;
+            }
+        }
+        if (next & SCRT) {
+            if (_isScriptSubtag(pSubtag, subtagLen)) {
+                char *p = pSubtag;
+
+                *pSep = 0;
+
+                /* to title case */
+                *p = uprv_toupper(*p);
+                p++;
+                for (; *p; p++) {
+                    *p = uprv_tolower(*p);
+                }
+
+                t->script = pSubtag;
+
+                pLastGoodPosition = pSep;
+                next = REGN | VART | EXTS | PRIV;
+                continue;
+            }
+        }
+        if (next & REGN) {
+            if (_isRegionSubtag(pSubtag, subtagLen)) {
+                *pSep = 0;
+                t->region = T_CString_toUpperCase(pSubtag);
+
+                pLastGoodPosition = pSep;
+                next = VART | EXTS | PRIV;
+                continue;
+            }
+        }
+        if (next & VART) {
+            if (_isVariantSubtag(pSubtag, subtagLen) ||
+               (privateuseVar && _isPrivateuseVariantSubtag(pSubtag, subtagLen))) {
+                VariantListEntry *var;
+                UBool isAdded;
+
+                var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
+                if (var == NULL) {
+                    *status = U_MEMORY_ALLOCATION_ERROR;
+                    goto error;
+                }
+                *pSep = 0;
+                var->variant = T_CString_toUpperCase(pSubtag);
+                isAdded = _addVariantToList(&(t->variants), var);
+                if (!isAdded) {
+                    /* duplicated variant entry */
+                    uprv_free(var);
+                    break;
+                }
+                pLastGoodPosition = pSep;
+                next = VART | EXTS | PRIV;
+                continue;
+            }
+        }
+        if (next & EXTS) {
+            if (_isExtensionSingleton(pSubtag, subtagLen)) {
+                if (pExtension != NULL) {
+                    if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
+                        /* the previous extension is incomplete */
+                        uprv_free(pExtension);
+                        pExtension = NULL;
+                        break;
+                    }
+
+                    /* terminate the previous extension value */
+                    *pExtValueSubtagEnd = 0;
+                    pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
+
+                    /* insert the extension to the list */
+                    if (_addExtensionToList(&(t->extensions), pExtension, FALSE)) {
+                        pLastGoodPosition = pExtValueSubtagEnd;
+                    } else {
+                        /* stop parsing here */
+                        uprv_free(pExtension);
+                        pExtension = NULL;
+                        break;
+                    }
+                }
+
+                /* create a new extension */
+                pExtension = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
+                if (pExtension == NULL) {
+                    *status = U_MEMORY_ALLOCATION_ERROR;
+                    goto error;
+                }
+                *pSep = 0;
+                pExtension->key = T_CString_toLowerCase(pSubtag);
+                pExtension->value = NULL;   /* will be set later */
+
+                /*
+                 * reset the start and the end location of extension value
+                 * subtags for this extension
+                 */
+                pExtValueSubtag = NULL;
+                pExtValueSubtagEnd = NULL;
+
+                next = EXTV;
+                continue;
+            }
+        }
+        if (next & EXTV) {
+            if (_isExtensionSubtag(pSubtag, subtagLen)) {
+                if (pExtValueSubtag == NULL) {
+                    /* if the start postion of this extension's value is not yet,
+                        this one is the first value subtag */
+                    pExtValueSubtag = pSubtag;
+                }
+
+                /* Mark the end of this subtag */
+                pExtValueSubtagEnd = pSep;
+                next = EXTS | EXTV | PRIV;
+
+                continue;
+            }
+        }
+        if (next & PRIV) {
+            if (uprv_tolower(*pSubtag) == PRIVATEUSE) {
+                char *pPrivuseVal;
+
+                if (pExtension != NULL) {
+                    /* Process the last extension */
+                    if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
+                        /* the previous extension is incomplete */
+                        uprv_free(pExtension);
+                        pExtension = NULL;
+                        break;
+                    } else {
+                        /* terminate the previous extension value */
+                        *pExtValueSubtagEnd = 0;
+                        pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
+
+                        /* insert the extension to the list */
+                        if (_addExtensionToList(&(t->extensions), pExtension, FALSE)) {
+                            pLastGoodPosition = pExtValueSubtagEnd;
+                            pExtension = NULL;
+                        } else {
+                        /* stop parsing here */
+                            uprv_free(pExtension);
+                            pExtension = NULL;
+                            break;
+                        }
+                    }
+                }
+
+                /* The rest of part will be private use value subtags */
+                if (pNext == NULL) {
+                    /* empty private use subtag */
+                    break;
+                }
+                /* back up the private use value start position */
+                pPrivuseVal = pNext;
+
+                /* validate private use value subtags */
+                while (pNext) {
+                    pSubtag = pNext;
+                    pSep = pSubtag;
+                    while (*pSep) {
+                        if (*pSep == SEP) {
+                            break;
+                        }
+                        pSep++;
+                    }
+                    if (*pSep == 0) {
+                        /* last subtag */
+                        pNext = NULL;
+                    } else {
+                        pNext = pSep + 1;
+                    }
+                    subtagLen = (int32_t)(pSep - pSubtag);
+
+                    if (uprv_strncmp(pSubtag, PRIVUSE_VARIANT_PREFIX, uprv_strlen(PRIVUSE_VARIANT_PREFIX)) == 0) {
+                        *pSep = 0;
+                        next = VART;
+                        privateuseVar = TRUE;
+                        break;
+                    } else if (_isPrivateuseValueSubtag(pSubtag, subtagLen)) {
+                        pLastGoodPosition = pSep;
+                    } else {
+                        break;
+                    }
+                }
+
+                if (next == VART) {
+                    continue;
+                }
+
+                if (pLastGoodPosition - pPrivuseVal > 0) {
+                    *pLastGoodPosition = 0;
+                    t->privateuse = T_CString_toLowerCase(pPrivuseVal);
+                }
+                /* No more subtags, exiting the parse loop */
+                break;
+            }
+            break;
+        }
+
+        /* If we fell through here, it means this subtag is illegal - quit parsing */
+        break;
+    }
+
+    if (pExtension != NULL) {
+        /* Process the last extension */
+        if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
+            /* the previous extension is incomplete */
+            uprv_free(pExtension);
+        } else {
+            /* terminate the previous extension value */
+            *pExtValueSubtagEnd = 0;
+            pExtension->value = T_CString_toLowerCase(pExtValueSubtag);
+            /* insert the extension to the list */
+            if (_addExtensionToList(&(t->extensions), pExtension, FALSE)) {
+                pLastGoodPosition = pExtValueSubtagEnd;
+            } else {
+                uprv_free(pExtension);
+            }
+        }
+    }
+
+    if (parsedLen != NULL) {
+        *parsedLen = (grandfatheredLen > 0) ? grandfatheredLen : (int32_t)(pLastGoodPosition - t->buf);
+    }
+
+    return t;
+
+error:
+    ultag_close(t);
+    return NULL;
+}
+
+/**
+* Ticket #12705 - Turn optimization back on.
+*/
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190024210))
+#pragma optimize( "", on )
+#endif
+
+static void
+ultag_close(ULanguageTag* langtag) {
+
+    if (langtag == NULL) {
+        return;
+    }
+
+    uprv_free(langtag->buf);
+
+    if (langtag->variants) {
+        VariantListEntry *curVar = langtag->variants;
+        while (curVar) {
+            VariantListEntry *nextVar = curVar->next;
+            uprv_free(curVar);
+            curVar = nextVar;
+        }
+    }
+
+    if (langtag->extensions) {
+        ExtensionListEntry *curExt = langtag->extensions;
+        while (curExt) {
+            ExtensionListEntry *nextExt = curExt->next;
+            uprv_free(curExt);
+            curExt = nextExt;
+        }
+    }
+
+    uprv_free(langtag);
+}
+
+static const char*
+ultag_getLanguage(const ULanguageTag* langtag) {
+    return langtag->language;
+}
+
+#if 0
+static const char*
+ultag_getJDKLanguage(const ULanguageTag* langtag) {
+    int32_t i;
+    for (i = 0; DEPRECATEDLANGS[i] != NULL; i += 2) {
+        if (uprv_compareInvCharsAsAscii(DEPRECATEDLANGS[i], langtag->language) == 0) {
+            return DEPRECATEDLANGS[i + 1];
+        }
+    }
+    return langtag->language;
+}
+#endif
+
+static const char*
+ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
+    if (idx >= 0 && idx < MAXEXTLANG) {
+        return langtag->extlang[idx];
+    }
+    return NULL;
+}
+
+static int32_t
+ultag_getExtlangSize(const ULanguageTag* langtag) {
+    int32_t size = 0;
+    int32_t i;
+    for (i = 0; i < MAXEXTLANG; i++) {
+        if (langtag->extlang[i]) {
+            size++;
+        }
+    }
+    return size;
+}
+
+static const char*
+ultag_getScript(const ULanguageTag* langtag) {
+    return langtag->script;
+}
+
+static const char*
+ultag_getRegion(const ULanguageTag* langtag) {
+    return langtag->region;
+}
+
+static const char*
+ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
+    const char *var = NULL;
+    VariantListEntry *cur = langtag->variants;
+    int32_t i = 0;
+    while (cur) {
+        if (i == idx) {
+            var = cur->variant;
+            break;
+        }
+        cur = cur->next;
+        i++;
+    }
+    return var;
+}
+
+static int32_t
+ultag_getVariantsSize(const ULanguageTag* langtag) {
+    int32_t size = 0;
+    VariantListEntry *cur = langtag->variants;
+    while (TRUE) {
+        if (cur == NULL) {
+            break;
+        }
+        size++;
+        cur = cur->next;
+    }
+    return size;
+}
+
+static const char*
+ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
+    const char *key = NULL;
+    ExtensionListEntry *cur = langtag->extensions;
+    int32_t i = 0;
+    while (cur) {
+        if (i == idx) {
+            key = cur->key;
+            break;
+        }
+        cur = cur->next;
+        i++;
+    }
+    return key;
+}
+
+static const char*
+ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
+    const char *val = NULL;
+    ExtensionListEntry *cur = langtag->extensions;
+    int32_t i = 0;
+    while (cur) {
+        if (i == idx) {
+            val = cur->value;
+            break;
+        }
+        cur = cur->next;
+        i++;
+    }
+    return val;
+}
+
+static int32_t
+ultag_getExtensionsSize(const ULanguageTag* langtag) {
+    int32_t size = 0;
+    ExtensionListEntry *cur = langtag->extensions;
+    while (TRUE) {
+        if (cur == NULL) {
+            break;
+        }
+        size++;
+        cur = cur->next;
+    }
+    return size;
+}
+
+static const char*
+ultag_getPrivateUse(const ULanguageTag* langtag) {
+    return langtag->privateuse;
+}
+
+#if 0
+static const char*
+ultag_getGrandfathered(const ULanguageTag* langtag) {
+    return langtag->grandfathered;
+}
+#endif
+
+
+/*
+* -------------------------------------------------
+*
+* Locale/BCP47 conversion APIs, exposed as uloc_*
+*
+* -------------------------------------------------
+*/
+U_CAPI int32_t U_EXPORT2
+uloc_toLanguageTag(const char* localeID,
+                   char* langtag,
+                   int32_t langtagCapacity,
+                   UBool strict,
+                   UErrorCode* status) {
+    /* char canonical[ULOC_FULLNAME_CAPACITY]; */ /* See #6822 */
+    char canonical[256];
+    int32_t reslen = 0;
+    UErrorCode tmpStatus = U_ZERO_ERROR;
+    UBool hadPosix = FALSE;
+    const char* pKeywordStart;
+
+    /* Note: uloc_canonicalize returns "en_US_POSIX" for input locale ID "".  See #6835 */
+    canonical[0] = 0;
+    if (uprv_strlen(localeID) > 0) {
+        uloc_canonicalize(localeID, canonical, sizeof(canonical), &tmpStatus);
+        if (tmpStatus != U_ZERO_ERROR) {
+            *status = U_ILLEGAL_ARGUMENT_ERROR;
+            return 0;
+        }
+    }
+
+    /* For handling special case - private use only tag */
+    pKeywordStart = locale_getKeywordsStart(canonical);
+    if (pKeywordStart == canonical) {
+        UEnumeration *kwdEnum;
+        int kwdCnt = 0;
+        UBool done = FALSE;
+
+        kwdEnum = uloc_openKeywords((const char*)canonical, &tmpStatus);
+        if (kwdEnum != NULL) {
+            kwdCnt = uenum_count(kwdEnum, &tmpStatus);
+            if (kwdCnt == 1) {
+                const char *key;
+                int32_t len = 0;
+
+                key = uenum_next(kwdEnum, &len, &tmpStatus);
+                if (len == 1 && *key == PRIVATEUSE) {
+                    char buf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
+                    buf[0] = PRIVATEUSE;
+                    buf[1] = SEP;
+                    len = uloc_getKeywordValue(localeID, key, &buf[2], sizeof(buf) - 2, &tmpStatus);
+                    if (U_SUCCESS(tmpStatus)) {
+                        if (_isPrivateuseValueSubtags(&buf[2], len)) {
+                            /* return private use only tag */
+                            reslen = len + 2;
+                            uprv_memcpy(langtag, buf, uprv_min(reslen, langtagCapacity));
+                            u_terminateChars(langtag, langtagCapacity, reslen, status);
+                            done = TRUE;
+                        } else if (strict) {
+                            *status = U_ILLEGAL_ARGUMENT_ERROR;
+                            done = TRUE;
+                        }
+                        /* if not strict mode, then "und" will be returned */
+                    } else {
+                        *status = U_ILLEGAL_ARGUMENT_ERROR;
+                        done = TRUE;
+                    }
+                }
+            }
+            uenum_close(kwdEnum);
+            if (done) {
+                return reslen;
+            }
+        }
+    }
+
+    reslen += _appendLanguageToLanguageTag(canonical, langtag, langtagCapacity, strict, status);
+    reslen += _appendScriptToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, status);
+    reslen += _appendRegionToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, status);
+    reslen += _appendVariantsToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, &hadPosix, status);
+    reslen += _appendKeywordsToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, hadPosix, status);
+    reslen += _appendPrivateuseToLanguageTag(canonical, langtag + reslen, langtagCapacity - reslen, strict, hadPosix, status);
+
+    return reslen;
+}
+
+
+U_CAPI int32_t U_EXPORT2
+uloc_forLanguageTag(const char* langtag,
+                    char* localeID,
+                    int32_t localeIDCapacity,
+                    int32_t* parsedLength,
+                    UErrorCode* status) {
+    ULanguageTag *lt;
+    int32_t reslen = 0;
+    const char *subtag, *p;
+    int32_t len;
+    int32_t i, n;
+    UBool noRegion = TRUE;
+
+    lt = ultag_parse(langtag, -1, parsedLength, status);
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
+    /* language */
+    subtag = ultag_getExtlangSize(lt) > 0 ? ultag_getExtlang(lt, 0) : ultag_getLanguage(lt);
+    if (uprv_compareInvCharsAsAscii(subtag, LANG_UND) != 0) {
+        len = (int32_t)uprv_strlen(subtag);
+        if (len > 0) {
+            if (reslen < localeIDCapacity) {
+                uprv_memcpy(localeID, subtag, uprv_min(len, localeIDCapacity - reslen));
+            }
+            reslen += len;
+        }
+    }
+
+    /* script */
+    subtag = ultag_getScript(lt);
+    len = (int32_t)uprv_strlen(subtag);
+    if (len > 0) {
+        if (reslen < localeIDCapacity) {
+            *(localeID + reslen) = LOCALE_SEP;
+        }
+        reslen++;
+
+        /* write out the script in title case */
+        p = subtag;
+        while (*p) {
+            if (reslen < localeIDCapacity) {
+                if (p == subtag) {
+                    *(localeID + reslen) = uprv_toupper(*p);
+                } else {
+                    *(localeID + reslen) = *p;
+                }
+            }
+            reslen++;
+            p++;
+        }
+    }
+
+    /* region */
+    subtag = ultag_getRegion(lt);
+    len = (int32_t)uprv_strlen(subtag);
+    if (len > 0) {
+        if (reslen < localeIDCapacity) {
+            *(localeID + reslen) = LOCALE_SEP;
+        }
+        reslen++;
+        /* write out the retion in upper case */
+        p = subtag;
+        while (*p) {
+            if (reslen < localeIDCapacity) {
+                *(localeID + reslen) = uprv_toupper(*p);
+            }
+            reslen++;
+            p++;
+        }
+        noRegion = FALSE;
+    }
+
+    /* variants */
+    n = ultag_getVariantsSize(lt);
+    if (n > 0) {
+        if (noRegion) {
+            if (reslen < localeIDCapacity) {
+                *(localeID + reslen) = LOCALE_SEP;
+            }
+            reslen++;
+        }
+
+        for (i = 0; i < n; i++) {
+            subtag = ultag_getVariant(lt, i);
+            if (reslen < localeIDCapacity) {
+                *(localeID + reslen) = LOCALE_SEP;
+            }
+            reslen++;
+            /* write out the variant in upper case */
+            p = subtag;
+            while (*p) {
+                if (reslen < localeIDCapacity) {
+                    *(localeID + reslen) = uprv_toupper(*p);
+                }
+                reslen++;
+                p++;
+            }
+        }
+    }
+
+    /* keywords */
+    n = ultag_getExtensionsSize(lt);
+    subtag = ultag_getPrivateUse(lt);
+    if (n > 0 || uprv_strlen(subtag) > 0) {
+        if (reslen == 0 && n > 0) {
+            /* need a language */
+            if (reslen < localeIDCapacity) {
+                uprv_memcpy(localeID + reslen, LANG_UND, uprv_min(LANG_UND_LEN, localeIDCapacity - reslen));
+            }
+            reslen += LANG_UND_LEN;
+        }
+        len = _appendKeywords(lt, localeID + reslen, localeIDCapacity - reslen, status);
+        reslen += len;
+    }
+
+    ultag_close(lt);
+    return u_terminateChars(localeID, localeIDCapacity, reslen, status);
+}
+
+
index 869f296..f54e216 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/umapfile.c b/source/common/umapfile.c
new file mode 100644 (file)
index 0000000..d5d2033
--- /dev/null
@@ -0,0 +1,466 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2013, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************/
+
+
+/*----------------------------------------------------------------------------
+ *
+ *       Memory mapped file wrappers for use by the ICU Data Implementation
+ *       All of the platform-specific implementation for mapping data files
+ *         is here.  The rest of the ICU Data implementation uses only the
+ *         wrapper functions.
+ *
+ *----------------------------------------------------------------------------*/
+/* Defines _XOPEN_SOURCE for access to POSIX functions.
+ * Must be before any other #includes. */
+#include "uposixdefs.h"
+
+#include "unicode/putil.h"
+#include "udatamem.h"
+#include "umapfile.h"
+
+/* memory-mapping base definitions ------------------------------------------ */
+
+#if MAP_IMPLEMENTATION==MAP_WIN32
+#   define WIN32_LEAN_AND_MEAN
+#   define VC_EXTRALEAN
+#   define NOUSER
+#   define NOSERVICE
+#   define NOIME
+#   define NOMCX
+#   include <windows.h>
+#   include "cmemory.h"
+
+    typedef HANDLE MemoryMap;
+
+#   define IS_MAP(map) ((map)!=NULL)
+#elif MAP_IMPLEMENTATION==MAP_POSIX || MAP_IMPLEMENTATION==MAP_390DLL
+    typedef size_t MemoryMap;
+
+#   define IS_MAP(map) ((map)!=0)
+
+#   include <unistd.h>
+#   include <sys/mman.h>
+#   include <sys/stat.h>
+#   include <fcntl.h>
+
+#   ifndef MAP_FAILED
+#       define MAP_FAILED ((void*)-1)
+#   endif
+
+#   if MAP_IMPLEMENTATION==MAP_390DLL
+        /*   No memory mapping for 390 batch mode.  Fake it using dll loading.  */
+#       include <dll.h>
+#       include "cstring.h"
+#       include "cmemory.h"
+#       include "unicode/udata.h"
+#       define LIB_PREFIX "lib"
+#       define LIB_SUFFIX ".dll"
+        /* This is inconvienient until we figure out what to do with U_ICUDATA_NAME in utypes.h */
+#       define U_ICUDATA_ENTRY_NAME "icudt" U_ICU_VERSION_SHORT U_LIB_SUFFIX_C_NAME_STRING "_dat"
+#   endif
+#elif MAP_IMPLEMENTATION==MAP_STDIO
+#   include <stdio.h>
+#   include "cmemory.h"
+
+    typedef void *MemoryMap;
+
+#   define IS_MAP(map) ((map)!=NULL)
+#endif
+
+/*----------------------------------------------------------------------------*
+ *                                                                            *
+ *   Memory Mapped File support.  Platform dependent implementation of        *
+ *                           functions used by the rest of the implementation.*
+ *                                                                            *
+ *----------------------------------------------------------------------------*/
+#if MAP_IMPLEMENTATION==MAP_NONE
+    U_CFUNC UBool
+    uprv_mapFile(UDataMemory *pData, const char *path) {
+        UDataMemory_init(pData); /* Clear the output struct. */
+        return FALSE;            /* no file access */
+    }
+
+    U_CFUNC void uprv_unmapFile(UDataMemory *pData) {
+        /* nothing to do */
+    }
+#elif MAP_IMPLEMENTATION==MAP_WIN32
+    U_CFUNC UBool
+    uprv_mapFile(
+         UDataMemory *pData,    /* Fill in with info on the result doing the mapping. */
+                                /*   Output only; any original contents are cleared.  */
+         const char *path       /* File path to be opened/mapped                      */
+         )
+    {
+        HANDLE map;
+        HANDLE file;
+        SECURITY_ATTRIBUTES mappingAttributes;
+        SECURITY_ATTRIBUTES *mappingAttributesPtr = NULL;
+        SECURITY_DESCRIPTOR securityDesc;
+
+        UDataMemory_init(pData); /* Clear the output struct.        */
+
+        /* open the input file */
+        file=CreateFileA(path, GENERIC_READ, FILE_SHARE_READ, NULL,
+            OPEN_EXISTING,
+            FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS, NULL);
+        if(file==INVALID_HANDLE_VALUE) {
+            return FALSE;
+        }
+
+        /* Declare and initialize a security descriptor.
+           This is required for multiuser systems on Windows 2000 SP4 and beyond */
+        if (InitializeSecurityDescriptor(&securityDesc, SECURITY_DESCRIPTOR_REVISION)) {
+            /* give the security descriptor a Null Dacl done using the  "TRUE, (PACL)NULL" here        */
+            if (SetSecurityDescriptorDacl(&securityDesc, TRUE, (PACL)NULL, FALSE)) {
+                /* Make the security attributes point to the security descriptor */
+                uprv_memset(&mappingAttributes, 0, sizeof(mappingAttributes));
+                mappingAttributes.nLength = sizeof(mappingAttributes);
+                mappingAttributes.lpSecurityDescriptor = &securityDesc;
+                mappingAttributes.bInheritHandle = FALSE; /* object uninheritable */
+                mappingAttributesPtr = &mappingAttributes;
+            }
+        }
+        /* else creating security descriptors can fail when we are on Windows 98,
+           and mappingAttributesPtr == NULL for that case. */
+
+        /* create an unnamed Windows file-mapping object for the specified file */
+        map=CreateFileMapping(file, mappingAttributesPtr, PAGE_READONLY, 0, 0, NULL);
+        CloseHandle(file);
+        if(map==NULL) {
+            return FALSE;
+        }
+
+        /* map a view of the file into our address space */
+        pData->pHeader=(const DataHeader *)MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
+        if(pData->pHeader==NULL) {
+            CloseHandle(map);
+            return FALSE;
+        }
+        pData->map=map;
+        return TRUE;
+    }
+
+    U_CFUNC void
+    uprv_unmapFile(UDataMemory *pData) {
+        if(pData!=NULL && pData->map!=NULL) {
+            UnmapViewOfFile(pData->pHeader);
+            CloseHandle(pData->map);
+            pData->pHeader=NULL;
+            pData->map=NULL;
+        }
+    }
+
+
+
+#elif MAP_IMPLEMENTATION==MAP_POSIX
+    U_CFUNC UBool
+    uprv_mapFile(UDataMemory *pData, const char *path) {
+        int fd;
+        int length;
+        struct stat mystat;
+        void *data;
+
+        UDataMemory_init(pData); /* Clear the output struct.        */
+
+        /* determine the length of the file */
+        if(stat(path, &mystat)!=0 || mystat.st_size<=0) {
+            return FALSE;
+        }
+        length=mystat.st_size;
+
+        /* open the file */
+        fd=open(path, O_RDONLY);
+        if(fd==-1) {
+            return FALSE;
+        }
+
+        /* get a view of the mapping */
+#if U_PLATFORM != U_PF_HPUX
+        data=mmap(0, length, PROT_READ, MAP_SHARED,  fd, 0);
+#else
+        data=mmap(0, length, PROT_READ, MAP_PRIVATE, fd, 0);
+#endif
+        close(fd); /* no longer needed */
+        if(data==MAP_FAILED) {
+            return FALSE;
+        }
+
+        pData->map = (char *)data + length;
+        pData->pHeader=(const DataHeader *)data;
+        pData->mapAddr = data;
+#if U_PLATFORM == U_PF_IPHONE
+        posix_madvise(data, length, POSIX_MADV_RANDOM);
+#endif
+        return TRUE;
+    }
+
+    U_CFUNC void
+    uprv_unmapFile(UDataMemory *pData) {
+        if(pData!=NULL && pData->map!=NULL) {
+            size_t dataLen = (char *)pData->map - (char *)pData->mapAddr;
+            if(munmap(pData->mapAddr, dataLen)==-1) {
+            }
+            pData->pHeader=NULL;
+            pData->map=0;
+            pData->mapAddr=NULL;
+        }
+    }
+
+
+
+#elif MAP_IMPLEMENTATION==MAP_STDIO
+    /* copy of the filestrm.c/T_FileStream_size() implementation */
+    static int32_t
+    umap_fsize(FILE *f) {
+        int32_t savedPos = ftell(f);
+        int32_t size = 0;
+
+        /*Changes by Bertrand A. D. doesn't affect the current position
+        goes to the end of the file before ftell*/
+        fseek(f, 0, SEEK_END);
+        size = (int32_t)ftell(f);
+        fseek(f, savedPos, SEEK_SET);
+        return size;
+    }
+
+    U_CFUNC UBool
+    uprv_mapFile(UDataMemory *pData, const char *path) {
+        FILE *file;
+        int32_t fileLength;
+        void *p;
+
+        UDataMemory_init(pData); /* Clear the output struct.        */
+        /* open the input file */
+        file=fopen(path, "rb");
+        if(file==NULL) {
+            return FALSE;
+        }
+
+        /* get the file length */
+        fileLength=umap_fsize(file);
+        if(ferror(file) || fileLength<=20) {
+            fclose(file);
+            return FALSE;
+        }
+
+        /* allocate the memory to hold the file data */
+        p=uprv_malloc(fileLength);
+        if(p==NULL) {
+            fclose(file);
+            return FALSE;
+        }
+
+        /* read the file */
+        if(fileLength!=fread(p, 1, fileLength, file)) {
+            uprv_free(p);
+            fclose(file);
+            return FALSE;
+        }
+
+        fclose(file);
+        pData->map=p;
+        pData->pHeader=(const DataHeader *)p;
+        pData->mapAddr=p;
+        return TRUE;
+    }
+
+    U_CFUNC void
+    uprv_unmapFile(UDataMemory *pData) {
+        if(pData!=NULL && pData->map!=NULL) {
+            uprv_free(pData->map);
+            pData->map     = NULL;
+            pData->mapAddr = NULL;
+            pData->pHeader = NULL;
+        }
+    }
+
+
+#elif MAP_IMPLEMENTATION==MAP_390DLL
+    /*  390 specific Library Loading.
+     *  This is the only platform left that dynamically loads an ICU Data Library.
+     *  All other platforms use .data files when dynamic loading is required, but
+     *  this turn out to be awkward to support in 390 batch mode.
+     *
+     *  The idea here is to hide the fact that 390 is using dll loading from the
+     *   rest of ICU, and make it look like there is file loading happening.
+     *
+     */
+
+    static char *strcpy_returnEnd(char *dest, const char *src)
+    {
+        while((*dest=*src)!=0) {
+            ++dest;
+            ++src;
+        }
+        return dest;
+    }
+    
+    /*------------------------------------------------------------------------------
+     *                                                                              
+     *  computeDirPath   given a user-supplied path of an item to be opened,             
+     *                         compute and return 
+     *                            - the full directory path to be used 
+     *                              when opening the file.
+     *                            - Pointer to null at end of above returned path    
+     *
+     *                       Parameters:
+     *                          path:        input path.  Buffer is not altered.
+     *                          pathBuffer:  Output buffer.  Any contents are overwritten.
+     *
+     *                       Returns:
+     *                          Pointer to null termination in returned pathBuffer.
+     *
+     *                    TODO:  This works the way ICU historically has, but the
+     *                           whole data fallback search path is so complicated that
+     *                           proabably almost no one will ever really understand it,
+     *                           the potential for confusion is large.  (It's not just 
+     *                           this one function, but the whole scheme.)
+     *                            
+     *------------------------------------------------------------------------------*/
+    static char *uprv_computeDirPath(const char *path, char *pathBuffer)
+    {
+        char   *finalSlash;       /* Ptr to last dir separator in input path, or null if none. */
+        int32_t pathLen;          /* Length of the returned directory path                     */
+        
+        finalSlash = 0;
+        if (path != 0) {
+            finalSlash = uprv_strrchr(path, U_FILE_SEP_CHAR);
+        }
+        
+        *pathBuffer = 0;
+        if (finalSlash == 0) {
+        /* No user-supplied path.  
+            * Copy the ICU_DATA path to the path buffer and return that*/
+            const char *icuDataDir;
+            icuDataDir=u_getDataDirectory();
+            if(icuDataDir!=NULL && *icuDataDir!=0) {
+                return strcpy_returnEnd(pathBuffer, icuDataDir);
+            } else {
+                /* there is no icuDataDir either.  Just return the empty pathBuffer. */
+                return pathBuffer;
+            }
+        } 
+        
+        /* User supplied path did contain a directory portion.
+        * Copy it to the output path buffer */
+        pathLen = (int32_t)(finalSlash - path + 1);
+        uprv_memcpy(pathBuffer, path, pathLen);
+        *(pathBuffer+pathLen) = 0;
+        return pathBuffer+pathLen;
+    }
+    
+
+#   define DATA_TYPE "dat"
+
+    U_CFUNC UBool uprv_mapFile(UDataMemory *pData, const char *path) {
+        const char *inBasename;
+        char *basename;
+        char pathBuffer[1024];
+        const DataHeader *pHeader;
+        dllhandle *handle;
+        void *val=0;
+
+        inBasename=uprv_strrchr(path, U_FILE_SEP_CHAR);
+        if(inBasename==NULL) {
+            inBasename = path;
+        } else {
+            inBasename++;
+        }
+        basename=uprv_computeDirPath(path, pathBuffer);
+        if(uprv_strcmp(inBasename, U_ICUDATA_NAME".dat") != 0) {
+            /* must mmap file... for build */
+            int fd;
+            int length;
+            struct stat mystat;
+            void *data;
+            UDataMemory_init(pData); /* Clear the output struct. */
+
+            /* determine the length of the file */
+            if(stat(path, &mystat)!=0 || mystat.st_size<=0) {
+                return FALSE;
+            }
+            length=mystat.st_size;
+
+            /* open the file */
+            fd=open(path, O_RDONLY);
+            if(fd==-1) {
+                return FALSE;
+            }
+
+            /* get a view of the mapping */
+            data=mmap(0, length, PROT_READ, MAP_PRIVATE, fd, 0);
+            close(fd); /* no longer needed */
+            if(data==MAP_FAILED) {
+                return FALSE;
+            }
+            pData->map = (char *)data + length;
+            pData->pHeader=(const DataHeader *)data;
+            pData->mapAddr = data;
+            return TRUE;
+        }
+
+#       ifdef OS390BATCH
+            /* ### hack: we still need to get u_getDataDirectory() fixed
+            for OS/390 (batch mode - always return "//"? )
+            and this here straightened out with LIB_PREFIX and LIB_SUFFIX (both empty?!)
+            This is probably due to the strange file system on OS/390.  It's more like
+            a database with short entry names than a typical file system. */
+            /* U_ICUDATA_NAME should always have the correct name */
+            /* BUT FOR BATCH MODE IT IS AN EXCEPTION BECAUSE */
+            /* THE FIRST THREE LETTERS ARE PREASSIGNED TO THE */
+            /* PROJECT!!!!! */
+            uprv_strcpy(pathBuffer, "IXMI" U_ICU_VERSION_SHORT "DA");
+#       else
+            /* set up the library name */
+            uprv_strcpy(basename, LIB_PREFIX U_LIBICUDATA_NAME U_ICU_VERSION_SHORT LIB_SUFFIX);
+#       endif
+
+#       ifdef UDATA_DEBUG
+             fprintf(stderr, "dllload: %s ", pathBuffer);
+#       endif
+
+        handle=dllload(pathBuffer);
+
+#       ifdef UDATA_DEBUG
+               fprintf(stderr, " -> %08X\n", handle );
+#       endif
+
+        if(handle != NULL) {
+               /* we have a data DLL - what kind of lookup do we need here? */
+               /* try to find the Table of Contents */
+               UDataMemory_init(pData); /* Clear the output struct.        */
+               val=dllqueryvar((dllhandle*)handle, U_ICUDATA_ENTRY_NAME);
+               if(val == 0) {
+                    /* failed... so keep looking */
+                    return FALSE;
+               }
+#              ifdef UDATA_DEBUG
+                    fprintf(stderr, "dllqueryvar(%08X, %s) -> %08X\n", handle, U_ICUDATA_ENTRY_NAME, val);
+#              endif
+
+               pData->pHeader=(const DataHeader *)val;
+               return TRUE;
+         } else {
+               return FALSE; /* no handle */
+         }
+    }
+
+    U_CFUNC void uprv_unmapFile(UDataMemory *pData) {
+        if(pData!=NULL && pData->map!=NULL) {
+            uprv_free(pData->map);
+            pData->map     = NULL;
+            pData->mapAddr = NULL;
+            pData->pHeader = NULL;
+        }   
+    }
+
+#else
+#   error MAP_IMPLEMENTATION is set incorrectly
+#endif
index 24e476b..70a6cc5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/common/umath.c b/source/common/umath.c
new file mode 100644 (file)
index 0000000..78f1ca0
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1997-2006, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+* This file contains platform independent math.
+*/
+
+#include "putilimp.h"
+
+U_CAPI int32_t U_EXPORT2
+uprv_max(int32_t x, int32_t y)
+{
+    return (x > y ? x : y);
+}
+
+U_CAPI int32_t U_EXPORT2
+uprv_min(int32_t x, int32_t y)
+{
+    return (x > y ? y : x);
+}
+
index 77c1778..0532838 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 8e1f6e9..b52010f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -86,9 +86,7 @@ U_NAMESPACE_END
 //                Original plan was to use gcc atomics for MinGW, but they
 //                aren't supported, so we fold MinGW into this path.
 
-#ifndef WIN32_LEAN_AND_MEAN
 # define WIN32_LEAN_AND_MEAN
-#endif
 # define VC_EXTRALEAN
 # define NOUSER
 # define NOSERVICE
@@ -333,9 +331,7 @@ U_NAMESPACE_END
  *         win32 APIs for Critical Sections.
  */
 
-#ifndef WIN32_LEAN_AND_MEAN
 # define WIN32_LEAN_AND_MEAN
-#endif
 # define VC_EXTRALEAN
 # define NOUSER
 # define NOSERVICE
index 6ad349c..9da2045 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  unames.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8512c2f..2ae3345 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  appendable.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -19,7 +19,7 @@
 
 /**
  * \file
- * \brief C++ API: Appendable class: Sink for Unicode code points and 16-bit code units (char16_ts).
+ * \brief C++ API: Appendable class: Sink for Unicode code points and 16-bit code units (UChars).
  */
 
 #include "unicode/utypes.h"
@@ -34,10 +34,10 @@ class UnicodeString;
  * Combines elements of Java Appendable and ICU4C ByteSink.
  *
  * This class can be used in APIs where it does not matter whether the actual destination is
- * a UnicodeString, a char16_t[] array, a UnicodeSet, or any other object
+ * a UnicodeString, a UChar[] array, a UnicodeSet, or any other object
  * that receives and processes characters and/or strings.
  *
- * Implementation classes must implement at least appendCodeUnit(char16_t).
+ * Implementation classes must implement at least appendCodeUnit(UChar).
  * The base class provides default implementations for the other methods.
  *
  * The methods do not take UErrorCode parameters.
@@ -62,11 +62,11 @@ public:
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendCodeUnit(char16_t c) = 0;
+    virtual UBool appendCodeUnit(UChar c) = 0;
 
     /**
      * Appends a code point.
-     * The default implementation calls appendCodeUnit(char16_t) once or twice.
+     * The default implementation calls appendCodeUnit(UChar) once or twice.
      * @param c code point 0..0x10ffff
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
@@ -75,20 +75,20 @@ public:
 
     /**
      * Appends a string.
-     * The default implementation calls appendCodeUnit(char16_t) for each code unit.
+     * The default implementation calls appendCodeUnit(UChar) for each code unit.
      * @param s string, must not be NULL if length!=0
      * @param length string length, or -1 if NUL-terminated
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendString(const char16_t *s, int32_t length);
+    virtual UBool appendString(const UChar *s, int32_t length);
 
     /**
      * Tells the object that the caller is going to append roughly
-     * appendCapacity char16_ts. A subclass might use this to pre-allocate
+     * appendCapacity UChars. A subclass might use this to pre-allocate
      * a larger buffer if necessary.
      * The default implementation does nothing. (It always returns TRUE.)
-     * @param appendCapacity estimated number of char16_ts that will be appended
+     * @param appendCapacity estimated number of UChars that will be appended
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
@@ -102,19 +102,19 @@ public:
      * The returned buffer is only valid until the next operation
      * on this Appendable.
      *
-     * After writing at most *resultCapacity char16_ts, call appendString() with the
-     * pointer returned from this function and the number of char16_ts written.
-     * Many appendString() implementations will avoid copying char16_ts if this function
+     * After writing at most *resultCapacity UChars, call appendString() with the
+     * pointer returned from this function and the number of UChars written.
+     * Many appendString() implementations will avoid copying UChars if this function
      * returned an internal buffer.
      *
      * Partial usage example:
      * \code
      *  int32_t capacity;
-     *  char16_t* buffer = app.getAppendBuffer(..., &capacity);
-     *  ... Write n char16_ts into buffer, with n <= capacity.
+     *  UChar* buffer = app.getAppendBuffer(..., &capacity);
+     *  ... Write n UChars into buffer, with n <= capacity.
      *  app.appendString(buffer, n);
      * \endcode
-     * In many implementations, that call to append will avoid copying char16_ts.
+     * In many implementations, that call to append will avoid copying UChars.
      *
      * If the Appendable allocates or reallocates an internal buffer, it should use
      * the desiredCapacityHint if appropriate.
@@ -138,9 +138,9 @@ public:
      * @return a buffer with *resultCapacity>=minCapacity
      * @stable ICU 4.8
      */
-    virtual char16_t *getAppendBuffer(int32_t minCapacity,
+    virtual UChar *getAppendBuffer(int32_t minCapacity,
                                    int32_t desiredCapacityHint,
-                                   char16_t *scratch, int32_t scratchCapacity,
+                                   UChar *scratch, int32_t scratchCapacity,
                                    int32_t *resultCapacity);
 };
 
@@ -171,7 +171,7 @@ public:
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendCodeUnit(char16_t c);
+    virtual UBool appendCodeUnit(UChar c);
 
     /**
      * Appends a code point to the string.
@@ -188,12 +188,12 @@ public:
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
-    virtual UBool appendString(const char16_t *s, int32_t length);
+    virtual UBool appendString(const UChar *s, int32_t length);
 
     /**
      * Tells the UnicodeString that the caller is going to append roughly
-     * appendCapacity char16_ts.
-     * @param appendCapacity estimated number of char16_ts that will be appended
+     * appendCapacity UChars.
+     * @param appendCapacity estimated number of UChars that will be appended
      * @return TRUE if the operation succeeded
      * @stable ICU 4.8
      */
@@ -220,9 +220,9 @@ public:
      * @return a buffer with *resultCapacity>=minCapacity
      * @stable ICU 4.8
      */
-    virtual char16_t *getAppendBuffer(int32_t minCapacity,
+    virtual UChar *getAppendBuffer(int32_t minCapacity,
                                    int32_t desiredCapacityHint,
-                                   char16_t *scratch, int32_t scratchCapacity,
+                                   UChar *scratch, int32_t scratchCapacity,
                                    int32_t *resultCapacity);
 
 private:
index b1e4cc6..88b39c6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index a31992e..1556227 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2012, International Business Machines
 // Corporation and others. All Rights Reserved.
@@ -222,6 +222,8 @@ private:
   CheckedArrayByteSink &operator=(const CheckedArrayByteSink &); ///< assignment operator not implemented
 };
 
+#if U_HAVE_STD_STRING
+
 /** 
  * Implementation of ByteSink that writes to a "string".
  * The StringClass is usually instantiated with a std::string.
@@ -250,6 +252,8 @@ class StringByteSink : public ByteSink {
   StringByteSink &operator=(const StringByteSink &); ///< assignment operator not implemented
 };
 
+#endif
+
 U_NAMESPACE_END
 
 #endif  // __BYTESTREAM_H__
index c57b8cc..4a30ce1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestrie.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a8412d3..fe96887 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytestriebuilder.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -127,14 +127,14 @@ private:
     void buildBytes(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
 
     virtual int32_t getElementStringLength(int32_t i) const;
-    virtual char16_t getElementUnit(int32_t i, int32_t byteIndex) const;
+    virtual UChar getElementUnit(int32_t i, int32_t byteIndex) const;
     virtual int32_t getElementValue(int32_t i) const;
 
     virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t byteIndex) const;
 
     virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t byteIndex) const;
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const;
-    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const;
+    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, UChar byte) const;
 
     virtual UBool matchNodesCanHaveValues() const { return FALSE; }
 
index 5a882fb..7c1bf6a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -187,7 +187,7 @@ private:
     UnicodeString *getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status); //private String[] getEquivalents(String segment)
 
     //Set getEquivalents2(String segment);
-    Hashtable *getEquivalents2(Hashtable *fillinResult, const char16_t *segment, int32_t segLen, UErrorCode &status);
+    Hashtable *getEquivalents2(Hashtable *fillinResult, const UChar *segment, int32_t segLen, UErrorCode &status);
     //Hashtable *getEquivalents2(const UnicodeString &segment, int32_t segLen, UErrorCode &status);
 
     /**
@@ -196,7 +196,7 @@ private:
      * If so, take the remainder, and return the equivalents
      */
     //Set extract(int comp, String segment, int segmentPos, StringBuffer buffer);
-    Hashtable *extract(Hashtable *fillinResult, UChar32 comp, const char16_t *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
+    Hashtable *extract(Hashtable *fillinResult, UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
     //Hashtable *extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
 
     void cleanPieces();
index 7a4e1a2..07d1ca3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************
@@ -78,7 +78,7 @@ U_NAMESPACE_BEGIN
  * }
  *
  * void function1(ForwardCharacterIterator &it) {
- *     char16_t c;
+ *     UChar c;
  *     while((c=it.nextPostInc())!=ForwardCharacterIterator::DONE) {
  *         // use c
  *      }
@@ -149,7 +149,7 @@ public:
      * @return the current code unit.
      * @stable ICU 2.0
      */
-    virtual char16_t         nextPostInc(void) = 0;
+    virtual UChar         nextPostInc(void) = 0;
     
     /**
      * Gets the current code point for returning and advances to the next code point
@@ -230,7 +230,7 @@ protected:
  * showing a way to convert simple for() loops:
  * \code
  * void forward2(CharacterIterator &it) {
- *     char16_t c;
+ *     UChar c;
  *     for(c=it.firstPostInc(); c!=CharacterIterator::DONE; c=it.nextPostInc()) {
  *          // use c
  *      }
@@ -249,7 +249,7 @@ protected:
  * Backward iteration with a more traditional for() loop:
  * \code
  * void backward2(CharacterIterator &it) {
- *     char16_t c;
+ *     UChar c;
  *     for(c=it.last(); c!=CharacterIterator::DONE; c=it.previous()) {
  *         // use c
  *      }
@@ -266,7 +266,7 @@ protected:
  *      // get the position
  *      int32_t pos=it.getIndex();
  *      // get the previous code unit
- *      char16_t u=it.previous();
+ *      UChar u=it.previous();
  *      // move back one more code unit
  *      it.move(-1, CharacterIterator::kCurrent);
  *      // set the position back to where it was
@@ -283,7 +283,7 @@ protected:
  * Function processing characters, in this example simple output
  * <pre>
  * \code
- *  void processChar( char16_t c )
+ *  void processChar( UChar c )
  *  {
  *      cout << " " << c;
  *  }
@@ -294,7 +294,7 @@ protected:
  * \code
  *  void traverseForward(CharacterIterator& iter)
  *  {
- *      for(char16_t c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
+ *      for(UChar c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
  *          processChar(c);
  *      }
  *  }
@@ -305,7 +305,7 @@ protected:
  * \code
  *  void traverseBackward(CharacterIterator& iter)
  *  {
- *      for(char16_t c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
+ *      for(UChar c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
  *          processChar(c);
  *      }
  *  }
@@ -317,7 +317,7 @@ protected:
  * \code
  * void traverseOut(CharacterIterator& iter, int32_t pos)
  * {
- *      char16_t c;
+ *      UChar c;
  *      for (c = iter.setIndex(pos);
  *      c != CharacterIterator.DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
  *          c = iter.next()) {}
@@ -386,7 +386,7 @@ public:
      * @return the first code unit in its iteration range.
      * @stable ICU 2.0
      */
-    virtual char16_t         first(void) = 0;
+    virtual UChar         first(void) = 0;
 
     /**
      * Sets the iterator to refer to the first code unit in its
@@ -396,7 +396,7 @@ public:
      * @return the first code unit in its iteration range.
      * @stable ICU 2.0
      */
-    virtual char16_t         firstPostInc(void);
+    virtual UChar         firstPostInc(void);
 
     /**
      * Sets the iterator to refer to the first code point in its
@@ -435,7 +435,7 @@ public:
      * @return the last code unit.
      * @stable ICU 2.0
      */
-    virtual char16_t         last(void) = 0;
+    virtual UChar         last(void) = 0;
         
     /**
      * Sets the iterator to refer to the last code point in its
@@ -463,7 +463,7 @@ public:
      * @return the "position"-th code unit.
      * @stable ICU 2.0
      */
-    virtual char16_t         setIndex(int32_t position) = 0;
+    virtual UChar         setIndex(int32_t position) = 0;
 
     /**
      * Sets the iterator to refer to the beginning of the code point
@@ -483,7 +483,7 @@ public:
      * @return the current code unit. 
      * @stable ICU 2.0
      */
-    virtual char16_t         current(void) const = 0;
+    virtual UChar         current(void) const = 0;
         
     /**
      * Returns the code point the iterator currently refers to.  
@@ -499,7 +499,7 @@ public:
      * @return the next code unit.
      * @stable ICU 2.0
      */
-    virtual char16_t         next(void) = 0;
+    virtual UChar         next(void) = 0;
         
     /**
      * Advances to the next code point in the iteration range
@@ -520,7 +520,7 @@ public:
      * @return the previous code unit.
      * @stable ICU 2.0
      */
-    virtual char16_t         previous(void) = 0;
+    virtual UChar         previous(void) = 0;
 
     /**
      * Advances to the previous code point in the iteration range
@@ -607,10 +607,6 @@ public:
      * @return the new position
      * @stable ICU 2.0
      */
-#ifdef move32
-     // One of the system headers right now is sometimes defining a conflicting macro we don't use
-#undef move32
-#endif
     virtual int32_t      move32(int32_t delta, EOrigin origin) = 0;
 
     /**
index a2c3d7d..590b6f3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 698e2ae..7fc1084 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
  *     <td>C API</td>
  *   </tr>
  *   <tr>
- *     <td>Codepage Detection</td>
- *     <td>ucsdet.h</td>
- *     <td>C API</td>
- *   </tr>
- *   <tr>
  *     <td>Unicode Text Compression</td>
  *     <td>ucnv.h<br/>(encoding name "SCSU" or "BOCU-1")</td>
  *     <td>C API</td>
index 10b566a..d45614a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f63dd16..9c15b9a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 81cad20..13f43e1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  errorcode.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 51bb651..2611511 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 1cb202e..99e7c28 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 1a894a7..cffa6f3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index f08658e..23a1d7c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  idna.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 180fbcb..f2c8988 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformatter.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -157,8 +157,6 @@ class U_COMMON_API ListFormatter : public UObject{
   private:
     static void initializeHash(UErrorCode& errorCode);
     static const ListFormatInternal* getListFormatInternal(const Locale& locale, const char *style, UErrorCode& errorCode);
-    struct ListPatternsSink;
-    static ListFormatInternal* loadListFormatInternal(const Locale& locale, const char* style, UErrorCode& errorCode);
 
     ListFormatter();
 
index 3ab8201..9ac5de5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  localpointer.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -174,9 +174,9 @@ private:
  * \code
  * LocalPointer<UnicodeString> s(new UnicodeString((UChar32)0x50005));
  * int32_t length=s->length();  // 2
- * char16_t lead=s->charAt(0);  // 0xd900
+ * UChar lead=s->charAt(0);  // 0xd900
  * if(some condition) { return; }  // no need to explicitly delete the pointer
- * s.adoptInstead(new UnicodeString((char16_t)0xfffc));
+ * s.adoptInstead(new UnicodeString((UChar)0xfffc));
  * length=s->length();  // 1
  * // no need to explicitly delete the pointer
  * \endcode
@@ -323,10 +323,10 @@ public:
  * Usage example:
  * \code
  * LocalArray<UnicodeString> a(new UnicodeString[2]);
- * a[0].append((char16_t)0x61);
+ * a[0].append((UChar)0x61);
  * if(some condition) { return; }  // no need to explicitly delete the array
  * a.adoptInstead(new UnicodeString[4]);
- * a[3].append((char16_t)0x62).append((char16_t)0x63).reverse();
+ * a[3].append((UChar)0x62).append((UChar)0x63).reverse();
  * // no need to explicitly delete the array
  * \endcode
  *
index 7f22782..b8c7a0c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -20,7 +20,6 @@
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/locid.h"
-#include "unicode/strenum.h"
 #include "unicode/uscript.h"
 #include "unicode/uldnames.h"
 #include "unicode/udisplaycontext.h"
index a37c4a3..a8ddb7f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 
 #include "unicode/utypes.h"
 #include "unicode/uobject.h"
+#include "unicode/unistr.h"
 #include "unicode/putil.h"
 #include "unicode/uloc.h"
+#include "unicode/strenum.h"
 
 /**
  * \file
@@ -46,9 +48,6 @@ U_NAMESPACE_BEGIN
 // Forward Declarations
 void U_CALLCONV locale_available_init(); /**< @internal */
 
-class StringEnumeration;
-class UnicodeString;
-
 /**
  * A <code>Locale</code> object represents a specific geographical, political,
  * or cultural region. An operation that requires a <code>Locale</code> to perform
index f28adaf..8c1115e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  messagepattern.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index d326da9..6a7668b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  normalizer2.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -282,7 +282,7 @@ public:
      *
      * When used on a standard NFC Normalizer2 instance,
      * it returns the Decomposition_Mapping only if the Decomposition_Type (dt) is Canonical (Can);
-     * in this case, the result contains either one or two code points (=1..4 char16_ts).
+     * in this case, the result contains either one or two code points (=1..4 UChars).
      *
      * This function is independent of the mode of the Normalizer2.
      * The default implementation returns FALSE.
index 0141058..d529aa2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************
@@ -168,7 +168,7 @@ public:
    * @param mode  The normalization mode.
    * @deprecated ICU 56 Use Normalizer2 instead.
    */
-  Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mode);
+  Normalizer(const UChar* str, int32_t length, UNormalizationMode mode);
 
   /**
    * Creates a new <code>Normalizer</code> object for iterating over the
@@ -704,7 +704,7 @@ public:
    * @param status a UErrorCode
    * @deprecated ICU 56 Use Normalizer2 instead.
    */
-  void setText(ConstChar16Ptr newText,
+  void setText(const UChar* newText,
                     int32_t length,
             UErrorCode &status);
   /**
@@ -796,8 +796,8 @@ Normalizer::compare(const UnicodeString &s1, const UnicodeString &s2,
                     uint32_t options,
                     UErrorCode &errorCode) {
   // all argument checking is done in unorm_compare
-  return unorm_compare(toUCharPtr(s1.getBuffer()), s1.length(),
-                       toUCharPtr(s2.getBuffer()), s2.length(),
+  return unorm_compare(s1.getBuffer(), s1.length(),
+                       s2.getBuffer(), s2.length(),
                        options,
                        &errorCode);
 }
index fc1e3f4..71aef40 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index bbebca7..1f74ebd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved.
index 057182d..b42bef8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 #   define U_PLATFORM U_PF_ANDROID
     /* Android wchar_t support depends on the API level. */
 #   include <android/api-level.h>
-#elif defined(__pnacl__) || defined(__native_client__)
+#elif defined(__native_client__)
 #   define U_PLATFORM U_PF_BROWSER_NATIVE_CLIENT
 #elif defined(linux) || defined(__linux__) || defined(__linux)
 #   define U_PLATFORM U_PF_LINUX
 #endif
 
 /**
- * \def U_PLATFORM_HAS_WINUWP_API
- * Defines whether target is intended for Universal Windows Platform API
- * Set to 1 for Windows10 Release Solution Configuration
- * @internal
- */
-#ifdef U_PLATFORM_HAS_WINUWP_API
-    /* Use the predefined value. */
-#else
-#   define U_PLATFORM_HAS_WINUWP_API 0
-#endif
-
-/**
  * \def U_PLATFORM_IMPLEMENTS_POSIX
  * Defines whether the platform implements (most of) the POSIX API.
  * Set to 1 for Cygwin and most other platforms.
 #define U_IOSTREAM_SOURCE 199711
 #endif
 
+/**
+ * \def U_HAVE_STD_STRING
+ * Defines whether the standard C++ (STL) &lt;string&gt; header is available.
+ * @internal
+ */
+#ifdef U_HAVE_STD_STRING
+    /* Use the predefined value. */
+#else
+#   define U_HAVE_STD_STRING 1
+#endif
+
 /*===========================================================================*/
 /** @{ Compiler and environment features                                     */
 /*===========================================================================*/
 #   define U_HAVE_DEBUG_LOCATION_NEW 0
 #endif
 
-/* Compatibility with compilers other than clang: http://clang.llvm.org/docs/LanguageExtensions.html */
+/* Compatibility with non clang compilers: http://clang.llvm.org/docs/LanguageExtensions.html */
 #ifndef __has_attribute
 #    define __has_attribute(x) 0
 #endif
 #   define U_CPLUSPLUS_VERSION 1
 #endif
 
-#if (U_PLATFORM == U_PF_AIX || U_PLATFORM == U_PF_OS390) && defined(__cplusplus) &&(U_CPLUSPLUS_VERSION < 11)
-// add in std::nullptr_t
-namespace std {
-  typedef decltype(nullptr) nullptr_t;
-};
-#endif
-
 /**
  * \def U_HAVE_RVALUE_REFERENCES
  * Set to 1 if the compiler supports rvalue references.
@@ -545,23 +537,18 @@ namespace std {
  * http://clang.llvm.org/docs/AttributeReference.html#fallthrough-clang-fallthrough
  * @internal
  */
-#ifndef __cplusplus
-    // Not for C.
-#elif defined(U_FALLTHROUGH)
-    // Use the predefined value.
-#elif defined(__clang__)
-    // Test for compiler vs. feature separately.
-    // Other compilers might choke on the feature test.
+#ifdef __cplusplus
 #   if __has_cpp_attribute(clang::fallthrough) || \
             (__has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough"))
 #       define U_FALLTHROUGH [[clang::fallthrough]]
+#   else
+#       define U_FALLTHROUGH
 #   endif
-#endif
-
-#ifndef U_FALLTHROUGH
+#else
 #   define U_FALLTHROUGH
 #endif
 
+
 /** @} */
 
 /*===========================================================================*/
@@ -777,7 +764,6 @@ namespace std {
      * gcc 4.4 defines the __CHAR16_TYPE__ macro to a usable type but
      * does not support u"abc" string literals.
      * C++11 and C11 require support for UTF-16 literals
-     * TODO: Fix for plain C. Doesn't work on Mac.
      */
 #   if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
 #       define U_HAVE_CHAR16_T 1
index 6eaf2db..69d7286 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 406551a..63a7b9b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index d654154..9f2a1a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 41fdc04..6ffd1f4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **************************************************************************
@@ -93,7 +93,7 @@ public:
      * @return 16-bit code unit of text at given offset
      * @stable ICU 1.8
      */
-    inline char16_t charAt(int32_t offset) const;
+    inline UChar charAt(int32_t offset) const;
 
     /**
      * Returns the 32-bit code point at the given 16-bit offset into
@@ -230,7 +230,7 @@ protected:
      * Virtual version of charAt().
      * @stable ICU 2.4
      */
-    virtual char16_t getCharAt(int32_t offset) const = 0;
+    virtual UChar getCharAt(int32_t offset) const = 0;
 
     /**
      * Virtual version of char32At().
@@ -246,7 +246,7 @@ Replaceable::length() const {
     return getLength();
 }
 
-inline char16_t
+inline UChar
 Replaceable::charAt(int32_t offset) const {
     return getCharAt(offset);
 }
index b522a7a..927a65b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -216,7 +216,7 @@ public:
      *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
      *                could be a warning
      *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
-     * @return a pointer to a zero-terminated char16_t array which lives in a memory mapped/DLL file.
+     * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
      * @stable ICU 2.0
      */
     UnicodeString
index b1dc939..e52b97c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -175,7 +175,7 @@ protected:
    * @param newTextLength The length of the String
    * @stable ICU 2.0
    */
-  void setText(const char16_t* newText, int32_t newTextLength);
+  void setText(const UChar* newText, int32_t newTextLength);
 
   /**
    * Copy of the iterated string object.
index 26eae01..2b74f5c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -19,6 +19,8 @@
 #include "unicode/utypes.h"
 #include "unicode/unistr.h"
 
+#ifndef U_HIDE_DRAFT_API
+
 U_NAMESPACE_BEGIN
 
 /**
@@ -47,15 +49,15 @@ U_NAMESPACE_BEGIN
  *
  * @see MessageFormat
  * @see UMessagePatternApostropheMode
- * @stable ICU 57
+ * @draft ICU 57
  */
 class U_COMMON_API SimpleFormatter U_FINAL : public UMemory {
 public:
     /**
      * Default constructor.
-     * @stable ICU 57
+     * @draft ICU 57
      */
-    SimpleFormatter() : compiledPattern((char16_t)0) {}
+    SimpleFormatter() : compiledPattern((UChar)0) {}
 
     /**
      * Constructs a formatter from the pattern string.
@@ -64,7 +66,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     SimpleFormatter(const UnicodeString& pattern, UErrorCode &errorCode) {
         applyPattern(pattern, errorCode);
@@ -82,7 +84,7 @@ public:
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax and
      *                  too few or too many arguments.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     SimpleFormatter(const UnicodeString& pattern, int32_t min, int32_t max,
                     UErrorCode &errorCode) {
@@ -91,20 +93,20 @@ public:
 
     /**
      * Copy constructor.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     SimpleFormatter(const SimpleFormatter& other)
             : compiledPattern(other.compiledPattern) {}
 
     /**
      * Assignment operator.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     SimpleFormatter &operator=(const SimpleFormatter& other);
 
     /**
      * Destructor.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     ~SimpleFormatter();
 
@@ -116,7 +118,7 @@ public:
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax.
      * @return TRUE if U_SUCCESS(errorCode).
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode) {
         return applyPatternMinMaxArguments(pattern, 0, INT32_MAX, errorCode);
@@ -135,14 +137,14 @@ public:
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax and
      *                  too few or too many arguments.
      * @return TRUE if U_SUCCESS(errorCode).
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UBool applyPatternMinMaxArguments(const UnicodeString &pattern,
                                       int32_t min, int32_t max, UErrorCode &errorCode);
 
     /**
      * @return The max argument number + 1.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     int32_t getArgumentLimit() const {
         return getArgumentLimit(compiledPattern.getBuffer(), compiledPattern.length());
@@ -158,7 +160,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString &format(
             const UnicodeString &value0,
@@ -175,7 +177,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString &format(
             const UnicodeString &value0,
@@ -194,7 +196,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString &format(
             const UnicodeString &value0,
@@ -219,7 +221,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return appendTo
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString &formatAndAppend(
             const UnicodeString *const *values, int32_t valuesLength,
@@ -245,7 +247,7 @@ public:
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      * @return result
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString &formatAndReplace(
             const UnicodeString *const *values, int32_t valuesLength,
@@ -255,7 +257,7 @@ public:
     /**
      * Returns the pattern text with none of the arguments.
      * Like formatting with all-empty string values.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString getTextWithNoArguments() const {
         return getTextWithNoArguments(compiledPattern.getBuffer(), compiledPattern.length());
@@ -273,15 +275,15 @@ private:
      */
     UnicodeString compiledPattern;
 
-    static inline int32_t getArgumentLimit(const char16_t *compiledPattern,
+    static inline int32_t getArgumentLimit(const UChar *compiledPattern,
                                               int32_t compiledPatternLength) {
         return compiledPatternLength == 0 ? 0 : compiledPattern[0];
     }
 
-    static UnicodeString getTextWithNoArguments(const char16_t *compiledPattern, int32_t compiledPatternLength);
+    static UnicodeString getTextWithNoArguments(const UChar *compiledPattern, int32_t compiledPatternLength);
 
     static UnicodeString &format(
-            const char16_t *compiledPattern, int32_t compiledPatternLength,
+            const UChar *compiledPattern, int32_t compiledPatternLength,
             const UnicodeString *const *values,
             UnicodeString &result, const UnicodeString *resultCopy, UBool forbidResultAsValue,
             int32_t *offsets, int32_t offsetsLength,
@@ -290,4 +292,6 @@ private:
 
 U_NAMESPACE_END
 
+#endif /* U_HIDE_DRAFT_API */
+
 #endif  // __SIMPLEFORMATTER_H__
index 729c563..104ef0c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  std_string.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 #include "unicode/utypes.h"
 
-// Workaround for a libstdc++ bug before libstdc++4.6 (2011).
-// https://bugs.llvm.org/show_bug.cgi?id=13364
-#if defined(__GLIBCXX__)
-namespace std { class type_info; }
+#if U_HAVE_STD_STRING
+
+#if !defined(_MSC_VER)
+namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 #include <string>
 
+#endif  // U_HAVE_STD_STRING
+
 #endif  // __STD_STRING_H__
index 61d5148..5a33f7f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -35,7 +35,7 @@ U_NAMESPACE_BEGIN
  * call, so the returned string still might not be 'valid' on
  * subsequent use.</p>
  *
- * <p>Strings may take the form of const char*, const char16_t*, or const
+ * <p>Strings may take the form of const char*, const UChar*, or const
  * UnicodeString*.  The type you get is determine by the variant of
  * 'next' that you call.  In general the StringEnumeration is
  * optimized for one of these types, but all StringEnumerations can
@@ -112,7 +112,7 @@ public:
      * <p>If the iterator is out of sync with its service, status is set
      * to U_ENUM_OUT_OF_SYNC_ERROR and NULL is returned.</p>
      *
-     * <p>If the native service string is a char16_t* string, it is
+     * <p>If the native service string is a UChar* string, it is
      * converted to char* with the invariant converter.  If the
      * conversion fails (because a character cannot be converted) then
      * status is set to U_INVARIANT_CONVERSION_ERROR and the return
@@ -131,7 +131,7 @@ public:
     virtual const char* next(int32_t *resultLength, UErrorCode& status);
 
     /**
-     * <p>Returns the next element as a NUL-terminated char16_t*.  If there
+     * <p>Returns the next element as a NUL-terminated UChar*.  If there
      * are no more elements, returns NULL.  If the resultLength pointer
      * is not NULL, the length of the string (not counting the
      * terminating NUL) is returned at that address.  If an error
@@ -153,7 +153,7 @@ public:
      *
      * @stable ICU 2.4 
      */
-    virtual const char16_t* unext(int32_t *resultLength, UErrorCode& status);
+    virtual const UChar* unext(int32_t *resultLength, UErrorCode& status);
 
     /**
      * <p>Returns the next element a UnicodeString*.  If there are no
index b0887ef..5e40d4a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2009-2013, International Business Machines
 // Corporation and others. All Rights Reserved.
@@ -68,12 +68,14 @@ class U_COMMON_API StringPiece : public UMemory {
    * @stable ICU 4.2
    */
   StringPiece(const char* str);
+#if U_HAVE_STD_STRING
   /**
    * Constructs from a std::string.
    * @stable ICU 4.2
    */
   StringPiece(const std::string& str)
     : ptr_(str.data()), length_(static_cast<int32_t>(str.size())) { }
+#endif
   /**
    * Constructs from a const char * pointer and a specified length.
    * @param offset a const char * pointer (need not be terminated)
index bcad248..95cd841 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  stringtriebuilder.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -105,7 +105,7 @@ protected:
     /** @internal */
     virtual int32_t getElementStringLength(int32_t i) const = 0;
     /** @internal */
-    virtual char16_t getElementUnit(int32_t i, int32_t unitIndex) const = 0;
+    virtual UChar getElementUnit(int32_t i, int32_t unitIndex) const = 0;
     /** @internal */
     virtual int32_t getElementValue(int32_t i) const = 0;
 
@@ -120,7 +120,7 @@ protected:
     /** @internal */
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const = 0;
     /** @internal */
-    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const = 0;
+    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, UChar unit) const = 0;
 
     /** @internal */
     virtual UBool matchNodesCanHaveValues() const = 0;
@@ -137,7 +137,7 @@ protected:
     /** @internal */
     static const int32_t kMaxBranchLinearSubNodeLength=5;
 
-    // Maximum number of nested split-branch levels for a branch on all 2^16 possible char16_t units.
+    // Maximum number of nested split-branch levels for a branch on all 2^16 possible UChar units.
     // log2(2^16/kMaxBranchLinearSubNodeLength) rounded up.
     /** @internal */
     static const int32_t kMaxSplitBranchLevels=14;
@@ -338,7 +338,7 @@ protected:
         virtual void write(StringTrieBuilder &builder);
         // Adds a unit with a final value.
         void add(int32_t c, int32_t value) {
-            units[length]=(char16_t)c;
+            units[length]=(UChar)c;
             equal[length]=NULL;
             values[length]=value;
             ++length;
@@ -346,7 +346,7 @@ protected:
         }
         // Adds a unit which leads to another match node.
         void add(int32_t c, Node *node) {
-            units[length]=(char16_t)c;
+            units[length]=(UChar)c;
             equal[length]=node;
             values[length]=0;
             ++length;
@@ -356,7 +356,7 @@ protected:
         Node *equal[kMaxBranchLinearSubNodeLength];  // NULL means "has final value".
         int32_t length;
         int32_t values[kMaxBranchLinearSubNodeLength];
-        char16_t units[kMaxBranchLinearSubNodeLength];
+        UChar units[kMaxBranchLinearSubNodeLength];
     };
 
     /**
@@ -364,7 +364,7 @@ protected:
      */
     class SplitBranchNode : public BranchNode {
     public:
-        SplitBranchNode(char16_t middleUnit, Node *lessThanNode, Node *greaterOrEqualNode)
+        SplitBranchNode(UChar middleUnit, Node *lessThanNode, Node *greaterOrEqualNode)
                 : BranchNode(((0x555555*37+middleUnit)*37+
                               hashCode(lessThanNode))*37+hashCode(greaterOrEqualNode)),
                   unit(middleUnit), lessThan(lessThanNode), greaterOrEqual(greaterOrEqualNode) {}
@@ -372,7 +372,7 @@ protected:
         virtual int32_t markRightEdgesFirst(int32_t edgeNumber);
         virtual void write(StringTrieBuilder &builder);
     protected:
-        char16_t unit;
+        UChar unit;
         Node *lessThan;
         Node *greaterOrEqual;
     };
index 35e5f23..cf2c4f0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ef21f24..e599698 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ubidi.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -1196,14 +1196,11 @@ ubidi_setContext(UBiDi *pBiDi,
  *        A level overrides the directional property of its corresponding
  *        (same index) character if the level has the
  *        <code>#UBIDI_LEVEL_OVERRIDE</code> bit set.<br><br>
- *        Aside from that bit, it must be
+ *        Except for that bit, it must be
  *        <code>paraLevel<=embeddingLevels[]<=UBIDI_MAX_EXPLICIT_LEVEL</code>,
- *        except that level 0 is always allowed.
- *        Level 0 for a paragraph separator prevents reordering of paragraphs;
- *        this only works reliably if <code>#UBIDI_LEVEL_OVERRIDE</code>
- *        is also set for paragraph separators.
- *        Level 0 for other characters is treated as a wildcard
- *        and is lifted up to the resolved level of the surrounding paragraph.<br><br>
+ *        with one exception: a level of zero may be specified for a paragraph
+ *        separator even if <code>paraLevel>0</code> when multiple paragraphs
+ *        are submitted in the same call to <code>ubidi_setPara()</code>.<br><br>
  *        <strong>Caution: </strong>A copy of this pointer, not of the levels,
  *        will be stored in the <code>UBiDi</code> object;
  *        the <code>embeddingLevels</code> array must not be
index 724587d..509f68b 100644 (file)
@@ -1,12 +1,12 @@
 /*
 ******************************************************************************
 *
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html
 *
 ******************************************************************************
 *   file name:  ubiditransform.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 22a4b99..f43943e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -267,34 +267,6 @@ ubrk_openRules(const UChar     *rules,
                UParseError     *parseErr,
                UErrorCode      *status);
 
-#ifndef U_HIDE_DRAFT_API
-/**
- * Open a new UBreakIterator for locating text boundaries using precompiled binary rules.
- * Opening a UBreakIterator this way is substantially faster than using ubrk_openRules.
- * Binary rules may be obtained using ubrk_getBinaryRules. The compiled rules are not
- * compatible across different major versions of ICU, nor across platforms of different
- * endianness or different base character set family (ASCII vs EBCDIC).
- * @param binaryRules A set of compiled binary rules specifying the text breaking
- *                    conventions. Ownership of the storage containing the compiled
- *                    rules remains with the caller of this function. The compiled
- *                    rules must not be modified or deleted during the life of the
- *                    break iterator.
- * @param rulesLength The length of binaryRules in bytes; must be >= 0.
- * @param text        The text to be iterated over.  May be null, in which case
- *                    ubrk_setText() is used to specify the text to be iterated.
- * @param textLength  The number of characters in text, or -1 if null-terminated.
- * @param status      Pointer to UErrorCode to receive any errors.
- * @return            UBreakIterator for the specified rules.
- * @see ubrk_getBinaryRules
- * @draft ICU 59
- */
-U_DRAFT UBreakIterator* U_EXPORT2
-ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
-                     const UChar *  text, int32_t textLength,
-                     UErrorCode *   status);
-
-#endif  /* U_HIDE_DRAFT_API */
-
 /**
  * Thread safe cloning operation
  * @param bi iterator to be cloned
@@ -594,40 +566,6 @@ ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status);
 
-
-#ifndef U_HIDE_DRAFT_API
-/**
- * Get a compiled binary version of the rules specifying the behavior of a UBreakIterator.
- * The binary rules may be used with ubrk_openBinaryRules to open a new UBreakIterator
- * more quickly than using ubrk_openRules. The compiled rules are not compatible across
- * different major versions of ICU, nor across platforms of different endianness or
- * different base character set family (ASCII vs EBCDIC). Supports preflighting (with
- * binaryRules=NULL and rulesCapacity=0) to get the rules length without copying them to
- * the binaryRules buffer. However, whether preflighting or not, if the actual length
- * is greater than INT32_MAX, then the function returns 0 and sets *status to
- * U_INDEX_OUTOFBOUNDS_ERROR.
-
- * @param bi            The break iterator to use.
- * @param binaryRules   Buffer to receive the compiled binary rules; set to NULL for
- *                      preflighting.
- * @param rulesCapacity Capacity (in bytes) of the binaryRules buffer; set to 0 for
- *                      preflighting. Must be >= 0.
- * @param status        Pointer to UErrorCode to receive any errors, such as
- *                      U_BUFFER_OVERFLOW_ERROR, U_INDEX_OUTOFBOUNDS_ERROR, or
- *                      U_ILLEGAL_ARGUMENT_ERROR.
- * @return              The actual byte length of the binary rules, if <= INT32_MAX;
- *                      otherwise 0. If not preflighting and this is larger than
- *                      rulesCapacity, *status will be set to an error.
- * @see ubrk_openBinaryRules
- * @draft ICU 59
- */
-U_DRAFT int32_t U_EXPORT2
-ubrk_getBinaryRules(UBreakIterator *bi,
-                    uint8_t *       binaryRules, int32_t rulesCapacity,
-                    UErrorCode *    status);
-
-#endif  /* U_HIDE_DRAFT_API */
-
 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
 
 #endif
index 18e6c2b..d7345e8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ucasemap.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,8 +22,8 @@
 #define __UCASEMAP_H__
 
 #include "unicode/utypes.h"
-#include "unicode/localpointer.h"
 #include "unicode/ustring.h"
+#include "unicode/localpointer.h"
 
 /**
  * \file
@@ -185,15 +185,6 @@ ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode);
  */
 #define U_TITLECASE_NO_BREAK_ADJUSTMENT 0x200
 
-/**
- * Omit unchanged text when case-mapping with Edits.
- *
- * @see CaseMap
- * @see Edits
- * @draft ICU 59
- */
-#define UCASEMAP_OMIT_UNCHANGED_TEXT 0x4000
-
 #if !UCONFIG_NO_BREAK_ITERATION
 
 /**
@@ -262,7 +253,7 @@ ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode
  * @param dest      A buffer for the result string. The result will be NUL-terminated if
  *                  the buffer is large enough.
  *                  The contents is undefined in case of failure.
- * @param destCapacity The size of the buffer (number of UChars). If it is 0, then
+ * @param destCapacity The size of the buffer (number of bytes). If it is 0, then
  *                  dest may be NULL and the function will only return the length of the result
  *                  without writing any of the result string.
  * @param src       The original string.
@@ -281,7 +272,7 @@ ucasemap_toTitle(UCaseMap *csm,
                  const UChar *src, int32_t srcLength,
                  UErrorCode *pErrorCode);
 
-#endif  // UCONFIG_NO_BREAK_ITERATION
+#endif
 
 /**
  * Lowercase the characters in a UTF-8 string.
index 4d1ff3f..c52e4d9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8174ca2..7f6ea6d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -399,34 +399,36 @@ typedef enum UProperty {
     UCHAR_CHANGES_WHEN_CASEMAPPED=55,
     /** Binary property Changes_When_NFKC_Casefolded. @stable ICU 4.4 */
     UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED=56,
+#ifndef U_HIDE_DRAFT_API
     /**
      * Binary property Emoji.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UCHAR_EMOJI=57,
     /**
      * Binary property Emoji_Presentation.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UCHAR_EMOJI_PRESENTATION=58,
     /**
      * Binary property Emoji_Modifier.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UCHAR_EMOJI_MODIFIER=59,
     /**
      * Binary property Emoji_Modifier_Base.
      * See http://www.unicode.org/reports/tr51/#Emoji_Properties
      *
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UCHAR_EMOJI_MODIFIER_BASE=60,
+#endif /* U_HIDE_DRAFT_API */
 #ifndef U_HIDE_DEPRECATED_API
     /**
      * One more than the last constant for binary Unicode properties.
index dfc93f6..8daed44 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrie.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -36,7 +36,7 @@ class UVector32;
 
 /**
  * Light-weight, non-const reader class for a UCharsTrie.
- * Traverses a char16_t-serialized data structure with minimal state,
+ * Traverses a UChar-serialized data structure with minimal state,
  * for mapping strings (16-bit-unit sequences) to non-negative integer values.
  *
  * This class owns the serialized trie data only if it was constructed by
@@ -52,18 +52,18 @@ public:
     /**
      * Constructs a UCharsTrie reader instance.
      *
-     * The trieUChars must contain a copy of a char16_t sequence from the UCharsTrieBuilder,
-     * starting with the first char16_t of that sequence.
-     * The UCharsTrie object will not read more char16_ts than
+     * The trieUChars must contain a copy of a UChar sequence from the UCharsTrieBuilder,
+     * starting with the first UChar of that sequence.
+     * The UCharsTrie object will not read more UChars than
      * the UCharsTrieBuilder generated in the corresponding build() call.
      *
      * The array is not copied/cloned and must not be modified while
      * the UCharsTrie object is in use.
      *
-     * @param trieUChars The char16_t array that contains the serialized trie.
+     * @param trieUChars The UChar array that contains the serialized trie.
      * @stable ICU 4.8
      */
-    UCharsTrie(ConstChar16Ptr trieUChars)
+    UCharsTrie(const UChar *trieUChars)
             : ownedArray_(NULL), uchars_(trieUChars),
               pos_(uchars_), remainingMatchLength_(-1) {}
 
@@ -75,7 +75,7 @@ public:
 
     /**
      * Copy constructor, copies the other trie reader object and its state,
-     * but not the char16_t array which will be shared. (Shallow copy.)
+     * but not the UChar array which will be shared. (Shallow copy.)
      * @param other Another UCharsTrie object.
      * @stable ICU 4.8
      */
@@ -109,8 +109,8 @@ public:
     private:
         friend class UCharsTrie;
 
-        const char16_t *uchars;
-        const char16_t *pos;
+        const UChar *uchars;
+        const UChar *pos;
         int32_t remainingMatchLength;
     };
 
@@ -148,14 +148,14 @@ public:
 
     /**
      * Determines whether the string so far matches, whether it has a value,
-     * and whether another input char16_t can continue a matching string.
+     * and whether another input UChar can continue a matching string.
      * @return The match/value Result.
      * @stable ICU 4.8
      */
     UStringTrieResult current() const;
 
     /**
-     * Traverses the trie from the initial state for this input char16_t.
+     * Traverses the trie from the initial state for this input UChar.
      * Equivalent to reset().next(uchar).
      * @param uchar Input char value. Values below 0 and above 0xffff will never match.
      * @return The match/value Result.
@@ -177,7 +177,7 @@ public:
     UStringTrieResult firstForCodePoint(UChar32 cp);
 
     /**
-     * Traverses the trie from the current state for this input char16_t.
+     * Traverses the trie from the current state for this input UChar.
      * @param uchar Input char value. Values below 0 and above 0xffff will never match.
      * @return The match/value Result.
      * @stable ICU 4.8
@@ -208,7 +208,7 @@ public:
      * @return The match/value Result.
      * @stable ICU 4.8
      */
-    UStringTrieResult next(ConstChar16Ptr s, int32_t length);
+    UStringTrieResult next(const UChar *s, int32_t length);
 
     /**
      * Returns a matching string's value if called immediately after
@@ -220,7 +220,7 @@ public:
      * @stable ICU 4.8
      */
     inline int32_t getValue() const {
-        const char16_t *pos=pos_;
+        const UChar *pos=pos_;
         int32_t leadUnit=*pos++;
         // U_ASSERT(leadUnit>=kMinValueLead);
         return leadUnit&kValueIsFinal ?
@@ -237,16 +237,16 @@ public:
      * @stable ICU 4.8
      */
     inline UBool hasUniqueValue(int32_t &uniqueValue) const {
-        const char16_t *pos=pos_;
+        const UChar *pos=pos_;
         // Skip the rest of a pending linear-match node.
         return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, FALSE, uniqueValue);
     }
 
     /**
-     * Finds each char16_t which continues the string from the current state.
-     * That is, each char16_t c for which it would be next(c)!=USTRINGTRIE_NO_MATCH now.
-     * @param out Each next char16_t is appended to this object.
-     * @return the number of char16_ts which continue the string from here
+     * Finds each UChar which continues the string from the current state.
+     * That is, each UChar c for which it would be next(c)!=USTRINGTRIE_NO_MATCH now.
+     * @param out Each next UChar is appended to this object.
+     * @return the number of UChars which continue the string from here
      * @stable ICU 4.8
      */
     int32_t getNextUChars(Appendable &out) const;
@@ -258,8 +258,8 @@ public:
     class U_COMMON_API Iterator : public UMemory {
     public:
         /**
-         * Iterates from the root of a char16_t-serialized UCharsTrie.
-         * @param trieUChars The trie char16_ts.
+         * Iterates from the root of a UChar-serialized UCharsTrie.
+         * @param trieUChars The trie UChars.
          * @param maxStringLength If 0, the iterator returns full strings.
          *                        Otherwise, the iterator returns strings with this maximum length.
          * @param errorCode Standard ICU error code. Its input value must
@@ -268,7 +268,7 @@ public:
          *                  function chaining. (See User Guide for details.)
          * @stable ICU 4.8
          */
-        Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLength, UErrorCode &errorCode);
+        Iterator(const UChar *trieUChars, int32_t maxStringLength, UErrorCode &errorCode);
 
         /**
          * Iterates from the current state of the specified UCharsTrie.
@@ -336,11 +336,11 @@ public:
             return TRUE;
         }
 
-        const char16_t *branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode);
+        const UChar *branchNext(const UChar *pos, int32_t length, UErrorCode &errorCode);
 
-        const char16_t *uchars_;
-        const char16_t *pos_;
-        const char16_t *initialPos_;
+        const UChar *uchars_;
+        const UChar *pos_;
+        const UChar *initialPos_;
         int32_t remainingMatchLength_;
         int32_t initialRemainingMatchLength_;
         UBool skipValue_;  // Skip intermediate value which was already delivered.
@@ -368,7 +368,7 @@ private:
      * this constructor adopts the builder's array.
      * This constructor is only called by the builder.
      */
-    UCharsTrie(char16_t *adoptUChars, const char16_t *trieUChars)
+    UCharsTrie(UChar *adoptUChars, const UChar *trieUChars)
             : ownedArray_(adoptUChars), uchars_(trieUChars),
               pos_(uchars_), remainingMatchLength_(-1) {}
 
@@ -381,7 +381,7 @@ private:
 
     // Reads a compact 32-bit integer.
     // pos is already after the leadUnit, and the lead unit has bit 15 reset.
-    static inline int32_t readValue(const char16_t *pos, int32_t leadUnit) {
+    static inline int32_t readValue(const UChar *pos, int32_t leadUnit) {
         int32_t value;
         if(leadUnit<kMinTwoUnitValueLead) {
             value=leadUnit;
@@ -392,7 +392,7 @@ private:
         }
         return value;
     }
-    static inline const char16_t *skipValue(const char16_t *pos, int32_t leadUnit) {
+    static inline const UChar *skipValue(const UChar *pos, int32_t leadUnit) {
         if(leadUnit>=kMinTwoUnitValueLead) {
             if(leadUnit<kThreeUnitValueLead) {
                 ++pos;
@@ -402,12 +402,12 @@ private:
         }
         return pos;
     }
-    static inline const char16_t *skipValue(const char16_t *pos) {
+    static inline const UChar *skipValue(const UChar *pos) {
         int32_t leadUnit=*pos++;
         return skipValue(pos, leadUnit&0x7fff);
     }
 
-    static inline int32_t readNodeValue(const char16_t *pos, int32_t leadUnit) {
+    static inline int32_t readNodeValue(const UChar *pos, int32_t leadUnit) {
         // U_ASSERT(kMinValueLead<=leadUnit && leadUnit<kValueIsFinal);
         int32_t value;
         if(leadUnit<kMinTwoUnitNodeValueLead) {
@@ -419,7 +419,7 @@ private:
         }
         return value;
     }
-    static inline const char16_t *skipNodeValue(const char16_t *pos, int32_t leadUnit) {
+    static inline const UChar *skipNodeValue(const UChar *pos, int32_t leadUnit) {
         // U_ASSERT(kMinValueLead<=leadUnit && leadUnit<kValueIsFinal);
         if(leadUnit>=kMinTwoUnitNodeValueLead) {
             if(leadUnit<kThreeUnitNodeValueLead) {
@@ -431,7 +431,7 @@ private:
         return pos;
     }
 
-    static inline const char16_t *jumpByDelta(const char16_t *pos) {
+    static inline const UChar *jumpByDelta(const UChar *pos) {
         int32_t delta=*pos++;
         if(delta>=kMinTwoUnitDeltaLead) {
             if(delta==kThreeUnitDeltaLead) {
@@ -444,7 +444,7 @@ private:
         return pos+delta;
     }
 
-    static const char16_t *skipDelta(const char16_t *pos) {
+    static const UChar *skipDelta(const UChar *pos) {
         int32_t delta=*pos++;
         if(delta>=kMinTwoUnitDeltaLead) {
             if(delta==kThreeUnitDeltaLead) {
@@ -461,28 +461,28 @@ private:
     }
 
     // Handles a branch node for both next(uchar) and next(string).
-    UStringTrieResult branchNext(const char16_t *pos, int32_t length, int32_t uchar);
+    UStringTrieResult branchNext(const UChar *pos, int32_t length, int32_t uchar);
 
     // Requires remainingLength_<0.
-    UStringTrieResult nextImpl(const char16_t *pos, int32_t uchar);
+    UStringTrieResult nextImpl(const UChar *pos, int32_t uchar);
 
     // Helper functions for hasUniqueValue().
     // Recursively finds a unique value (or whether there is not a unique one)
     // from a branch.
-    static const char16_t *findUniqueValueFromBranch(const char16_t *pos, int32_t length,
+    static const UChar *findUniqueValueFromBranch(const UChar *pos, int32_t length,
                                                   UBool haveUniqueValue, int32_t &uniqueValue);
     // Recursively finds a unique value (or whether there is not a unique one)
     // starting from a position on a node lead unit.
-    static UBool findUniqueValue(const char16_t *pos, UBool haveUniqueValue, int32_t &uniqueValue);
+    static UBool findUniqueValue(const UChar *pos, UBool haveUniqueValue, int32_t &uniqueValue);
 
     // Helper functions for getNextUChars().
     // getNextUChars() when pos is on a branch node.
-    static void getNextBranchUChars(const char16_t *pos, int32_t length, Appendable &out);
+    static void getNextBranchUChars(const UChar *pos, int32_t length, Appendable &out);
 
     // UCharsTrie data structure
     //
-    // The trie consists of a series of char16_t-serialized nodes for incremental
-    // Unicode string/char16_t sequence matching. (char16_t=16-bit unsigned integer)
+    // The trie consists of a series of UChar-serialized nodes for incremental
+    // Unicode string/UChar sequence matching. (UChar=16-bit unsigned integer)
     // The root node is at the beginning of the trie data.
     //
     // Types of nodes are distinguished by their node lead unit ranges.
@@ -491,9 +491,9 @@ private:
     //
     // Node types:
     //  - Final-value node: Stores a 32-bit integer in a compact, variable-length format.
-    //    The value is for the string/char16_t sequence so far.
+    //    The value is for the string/UChar sequence so far.
     //  - Match node, optionally with an intermediate value in a different compact format.
-    //    The value, if present, is for the string/char16_t sequence so far.
+    //    The value, if present, is for the string/UChar sequence so far.
     //
     //  Aside from the value, which uses the node lead unit's high bits:
     //
@@ -560,15 +560,15 @@ private:
 
     static const int32_t kMaxTwoUnitDelta=((kThreeUnitDeltaLead-kMinTwoUnitDeltaLead)<<16)-1;  // 0x03feffff
 
-    char16_t *ownedArray_;
+    UChar *ownedArray_;
 
     // Fixed value referencing the UCharsTrie words.
-    const char16_t *uchars_;
+    const UChar *uchars_;
 
     // Iterator variables.
 
     // Pointer to next trie unit to read. NULL if no more matches.
-    const char16_t *pos_;
+    const UChar *pos_;
     // Remaining length of a linear-match node, minus 1. Negative if not in such a node.
     int32_t remainingMatchLength_;
 };
index 2aa4757..cc9fb77 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstriebuilder.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -89,21 +89,21 @@ public:
     UCharsTrie *build(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
 
     /**
-     * Builds a UCharsTrie for the add()ed data and char16_t-serializes it.
+     * Builds a UCharsTrie for the add()ed data and UChar-serializes it.
      * Once built, no further data can be add()ed until clear() is called.
      *
      * A UCharsTrie cannot be empty. At least one (string, value) pair
      * must have been add()ed.
      *
      * Multiple calls to buildUnicodeString() set the UnicodeStrings to the
-     * builder's same char16_t array, without rebuilding.
+     * builder's same UChar array, without rebuilding.
      * If buildUnicodeString() is called after build(), the trie will be
      * re-serialized into a new array.
      * If build() is called after buildUnicodeString(), the trie object will become
      * the owner of the previously returned array.
      * After clear() has been called, a new array will be used as well.
      * @param buildOption Build option, see UStringTrieBuildOption.
-     * @param result A UnicodeString which will be set to the char16_t-serialized
+     * @param result A UnicodeString which will be set to the UChar-serialized
      *               UCharsTrie for the add()ed data.
      * @param errorCode Standard ICU error code. Its input value must
      *                  pass the U_SUCCESS() test, or else the function returns
@@ -135,14 +135,14 @@ private:
     void buildUChars(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
 
     virtual int32_t getElementStringLength(int32_t i) const;
-    virtual char16_t getElementUnit(int32_t i, int32_t unitIndex) const;
+    virtual UChar getElementUnit(int32_t i, int32_t unitIndex) const;
     virtual int32_t getElementValue(int32_t i) const;
 
     virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t unitIndex) const;
 
     virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t unitIndex) const;
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const;
-    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const;
+    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, UChar unit) const;
 
     virtual UBool matchNodesCanHaveValues() const { return TRUE; }
 
@@ -152,11 +152,11 @@ private:
 
     class UCTLinearMatchNode : public LinearMatchNode {
     public:
-        UCTLinearMatchNode(const char16_t *units, int32_t len, Node *nextNode);
+        UCTLinearMatchNode(const UChar *units, int32_t len, Node *nextNode);
         virtual UBool operator==(const Node &other) const;
         virtual void write(StringTrieBuilder &builder);
     private:
-        const char16_t *s;
+        const UChar *s;
     };
 
     virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length,
@@ -164,7 +164,7 @@ private:
 
     UBool ensureCapacity(int32_t length);
     virtual int32_t write(int32_t unit);
-    int32_t write(const char16_t *s, int32_t length);
+    int32_t write(const UChar *s, int32_t length);
     virtual int32_t writeElementUnits(int32_t i, int32_t unitIndex, int32_t length);
     virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal);
     virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node);
@@ -175,9 +175,9 @@ private:
     int32_t elementsCapacity;
     int32_t elementsLength;
 
-    // char16_t serialization of the trie.
+    // UChar serialization of the trie.
     // Grows from the back: ucharsLength measures from the end of the buffer!
-    char16_t *uchars;
+    UChar *uchars;
     int32_t ucharsCapacity;
     int32_t ucharsLength;
 };
index efcd263..d87ffb1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 /**
  * \file 
- * \brief C++ API: char16_t Character Iterator
+ * \brief C++ API: UChar Character Iterator
  */
  
 U_NAMESPACE_BEGIN
 
 /**
  * A concrete subclass of CharacterIterator that iterates over the
- * characters (code units or code points) in a char16_t array.
+ * characters (code units or code points) in a UChar array.
  * It's possible not only to create an
- * iterator that iterates over an entire char16_t array, but also to
- * create one that iterates over only a subrange of a char16_t array
- * (iterators over different subranges of the same char16_t array don't
+ * iterator that iterates over an entire UChar array, but also to
+ * create one that iterates over only a subrange of a UChar array
+ * (iterators over different subranges of the same UChar array don't
  * compare equal).
  * @see CharacterIterator
  * @see ForwardCharacterIterator
@@ -35,34 +35,34 @@ U_NAMESPACE_BEGIN
 class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
 public:
   /**
-   * Create an iterator over the char16_t array referred to by "textPtr".
+   * Create an iterator over the UChar array referred to by "textPtr".
    * The iteration range is 0 to <code>length-1</code>.
    * text is only aliased, not adopted (the
    * destructor will not delete it).
-   * @param textPtr The char16_t array to be iterated over
-   * @param length The length of the char16_t array
+   * @param textPtr The UChar array to be iterated over
+   * @param length The length of the UChar array
    * @stable ICU 2.0
    */
-  UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length);
+  UCharCharacterIterator(const UChar* textPtr, int32_t length);
 
   /**
-   * Create an iterator over the char16_t array referred to by "textPtr".
+   * Create an iterator over the UChar array referred to by "textPtr".
    * The iteration range is 0 to <code>length-1</code>.
    * text is only aliased, not adopted (the
    * destructor will not delete it).
    * The starting
    * position is specified by "position". If "position" is outside the valid
    * iteration range, the behavior of this object is undefined.
-   * @param textPtr The char16_t array to be iteratd over
-   * @param length The length of the char16_t array
+   * @param textPtr The UChar array to be iteratd over
+   * @param length The length of the UChar array
    * @param position The starting position of the iteration
    * @stable ICU 2.0
    */
-  UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length,
+  UCharCharacterIterator(const UChar* textPtr, int32_t length,
                          int32_t position);
 
   /**
-   * Create an iterator over the char16_t array referred to by "textPtr".
+   * Create an iterator over the UChar array referred to by "textPtr".
    * The iteration range is 0 to <code>end-1</code>.
    * text is only aliased, not adopted (the
    * destructor will not delete it).
@@ -70,14 +70,14 @@ public:
    * position is specified by "position". If begin and end do not
    * form a valid iteration range or "position" is outside the valid
    * iteration range, the behavior of this object is undefined.
-   * @param textPtr The char16_t array to be iterated over
-   * @param length The length of the char16_t array
+   * @param textPtr The UChar array to be iterated over
+   * @param length The length of the UChar array
    * @param textBegin  The begin position of the iteration range
    * @param textEnd    The end position of the iteration range
    * @param position    The starting position of the iteration
    * @stable ICU 2.0
    */
-  UCharCharacterIterator(ConstChar16Ptr textPtr, int32_t length,
+  UCharCharacterIterator(const UChar* textPtr, int32_t length,
                          int32_t textBegin,
                          int32_t textEnd,
                          int32_t position);
@@ -141,7 +141,7 @@ public:
    * @return the first code unit in its iteration range.
    * @stable ICU 2.0
    */
-  virtual char16_t         first(void);
+  virtual UChar         first(void);
 
   /**
    * Sets the iterator to refer to the first code unit in its
@@ -151,7 +151,7 @@ public:
    * @return the first code unit in its iteration range
    * @stable ICU 2.0
    */
-  virtual char16_t         firstPostInc(void);
+  virtual UChar         firstPostInc(void);
 
   /**
    * Sets the iterator to refer to the first code point in its
@@ -181,7 +181,7 @@ public:
    * @return the last code unit in its iteration range.
    * @stable ICU 2.0
    */
-  virtual char16_t         last(void);
+  virtual UChar         last(void);
 
   /**
    * Sets the iterator to refer to the last code point in its
@@ -200,7 +200,7 @@ public:
    * @return the code unit
    * @stable ICU 2.0
    */
-  virtual char16_t         setIndex(int32_t position);
+  virtual UChar         setIndex(int32_t position);
 
   /**
    * Sets the iterator to refer to the beginning of the code point
@@ -220,7 +220,7 @@ public:
    * @return the code unit the iterator currently refers to.
    * @stable ICU 2.0
    */
-  virtual char16_t         current(void) const;
+  virtual UChar         current(void) const;
 
   /**
    * Returns the code point the iterator currently refers to.
@@ -236,7 +236,7 @@ public:
    * @return the next code unit in the iteration range.
    * @stable ICU 2.0
    */
-  virtual char16_t         next(void);
+  virtual UChar         next(void);
 
   /**
    * Gets the current code unit for returning and advances to the next code unit
@@ -246,7 +246,7 @@ public:
    * @return the current code unit.
    * @stable ICU 2.0
    */
-  virtual char16_t         nextPostInc(void);
+  virtual UChar         nextPostInc(void);
 
   /**
    * Advances to the next code point in the iteration range (toward
@@ -288,7 +288,7 @@ public:
    * @return the previous code unit in the iteration range.
    * @stable ICU 2.0
    */
-  virtual char16_t         previous(void);
+  virtual UChar         previous(void);
 
   /**
    * Advances to the previous code point in the iteration range (toward
@@ -334,20 +334,16 @@ public:
    * @return the new position
    * @stable ICU 2.0
    */
-#ifdef move32
-   // One of the system headers right now is sometimes defining a conflicting macro we don't use
-#undef move32
-#endif
   virtual int32_t      move32(int32_t delta, EOrigin origin);
 
   /**
    * Sets the iterator to iterate over a new range of text
    * @stable ICU 2.0
    */
-  void setText(ConstChar16Ptr newText, int32_t newTextLength);
+  void setText(const UChar* newText, int32_t newTextLength);
 
   /**
-   * Copies the char16_t array under iteration into the UnicodeString
+   * Copies the UChar array under iteration into the UnicodeString
    * referred to by "result".  Even if this iterator iterates across
    * only a part of this string, the whole string is copied.
    * @param result Receives a copy of the text under iteration.
@@ -379,7 +375,7 @@ protected:
    * Protected member text
    * @stable ICU 2.0
    */
-  const char16_t*            text;
+  const UChar*            text;
 
 };
 
index 5beb1f7..d7801d6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  uclean.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -101,7 +101,7 @@ u_init(UErrorCode *status);
 U_STABLE void U_EXPORT2 
 u_cleanup(void);
 
-U_CDECL_BEGIN
+
 /**
   *  Pointer type for a user supplied memory allocation function.
   *  @param context user supplied value, obtained from from u_setMemoryFunctions().
@@ -149,10 +149,9 @@ typedef void  U_CALLCONV UMemFreeFn (const void *context, void *mem);
  *  @system
  */  
 U_STABLE void U_EXPORT2 
-u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV a, UMemReallocFn * U_CALLCONV r, UMemFreeFn * U_CALLCONV f, 
+u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f, 
                     UErrorCode *status);
 
-U_CDECL_END
 
 #ifndef U_HIDE_DEPRECATED_API
 /*********************************************************************************
@@ -173,7 +172,6 @@ U_CDECL_END
   */
 typedef void *UMTX;
 
-U_CDECL_BEGIN
 /**
   *  Function Pointer type for a user supplied mutex initialization function.
   *  The user-supplied function will be called by ICU whenever ICU needs to create a
@@ -203,7 +201,7 @@ typedef void U_CALLCONV UMtxInitFn (const void *context, UMTX  *mutex, UErrorCod
   *  @system
   */
 typedef void U_CALLCONV UMtxFn   (const void *context, UMTX  *mutex);
-U_CDECL_END
+
 
 /**
   *  Set the functions that ICU will use for mutex operations
index 86e3b84..767c1a2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 14169ed..7104c72 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 2f74754..b970b89 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d423845..3eed081 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c26fce4..77a476d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  uconfig.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1abb3b2..56bad0a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a0286e1..bde719d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  udata.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index c4f6c95..eaef02d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index fc6efa2..8da1bd4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uenum.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
@@ -23,9 +23,7 @@
 #include "unicode/localpointer.h"
 
 #if U_SHOW_CPLUSPLUS_API
-U_NAMESPACE_BEGIN
-class StringEnumeration;
-U_NAMESPACE_END
+#include "unicode/strenum.h"
 #endif
 
 /**
index 0dafb76..af3455c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  uidna.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 11ad75a..e6cb838 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uiter.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 3ebffa2..30f465a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9fe24f7..2167f60 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -49,7 +49,7 @@ typedef struct UListFormatter UListFormatter;  /**< C typedef for struct UListFo
  *            or NULL if an error occurred.
  * @stable ICU 55
  */
-U_CAPI UListFormatter* U_EXPORT2
+U_STABLE UListFormatter* U_EXPORT2
 ulistfmt_open(const char*  locale,
               UErrorCode*  status);
 
@@ -59,7 +59,7 @@ ulistfmt_open(const char*  locale,
  *            The UListFormatter object to close.
  * @stable ICU 55
  */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 ulistfmt_close(UListFormatter *listfmt);
 
 
@@ -116,7 +116,7 @@ U_NAMESPACE_END
  *            total buffer size needed (e.g. for illegal arguments).
  * @stable ICU 55
  */
-U_CAPI int32_t U_EXPORT2
+U_DRAFT int32_t U_EXPORT2
 ulistfmt_format(const UListFormatter* listfmt,
                 const UChar* const strings[],
                 const int32_t *    stringLengths,
index 23a54a9..92ce20e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -61,7 +61,7 @@
  * http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</a>
  *
  * <P>
- * The second option includes an additional <STRONG>ISO Country
+ * The second option includes an additonal <STRONG>ISO Country
  * Code.</STRONG> These codes are the upper-case two-letter codes
  * as defined by ISO-3166.
  * You can find a full list of these codes at a number of sites, such as:
@@ -69,7 +69,7 @@
  * http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</a>
  *
  * <P>
- * The third option requires another additional information--the 
+ * The third option requires another additonal information--the 
  * <STRONG>Variant.</STRONG>
  * The Variant codes are vendor and browser-specific.
  * For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX.
  * <STRONG>just</STRONG> a mechanism for identifying these services.
  *
  * <P>
- * Each international service that performs locale-sensitive operations 
+ * Each international serivce that performs locale-sensitive operations 
  * allows you
  * to get all the available objects of that type. You can sift
  * through these objects by language, country, or variant,
@@ -539,9 +539,6 @@ uloc_getISO3Country(const char* localeID);
  * Gets the Win32 LCID value for the specified locale.
  * If the ICU locale is not recognized by Windows, 0 will be returned.
  *
- * LCIDs were deprecated with Windows Vista and Microsoft recommends
- * that developers use BCP47 style tags instead (uloc_toLanguageTag).
- *
  * @param localeID the locale to get the Win32 LCID value with
  * @return country the Win32 LCID for localeID
  * @stable ICU 2.0
@@ -580,7 +577,7 @@ uloc_getDisplayLanguage(const char* locale,
  *                 if the locale's language code is "en", passing Locale::getFrench() for
  *                 inLocale would result in "", while passing Locale::getGerman()
  *                 for inLocale would result in "". NULL may be used to specify the default.
- * @param script the displayable script for the localeID
+ * @param script the displayable country code for localeID
  * @param scriptCapacity the size of the script buffer to store the  
  * displayable script code with
  * @param status error information if retrieving the displayable script code failed
@@ -855,12 +852,10 @@ uloc_openKeywords(const char* localeID,
  * Get the value for a keyword. Locale name does not need to be normalized.
  * 
  * @param localeID locale name containing the keyword ("de_DE@currency=EURO;collation=PHONEBOOK")
- * @param keywordName name of the keyword for which we want the value; must not be
- *  NULL or empty, and must consist only of [A-Za-z0-9]. Case insensitive.
+ * @param keywordName name of the keyword for which we want the value. Case insensitive.
  * @param buffer receiving buffer
  * @param bufferCapacity capacity of receiving buffer
- * @param status containing error code: e.g. buffer not big enough or ill-formed localeID
- *  or keywordName parameters.
+ * @param status containing error code - buffer not big enough.
  * @return the length of keyword value
  * @stable ICU 2.8
  */
@@ -877,26 +872,18 @@ uloc_getKeywordValue(const char* localeID,
  * For removing all keywords, use uloc_getBaseName().
  *
  * NOTE: Unlike almost every other ICU function which takes a
- * buffer, this function will NOT truncate the output text, and will
- * not update the buffer with unterminated text setting a status of
- * U_STRING_NOT_TERMINATED_WARNING. If a BUFFER_OVERFLOW_ERROR is received,
- * it means a terminated version of the updated locale ID would not fit
- * in the buffer, and the original buffer is untouched. This is done to
- * prevent incorrect or possibly even malformed locales from being generated
- * and used.
+ * buffer, this function will NOT truncate the output text. If a
+ * BUFFER_OVERFLOW_ERROR is received, it means that the original
+ * buffer is untouched. This is done to prevent incorrect or possibly
+ * even malformed locales from being generated and used.
  *
- * @param keywordName name of the keyword to be set; must not be
- *  NULL or empty, and must consist only of [A-Za-z0-9]. Case insensitive.
+ * @param keywordName name of the keyword to be set. Case insensitive.
  * @param keywordValue value of the keyword to be set. If 0-length or
- *  NULL, will result in the keyword being removed; no error is given if 
- *  that keyword does not exist. Otherwise, must consist only of
- *  [A-Za-z0-9] and [/_+-].
- * @param buffer input buffer containing well-formed locale ID to be
- *  modified.
+ *  NULL, will result in the keyword being removed. No error is given if 
+ *  that keyword does not exist.
+ * @param buffer input buffer containing locale to be modified.
  * @param bufferCapacity capacity of receiving buffer
- * @param status containing error code: e.g. buffer not big enough
- *  or ill-formed keywordName or keywordValue parameters, or ill-formed
- *  locale ID in buffer on input.
+ * @param status containing error code - buffer not big enough.
  * @return the length needed for the buffer
  * @see uloc_getKeywordValue
  * @stable ICU 3.2
index 3ba9161..51581c7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  umachine.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
  */
 #include <stddef.h>
 
+#ifndef U_HIDE_INTERNAL_API
+/*
+ *  U_USE_CHAR16_T
+ *     When defined, force use of char16_t for UChar.
+ *     Note: char16_t is expected to become the default and required in the future,
+ *           and this option will be removed.
+ *     @internal
+ */
+#ifdef U_USE_CHAR16_T
+#ifdef UCHAR_TYPE
+#undef UCHAR_TYPE
+#endif
+#define UCHAR_TYPE char16_t
+
+/*
+ * In plain C, <uchar.h> is needed for the definition of char16_t
+ */
+#ifndef __cplusplus
+#include <uchar.h>
+#endif
+#endif
+#endif  /* U_HIDE_INTERNAL_API */
+
 /*==========================================================================*/
 /* For C wrappers, we use the symbol U_STABLE.                                */
 /* This works properly if the includer is C or C++.                         */
@@ -291,89 +314,27 @@ typedef int8_t UBool;
 #define U_SIZEOF_UCHAR 2
 
 /**
- * \def U_CHAR16_IS_TYPEDEF
- * If 1, then char16_t is a typedef and not a real type (yet)
- * @internal
- */
-#if (U_PLATFORM == U_PF_AIX) && defined(__cplusplus) &&(U_CPLUSPLUS_VERSION < 11)
-// for AIX, uchar.h needs to be included
-# include <uchar.h>
-# define U_CHAR16_IS_TYPEDEF 1
-#else
-# define U_CHAR16_IS_TYPEDEF 0
-#endif
-
-
-/**
  * \var UChar
+ * Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t),
+ * or wchar_t if that is 16 bits wide; always assumed to be unsigned.
+ * If neither is available, then define UChar to be uint16_t.
  *
- * The base type for UTF-16 code units and pointers.
- * Unsigned 16-bit integer.
- * Starting with ICU 59, C++ API uses char16_t directly, while C API continues to use UChar.
- *
- * UChar is configurable by defining the macro UCHAR_TYPE
- * on the preprocessor or compiler command line:
- * -DUCHAR_TYPE=uint16_t or -DUCHAR_TYPE=wchar_t (if U_SIZEOF_WCHAR_T==2) etc.
- * (The UCHAR_TYPE can also be #defined earlier in this file, for outside the ICU library code.)
- * This is for transitional use from application code that uses uint16_t or wchar_t for UTF-16.
- *
- * The default is UChar=char16_t.
- *
- * C++11 defines char16_t as bit-compatible with uint16_t, but as a distinct type.
- *
- * In C, char16_t is a simple typedef of uint_least16_t.
- * ICU requires uint_least16_t=uint16_t for data memory mapping.
- * On macOS, char16_t is not available because the uchar.h standard header is missing.
- *
- * @stable ICU 4.4
- */
-
-#if 1
-    // #if 1 is normal. UChar defaults to char16_t in C++.
-    // For configuration testing of UChar=uint16_t temporarily change this to #if 0.
-    // The intltest Makefile #defines UCHAR_TYPE=char16_t,
-    // so we only #define it to uint16_t if it is undefined so far.
-#elif !defined(UCHAR_TYPE)
-#   define UCHAR_TYPE uint16_t
-#endif
-
-#if defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || \
-        defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION)
-    // Inside the ICU library code, never configurable.
-    typedef char16_t UChar;
-#elif defined(UCHAR_TYPE)
-    typedef UCHAR_TYPE UChar;
-#elif defined(__cplusplus)
-    typedef char16_t UChar;
-#else
-    typedef uint16_t UChar;
-#endif
-
-/**
- * \var OldUChar
- * Default ICU 58 definition of UChar.
- * A base type for UTF-16 code units and pointers.
- * Unsigned 16-bit integer.
- *
- * Define OldUChar to be wchar_t if that is 16 bits wide.
- * If wchar_t is not 16 bits wide, then define UChar to be uint16_t.
- *
- * This makes the definition of OldUChar platform-dependent
+ * This makes the definition of UChar platform-dependent
  * but allows direct string type compatibility with platforms with
  * 16-bit wchar_t types.
  *
- * This is how UChar was defined in ICU 58, for transition convenience.
- * Exception: ICU 58 UChar was defined to UCHAR_TYPE if that macro was defined.
- * The current UChar responds to UCHAR_TYPE but OldUChar does not.
- *
- * @draft ICU 59
+ * @stable ICU 4.4
  */
-#if U_SIZEOF_WCHAR_T==2
-    typedef wchar_t OldUChar;
+#if defined(UCHAR_TYPE)
+    typedef UCHAR_TYPE UChar;
+/* Not #elif U_HAVE_CHAR16_T -- because that is type-incompatible with pre-C++11 callers
+    typedef char16_t UChar;  */
+#elif U_SIZEOF_WCHAR_T==2
+    typedef wchar_t UChar;
 #elif defined(__CHAR16_TYPE__)
-    typedef __CHAR16_TYPE__ OldUChar;
+    typedef __CHAR16_TYPE__ UChar;
 #else
-    typedef uint16_t OldUChar;
+    typedef uint16_t UChar;
 #endif
 
 /**
index 213290b..7b6d35f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  umisc.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e105271..0fdcd14 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -30,7 +30,7 @@ U_NAMESPACE_BEGIN
  * defined range.
  * @stable ICU 3.0
  */
-#define U_ETHER ((char16_t)0xFFFF)
+#define U_ETHER ((UChar)0xFFFF)
 
 /**
  *
index 1c50759..b40027c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ee4326f..605f3f5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 2001-2005, International Business Machines Corporation and others. All Rights Reserved.
index 4a4ce19..fdd7fc3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
@@ -294,7 +294,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter {
      * indicating that toPattern() must generate a pattern
      * representation from the inversion list.
      */
-    char16_t *pat;
+    UChar *pat;
     UVector* strings; // maintained in sorted order
     UnicodeSetStringSpan *stringSpan;
 
@@ -891,7 +891,7 @@ public:
      * @stable ICU 3.8
      * @see USetSpanCondition
      */
-    int32_t span(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const;
+    int32_t span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
 
     /**
      * Returns the end of the substring of the input string according to the USetSpanCondition.
@@ -924,7 +924,7 @@ public:
      * @stable ICU 3.8
      * @see USetSpanCondition
      */
-    int32_t spanBack(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const;
+    int32_t spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
 
     /**
      * Returns the start of the substring of the input string according to the USetSpanCondition.
index e0ab0b9..6f62244 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
  * \brief C++ API: Unicode String
  */
 
-#include <cstddef>
 #include "unicode/utypes.h"
-#include "unicode/char16ptr.h"
 #include "unicode/rep.h"
 #include "unicode/std_string.h"
 #include "unicode/stringpiece.h"
 #include "unicode/bytestream.h"
+#include "unicode/ucasemap.h"
 
 struct UConverter;          // unicode/ucnv.h
 
@@ -56,34 +55,30 @@ U_STABLE int32_t U_EXPORT2
 u_strlen(const UChar *s);
 #endif
 
-U_NAMESPACE_BEGIN
-
-#if !UCONFIG_NO_BREAK_ITERATION
-class BreakIterator;        // unicode/brkiter.h
-#endif
-class Edits;
-
-U_NAMESPACE_END
+/**
+ * \def U_STRING_CASE_MAPPER_DEFINED
+ * @internal
+ */
+#ifndef U_STRING_CASE_MAPPER_DEFINED
+#define U_STRING_CASE_MAPPER_DEFINED
 
-// Not #ifndef U_HIDE_INTERNAL_API because UnicodeString needs the UStringCaseMapper.
 /**
  * Internal string case mapping function type.
- * All error checking must be done.
- * src and dest must not overlap.
  * @internal
  */
 typedef int32_t U_CALLCONV
-UStringCaseMapper(int32_t caseLocale, uint32_t options,
-#if !UCONFIG_NO_BREAK_ITERATION
-                  icu::BreakIterator *iter,
+UStringCaseMapper(const UCaseMap *csm,
+                  UChar *dest, int32_t destCapacity,
+                  const UChar *src, int32_t srcLength,
+                  UErrorCode *pErrorCode);
+
 #endif
-                  char16_t *dest, int32_t destCapacity,
-                  const char16_t *src, int32_t srcLength,
-                  icu::Edits *edits,
-                  UErrorCode &errorCode);
 
 U_NAMESPACE_BEGIN
 
+#if !UCONFIG_NO_BREAK_ITERATION
+class BreakIterator;        // unicode/brkiter.h
+#endif
 class Locale;               // unicode/locid.h
 class StringCharacterIterator;
 class UnicodeStringAppendable;  // unicode/appendable.h
@@ -104,12 +99,10 @@ class UnicodeStringAppendable;  // unicode/appendable.h
 
 /**
  * Unicode String literals in C++.
- *
- * Note: these macros are not recommended for new code.
- * Prior to the availability of C++11 and u"unicode string literals",
- * these macros were provided for portability and efficiency when
- * initializing UnicodeStrings from literals.
- *
+ * Dependent on the platform properties, different UnicodeString
+ * constructors should be used to create a UnicodeString object from
+ * a string literal.
+ * The macros are defined for maximum performance.
  * They work only for strings that contain "invariant characters", i.e.,
  * only latin letters, digits, and some punctuation.
  * See utypes.h for details.
@@ -117,12 +110,18 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * The string parameter must be a C string literal.
  * The length of the string, not including the terminating
  * <code>NUL</code>, must be specified as a constant.
+ * The U_STRING_DECL macro should be invoked exactly once for one
+ * such string variable before it is used.
  * @stable ICU 2.0
  */
-#if !U_CHAR16_IS_TYPEDEF
-# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, u ## cs, _length)
+#if defined(U_DECLARE_UTF16)
+#   define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const UChar *)U_DECLARE_UTF16(cs), _length)
+#elif U_SIZEOF_WCHAR_T==U_SIZEOF_UCHAR && (U_CHARSET_FAMILY==U_ASCII_FAMILY || (U_SIZEOF_UCHAR == 2 && defined(U_WCHAR_IS_UTF16)))
+#   define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const UChar *)L ## cs, _length)
+#elif U_SIZEOF_UCHAR==1 && U_CHARSET_FAMILY==U_ASCII_FAMILY
+#   define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const UChar *)cs, _length)
 #else
-# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const char16_t*)u ## cs, _length)
+#   define UNICODE_STRING(cs, _length) icu::UnicodeString(cs, _length, US_INV)
 #endif
 
 /**
@@ -143,7 +142,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
 /**
  * \def UNISTR_FROM_CHAR_EXPLICIT
  * This can be defined to be empty or "explicit".
- * If explicit, then the UnicodeString(char16_t) and UnicodeString(UChar32)
+ * If explicit, then the UnicodeString(UChar) and UnicodeString(UChar32)
  * constructors are marked as explicit, preventing their inadvertent use.
  * @stable ICU 49
  */
@@ -160,7 +159,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
 /**
  * \def UNISTR_FROM_STRING_EXPLICIT
  * This can be defined to be empty or "explicit".
- * If explicit, then the UnicodeString(const char *) and UnicodeString(const char16_t *)
+ * If explicit, then the UnicodeString(const char *) and UnicodeString(const UChar *)
  * constructors are marked as explicit, preventing their inadvertent use.
  *
  * In particular, this helps prevent accidentally depending on ICU conversion code
@@ -194,18 +193,18 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * to 4 * sizeof(pointer) (or 3 * sizeof(pointer) for P128 data models),
  * to hold the fields for heap-allocated strings.
  * Such a minimum size also ensures that the object is easily large enough
- * to hold at least 2 char16_ts, for one supplementary code point (U16_MAX_LENGTH).
+ * to hold at least 2 UChars, for one supplementary code point (U16_MAX_LENGTH).
  *
  * sizeof(UnicodeString) >= 48 should work for all known platforms.
  *
  * For example, on a 64-bit machine where sizeof(vtable pointer) is 8,
  * sizeof(UnicodeString) = 64 would leave space for
  * (64 - sizeof(vtable pointer) - 2) / U_SIZEOF_UCHAR = (64 - 8 - 2) / 2 = 27
- * char16_ts stored inside the object.
+ * UChars stored inside the object.
  *
  * The minimum object size on a 64-bit machine would be
  * 4 * sizeof(pointer) = 4 * 8 = 32 bytes,
- * and the internal buffer would hold up to 11 char16_ts in that case.
+ * and the internal buffer would hold up to 11 UChars in that case.
  *
  * @see U16_MAX_LENGTH
  * @stable ICU 56
@@ -237,7 +236,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * <p>In ICU, a Unicode string consists of 16-bit Unicode <em>code units</em>.
  * A Unicode character may be stored with either one code unit
  * (the most common case) or with a matched pair of special code units
- * ("surrogates"). The data type for code units is char16_t.
+ * ("surrogates"). The data type for code units is UChar.
  * For single-character handling, a Unicode character code <em>point</em> is a value
  * in the range 0..0x10ffff. ICU uses the UChar32 type for code points.</p>
  *
@@ -253,7 +252,7 @@ class UnicodeStringAppendable;  // unicode/appendable.h
  * than other ICU APIs. In particular:
  * - If indexes are out of bounds for a UnicodeString object
  *   (<0 or >length()) then they are "pinned" to the nearest boundary.
- * - If primitive string pointer values (e.g., const char16_t * or char *)
+ * - If primitive string pointer values (e.g., const UChar * or char *)
  *   for input strings are NULL, then those input string parameters are treated
  *   as if they pointed to an empty string.
  *   However, this is <em>not</em> the case for char * parameters for charset names
@@ -440,7 +439,7 @@ public:
    * in <code>srcChars</code>.
    * @stable ICU 2.0
    */
-  inline int8_t compare(ConstChar16Ptr srcChars,
+  inline int8_t compare(const UChar *srcChars,
          int32_t srcLength) const;
 
   /**
@@ -459,7 +458,7 @@ public:
    */
   inline int8_t compare(int32_t start,
          int32_t length,
-         const char16_t *srcChars) const;
+         const UChar *srcChars) const;
 
   /**
    * Compare the characters bitwise in the range
@@ -480,7 +479,7 @@ public:
    */
   inline int8_t compare(int32_t start,
          int32_t length,
-         const char16_t *srcChars,
+         const UChar *srcChars,
          int32_t srcStart,
          int32_t srcLength) const;
 
@@ -594,7 +593,7 @@ public:
    * in code point order
    * @stable ICU 2.0
    */
-  inline int8_t compareCodePointOrder(ConstChar16Ptr srcChars,
+  inline int8_t compareCodePointOrder(const UChar *srcChars,
                                       int32_t srcLength) const;
 
   /**
@@ -618,7 +617,7 @@ public:
    */
   inline int8_t compareCodePointOrder(int32_t start,
                                       int32_t length,
-                                      const char16_t *srcChars) const;
+                                      const UChar *srcChars) const;
 
   /**
    * Compare two Unicode strings in code point order.
@@ -643,7 +642,7 @@ public:
    */
   inline int8_t compareCodePointOrder(int32_t start,
                                       int32_t length,
-                                      const char16_t *srcChars,
+                                      const UChar *srcChars,
                                       int32_t srcStart,
                                       int32_t srcLength) const;
 
@@ -767,7 +766,7 @@ public:
    * @return A negative, zero, or positive integer indicating the comparison result.
    * @stable ICU 2.0
    */
-  inline int8_t caseCompare(ConstChar16Ptr srcChars,
+  inline int8_t caseCompare(const UChar *srcChars,
          int32_t srcLength,
          uint32_t options) const;
 
@@ -793,7 +792,7 @@ public:
    */
   inline int8_t caseCompare(int32_t start,
          int32_t length,
-         const char16_t *srcChars,
+         const UChar *srcChars,
          uint32_t options) const;
 
   /**
@@ -820,7 +819,7 @@ public:
    */
   inline int8_t caseCompare(int32_t start,
          int32_t length,
-         const char16_t *srcChars,
+         const UChar *srcChars,
          int32_t srcStart,
          int32_t srcLength,
          uint32_t options) const;
@@ -885,7 +884,7 @@ public:
    * FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool startsWith(ConstChar16Ptr srcChars,
+  inline UBool startsWith(const UChar *srcChars,
             int32_t srcLength) const;
 
   /**
@@ -897,7 +896,7 @@ public:
    * @return TRUE if this ends with the characters in <TT>srcChars</TT>, FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool startsWith(const char16_t *srcChars,
+  inline UBool startsWith(const UChar *srcChars,
             int32_t srcStart,
             int32_t srcLength) const;
 
@@ -932,7 +931,7 @@ public:
    * FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool endsWith(ConstChar16Ptr srcChars,
+  inline UBool endsWith(const UChar *srcChars,
           int32_t srcLength) const;
 
   /**
@@ -945,7 +944,7 @@ public:
    * FALSE otherwise
    * @stable ICU 2.0
    */
-  inline UBool endsWith(const char16_t *srcChars,
+  inline UBool endsWith(const UChar *srcChars,
           int32_t srcStart,
           int32_t srcLength) const;
 
@@ -1022,7 +1021,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(const char16_t *srcChars,
+  inline int32_t indexOf(const UChar *srcChars,
               int32_t srcLength,
               int32_t start) const;
 
@@ -1038,7 +1037,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(ConstChar16Ptr srcChars,
+  inline int32_t indexOf(const UChar *srcChars,
               int32_t srcLength,
               int32_t start,
               int32_t length) const;
@@ -1059,7 +1058,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  int32_t indexOf(const char16_t *srcChars,
+  int32_t indexOf(const UChar *srcChars,
               int32_t srcStart,
               int32_t srcLength,
               int32_t start,
@@ -1072,7 +1071,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(char16_t c) const;
+  inline int32_t indexOf(UChar c) const;
 
   /**
    * Locate in this the first occurrence of the code point <TT>c</TT>,
@@ -1092,7 +1091,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(char16_t c,
+  inline int32_t indexOf(UChar c,
               int32_t start) const;
 
   /**
@@ -1117,7 +1116,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t indexOf(char16_t c,
+  inline int32_t indexOf(UChar c,
               int32_t start,
               int32_t length) const;
 
@@ -1205,7 +1204,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(const char16_t *srcChars,
+  inline int32_t lastIndexOf(const UChar *srcChars,
               int32_t srcLength,
               int32_t start) const;
 
@@ -1221,7 +1220,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(ConstChar16Ptr srcChars,
+  inline int32_t lastIndexOf(const UChar *srcChars,
               int32_t srcLength,
               int32_t start,
               int32_t length) const;
@@ -1242,7 +1241,7 @@ public:
    * or -1 if not found.
    * @stable ICU 2.0
    */
-  int32_t lastIndexOf(const char16_t *srcChars,
+  int32_t lastIndexOf(const UChar *srcChars,
               int32_t srcStart,
               int32_t srcLength,
               int32_t start,
@@ -1255,7 +1254,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(char16_t c) const;
+  inline int32_t lastIndexOf(UChar c) const;
 
   /**
    * Locate in this the last occurrence of the code point <TT>c</TT>,
@@ -1275,7 +1274,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(char16_t c,
+  inline int32_t lastIndexOf(UChar c,
               int32_t start) const;
 
   /**
@@ -1300,7 +1299,7 @@ public:
    * @return The offset into this of <TT>c</TT>, or -1 if not found.
    * @stable ICU 2.0
    */
-  inline int32_t lastIndexOf(char16_t c,
+  inline int32_t lastIndexOf(UChar c,
               int32_t start,
               int32_t length) const;
 
@@ -1330,7 +1329,7 @@ public:
    *         or 0xffff if the offset is not valid for this string
    * @stable ICU 2.0
    */
-  inline char16_t charAt(int32_t offset) const;
+  inline UChar charAt(int32_t offset) const;
 
   /**
    * Return the code unit at offset <tt>offset</tt>.
@@ -1339,7 +1338,7 @@ public:
    * @return the code unit at offset <tt>offset</tt>
    * @stable ICU 2.0
    */
-  inline char16_t operator[] (int32_t offset) const;
+  inline UChar operator[] (int32_t offset) const;
 
   /**
    * Return the code point that contains the code unit
@@ -1460,7 +1459,7 @@ public:
    */
   inline void extract(int32_t start,
            int32_t length,
-           Char16Ptr dst,
+           UChar *dst,
            int32_t dstStart = 0) const;
 
   /**
@@ -1479,13 +1478,13 @@ public:
    * then extract() will not copy the contents.
    *
    * @param dest Destination string buffer.
-   * @param destCapacity Number of char16_ts available at dest.
+   * @param destCapacity Number of UChars available at dest.
    * @param errorCode ICU error code.
    * @return length()
    * @stable ICU 2.0
    */
   int32_t
-  extract(Char16Ptr dest, int32_t destCapacity,
+  extract(UChar *dest, int32_t destCapacity,
           UErrorCode &errorCode) const;
 
   /**
@@ -1515,7 +1514,7 @@ public:
    */
   inline void extractBetween(int32_t start,
               int32_t limit,
-              char16_t *dst,
+              UChar *dst,
               int32_t dstStart = 0) const;
 
   /**
@@ -1716,6 +1715,8 @@ public:
    */
   void toUTF8(ByteSink &sink) const;
 
+#if U_HAVE_STD_STRING
+
   /**
    * Convert the UnicodeString to UTF-8 and append the result
    * to a standard string.
@@ -1735,6 +1736,8 @@ public:
     return result;
   }
 
+#endif
+
   /**
    * Convert the UnicodeString to UTF-32.
    * Unpaired surrogates are replaced with U+FFFD.
@@ -1756,7 +1759,7 @@ public:
 
   /**
    * Return the length of the UnicodeString object.
-   * The length is the number of char16_t code units are in the UnicodeString.
+   * The length is the number of UChar code units are in the UnicodeString.
    * If you want the number of code points, please use countChar32().
    * @return the length of the UnicodeString object
    * @see countChar32
@@ -1765,14 +1768,14 @@ public:
   inline int32_t length(void) const;
 
   /**
-   * Count Unicode code points in the length char16_t code units of the string.
-   * A code point may occupy either one or two char16_t code units.
+   * Count Unicode code points in the length UChar code units of the string.
+   * A code point may occupy either one or two UChar code units.
    * Counting code points involves reading all code units.
    *
    * This functions is basically the inverse of moveIndex32().
    *
    * @param start the index of the first code unit to check
-   * @param length the number of char16_t code units to check
+   * @param length the number of UChar code units to check
    * @return the number of code points in the specified code units
    * @see length
    * @stable ICU 2.0
@@ -1781,7 +1784,7 @@ public:
   countChar32(int32_t start=0, int32_t length=INT32_MAX) const;
 
   /**
-   * Check if the length char16_t code units of the string
+   * Check if the length UChar code units of the string
    * contain more Unicode code points than a certain number.
    * This is more efficient than counting all code points in this part of the string
    * and comparing that number with a threshold.
@@ -1789,10 +1792,10 @@ public:
    * falls within a certain range, and
    * never needs to count more than 'number+1' code points.
    * Logically equivalent to (countChar32(start, length)>number).
-   * A Unicode code point may occupy either one or two char16_t code units.
+   * A Unicode code point may occupy either one or two UChar code units.
    *
    * @param start the index of the first code unit to check (0 for the entire string)
-   * @param length the number of char16_t code units to check
+   * @param length the number of UChar code units to check
    *               (use INT32_MAX for the entire string; remember that start/length
    *                values are pinned)
    * @param number The number of code points in the (sub)string is compared against
@@ -1818,7 +1821,7 @@ public:
    * This is useful together with the getBuffer functions.
    * See there for details.
    *
-   * @return the number of char16_ts available in the internal buffer
+   * @return the number of UChars available in the internal buffer
    * @see getBuffer
    * @stable ICU 2.0
    */
@@ -1952,7 +1955,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& operator= (char16_t ch);
+  inline UnicodeString& operator= (UChar ch);
 
   /**
    * Assignment operator.  Replace the characters in this UnicodeString
@@ -2012,7 +2015,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& setTo(const char16_t *srcChars,
+  inline UnicodeString& setTo(const UChar *srcChars,
                int32_t srcLength);
 
   /**
@@ -2023,7 +2026,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  UnicodeString& setTo(char16_t srcChar);
+  UnicodeString& setTo(UChar srcChar);
 
   /**
    * Set the characters in the UnicodeString object to the code point
@@ -2036,7 +2039,7 @@ public:
   UnicodeString& setTo(UChar32 srcChar);
 
   /**
-   * Aliasing setTo() function, analogous to the readonly-aliasing char16_t* constructor.
+   * Aliasing setTo() function, analogous to the readonly-aliasing UChar* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has copy-on-write semantics:
@@ -2059,11 +2062,11 @@ public:
    * @stable ICU 2.0
    */
   UnicodeString &setTo(UBool isTerminated,
-                       ConstChar16Ptr text,
+                       const UChar *text,
                        int32_t textLength);
 
   /**
-   * Aliasing setTo() function, analogous to the writable-aliasing char16_t* constructor.
+   * Aliasing setTo() function, analogous to the writable-aliasing UChar* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has write-through semantics:
@@ -2072,16 +2075,16 @@ public:
    * a new buffer will be allocated and the contents copied as with regularly
    * constructed strings.
    * In an assignment to another UnicodeString, the buffer will be copied.
-   * The extract(Char16Ptr dst) function detects whether the dst pointer is the same
+   * The extract(UChar *dst) function detects whether the dst pointer is the same
    * as the string buffer itself and will in this case not copy the contents.
    *
    * @param buffer The characters to alias for the UnicodeString.
    * @param buffLength The number of Unicode characters in <code>buffer</code> to alias.
-   * @param buffCapacity The size of <code>buffer</code> in char16_ts.
+   * @param buffCapacity The size of <code>buffer</code> in UChars.
    * @return a reference to this
    * @stable ICU 2.0
    */
-  UnicodeString &setTo(char16_t *buffer,
+  UnicodeString &setTo(UChar *buffer,
                        int32_t buffLength,
                        int32_t buffCapacity);
 
@@ -2117,7 +2120,7 @@ public:
    *   s.truncate(0);        // set to an empty string (complete truncation), or
    *   s=UnicodeString();    // assign an empty string, or
    *   s.setTo((UChar32)-1); // set to a pseudo code point that is out of range, or
-   *   static const char16_t nul=0;
+   *   static const UChar nul=0;
    *   s.setTo(&nul, 0);     // set to an empty C Unicode string
    * }
    * \endcode
@@ -2135,7 +2138,7 @@ public:
    * @stable ICU 2.0
    */
   UnicodeString& setCharAt(int32_t offset,
-               char16_t ch);
+               UChar ch);
 
 
   /* Append operations */
@@ -2147,7 +2150,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
- inline  UnicodeString& operator+= (char16_t ch);
+ inline  UnicodeString& operator+= (UChar ch);
 
   /**
    * Append operator. Append the code point <TT>ch</TT> to the UnicodeString
@@ -2207,7 +2210,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& append(const char16_t *srcChars,
+  inline UnicodeString& append(const UChar *srcChars,
             int32_t srcStart,
             int32_t srcLength);
 
@@ -2220,7 +2223,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& append(ConstChar16Ptr srcChars,
+  inline UnicodeString& append(const UChar *srcChars,
             int32_t srcLength);
 
   /**
@@ -2229,7 +2232,7 @@ public:
    * @return a reference to this
    * @stable ICU 2.0
    */
-  inline UnicodeString& append(char16_t srcChar);
+  inline UnicodeString& append(UChar srcChar);
 
   /**
    * Append the code point <TT>srcChar</TT> to the UnicodeString object.
@@ -2285,7 +2288,7 @@ public:
    * @stable ICU 2.0
    */
   inline UnicodeString& insert(int32_t start,
-            const char16_t *srcChars,
+            const UChar *srcChars,
             int32_t srcStart,
             int32_t srcLength);
 
@@ -2299,7 +2302,7 @@ public:
    * @stable ICU 2.0
    */
   inline UnicodeString& insert(int32_t start,
-            ConstChar16Ptr srcChars,
+            const UChar *srcChars,
             int32_t srcLength);
 
   /**
@@ -2311,7 +2314,7 @@ public:
    * @stable ICU 2.0
    */
   inline UnicodeString& insert(int32_t start,
-            char16_t srcChar);
+            UChar srcChar);
 
   /**
    * Insert the code point <TT>srcChar</TT> into the UnicodeString object at
@@ -2385,7 +2388,7 @@ public:
    */
   UnicodeString& replace(int32_t start,
              int32_t length,
-             const char16_t *srcChars,
+             const UChar *srcChars,
              int32_t srcStart,
              int32_t srcLength);
 
@@ -2403,7 +2406,7 @@ public:
    */
   inline UnicodeString& replace(int32_t start,
              int32_t length,
-             ConstChar16Ptr srcChars,
+             const UChar *srcChars,
              int32_t srcLength);
 
   /**
@@ -2419,7 +2422,7 @@ public:
    */
   inline UnicodeString& replace(int32_t start,
              int32_t length,
-             char16_t srcChar);
+             UChar srcChar);
 
   /**
    * Replace the characters in the range
@@ -2617,7 +2620,7 @@ public:
    * @stable ICU 2.0
    */
   UBool padLeading(int32_t targetLength,
-                    char16_t padChar = 0x0020);
+                    UChar padChar = 0x0020);
 
   /**
    * Pad the end of this UnicodeString with the character <TT>padChar</TT>.
@@ -2631,7 +2634,7 @@ public:
    * @stable ICU 2.0
    */
   UBool padTrailing(int32_t targetLength,
-                     char16_t padChar = 0x0020);
+                     UChar padChar = 0x0020);
 
   /**
    * Truncate this UnicodeString to the <TT>targetLength</TT>.
@@ -2818,7 +2821,7 @@ public:
 
   /**
    * Get a read/write pointer to the internal buffer.
-   * The buffer is guaranteed to be large enough for at least minCapacity char16_ts,
+   * The buffer is guaranteed to be large enough for at least minCapacity UChars,
    * writable, and is still owned by the UnicodeString object.
    * Calls to getBuffer(minCapacity) must not be nested, and
    * must be matched with calls to releaseBuffer(newLength).
@@ -2849,17 +2852,17 @@ public:
    * - You must call releaseBuffer(newLength) before and in order to
    *   return to normal UnicodeString operation.
    *
-   * @param minCapacity the minimum number of char16_ts that are to be available
+   * @param minCapacity the minimum number of UChars that are to be available
    *        in the buffer, starting at the returned pointer;
    *        default to the current string capacity if minCapacity==-1
    * @return a writable pointer to the internal string buffer,
-   *         or nullptr if an error occurs (nested calls, out of memory)
+   *         or 0 if an error occurs (nested calls, out of memory)
    *
    * @see releaseBuffer
    * @see getTerminatedBuffer()
    * @stable ICU 2.0
    */
-  char16_t *getBuffer(int32_t minCapacity);
+  UChar *getBuffer(int32_t minCapacity);
 
   /**
    * Release a read/write buffer on a UnicodeString object with an
@@ -2907,13 +2910,13 @@ public:
    * be modified.
    *
    * @return a read-only pointer to the internal string buffer,
-   *         or nullptr if the string is empty or bogus
+   *         or 0 if the string is empty or bogus
    *
    * @see getBuffer(int32_t minCapacity)
    * @see getTerminatedBuffer()
    * @stable ICU 2.0
    */
-  inline const char16_t *getBuffer() const;
+  inline const UChar *getBuffer() const;
 
   /**
    * Get a read-only pointer to the internal buffer,
@@ -2948,7 +2951,7 @@ public:
    * @see getBuffer()
    * @stable ICU 2.2
    */
-  const char16_t *getTerminatedBuffer();
+  const UChar *getTerminatedBuffer();
 
   //========================================
   // Constructors
@@ -2960,8 +2963,8 @@ public:
   inline UnicodeString();
 
   /**
-   * Construct a UnicodeString with capacity to hold <TT>capacity</TT> char16_ts
-   * @param capacity the number of char16_ts this UnicodeString should hold
+   * Construct a UnicodeString with capacity to hold <TT>capacity</TT> UChars
+   * @param capacity the number of UChars this UnicodeString should hold
    * before a resize is necessary; if count is greater than 0 and count
    * code points c take up more space than capacity, then capacity is adjusted
    * accordingly.
@@ -2973,7 +2976,7 @@ public:
   UnicodeString(int32_t capacity, UChar32 c, int32_t count);
 
   /**
-   * Single char16_t (code unit) constructor.
+   * Single UChar (code unit) constructor.
    *
    * It is recommended to mark this constructor "explicit" by
    * <code>-DUNISTR_FROM_CHAR_EXPLICIT=explicit</code>
@@ -2981,7 +2984,7 @@ public:
    * @param ch the character to place in the UnicodeString
    * @stable ICU 2.0
    */
-  UNISTR_FROM_CHAR_EXPLICIT UnicodeString(char16_t ch);
+  UNISTR_FROM_CHAR_EXPLICIT UnicodeString(UChar ch);
 
   /**
    * Single UChar32 (code point) constructor.
@@ -2995,7 +2998,7 @@ public:
   UNISTR_FROM_CHAR_EXPLICIT UnicodeString(UChar32 ch);
 
   /**
-   * char16_t* constructor.
+   * UChar* constructor.
    *
    * It is recommended to mark this constructor "explicit" by
    * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
@@ -3004,121 +3007,20 @@ public:
    * must be NULL (U+0000) terminated.
    * @stable ICU 2.0
    */
-  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const char16_t *text);
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-#if !U_CHAR16_IS_TYPEDEF
-  /**
-   * uint16_t * constructor.
-   * Delegates to UnicodeString(const char16_t *).
-   *
-   * It is recommended to mark this constructor "explicit" by
-   * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
-   * on the compiler command line or similar.
-   * @param text NUL-terminated UTF-16 string
-   * @draft ICU 59
-   */
-  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const uint16_t *text) :
-      UnicodeString(ConstChar16Ptr(text)) {}
-#endif
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-#if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN)
-  /**
-   * wchar_t * constructor.
-   * (Only defined if U_SIZEOF_WCHAR_T==2.)
-   * Delegates to UnicodeString(const char16_t *).
-   *
-   * It is recommended to mark this constructor "explicit" by
-   * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
-   * on the compiler command line or similar.
-   * @param text NUL-terminated UTF-16 string
-   * @draft ICU 59
-   */
-  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const wchar_t *text) :
-      UnicodeString(ConstChar16Ptr(text)) {}
-#endif
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-  /**
-   * nullptr_t constructor.
-   * Effectively the same as the default constructor, makes an empty string object.
-   *
-   * It is recommended to mark this constructor "explicit" by
-   * <code>-DUNISTR_FROM_STRING_EXPLICIT=explicit</code>
-   * on the compiler command line or similar.
-   * @param text nullptr
-   * @draft ICU 59
-   */
-  UNISTR_FROM_STRING_EXPLICIT inline UnicodeString(const std::nullptr_t text);
+  UNISTR_FROM_STRING_EXPLICIT UnicodeString(const UChar *text);
 
   /**
-   * char16_t* constructor.
+   * UChar* constructor.
    * @param text The characters to place in the UnicodeString.
    * @param textLength The number of Unicode characters in <TT>text</TT>
    * to copy.
    * @stable ICU 2.0
    */
-  UnicodeString(const char16_t *text,
+  UnicodeString(const UChar *text,
         int32_t textLength);
 
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-#if !U_CHAR16_IS_TYPEDEF
   /**
-   * uint16_t * constructor.
-   * Delegates to UnicodeString(const char16_t *, int32_t).
-   * @param text UTF-16 string
-   * @param length string length
-   * @draft ICU 59
-   */
-  UnicodeString(const uint16_t *text, int32_t length) :
-      UnicodeString(ConstChar16Ptr(text), length) {}
-#endif
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-#if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN)
-  /**
-   * wchar_t * constructor.
-   * (Only defined if U_SIZEOF_WCHAR_T==2.)
-   * Delegates to UnicodeString(const char16_t *, int32_t).
-   * @param text NUL-terminated UTF-16 string
-   * @param length string length
-   * @draft ICU 59
-   */
-  UnicodeString(const wchar_t *text, int32_t length) :
-      UnicodeString(ConstChar16Ptr(text), length) {}
-#endif
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-  /**
-   * nullptr_t constructor.
-   * Effectively the same as the default constructor, makes an empty string object.
-   * @param text nullptr
-   * @param length ignored
-   * @draft ICU 59
-   */
-  inline UnicodeString(const std::nullptr_t text, int32_t length);
-
-  /**
-   * Readonly-aliasing char16_t* constructor.
+   * Readonly-aliasing UChar* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has copy-on-write semantics:
@@ -3140,11 +3042,11 @@ public:
    * @stable ICU 2.0
    */
   UnicodeString(UBool isTerminated,
-                ConstChar16Ptr text,
+                const UChar *text,
                 int32_t textLength);
 
   /**
-   * Writable-aliasing char16_t* constructor.
+   * Writable-aliasing UChar* constructor.
    * The text will be used for the UnicodeString object, but
    * it will not be released when the UnicodeString is destroyed.
    * This has write-through semantics:
@@ -3153,64 +3055,15 @@ public:
    * a new buffer will be allocated and the contents copied as with regularly
    * constructed strings.
    * In an assignment to another UnicodeString, the buffer will be copied.
-   * The extract(Char16Ptr dst) function detects whether the dst pointer is the same
+   * The extract(UChar *dst) function detects whether the dst pointer is the same
    * as the string buffer itself and will in this case not copy the contents.
    *
    * @param buffer The characters to alias for the UnicodeString.
    * @param buffLength The number of Unicode characters in <code>buffer</code> to alias.
-   * @param buffCapacity The size of <code>buffer</code> in char16_ts.
+   * @param buffCapacity The size of <code>buffer</code> in UChars.
    * @stable ICU 2.0
    */
-  UnicodeString(char16_t *buffer, int32_t buffLength, int32_t buffCapacity);
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-#if !U_CHAR16_IS_TYPEDEF
-  /**
-   * Writable-aliasing uint16_t * constructor.
-   * Delegates to UnicodeString(const char16_t *, int32_t, int32_t).
-   * @param buffer writable buffer of/for UTF-16 text
-   * @param buffLength length of the current buffer contents
-   * @param buffCapacity buffer capacity
-   * @draft ICU 59
-   */
-  UnicodeString(uint16_t *buffer, int32_t buffLength, int32_t buffCapacity) :
-      UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {}
-#endif
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-#if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN)
-  /**
-   * Writable-aliasing wchar_t * constructor.
-   * (Only defined if U_SIZEOF_WCHAR_T==2.)
-   * Delegates to UnicodeString(const char16_t *, int32_t, int32_t).
-   * @param buffer writable buffer of/for UTF-16 text
-   * @param buffLength length of the current buffer contents
-   * @param buffCapacity buffer capacity
-   * @draft ICU 59
-   */
-  UnicodeString(wchar_t *buffer, int32_t buffLength, int32_t buffCapacity) :
-      UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {}
-#endif
-
-  /*
-   * Do not use #ifndef U_HIDE_DRAFT_API for the following constructor,
-   * it should always be available regardless of U_HIDE_DRAFT_API status
-   */
-  /**
-   * Writable-aliasing nullptr_t constructor.
-   * Effectively the same as the default constructor, makes an empty string object.
-   * @param buffer nullptr
-   * @param buffLength ignored
-   * @param buffCapacity ignored
-   * @draft ICU 59
-   */
-  inline UnicodeString(std::nullptr_t buffer, int32_t buffLength, int32_t buffCapacity);
+  UnicodeString(UChar *buffer, int32_t buffLength, int32_t buffCapacity);
 
 #if U_CHARSET_IS_UTF8 || !UCONFIG_NO_CONVERSION
 
@@ -3527,7 +3380,7 @@ protected:
    * UnicodeString::charAt() to be inline again (see jitterbug 709).
    * @stable ICU 2.4
    */
-  virtual char16_t getCharAt(int32_t offset) const;
+  virtual UChar getCharAt(int32_t offset) const;
 
   /**
    * The change in Replaceable to use virtual getChar32At() allows
@@ -3563,7 +3416,7 @@ private:
 
   int8_t doCompare(int32_t start,
            int32_t length,
-           const char16_t *srcChars,
+           const UChar *srcChars,
            int32_t srcStart,
            int32_t srcLength) const;
 
@@ -3576,7 +3429,7 @@ private:
 
   int8_t doCompareCodePointOrder(int32_t start,
                                  int32_t length,
-                                 const char16_t *srcChars,
+                                 const UChar *srcChars,
                                  int32_t srcStart,
                                  int32_t srcLength) const;
 
@@ -3591,12 +3444,12 @@ private:
   int8_t
   doCaseCompare(int32_t start,
                 int32_t length,
-                const char16_t *srcChars,
+                const UChar *srcChars,
                 int32_t srcStart,
                 int32_t srcLength,
                 uint32_t options) const;
 
-  int32_t doIndexOf(char16_t c,
+  int32_t doIndexOf(UChar c,
             int32_t start,
             int32_t length) const;
 
@@ -3604,7 +3457,7 @@ private:
                         int32_t start,
                         int32_t length) const;
 
-  int32_t doLastIndexOf(char16_t c,
+  int32_t doLastIndexOf(UChar c,
                 int32_t start,
                 int32_t length) const;
 
@@ -3614,14 +3467,14 @@ private:
 
   void doExtract(int32_t start,
          int32_t length,
-         char16_t *dst,
+         UChar *dst,
          int32_t dstStart) const;
 
   inline void doExtract(int32_t start,
          int32_t length,
          UnicodeString& target) const;
 
-  inline char16_t doCharAt(int32_t offset)  const;
+  inline UChar doCharAt(int32_t offset)  const;
 
   UnicodeString& doReplace(int32_t start,
                int32_t length,
@@ -3631,12 +3484,12 @@ private:
 
   UnicodeString& doReplace(int32_t start,
                int32_t length,
-               const char16_t *srcChars,
+               const UChar *srcChars,
                int32_t srcStart,
                int32_t srcLength);
 
   UnicodeString& doAppend(const UnicodeString& src, int32_t srcStart, int32_t srcLength);
-  UnicodeString& doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcLength);
+  UnicodeString& doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLength);
 
   UnicodeString& doReverse(int32_t start,
                int32_t length);
@@ -3646,8 +3499,8 @@ private:
 
   // get pointer to start of array
   // these do not check for kOpenGetBuffer, unlike the public getBuffer() function
-  inline char16_t* getArrayStart(void);
-  inline const char16_t* getArrayStart(void) const;
+  inline UChar* getArrayStart(void);
+  inline const UChar* getArrayStart(void) const;
 
   inline UBool hasShortLength() const;
   inline int32_t getShortLength() const;
@@ -3664,7 +3517,7 @@ private:
   inline void setShortLength(int32_t len);
   inline void setLength(int32_t len);
   inline void setToEmpty();
-  inline void setArray(char16_t *array, int32_t len, int32_t capacity); // sets length but not flags
+  inline void setArray(UChar *array, int32_t len, int32_t capacity); // sets length but not flags
 
   // allocate the array; result may be the stack buffer
   // sets refCount to 1 if appropriate
@@ -3747,11 +3600,7 @@ private:
    * as in ustr_imp.h for ustrcase_map().
    */
   UnicodeString &
-  caseMap(int32_t caseLocale, uint32_t options,
-#if !UCONFIG_NO_BREAK_ITERATION
-          BreakIterator *iter,
-#endif
-          UStringCaseMapper *stringCaseMapper);
+  caseMap(const UCaseMap *csm, UStringCaseMapper *stringCaseMapper);
 
   // ref counting
   void addRef(void);
@@ -3842,15 +3691,15 @@ private:
     // Each struct of the union must begin with fLengthAndFlags.
     struct {
       int16_t fLengthAndFlags;          // bit fields: see constants above
-      char16_t fBuffer[US_STACKBUF_SIZE];  // buffer for short strings
+      UChar fBuffer[US_STACKBUF_SIZE];  // buffer for short strings
     } fStackFields;
     struct {
       int16_t fLengthAndFlags;          // bit fields: see constants above
       int32_t fLength;    // number of characters in fArray if >127; else undefined
-      int32_t fCapacity;  // capacity of fArray (in char16_ts)
+      int32_t fCapacity;  // capacity of fArray (in UChars)
       // array pointer last to minimize padding for machines with P128 data model
       // or pointer sizes that are not a power of 2
-      char16_t   *fArray;    // the Unicode data
+      UChar   *fArray;    // the Unicode data
     } fFields;
   } fUnion;
 };
@@ -3903,13 +3752,13 @@ UnicodeString::pinIndices(int32_t& start,
   }
 }
 
-inline char16_t*
+inline UChar*
 UnicodeString::getArrayStart() {
   return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
     fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
 }
 
-inline const char16_t*
+inline const UChar*
 UnicodeString::getArrayStart() const {
   return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
     fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
@@ -3924,18 +3773,6 @@ UnicodeString::UnicodeString() {
   fUnion.fStackFields.fLengthAndFlags=kShortString;
 }
 
-inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/) {
-  fUnion.fStackFields.fLengthAndFlags=kShortString;
-}
-
-inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/, int32_t /*length*/) {
-  fUnion.fStackFields.fLengthAndFlags=kShortString;
-}
-
-inline UnicodeString::UnicodeString(std::nullptr_t /*buffer*/, int32_t /*buffLength*/, int32_t /*buffCapacity*/) {
-  fUnion.fStackFields.fLengthAndFlags=kShortString;
-}
-
 //========================================
 // Read-only implementation methods
 //========================================
@@ -3982,10 +3819,10 @@ UnicodeString::isBufferWritable() const
       (!(fUnion.fFields.fLengthAndFlags&kRefCounted) || refCount()==1));
 }
 
-inline const char16_t *
+inline const UChar *
 UnicodeString::getBuffer() const {
   if(fUnion.fFields.fLengthAndFlags&(kIsBogus|kOpenGetBuffer)) {
-    return nullptr;
+    return 0;
   } else if(fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) {
     return fUnion.fStackFields.fBuffer;
   } else {
@@ -4053,7 +3890,7 @@ UnicodeString::compare(int32_t start,
 { return doCompare(start, _length, srcText, 0, srcText.length()); }
 
 inline int8_t
-UnicodeString::compare(ConstChar16Ptr srcChars,
+UnicodeString::compare(const UChar *srcChars,
                int32_t srcLength) const
 { return doCompare(0, length(), srcChars, 0, srcLength); }
 
@@ -4068,13 +3905,13 @@ UnicodeString::compare(int32_t start,
 inline int8_t
 UnicodeString::compare(int32_t start,
                int32_t _length,
-               const char16_t *srcChars) const
+               const UChar *srcChars) const
 { return doCompare(start, _length, srcChars, 0, _length); }
 
 inline int8_t
 UnicodeString::compare(int32_t start,
                int32_t _length,
-               const char16_t *srcChars,
+               const UChar *srcChars,
                int32_t srcStart,
                int32_t srcLength) const
 { return doCompare(start, _length, srcChars, srcStart, srcLength); }
@@ -4114,7 +3951,7 @@ UnicodeString::compareCodePointOrder(int32_t start,
 { return doCompareCodePointOrder(start, _length, srcText, 0, srcText.length()); }
 
 inline int8_t
-UnicodeString::compareCodePointOrder(ConstChar16Ptr srcChars,
+UnicodeString::compareCodePointOrder(const UChar *srcChars,
                                      int32_t srcLength) const
 { return doCompareCodePointOrder(0, length(), srcChars, 0, srcLength); }
 
@@ -4129,13 +3966,13 @@ UnicodeString::compareCodePointOrder(int32_t start,
 inline int8_t
 UnicodeString::compareCodePointOrder(int32_t start,
                                      int32_t _length,
-                                     const char16_t *srcChars) const
+                                     const UChar *srcChars) const
 { return doCompareCodePointOrder(start, _length, srcChars, 0, _length); }
 
 inline int8_t
 UnicodeString::compareCodePointOrder(int32_t start,
                                      int32_t _length,
-                                     const char16_t *srcChars,
+                                     const UChar *srcChars,
                                      int32_t srcStart,
                                      int32_t srcLength) const
 { return doCompareCodePointOrder(start, _length, srcChars, srcStart, srcLength); }
@@ -4179,7 +4016,7 @@ UnicodeString::caseCompare(int32_t start,
 }
 
 inline int8_t
-UnicodeString::caseCompare(ConstChar16Ptr srcChars,
+UnicodeString::caseCompare(const UChar *srcChars,
                            int32_t srcLength,
                            uint32_t options) const {
   return doCaseCompare(0, length(), srcChars, 0, srcLength, options);
@@ -4198,7 +4035,7 @@ UnicodeString::caseCompare(int32_t start,
 inline int8_t
 UnicodeString::caseCompare(int32_t start,
                            int32_t _length,
-                           const char16_t *srcChars,
+                           const UChar *srcChars,
                            uint32_t options) const {
   return doCaseCompare(start, _length, srcChars, 0, _length, options);
 }
@@ -4206,7 +4043,7 @@ UnicodeString::caseCompare(int32_t start,
 inline int8_t
 UnicodeString::caseCompare(int32_t start,
                            int32_t _length,
-                           const char16_t *srcChars,
+                           const UChar *srcChars,
                            int32_t srcStart,
                            int32_t srcLength,
                            uint32_t options) const {
@@ -4257,7 +4094,7 @@ UnicodeString::indexOf(const UnicodeString& text,
 { return indexOf(text, 0, text.length(), start, _length); }
 
 inline int32_t
-UnicodeString::indexOf(const char16_t *srcChars,
+UnicodeString::indexOf(const UChar *srcChars,
                int32_t srcLength,
                int32_t start) const {
   pinIndex(start);
@@ -4265,14 +4102,14 @@ UnicodeString::indexOf(const char16_t *srcChars,
 }
 
 inline int32_t
-UnicodeString::indexOf(ConstChar16Ptr srcChars,
+UnicodeString::indexOf(const UChar *srcChars,
                int32_t srcLength,
                int32_t start,
                int32_t _length) const
 { return indexOf(srcChars, 0, srcLength, start, _length); }
 
 inline int32_t
-UnicodeString::indexOf(char16_t c,
+UnicodeString::indexOf(UChar c,
                int32_t start,
                int32_t _length) const
 { return doIndexOf(c, start, _length); }
@@ -4284,7 +4121,7 @@ UnicodeString::indexOf(UChar32 c,
 { return doIndexOf(c, start, _length); }
 
 inline int32_t
-UnicodeString::indexOf(char16_t c) const
+UnicodeString::indexOf(UChar c) const
 { return doIndexOf(c, 0, length()); }
 
 inline int32_t
@@ -4292,7 +4129,7 @@ UnicodeString::indexOf(UChar32 c) const
 { return indexOf(c, 0, length()); }
 
 inline int32_t
-UnicodeString::indexOf(char16_t c,
+UnicodeString::indexOf(UChar c,
                int32_t start) const {
   pinIndex(start);
   return doIndexOf(c, start, length() - start);
@@ -4306,14 +4143,14 @@ UnicodeString::indexOf(UChar32 c,
 }
 
 inline int32_t
-UnicodeString::lastIndexOf(ConstChar16Ptr srcChars,
+UnicodeString::lastIndexOf(const UChar *srcChars,
                int32_t srcLength,
                int32_t start,
                int32_t _length) const
 { return lastIndexOf(srcChars, 0, srcLength, start, _length); }
 
 inline int32_t
-UnicodeString::lastIndexOf(const char16_t *srcChars,
+UnicodeString::lastIndexOf(const UChar *srcChars,
                int32_t srcLength,
                int32_t start) const {
   pinIndex(start);
@@ -4354,7 +4191,7 @@ UnicodeString::lastIndexOf(const UnicodeString& text) const
 { return lastIndexOf(text, 0, text.length(), 0, length()); }
 
 inline int32_t
-UnicodeString::lastIndexOf(char16_t c,
+UnicodeString::lastIndexOf(UChar c,
                int32_t start,
                int32_t _length) const
 { return doLastIndexOf(c, start, _length); }
@@ -4367,7 +4204,7 @@ UnicodeString::lastIndexOf(UChar32 c,
 }
 
 inline int32_t
-UnicodeString::lastIndexOf(char16_t c) const
+UnicodeString::lastIndexOf(UChar c) const
 { return doLastIndexOf(c, 0, length()); }
 
 inline int32_t
@@ -4376,7 +4213,7 @@ UnicodeString::lastIndexOf(UChar32 c) const {
 }
 
 inline int32_t
-UnicodeString::lastIndexOf(char16_t c,
+UnicodeString::lastIndexOf(UChar c,
                int32_t start) const {
   pinIndex(start);
   return doLastIndexOf(c, start, length() - start);
@@ -4400,17 +4237,17 @@ UnicodeString::startsWith(const UnicodeString& srcText,
 { return doCompare(0, srcLength, srcText, srcStart, srcLength) == 0; }
 
 inline UBool
-UnicodeString::startsWith(ConstChar16Ptr srcChars, int32_t srcLength) const {
+UnicodeString::startsWith(const UChar *srcChars, int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(toUCharPtr(srcChars));
+    srcLength = u_strlen(srcChars);
   }
   return doCompare(0, srcLength, srcChars, 0, srcLength) == 0;
 }
 
 inline UBool
-UnicodeString::startsWith(const char16_t *srcChars, int32_t srcStart, int32_t srcLength) const {
+UnicodeString::startsWith(const UChar *srcChars, int32_t srcStart, int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(toUCharPtr(srcChars));
+    srcLength = u_strlen(srcChars);
   }
   return doCompare(0, srcLength, srcChars, srcStart, srcLength) == 0;
 }
@@ -4430,21 +4267,21 @@ UnicodeString::endsWith(const UnicodeString& srcText,
 }
 
 inline UBool
-UnicodeString::endsWith(ConstChar16Ptr srcChars,
+UnicodeString::endsWith(const UChar *srcChars,
             int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(toUCharPtr(srcChars));
+    srcLength = u_strlen(srcChars);
   }
   return doCompare(length() - srcLength, srcLength,
                    srcChars, 0, srcLength) == 0;
 }
 
 inline UBool
-UnicodeString::endsWith(const char16_t *srcChars,
+UnicodeString::endsWith(const UChar *srcChars,
             int32_t srcStart,
             int32_t srcLength) const {
   if(srcLength < 0) {
-    srcLength = u_strlen(toUCharPtr(srcChars + srcStart));
+    srcLength = u_strlen(srcChars + srcStart);
   }
   return doCompare(length() - srcLength, srcLength,
                    srcChars, srcStart, srcLength) == 0;
@@ -4470,14 +4307,14 @@ UnicodeString::replace(int32_t start,
 inline UnicodeString&
 UnicodeString::replace(int32_t start,
                int32_t _length,
-               ConstChar16Ptr srcChars,
+               const UChar *srcChars,
                int32_t srcLength)
 { return doReplace(start, _length, srcChars, 0, srcLength); }
 
 inline UnicodeString&
 UnicodeString::replace(int32_t start,
                int32_t _length,
-               const char16_t *srcChars,
+               const UChar *srcChars,
                int32_t srcStart,
                int32_t srcLength)
 { return doReplace(start, _length, srcChars, srcStart, srcLength); }
@@ -4485,7 +4322,7 @@ UnicodeString::replace(int32_t start,
 inline UnicodeString&
 UnicodeString::replace(int32_t start,
                int32_t _length,
-               char16_t srcChar)
+               UChar srcChar)
 { return doReplace(start, _length, &srcChar, 0, 1); }
 
 inline UnicodeString&
@@ -4528,7 +4365,7 @@ UnicodeString::doExtract(int32_t start,
 inline void
 UnicodeString::extract(int32_t start,
                int32_t _length,
-               Char16Ptr target,
+               UChar *target,
                int32_t targetStart) const
 { doExtract(start, _length, target, targetStart); }
 
@@ -4556,7 +4393,7 @@ UnicodeString::extract(int32_t start,
 inline void
 UnicodeString::extractBetween(int32_t start,
                   int32_t limit,
-                  char16_t *dst,
+                  UChar *dst,
                   int32_t dstStart) const {
   pinIndex(start);
   pinIndex(limit);
@@ -4568,7 +4405,7 @@ UnicodeString::tempSubStringBetween(int32_t start, int32_t limit) const {
     return tempSubString(start, limit - start);
 }
 
-inline char16_t
+inline UChar
 UnicodeString::doCharAt(int32_t offset) const
 {
   if((uint32_t)offset < (uint32_t)length()) {
@@ -4578,11 +4415,11 @@ UnicodeString::doCharAt(int32_t offset) const
   }
 }
 
-inline char16_t
+inline UChar
 UnicodeString::charAt(int32_t offset) const
 { return doCharAt(offset); }
 
-inline char16_t
+inline UChar
 UnicodeString::operator[] (int32_t offset) const
 { return doCharAt(offset); }
 
@@ -4623,14 +4460,14 @@ UnicodeString::setToEmpty() {
 }
 
 inline void
-UnicodeString::setArray(char16_t *array, int32_t len, int32_t capacity) {
+UnicodeString::setArray(UChar *array, int32_t len, int32_t capacity) {
   setLength(len);
   fUnion.fFields.fArray = array;
   fUnion.fFields.fCapacity = capacity;
 }
 
 inline UnicodeString&
-UnicodeString::operator= (char16_t ch)
+UnicodeString::operator= (UChar ch)
 { return doReplace(0, length(), &ch, 0, 1); }
 
 inline UnicodeString&
@@ -4662,7 +4499,7 @@ UnicodeString::setTo(const UnicodeString& srcText)
 }
 
 inline UnicodeString&
-UnicodeString::setTo(const char16_t *srcChars,
+UnicodeString::setTo(const UChar *srcChars,
              int32_t srcLength)
 {
   unBogus();
@@ -4670,7 +4507,7 @@ UnicodeString::setTo(const char16_t *srcChars,
 }
 
 inline UnicodeString&
-UnicodeString::setTo(char16_t srcChar)
+UnicodeString::setTo(UChar srcChar)
 {
   unBogus();
   return doReplace(0, length(), &srcChar, 0, 1);
@@ -4694,22 +4531,22 @@ UnicodeString::append(const UnicodeString& srcText)
 { return doAppend(srcText, 0, srcText.length()); }
 
 inline UnicodeString&
-UnicodeString::append(const char16_t *srcChars,
+UnicodeString::append(const UChar *srcChars,
               int32_t srcStart,
               int32_t srcLength)
 { return doAppend(srcChars, srcStart, srcLength); }
 
 inline UnicodeString&
-UnicodeString::append(ConstChar16Ptr srcChars,
+UnicodeString::append(const UChar *srcChars,
               int32_t srcLength)
 { return doAppend(srcChars, 0, srcLength); }
 
 inline UnicodeString&
-UnicodeString::append(char16_t srcChar)
+UnicodeString::append(UChar srcChar)
 { return doAppend(&srcChar, 0, 1); }
 
 inline UnicodeString&
-UnicodeString::operator+= (char16_t ch)
+UnicodeString::operator+= (UChar ch)
 { return doAppend(&ch, 0, 1); }
 
 inline UnicodeString&
@@ -4735,20 +4572,20 @@ UnicodeString::insert(int32_t start,
 
 inline UnicodeString&
 UnicodeString::insert(int32_t start,
-              const char16_t *srcChars,
+              const UChar *srcChars,
               int32_t srcStart,
               int32_t srcLength)
 { return doReplace(start, 0, srcChars, srcStart, srcLength); }
 
 inline UnicodeString&
 UnicodeString::insert(int32_t start,
-              ConstChar16Ptr srcChars,
+              const UChar *srcChars,
               int32_t srcLength)
 { return doReplace(start, 0, srcChars, 0, srcLength); }
 
 inline UnicodeString&
 UnicodeString::insert(int32_t start,
-              char16_t srcChar)
+              UChar srcChar)
 { return doReplace(start, 0, &srcChar, 0, 1); }
 
 inline UnicodeString&
index 1b5af16..f527c26 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c6d3494..56e99b2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unorm2.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9782f27..ec231ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uobject.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 21c839a..b220a54 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -7,7 +7,7 @@
 *******************************************************************************
 *
 *   file name:  urename.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #define _UTF16BEData U_ICU_ENTRY_POINT_RENAME(_UTF16BEData)
 #define _UTF16Data U_ICU_ENTRY_POINT_RENAME(_UTF16Data)
 #define _UTF16LEData U_ICU_ENTRY_POINT_RENAME(_UTF16LEData)
-#define _UTF16v2Data U_ICU_ENTRY_POINT_RENAME(_UTF16v2Data)
 #define _UTF32BEData U_ICU_ENTRY_POINT_RENAME(_UTF32BEData)
 #define _UTF32Data U_ICU_ENTRY_POINT_RENAME(_UTF32Data)
 #define _UTF32LEData U_ICU_ENTRY_POINT_RENAME(_UTF32LEData)
 #define _UTF7Data U_ICU_ENTRY_POINT_RENAME(_UTF7Data)
 #define _UTF8Data U_ICU_ENTRY_POINT_RENAME(_UTF8Data)
-#define allowedHourFormatsCleanup U_ICU_ENTRY_POINT_RENAME(allowedHourFormatsCleanup)
 #define cmemory_cleanup U_ICU_ENTRY_POINT_RENAME(cmemory_cleanup)
-#define dayPeriodRulesCleanup U_ICU_ENTRY_POINT_RENAME(dayPeriodRulesCleanup)
-#define deleteAllowedHourFormats U_ICU_ENTRY_POINT_RENAME(deleteAllowedHourFormats)
 #define gTimeZoneFilesInitOnce U_ICU_ENTRY_POINT_RENAME(gTimeZoneFilesInitOnce)
 #define izrule_clone U_ICU_ENTRY_POINT_RENAME(izrule_clone)
 #define izrule_close U_ICU_ENTRY_POINT_RENAME(izrule_close)
 #define izrule_getStaticClassID U_ICU_ENTRY_POINT_RENAME(izrule_getStaticClassID)
 #define izrule_isEquivalentTo U_ICU_ENTRY_POINT_RENAME(izrule_isEquivalentTo)
 #define izrule_open U_ICU_ENTRY_POINT_RENAME(izrule_open)
+#define le_close U_ICU_ENTRY_POINT_RENAME(le_close)
+#define le_create U_ICU_ENTRY_POINT_RENAME(le_create)
+#define le_getCharIndices U_ICU_ENTRY_POINT_RENAME(le_getCharIndices)
+#define le_getCharIndicesWithBase U_ICU_ENTRY_POINT_RENAME(le_getCharIndicesWithBase)
+#define le_getGlyphCount U_ICU_ENTRY_POINT_RENAME(le_getGlyphCount)
+#define le_getGlyphPosition U_ICU_ENTRY_POINT_RENAME(le_getGlyphPosition)
+#define le_getGlyphPositions U_ICU_ENTRY_POINT_RENAME(le_getGlyphPositions)
+#define le_getGlyphs U_ICU_ENTRY_POINT_RENAME(le_getGlyphs)
+#define le_layoutChars U_ICU_ENTRY_POINT_RENAME(le_layoutChars)
+#define le_reset U_ICU_ENTRY_POINT_RENAME(le_reset)
 #define locale_getKeywords U_ICU_ENTRY_POINT_RENAME(locale_getKeywords)
 #define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
 #define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
 #define ubrk_first U_ICU_ENTRY_POINT_RENAME(ubrk_first)
 #define ubrk_following U_ICU_ENTRY_POINT_RENAME(ubrk_following)
 #define ubrk_getAvailable U_ICU_ENTRY_POINT_RENAME(ubrk_getAvailable)
-#define ubrk_getBinaryRules U_ICU_ENTRY_POINT_RENAME(ubrk_getBinaryRules)
 #define ubrk_getLocaleByType U_ICU_ENTRY_POINT_RENAME(ubrk_getLocaleByType)
 #define ubrk_getRuleStatus U_ICU_ENTRY_POINT_RENAME(ubrk_getRuleStatus)
 #define ubrk_getRuleStatusVec U_ICU_ENTRY_POINT_RENAME(ubrk_getRuleStatusVec)
 #define ubrk_last U_ICU_ENTRY_POINT_RENAME(ubrk_last)
 #define ubrk_next U_ICU_ENTRY_POINT_RENAME(ubrk_next)
 #define ubrk_open U_ICU_ENTRY_POINT_RENAME(ubrk_open)
-#define ubrk_openBinaryRules U_ICU_ENTRY_POINT_RENAME(ubrk_openBinaryRules)
 #define ubrk_openRules U_ICU_ENTRY_POINT_RENAME(ubrk_openRules)
 #define ubrk_preceding U_ICU_ENTRY_POINT_RENAME(ubrk_preceding)
 #define ubrk_previous U_ICU_ENTRY_POINT_RENAME(ubrk_previous)
 #define ucase_addStringCaseClosure U_ICU_ENTRY_POINT_RENAME(ucase_addStringCaseClosure)
 #define ucase_fold U_ICU_ENTRY_POINT_RENAME(ucase_fold)
 #define ucase_getCaseLocale U_ICU_ENTRY_POINT_RENAME(ucase_getCaseLocale)
+#define ucase_getSingleton U_ICU_ENTRY_POINT_RENAME(ucase_getSingleton)
 #define ucase_getType U_ICU_ENTRY_POINT_RENAME(ucase_getType)
 #define ucase_getTypeOrIgnorable U_ICU_ENTRY_POINT_RENAME(ucase_getTypeOrIgnorable)
 #define ucase_hasBinaryProperty U_ICU_ENTRY_POINT_RENAME(ucase_hasBinaryProperty)
 #define unum_formatDecimal U_ICU_ENTRY_POINT_RENAME(unum_formatDecimal)
 #define unum_formatDouble U_ICU_ENTRY_POINT_RENAME(unum_formatDouble)
 #define unum_formatDoubleCurrency U_ICU_ENTRY_POINT_RENAME(unum_formatDoubleCurrency)
-#define unum_formatDoubleForFields U_ICU_ENTRY_POINT_RENAME(unum_formatDoubleForFields)
 #define unum_formatInt64 U_ICU_ENTRY_POINT_RENAME(unum_formatInt64)
 #define unum_formatUFormattable U_ICU_ENTRY_POINT_RENAME(unum_formatUFormattable)
 #define unum_getAttribute U_ICU_ENTRY_POINT_RENAME(unum_getAttribute)
 #define unumsys_openAvailableNames U_ICU_ENTRY_POINT_RENAME(unumsys_openAvailableNames)
 #define unumsys_openByName U_ICU_ENTRY_POINT_RENAME(unumsys_openByName)
 #define uplrules_close U_ICU_ENTRY_POINT_RENAME(uplrules_close)
-#define uplrules_getKeywords U_ICU_ENTRY_POINT_RENAME(uplrules_getKeywords)
 #define uplrules_open U_ICU_ENTRY_POINT_RENAME(uplrules_open)
 #define uplrules_openForType U_ICU_ENTRY_POINT_RENAME(uplrules_openForType)
 #define uplrules_select U_ICU_ENTRY_POINT_RENAME(uplrules_select)
-#define uplrules_selectWithFormat U_ICU_ENTRY_POINT_RENAME(uplrules_selectWithFormat)
 #define uplug_closeLibrary U_ICU_ENTRY_POINT_RENAME(uplug_closeLibrary)
 #define uplug_findLibrary U_ICU_ENTRY_POINT_RENAME(uplug_findLibrary)
 #define uplug_getConfiguration U_ICU_ENTRY_POINT_RENAME(uplug_getConfiguration)
 #define uprv_compareInvEbcdic U_ICU_ENTRY_POINT_RENAME(uprv_compareInvEbcdic)
 #define uprv_compareInvEbcdicAsAscii U_ICU_ENTRY_POINT_RENAME(uprv_compareInvEbcdicAsAscii)
 #define uprv_convertToLCID U_ICU_ENTRY_POINT_RENAME(uprv_convertToLCID)
-#define uprv_convertToLCIDPlatform U_ICU_ENTRY_POINT_RENAME(uprv_convertToLCIDPlatform)
 #define uprv_convertToPosix U_ICU_ENTRY_POINT_RENAME(uprv_convertToPosix)
 #define uprv_copyAscii U_ICU_ENTRY_POINT_RENAME(uprv_copyAscii)
 #define uprv_copyEbcdic U_ICU_ENTRY_POINT_RENAME(uprv_copyEbcdic)
 #define ustr_hashCharsN U_ICU_ENTRY_POINT_RENAME(ustr_hashCharsN)
 #define ustr_hashICharsN U_ICU_ENTRY_POINT_RENAME(ustr_hashICharsN)
 #define ustr_hashUCharsN U_ICU_ENTRY_POINT_RENAME(ustr_hashUCharsN)
-#define ustrcase_getCaseLocale U_ICU_ENTRY_POINT_RENAME(ustrcase_getCaseLocale)
 #define ustrcase_internalFold U_ICU_ENTRY_POINT_RENAME(ustrcase_internalFold)
 #define ustrcase_internalToLower U_ICU_ENTRY_POINT_RENAME(ustrcase_internalToLower)
 #define ustrcase_internalToTitle U_ICU_ENTRY_POINT_RENAME(ustrcase_internalToTitle)
 #define ustrcase_internalToUpper U_ICU_ENTRY_POINT_RENAME(ustrcase_internalToUpper)
 #define ustrcase_map U_ICU_ENTRY_POINT_RENAME(ustrcase_map)
-#define ustrcase_mapWithOverlap U_ICU_ENTRY_POINT_RENAME(ustrcase_mapWithOverlap)
+#define ustrcase_setTempCaseMapLocale U_ICU_ENTRY_POINT_RENAME(ustrcase_setTempCaseMapLocale)
 #define utext_char32At U_ICU_ENTRY_POINT_RENAME(utext_char32At)
 #define utext_clone U_ICU_ENTRY_POINT_RENAME(utext_clone)
 #define utext_close U_ICU_ENTRY_POINT_RENAME(utext_close)
 #define utrace_functionName U_ICU_ENTRY_POINT_RENAME(utrace_functionName)
 #define utrace_getFunctions U_ICU_ENTRY_POINT_RENAME(utrace_getFunctions)
 #define utrace_getLevel U_ICU_ENTRY_POINT_RENAME(utrace_getLevel)
+#define utrace_level U_ICU_ENTRY_POINT_RENAME(utrace_level)
 #define utrace_setFunctions U_ICU_ENTRY_POINT_RENAME(utrace_setFunctions)
 #define utrace_setLevel U_ICU_ENTRY_POINT_RENAME(utrace_setLevel)
 #define utrace_vformat U_ICU_ENTRY_POINT_RENAME(utrace_vformat)
index 932202d..b559b24 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 918b9f2..620d926 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1420578..a20cd15 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 59f4650..8baabbe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index d0d9918..26591d0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c64fe22..0ea3231 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  ushape.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index da0848d..5bd837e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  usprep.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 31b0556..e62fef5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index fd85648..50d31ba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  udicttrie.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 80ce8af..fd11995 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utext.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index dff4286..ffb094f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9cc73f7..6e7d1da 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf16.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8822c4d..f93727c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf32.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 18e7e94..55f7b9d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf8.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 /* internal definitions ----------------------------------------------------- */
 
-
+/**
+ * \var utf8_countTrailBytes
+ * Internal array with numbers of trail bytes for any given byte used in
+ * lead byte position.
+ *
+ * This is internal since it is not meant to be called directly by external clients;
+ * however it is called by public macros in this file and thus must remain stable,
+ * and should not be hidden when other internal functions are hidden (otherwise
+ * public macros would fail to compile).
+ * @internal
+ */
+#ifdef U_UTF8_IMPL
+U_EXPORT const uint8_t 
+#elif defined(U_STATIC_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION)
+U_CFUNC const uint8_t
+#else
+U_CFUNC U_IMPORT const uint8_t /* U_IMPORT2? */ /*U_IMPORT*/ 
+#endif
+utf8_countTrailBytes[256];
 
 /**
  * Counts the trail bytes for a UTF-8 lead byte.
index 250cb8c..c7d5145 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utf_old.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 */
 
 /**
- * \file
+ * \file 
  * \brief C API: Deprecated macros for Unicode string handling
  */
 
 /**
- *
+ * 
  * The macros in utf_old.h are all deprecated and their use discouraged.
  * Some of the design principles behind the set of UTF macros
  * have changed or proved impractical.
@@ -268,25 +268,6 @@ typedef int32_t UTextOffset;
 /* Formerly utf8.h ---------------------------------------------------------- */
 
 /**
-* \var utf8_countTrailBytes
-* Internal array with numbers of trail bytes for any given byte used in
-* lead byte position.
-*
-* This is internal since it is not meant to be called directly by external clients;
-* however it is called by public macros in this file and thus must remain stable,
-* and should not be hidden when other internal functions are hidden (otherwise
-* public macros would fail to compile).
-* @internal
-*/
-#ifdef U_UTF8_IMPL
-// No forward declaration if compiling utf_impl.cpp, which defines utf8_countTrailBytes.
-#elif defined(U_STATIC_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION)
-U_CFUNC const uint8_t utf8_countTrailBytes[];
-#else
-U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[];    /* U_IMPORT2? */ /*U_IMPORT*/
-#endif
-
-/**
  * Count the trail bytes for a UTF-8 lead byte.
  * @deprecated ICU 2.4. Renamed to U8_COUNT_TRAIL_BYTES, see utf_old.h.
  */
index 6b4c4df..c55f8c1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utrace.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index d60450b..3d19c50 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 /**
  * \def NULL
- * Define NULL if necessary, to nullptr for C++ and to ((void *)0) for C.
+ * Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
  * @stable ICU 2.0
  */
 #ifndef NULL
 #ifdef __cplusplus
-#define NULL    nullptr
+#define NULL    0
 #else
 #define NULL    ((void *)0)
 #endif
index cae59ad..5590f9a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -7,7 +7,7 @@
 *******************************************************************************
 *
 *   file name:  uvernum.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION_MAJOR_NUM 59
+#define U_ICU_VERSION_MAJOR_NUM 58
 
 /** The current ICU minor version as an integer.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_MINOR_NUM 1
+#define U_ICU_VERSION_MINOR_NUM 2
 
 /** The current ICU patchlevel version as an integer.
  *  This value will change in the subsequent releases of ICU
@@ -84,7 +84,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SUFFIX _59
+#define U_ICU_VERSION_SUFFIX _58
 
 /**
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION "59.1"
+#define U_ICU_VERSION "58.2"
 
 /** The current ICU library major/minor version as a string without dots, for library name suffixes.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#if U_PLATFORM_HAS_WINUWP_API == 0
-#define U_ICU_VERSION_SHORT "59"
-#else
-// U_DISABLE_RENAMING does not impact dat file name
-#define U_ICU_VERSION_SHORT
-#endif /* U_PLATFORM_HAS_WINUWP_API == 0 */
+#define U_ICU_VERSION_SHORT "58"
 
 #ifndef U_HIDE_INTERNAL_API
 /** Data version in ICU4C.
  * @internal ICU 4.4 Internal Use Only
  **/
-#define U_ICU_DATA_VERSION "59.1"
+#define U_ICU_DATA_VERSION "58.2"
 #endif  /* U_HIDE_INTERNAL_API */
 
 /*===========================================================================
index e24068d..3f8ad36 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -7,7 +7,7 @@
 *******************************************************************************
 *
 *   file name:  uversion.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fd2d107..6e7156f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 97da7ff..72b8a79 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 4ab0d9b..2d8ce35 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f3995b2..8fdc638 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index fe5a157..7866719 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 44bb4bc..b6bc64f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uniset_closure.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -184,6 +184,7 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
         return *this;
     }
     if (attribute & (USET_CASE_INSENSITIVE | USET_ADD_CASE_MAPPINGS)) {
+        const UCaseProps *csp = ucase_getSingleton();
         {
             UnicodeSet foldSet(*this);
             UnicodeString str;
@@ -206,6 +207,7 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
             int32_t n = getRangeCount();
             UChar32 result;
             const UChar *full;
+            int32_t locCache = 0;
 
             for (int32_t i=0; i<n; ++i) {
                 UChar32 start = getRangeStart(i);
@@ -214,22 +216,22 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
                 if (attribute & USET_CASE_INSENSITIVE) {
                     // full case closure
                     for (UChar32 cp=start; cp<=end; ++cp) {
-                        ucase_addCaseClosure(cp, &sa);
+                        ucase_addCaseClosure(csp, cp, &sa);
                     }
                 } else {
                     // add case mappings
                     // (does not add long s for regular s, or Kelvin for k, for example)
                     for (UChar32 cp=start; cp<=end; ++cp) {
-                        result = ucase_toFullLower(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
+                        result = ucase_toFullLower(csp, cp, NULL, NULL, &full, "", &locCache);
                         addCaseMapping(foldSet, result, full, str);
 
-                        result = ucase_toFullTitle(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
+                        result = ucase_toFullTitle(csp, cp, NULL, NULL, &full, "", &locCache);
                         addCaseMapping(foldSet, result, full, str);
 
-                        result = ucase_toFullUpper(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
+                        result = ucase_toFullUpper(csp, cp, NULL, NULL, &full, "", &locCache);
                         addCaseMapping(foldSet, result, full, str);
 
-                        result = ucase_toFullFolding(cp, &full, 0);
+                        result = ucase_toFullFolding(csp, cp, &full, 0);
                         addCaseMapping(foldSet, result, full, str);
                     }
                 }
@@ -239,7 +241,7 @@ UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
                     for (int32_t j=0; j<strings->size(); ++j) {
                         str = *(const UnicodeString *) strings->elementAt(j);
                         str.foldCase();
-                        if(!ucase_addStringCaseClosure(str.getBuffer(), str.length(), &sa)) {
+                        if(!ucase_addStringCaseClosure(csp, str.getBuffer(), str.length(), &sa)) {
                             foldSet.add(str); // does not map to code points: add the folded string itself
                         }
                     }
index 0a13740..ed31946 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uniset_props.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -195,7 +195,7 @@ void U_CALLCONV UnicodeSet_initInclusion(int32_t src, UErrorCode &status) {
         if(U_SUCCESS(status)) {
             impl->addPropertyStarts(&sa, status);
         }
-        ucase_addPropertyStarts(&sa, &status);
+        ucase_addPropertyStarts(ucase_getSingleton(), &sa, &status);
         break;
     }
     case UPROPS_SRC_NFC: {
@@ -228,7 +228,7 @@ void U_CALLCONV UnicodeSet_initInclusion(int32_t src, UErrorCode &status) {
     }
 #endif
     case UPROPS_SRC_CASE:
-        ucase_addPropertyStarts(&sa, &status);
+        ucase_addPropertyStarts(ucase_getSingleton(), &sa, &status);
         break;
     case UPROPS_SRC_BIDI:
         ubidi_addPropertyStarts(ubidi_getSingleton(), &sa, &status);
index 83bc794..2e77dfd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  unisetspan.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f1e78ff..36cdd98 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  unisetspan.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1bfb71a..bdd58ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -218,10 +218,9 @@ UnicodeString::UnicodeString(const UChar *text,
 }
 
 UnicodeString::UnicodeString(UBool isTerminated,
-                             ConstChar16Ptr textPtr,
+                             const UChar *text,
                              int32_t textLength) {
   fUnion.fFields.fLengthAndFlags = kReadonlyAlias;
-  const UChar *text = textPtr;
   if(text == NULL) {
     // treat as an empty string, do not alias
     setToEmpty();
@@ -235,8 +234,7 @@ UnicodeString::UnicodeString(UBool isTerminated,
       // text is terminated, or else it would have failed the above test
       textLength = u_strlen(text);
     }
-    setArray(const_cast<UChar *>(text), textLength,
-             isTerminated ? textLength + 1 : textLength);
+    setArray((UChar *)text, textLength, isTerminated ? textLength + 1 : textLength);
   }
 }
 
@@ -875,7 +873,7 @@ UnicodeString::doExtract(int32_t start,
 }
 
 int32_t
-UnicodeString::extract(Char16Ptr dest, int32_t destCapacity,
+UnicodeString::extract(UChar *dest, int32_t destCapacity,
                        UErrorCode &errorCode) const {
   int32_t len = length();
   if(U_SUCCESS(errorCode)) {
@@ -1217,10 +1215,10 @@ UnicodeString::unBogus() {
   }
 }
 
-const char16_t *
+const UChar *
 UnicodeString::getTerminatedBuffer() {
   if(!isWritable()) {
-    return nullptr;
+    return 0;
   }
   UChar *array = getArrayStart();
   int32_t len = length();
@@ -1251,14 +1249,14 @@ UnicodeString::getTerminatedBuffer() {
     array[len] = 0;
     return array;
   } else {
-    return nullptr;
+    return NULL;
   }
 }
 
 // setTo() analogous to the readonly-aliasing constructor with the same signature
 UnicodeString &
 UnicodeString::setTo(UBool isTerminated,
-                     ConstChar16Ptr textPtr,
+                     const UChar *text,
                      int32_t textLength)
 {
   if(fUnion.fFields.fLengthAndFlags & kOpenGetBuffer) {
@@ -1266,7 +1264,6 @@ UnicodeString::setTo(UBool isTerminated,
     return *this;
   }
 
-  const UChar *text = textPtr;
   if(text == NULL) {
     // treat as an empty string, do not alias
     releaseArray();
@@ -1716,14 +1713,14 @@ UnicodeString::doHashCode() const
 // External Buffer
 //========================================
 
-char16_t *
+UChar *
 UnicodeString::getBuffer(int32_t minCapacity) {
   if(minCapacity>=-1 && cloneArrayIfNeeded(minCapacity)) {
     fUnion.fFields.fLengthAndFlags|=kOpenGetBuffer;
     setZeroLength();
     return getArrayStart();
   } else {
-    return nullptr;
+    return 0;
   }
 }
 
index 1c62ce5..1715b6e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unistr_case.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
 */
 
 #include "unicode/utypes.h"
-#include "unicode/casemap.h"
-#include "unicode/edits.h"
 #include "unicode/putil.h"
 #include "cstring.h"
 #include "cmemory.h"
 #include "unicode/ustring.h"
 #include "unicode/unistr.h"
 #include "unicode/uchar.h"
-#include "uassert.h"
-#include "ucasemap_imp.h"
 #include "uelement.h"
+#include "ustr_imp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -90,104 +87,56 @@ UnicodeString::doCaseCompare(int32_t start,
 //========================================
 
 UnicodeString &
-UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
+UnicodeString::caseMap(const UCaseMap *csm,
                        UStringCaseMapper *stringCaseMapper) {
   if(isEmpty() || !isWritable()) {
     // nothing to do
     return *this;
   }
 
-  UChar oldBuffer[2 * US_STACKBUF_SIZE];
+  // We need to allocate a new buffer for the internal string case mapping function.
+  // This is very similar to how doReplace() keeps the old array pointer
+  // and deletes the old array itself after it is done.
+  // In addition, we are forcing cloneArrayIfNeeded() to always allocate a new array.
+  UChar oldStackBuffer[US_STACKBUF_SIZE];
   UChar *oldArray;
-  int32_t oldLength = length();
-  int32_t newLength;
-  UBool writable = isBufferWritable();
-  UErrorCode errorCode = U_ZERO_ERROR;
-
-  // Try to avoid heap-allocating a new character array for this string.
-  if (writable ? oldLength <= UPRV_LENGTHOF(oldBuffer) : oldLength < US_STACKBUF_SIZE) {
-    // Short string: Copy the contents into a temporary buffer and
-    // case-map back into the current array, or into the stack buffer.
-    UChar *buffer = getArrayStart();
-    int32_t capacity;
-    oldArray = oldBuffer;
-    u_memcpy(oldBuffer, buffer, oldLength);
-    if (writable) {
-      capacity = getCapacity();
-    } else {
-      // Switch from the read-only alias or shared heap buffer to the stack buffer.
-      if (!cloneArrayIfNeeded(US_STACKBUF_SIZE, US_STACKBUF_SIZE, /* doCopyArray= */ FALSE)) {
-        return *this;
-      }
-      U_ASSERT(fUnion.fFields.fLengthAndFlags & kUsingStackBuffer);
-      buffer = fUnion.fStackFields.fBuffer;
-      capacity = US_STACKBUF_SIZE;
-    }
-    newLength = stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
-                                 buffer, capacity,
-                                 oldArray, oldLength, NULL, errorCode);
-    if (U_SUCCESS(errorCode)) {
-      setLength(newLength);
-      return *this;
-    } else if (errorCode == U_BUFFER_OVERFLOW_ERROR) {
-      // common overflow handling below
-    } else {
-      setToBogus();
-      return *this;
-    }
+  int32_t oldLength;
+
+  if(fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) {
+    // copy the stack buffer contents because it will be overwritten
+    oldArray = oldStackBuffer;
+    oldLength = getShortLength();
+    u_memcpy(oldStackBuffer, fUnion.fStackFields.fBuffer, oldLength);
   } else {
-    // Longer string or read-only buffer:
-    // Collect only changes and then apply them to this string.
-    // Case mapping often changes only small parts of a string,
-    // and often does not change its length.
     oldArray = getArrayStart();
-    Edits edits;
-    UChar replacementChars[200];
-    stringCaseMapper(caseLocale, options | UCASEMAP_OMIT_UNCHANGED_TEXT, UCASEMAP_BREAK_ITERATOR
-                     replacementChars, UPRV_LENGTHOF(replacementChars),
-                     oldArray, oldLength, &edits, errorCode);
-    if (U_SUCCESS(errorCode)) {
-      // Grow the buffer at most once, not for multiple doReplace() calls.
-      newLength = oldLength + edits.lengthDelta();
-      if (newLength > oldLength && !cloneArrayIfNeeded(newLength, newLength)) {
-        return *this;
-      }
-      for (Edits::Iterator ei = edits.getCoarseChangesIterator(); ei.next(errorCode);) {
-        doReplace(ei.destinationIndex(), ei.oldLength(),
-                  replacementChars, ei.replacementIndex(), ei.newLength());
-      }
-      if (U_FAILURE(errorCode)) {
-        setToBogus();
-      }
-      return *this;
-    } else if (errorCode == U_BUFFER_OVERFLOW_ERROR) {
-      // common overflow handling below
-      newLength = oldLength + edits.lengthDelta();
-    } else {
-      setToBogus();
-      return *this;
-    }
+    oldLength = length();
   }
 
-  // Handle buffer overflow, newLength is known.
-  // We need to allocate a new buffer for the internal string case mapping function.
-  // This is very similar to how doReplace() keeps the old array pointer
-  // and deletes the old array itself after it is done.
-  // In addition, we are forcing cloneArrayIfNeeded() to always allocate a new array.
+  int32_t capacity;
+  if(oldLength <= US_STACKBUF_SIZE) {
+    capacity = US_STACKBUF_SIZE;
+  } else {
+    capacity = oldLength + 20;
+  }
   int32_t *bufferToDelete = 0;
-  if (!cloneArrayIfNeeded(newLength, newLength, FALSE, &bufferToDelete, TRUE)) {
+  if(!cloneArrayIfNeeded(capacity, capacity, FALSE, &bufferToDelete, TRUE)) {
     return *this;
   }
-  errorCode = U_ZERO_ERROR;
-  newLength = stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
-                               getArrayStart(), getCapacity(),
-                               oldArray, oldLength, NULL, errorCode);
+
+  // Case-map, and if the result is too long, then reallocate and repeat.
+  UErrorCode errorCode;
+  int32_t newLength;
+  do {
+    errorCode = U_ZERO_ERROR;
+    newLength = stringCaseMapper(csm, getArrayStart(), getCapacity(),
+                                 oldArray, oldLength, &errorCode);
+    setLength(newLength);
+  } while(errorCode==U_BUFFER_OVERFLOW_ERROR && cloneArrayIfNeeded(newLength, newLength, FALSE));
+
   if (bufferToDelete) {
     uprv_free(bufferToDelete);
   }
-  if (U_SUCCESS(errorCode)) {
-    setLength(newLength);
-  } else {
+  if(U_FAILURE(errorCode)) {
     setToBogus();
   }
   return *this;
@@ -195,7 +144,10 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
 
 UnicodeString &
 UnicodeString::foldCase(uint32_t options) {
-  return caseMap(UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalFold);
+  UCaseMap csm=UCASEMAP_INITIALIZER;
+  csm.csp=ucase_getSingleton();
+  csm.options=options;
+  return caseMap(&csm, ustrcase_internalFold);
 }
 
 U_NAMESPACE_END
index f0f3048..a01be5c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  unistr_case_locale.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -19,9 +19,9 @@
 
 #include "unicode/utypes.h"
 #include "unicode/locid.h"
-#include "unicode/ucasemap.h"
 #include "unicode/unistr.h"
-#include "ucasemap_imp.h"
+#include "cmemory.h"
+#include "ustr_imp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -29,28 +29,44 @@ U_NAMESPACE_BEGIN
 // Write implementation
 //========================================
 
+/*
+ * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
+ * Do this fast because it is called with every function call.
+ */
+static inline void
+setTempCaseMap(UCaseMap *csm, const char *locale) {
+    if(csm->csp==NULL) {
+        csm->csp=ucase_getSingleton();
+    }
+    if(locale!=NULL && locale[0]==0) {
+        csm->locale[0]=0;
+    } else {
+        ustrcase_setTempCaseMapLocale(csm, locale);
+    }
+}
+
 UnicodeString &
 UnicodeString::toLower() {
-  return caseMap(ustrcase_getCaseLocale(NULL), 0,
-                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower);
+  return toLower(Locale::getDefault());
 }
 
 UnicodeString &
 UnicodeString::toLower(const Locale &locale) {
-  return caseMap(ustrcase_getCaseLocale(locale.getBaseName()), 0,
-                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower);
+  UCaseMap csm=UCASEMAP_INITIALIZER;
+  setTempCaseMap(&csm, locale.getName());
+  return caseMap(&csm, ustrcase_internalToLower);
 }
 
 UnicodeString &
 UnicodeString::toUpper() {
-  return caseMap(ustrcase_getCaseLocale(NULL), 0,
-                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper);
+  return toUpper(Locale::getDefault());
 }
 
 UnicodeString &
 UnicodeString::toUpper(const Locale &locale) {
-  return caseMap(ustrcase_getCaseLocale(locale.getBaseName()), 0,
-                 UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper);
+  UCaseMap csm=UCASEMAP_INITIALIZER;
+  setTempCaseMap(&csm, locale.getName());
+  return caseMap(&csm, ustrcase_internalToUpper);
 }
 
 U_NAMESPACE_END
index 64d3c16..a9b44ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unistr_cnv.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
index 4006475..f099779 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unistr_props.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
index 3156fdf..3d6737c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  unistr_titlecase_brkiter.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
 #if !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/brkiter.h"
-#include "unicode/locid.h"
-#include "unicode/ucasemap.h"
+#include "unicode/ubrk.h"
 #include "unicode/unistr.h"
-#include "ucasemap_imp.h"
+#include "unicode/ustring.h"
+#include "cmemory.h"
+#include "ustr_imp.h"
+
+static int32_t U_CALLCONV
+unistr_case_internalToTitle(const UCaseMap *csm,
+                            UChar *dest, int32_t destCapacity,
+                            const UChar *src, int32_t srcLength,
+                            UErrorCode *pErrorCode) {
+  ubrk_setText(csm->iter, src, srcLength, pErrorCode);
+  return ustrcase_internalToTitle(csm, dest, destCapacity, src, srcLength, pErrorCode);
+}
+
+/*
+ * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
+ * Do this fast because it is called with every function call.
+ */
+static inline void
+setTempCaseMap(UCaseMap *csm, const char *locale) {
+    if(csm->csp==NULL) {
+        csm->csp=ucase_getSingleton();
+    }
+    if(locale!=NULL && locale[0]==0) {
+        csm->locale[0]=0;
+    } else {
+        ustrcase_setTempCaseMapLocale(csm, locale);
+    }
+}
 
 U_NAMESPACE_BEGIN
 
@@ -41,6 +67,9 @@ UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale) {
 
 UnicodeString &
 UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options) {
+  UCaseMap csm=UCASEMAP_INITIALIZER;
+  csm.options=options;
+  setTempCaseMap(&csm, locale.getName());
   BreakIterator *bi=titleIter;
   if(bi==NULL) {
     UErrorCode errorCode=U_ZERO_ERROR;
@@ -50,12 +79,8 @@ UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t
       return *this;
     }
   }
-  // Because the "this" string is both the source and the destination,
-  // make a copy of the original source for use by the break iterator.
-  // See tickets #13127 and #13128
-  UnicodeString copyOfInput(*this);
-  bi->setText(copyOfInput);
-  caseMap(ustrcase_getCaseLocale(locale.getBaseName()), options, bi, ustrcase_internalToTitle);
+  csm.iter=reinterpret_cast<UBreakIterator *>(bi);
+  caseMap(&csm, unistr_case_internalToTitle);
   if(titleIter==NULL) {
     delete bi;
   }
index 75fcb9e..330f3a5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 2d9f460..a9df6d2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 689b0b5..b40a10a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unormcmp.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -145,6 +145,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
                    uint32_t options,
                    UErrorCode *pErrorCode) {
     const Normalizer2Impl *nfcImpl;
+    const UCaseProps *csp;
 
     /* current-level start/limit - s1/s2 as current */
     const UChar *start1, *start2, *limit1, *limit2;
@@ -182,6 +183,11 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
     } else {
         nfcImpl=NULL;
     }
+    if((options&U_COMPARE_IGNORE_CASE)!=0) {
+        csp=ucase_getSingleton();
+    } else {
+        csp=NULL;
+    }
     if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
@@ -313,7 +319,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
          */
 
         if( level1==0 && (options&U_COMPARE_IGNORE_CASE) &&
-            (length=ucase_toFullFolding((UChar32)cp1, &p, options))>=0
+            (length=ucase_toFullFolding(csp, (UChar32)cp1, &p, options))>=0
         ) {
             /* cp1 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c1)) {
@@ -358,7 +364,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
         }
 
         if( level2==0 && (options&U_COMPARE_IGNORE_CASE) &&
-            (length=ucase_toFullFolding((UChar32)cp2, &p, options))>=0
+            (length=ucase_toFullFolding(csp, (UChar32)cp2, &p, options))>=0
         ) {
             /* cp2 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c2)) {
index 88c7975..cd1d9a8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unormimp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1133dd9..37406e4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uobject.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 45ca123..495deea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uposixdefs.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
  *
  * z/OS needs this definition for timeval and to get usleep.
  */
-#if !defined(_XOPEN_SOURCE_EXTENDED) && defined(__TOS_MVS__)
+#if !defined(_XOPEN_SOURCE_EXTENDED)
 #   define _XOPEN_SOURCE_EXTENDED 1
 #endif
 
-/**
- * Solaris says:
- *   "...it is invalid to compile an XPG6 or a POSIX.1-2001 application with anything other
- *   than a c99 or later compiler."
- * Apparently C++11 is not "or later". Work around this.
+/*
+ * There is an issue with turning on _XOPEN_SOURCE_EXTENDED on certain platforms.
+ * A compatibility issue exists between turning on _XOPEN_SOURCE_EXTENDED and using
+ * standard C++ string class. As a result, standard C++ string class needs to be
+ * turned off for the follwing platforms:
+ *  -AIX/VACPP
+ *  -Solaris/GCC
  */
-#if defined(__cplusplus) && (defined(sun) || defined(__sun)) && !defined (_STDC_C99)
-#   define _STDC_C99
+#if (U_PLATFORM == U_PF_AIX && !defined(__GNUC__)) || (U_PLATFORM == U_PF_SOLARIS && defined(__GNUC__))
+#   if _XOPEN_SOURCE_EXTENDED && !defined(U_HAVE_STD_STRING)
+#   define U_HAVE_STD_STRING 0
+#   endif
 #endif
 
 #endif  /* __UPOSIXDEFS_H__ */
index fc91c89..46ceb66 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uprops.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -128,8 +128,9 @@ static UBool changesWhenCasefolded(const BinaryProperty &/*prop*/, UChar32 c, UP
     }
     if(c>=0) {
         /* single code point */
+        const UCaseProps *csp=ucase_getSingleton();
         const UChar *resultString;
-        return (UBool)(ucase_toFullFolding(c, &resultString, U_FOLD_CASE_DEFAULT)>=0);
+        return (UBool)(ucase_toFullFolding(csp, c, &resultString, U_FOLD_CASE_DEFAULT)>=0);
     } else {
         /* guess some large but stack-friendly capacity */
         UChar dest[2*UCASE_MAX_STRING_LENGTH];
@@ -575,13 +576,14 @@ u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *p
     // case folding and NFKC.)
     // For the derivation, see Unicode's DerivedNormalizationProps.txt.
     const Normalizer2 *nfkc=Normalizer2::getNFKCInstance(*pErrorCode);
+    const UCaseProps *csp=ucase_getSingleton();
     if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
     // first: b = NFKC(Fold(a))
     UnicodeString folded1String;
     const UChar *folded1;
-    int32_t folded1Length=ucase_toFullFolding(c, &folded1, U_FOLD_CASE_DEFAULT);
+    int32_t folded1Length=ucase_toFullFolding(csp, c, &folded1, U_FOLD_CASE_DEFAULT);
     if(folded1Length<0) {
         const Normalizer2Impl *nfkcImpl=Normalizer2Factory::getImpl(nfkc);
         if(nfkcImpl->getCompQuickCheck(nfkcImpl->getNorm16(c))!=UNORM_NO) {
index f5d69fe..63c5880 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uprops.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/common/ures_cnv.c b/source/common/ures_cnv.c
new file mode 100644 (file)
index 0000000..58c6cd0
--- /dev/null
@@ -0,0 +1,78 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 1997-2006, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ures_cnv.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2004aug25
+*   created by: Markus W. Scherer
+*
+*   Character conversion functions moved here from uresbund.c
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/putil.h"
+#include "unicode/ustring.h"
+#include "unicode/ucnv.h"
+#include "unicode/ures.h"
+#include "uinvchar.h"
+#include "ustr_cnv.h"
+
+U_CAPI UResourceBundle * U_EXPORT2
+ures_openU(const UChar *myPath, 
+           const char *localeID, 
+           UErrorCode *status)
+{
+    char pathBuffer[1024];
+    int32_t length;
+    char *path = pathBuffer;
+
+    if(status==NULL || U_FAILURE(*status)) {
+        return NULL;
+    }
+    if(myPath==NULL) {
+        path = NULL;
+    }
+    else {
+        length=u_strlen(myPath);
+        if(length>=sizeof(pathBuffer)) {
+            *status=U_ILLEGAL_ARGUMENT_ERROR;
+            return NULL;
+        } else if(uprv_isInvariantUString(myPath, length)) {
+            /*
+             * the invariant converter is sufficient for package and tree names
+             * and is more efficient
+             */
+            u_UCharsToChars(myPath, path, length+1); /* length+1 to include the NUL */
+        } else {
+#if !UCONFIG_NO_CONVERSION
+            /* use the default converter to support variant-character paths */
+            UConverter *cnv=u_getDefaultConverter(status);
+            length=ucnv_fromUChars(cnv, path, (int32_t)sizeof(pathBuffer), myPath, length, status);
+            u_releaseDefaultConverter(cnv);
+            if(U_FAILURE(*status)) {
+                return NULL;
+            }
+            if(length>=sizeof(pathBuffer)) {
+                /* not NUL-terminated - path too long */
+                *status=U_ILLEGAL_ARGUMENT_ERROR;
+                return NULL;
+            }
+#else
+            /* the default converter is not available */
+            *status=U_UNSUPPORTED_ERROR;
+            return NULL;
+#endif
+        }
+    }
+
+    return ures_open(path, localeID, status);
+}
index 5a1dd0a..a32bfd1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 8bcb9ab..44654dc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *               and others. All Rights Reserved.
 *******************************************************************************
 *   file name:  uresdata.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -758,9 +758,7 @@ res_getTableItemByIndex(const ResourceData *pResData, Resource table,
                         int32_t indexR, const char **key) {
     uint32_t offset=RES_GET_OFFSET(table);
     int32_t length;
-    if (indexR < 0) {
-        return RES_BOGUS;
-    }
+    U_ASSERT(indexR>=0); /* to ensure the index is not negative */
     switch(RES_GET_TYPE(table)) {
     case URES_TABLE: {
         if (offset != 0) { /* empty if offset==0 */
@@ -838,9 +836,7 @@ UBool icu::ResourceTable::getKeyAndValue(int32_t i,
 U_CAPI Resource U_EXPORT2
 res_getArrayItem(const ResourceData *pResData, Resource array, int32_t indexR) {
     uint32_t offset=RES_GET_OFFSET(array);
-    if (indexR < 0) {
-        return RES_BOGUS;
-    }
+    U_ASSERT(indexR>=0); /* to ensure the index is not negative */
     switch(RES_GET_TYPE(array)) {
     case URES_ARRAY: {
         if (offset!=0) { /* empty if offset==0 */
@@ -927,14 +923,14 @@ res_findResource(const ResourceData *pResData, Resource r, char** path, const ch
       if(t2 == RES_BOGUS) { 
         /* if we fail to get the resource by key, maybe we got an index */
         indexR = uprv_strtol(pathP, &closeIndex, 10);
-        if(indexR >= 0 && *closeIndex == 0) {
+        if(*closeIndex == 0) {
           /* if we indeed have an index, try to get the item by index */
           t2 = res_getTableItemByIndex(pResData, t1, indexR, key);
-        } // else t2 is already RES_BOGUS
+        }
       }
     } else if(URES_IS_ARRAY(type)) {
       indexR = uprv_strtol(pathP, &closeIndex, 10);
-      if(indexR >= 0 && *closeIndex == 0) {
+      if(*closeIndex == 0) {
         t2 = res_getArrayItem(pResData, t1, indexR);
       } else {
         t2 = RES_BOGUS; /* have an array, but don't have a valid index */
index 8d845e3..ae7d9a8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  uresdata.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e7fa3e1..5645ee9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f7c3344..85dd8fb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/usc_impl.c b/source/common/usc_impl.c
new file mode 100644 (file)
index 0000000..1fff0c4
--- /dev/null
@@ -0,0 +1,361 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 1999-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*
+* File USC_IMPL.C
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   07/08/2002  Eric Mader  Creation.
+******************************************************************************
+*/
+
+#include "unicode/uscript.h"
+#include "usc_impl.h"
+#include "cmemory.h"
+
+#define PAREN_STACK_DEPTH 32
+
+#define MOD(sp) ((sp) % PAREN_STACK_DEPTH)
+#define LIMIT_INC(sp) (((sp) < PAREN_STACK_DEPTH)? (sp) + 1 : PAREN_STACK_DEPTH)
+#define INC(sp,count) (MOD((sp) + (count)))
+#define INC1(sp) (INC(sp, 1))
+#define DEC(sp,count) (MOD((sp) + PAREN_STACK_DEPTH - (count)))
+#define DEC1(sp) (DEC(sp, 1))
+#define STACK_IS_EMPTY(scriptRun) ((scriptRun)->pushCount <= 0)
+#define STACK_IS_NOT_EMPTY(scriptRun) (! STACK_IS_EMPTY(scriptRun))
+#define TOP(scriptRun) ((scriptRun)->parenStack[(scriptRun)->parenSP])
+#define SYNC_FIXUP(scriptRun) ((scriptRun)->fixupCount = 0)
+
+struct ParenStackEntry
+{
+    int32_t pairIndex;
+    UScriptCode scriptCode;
+};
+
+struct UScriptRun
+{
+    int32_t textLength;
+    const UChar *textArray;
+
+    int32_t scriptStart;
+    int32_t scriptLimit;
+    UScriptCode scriptCode;
+
+    struct ParenStackEntry parenStack[PAREN_STACK_DEPTH];
+    int32_t parenSP;
+    int32_t pushCount;
+    int32_t fixupCount;
+};
+
+static int8_t highBit(int32_t value);
+
+static const UChar32 pairedChars[] = {
+    0x0028, 0x0029, /* ascii paired punctuation */
+    0x003c, 0x003e,
+    0x005b, 0x005d,
+    0x007b, 0x007d,
+    0x00ab, 0x00bb, /* guillemets */
+    0x2018, 0x2019, /* general punctuation */
+    0x201c, 0x201d,
+    0x2039, 0x203a,
+    0x3008, 0x3009, /* chinese paired punctuation */
+    0x300a, 0x300b,
+    0x300c, 0x300d,
+    0x300e, 0x300f,
+    0x3010, 0x3011,
+    0x3014, 0x3015,
+    0x3016, 0x3017,
+    0x3018, 0x3019,
+    0x301a, 0x301b
+};
+
+static void push(UScriptRun *scriptRun, int32_t pairIndex, UScriptCode scriptCode)
+{
+    scriptRun->pushCount  = LIMIT_INC(scriptRun->pushCount);
+    scriptRun->fixupCount = LIMIT_INC(scriptRun->fixupCount);
+    
+    scriptRun->parenSP = INC1(scriptRun->parenSP);
+    scriptRun->parenStack[scriptRun->parenSP].pairIndex  = pairIndex;
+    scriptRun->parenStack[scriptRun->parenSP].scriptCode = scriptCode;
+}
+
+static void pop(UScriptRun *scriptRun)
+{
+    if (STACK_IS_EMPTY(scriptRun)) {
+        return;
+    }
+    
+    if (scriptRun->fixupCount > 0) {
+        scriptRun->fixupCount -= 1;
+    }
+    
+    scriptRun->pushCount -= 1;
+    scriptRun->parenSP = DEC1(scriptRun->parenSP);
+    
+    /* If the stack is now empty, reset the stack
+       pointers to their initial values.
+     */
+    if (STACK_IS_EMPTY(scriptRun)) {
+        scriptRun->parenSP = -1;
+    }
+}
+
+static void fixup(UScriptRun *scriptRun, UScriptCode scriptCode)
+{
+    int32_t fixupSP = DEC(scriptRun->parenSP, scriptRun->fixupCount);
+    
+    while (scriptRun->fixupCount-- > 0) {
+        fixupSP = INC1(fixupSP);
+        scriptRun->parenStack[fixupSP].scriptCode = scriptCode;
+    }
+}
+
+static int8_t
+highBit(int32_t value)
+{
+    int8_t bit = 0;
+
+    if (value <= 0) {
+        return -32;
+    }
+
+    if (value >= 1 << 16) {
+        value >>= 16;
+        bit += 16;
+    }
+
+    if (value >= 1 << 8) {
+        value >>= 8;
+        bit += 8;
+    }
+
+    if (value >= 1 << 4) {
+        value >>= 4;
+        bit += 4;
+    }
+
+    if (value >= 1 << 2) {
+        value >>= 2;
+        bit += 2;
+    }
+
+    if (value >= 1 << 1) {
+        //value >>= 1;
+        bit += 1;
+    }
+
+    return bit;
+}
+
+static int32_t
+getPairIndex(UChar32 ch)
+{
+    int32_t pairedCharCount = UPRV_LENGTHOF(pairedChars);
+    int32_t pairedCharPower = 1 << highBit(pairedCharCount);
+    int32_t pairedCharExtra = pairedCharCount - pairedCharPower;
+
+    int32_t probe = pairedCharPower;
+    int32_t pairIndex = 0;
+
+    if (ch >= pairedChars[pairedCharExtra]) {
+        pairIndex = pairedCharExtra;
+    }
+
+    while (probe > (1 << 0)) {
+        probe >>= 1;
+
+        if (ch >= pairedChars[pairIndex + probe]) {
+            pairIndex += probe;
+        }
+    }
+
+    if (pairedChars[pairIndex] != ch) {
+        pairIndex = -1;
+    }
+
+    return pairIndex;
+}
+
+static UBool
+sameScript(UScriptCode scriptOne, UScriptCode scriptTwo)
+{
+    return scriptOne <= USCRIPT_INHERITED || scriptTwo <= USCRIPT_INHERITED || scriptOne == scriptTwo;
+}
+
+U_CAPI UScriptRun * U_EXPORT2
+uscript_openRun(const UChar *src, int32_t length, UErrorCode *pErrorCode)
+{
+    UScriptRun *result = NULL;
+
+    if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) {
+        return NULL;
+    }
+
+    result = uprv_malloc(sizeof (UScriptRun));
+
+    if (result == NULL) {
+        *pErrorCode = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+
+    uscript_setRunText(result, src, length, pErrorCode);
+
+    /* Release the UScriptRun if uscript_setRunText() returns an error */
+    if (U_FAILURE(*pErrorCode)) {
+        uprv_free(result);
+        result = NULL;
+    }
+
+    return result;
+}
+
+U_CAPI void U_EXPORT2
+uscript_closeRun(UScriptRun *scriptRun)
+{
+    if (scriptRun != NULL) {
+        uprv_free(scriptRun);
+    }
+}
+
+U_CAPI void U_EXPORT2
+uscript_resetRun(UScriptRun *scriptRun)
+{
+    if (scriptRun != NULL) {
+        scriptRun->scriptStart = 0;
+        scriptRun->scriptLimit = 0;
+        scriptRun->scriptCode  = USCRIPT_INVALID_CODE;
+        scriptRun->parenSP     = -1;
+        scriptRun->pushCount   =  0;
+        scriptRun->fixupCount  =  0;
+    }
+}
+
+U_CAPI void U_EXPORT2
+uscript_setRunText(UScriptRun *scriptRun, const UChar *src, int32_t length, UErrorCode *pErrorCode)
+{
+    if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    if (scriptRun == NULL || length < 0 || ((src == NULL) != (length == 0))) {
+        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    scriptRun->textArray  = src;
+    scriptRun->textLength = length;
+
+    uscript_resetRun(scriptRun);
+}
+
+U_CAPI UBool U_EXPORT2
+uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, UScriptCode *pRunScript)
+{
+    UErrorCode error = U_ZERO_ERROR;
+
+    /* if we've fallen off the end of the text, we're done */
+    if (scriptRun == NULL || scriptRun->scriptLimit >= scriptRun->textLength) {
+        return FALSE;
+    }
+    
+    SYNC_FIXUP(scriptRun);
+    scriptRun->scriptCode = USCRIPT_COMMON;
+
+    for (scriptRun->scriptStart = scriptRun->scriptLimit; scriptRun->scriptLimit < scriptRun->textLength; scriptRun->scriptLimit += 1) {
+        UChar   high = scriptRun->textArray[scriptRun->scriptLimit];
+        UChar32 ch   = high;
+        UScriptCode sc;
+        int32_t pairIndex;
+
+        /*
+         * if the character is a high surrogate and it's not the last one
+         * in the text, see if it's followed by a low surrogate
+         */
+        if (high >= 0xD800 && high <= 0xDBFF && scriptRun->scriptLimit < scriptRun->textLength - 1) {
+            UChar low = scriptRun->textArray[scriptRun->scriptLimit + 1];
+
+            /*
+             * if it is followed by a low surrogate,
+             * consume it and form the full character
+             */
+            if (low >= 0xDC00 && low <= 0xDFFF) {
+                ch = (high - 0xD800) * 0x0400 + low - 0xDC00 + 0x10000;
+                scriptRun->scriptLimit += 1;
+            }
+        }
+
+        sc = uscript_getScript(ch, &error);
+        pairIndex = getPairIndex(ch);
+
+        /*
+         * Paired character handling:
+         *
+         * if it's an open character, push it onto the stack.
+         * if it's a close character, find the matching open on the
+         * stack, and use that script code. Any non-matching open
+         * characters above it on the stack will be poped.
+         */
+        if (pairIndex >= 0) {
+            if ((pairIndex & 1) == 0) {
+                push(scriptRun, pairIndex, scriptRun->scriptCode);
+            } else {
+                int32_t pi = pairIndex & ~1;
+
+                while (STACK_IS_NOT_EMPTY(scriptRun) && TOP(scriptRun).pairIndex != pi) {
+                    pop(scriptRun);
+                }
+
+                if (STACK_IS_NOT_EMPTY(scriptRun)) {
+                    sc = TOP(scriptRun).scriptCode;
+                }
+            }
+        }
+
+        if (sameScript(scriptRun->scriptCode, sc)) {
+            if (scriptRun->scriptCode <= USCRIPT_INHERITED && sc > USCRIPT_INHERITED) {
+                scriptRun->scriptCode = sc;
+
+                fixup(scriptRun, scriptRun->scriptCode);
+            }
+
+            /*
+             * if this character is a close paired character,
+             * pop the matching open character from the stack
+             */
+            if (pairIndex >= 0 && (pairIndex & 1) != 0) {
+                pop(scriptRun);
+            }
+        } else {
+            /*
+             * if the run broke on a surrogate pair,
+             * end it before the high surrogate
+             */
+            if (ch >= 0x10000) {
+                scriptRun->scriptLimit -= 1;
+            }
+
+            break;
+        }
+    }
+
+
+    if (pRunStart != NULL) {
+        *pRunStart = scriptRun->scriptStart;
+    }
+
+    if (pRunLimit != NULL) {
+        *pRunLimit = scriptRun->scriptLimit;
+    }
+
+    if (pRunScript != NULL) {
+        *pRunScript = scriptRun->scriptCode;
+    }
+
+    return TRUE;
+}
index 4489964..7c9c5e0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/uscript.c b/source/common/uscript.c
new file mode 100644 (file)
index 0000000..336e185
--- /dev/null
@@ -0,0 +1,144 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 1997-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*
+* File USCRIPT.C
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   07/06/2001    Ram         Creation.
+******************************************************************************
+*/
+
+#include "unicode/uchar.h"
+#include "unicode/uscript.h"
+#include "unicode/uloc.h"
+#include "cmemory.h"
+#include "cstring.h"
+
+static const UScriptCode JAPANESE[3] = { USCRIPT_KATAKANA, USCRIPT_HIRAGANA, USCRIPT_HAN };
+static const UScriptCode KOREAN[2] = { USCRIPT_HANGUL, USCRIPT_HAN };
+static const UScriptCode HAN_BOPO[2] = { USCRIPT_HAN, USCRIPT_BOPOMOFO };
+
+static int32_t
+setCodes(const UScriptCode *src, int32_t length,
+         UScriptCode *dest, int32_t capacity, UErrorCode *err) {
+    int32_t i;
+    if(U_FAILURE(*err)) { return 0; }
+    if(length > capacity) {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+        return length;
+    }
+    for(i = 0; i < length; ++i) {
+        dest[i] = src[i];
+    }
+    return length;
+}
+
+static int32_t
+setOneCode(UScriptCode script, UScriptCode *scripts, int32_t capacity, UErrorCode *err) {
+    if(U_FAILURE(*err)) { return 0; }
+    if(1 > capacity) {
+        *err = U_BUFFER_OVERFLOW_ERROR;
+        return 1;
+    }
+    scripts[0] = script;
+    return 1;
+}
+
+static int32_t
+getCodesFromLocale(const char *locale,
+                   UScriptCode *scripts, int32_t capacity, UErrorCode *err) {
+    UErrorCode internalErrorCode = U_ZERO_ERROR;
+    char lang[8];
+    char script[8];
+    int32_t scriptLength;
+    if(U_FAILURE(*err)) { return 0; }
+    // Multi-script languages, equivalent to the LocaleScript data
+    // that we used to load from locale resource bundles.
+    /*length = */ uloc_getLanguage(locale, lang, UPRV_LENGTHOF(lang), &internalErrorCode);
+    if(U_FAILURE(internalErrorCode) || internalErrorCode == U_STRING_NOT_TERMINATED_WARNING) {
+        return 0;
+    }
+    if(0 == uprv_strcmp(lang, "ja")) {
+        return setCodes(JAPANESE, UPRV_LENGTHOF(JAPANESE), scripts, capacity, err);
+    }
+    if(0 == uprv_strcmp(lang, "ko")) {
+        return setCodes(KOREAN, UPRV_LENGTHOF(KOREAN), scripts, capacity, err);
+    }
+    scriptLength = uloc_getScript(locale, script, UPRV_LENGTHOF(script), &internalErrorCode);
+    if(U_FAILURE(internalErrorCode) || internalErrorCode == U_STRING_NOT_TERMINATED_WARNING) {
+        return 0;
+    }
+    if(0 == uprv_strcmp(lang, "zh") && 0 == uprv_strcmp(script, "Hant")) {
+        return setCodes(HAN_BOPO, UPRV_LENGTHOF(HAN_BOPO), scripts, capacity, err);
+    }
+    // Explicit script code.
+    if(scriptLength != 0) {
+        UScriptCode scriptCode = (UScriptCode)u_getPropertyValueEnum(UCHAR_SCRIPT, script);
+        if(scriptCode != USCRIPT_INVALID_CODE) {
+            if(scriptCode == USCRIPT_SIMPLIFIED_HAN || scriptCode == USCRIPT_TRADITIONAL_HAN) {
+                scriptCode = USCRIPT_HAN;
+            }
+            return setOneCode(scriptCode, scripts, capacity, err);
+        }
+    }
+    return 0;
+}
+
+/* TODO: this is a bad API and should be deprecated, ticket #11141 */
+U_CAPI int32_t  U_EXPORT2
+uscript_getCode(const char* nameOrAbbrOrLocale,
+                UScriptCode* fillIn,
+                int32_t capacity,
+                UErrorCode* err){
+    UBool triedCode;
+    char likely[ULOC_FULLNAME_CAPACITY];
+    UErrorCode internalErrorCode;
+    int32_t length;
+
+    if(U_FAILURE(*err)) {
+        return 0;
+    }
+    if(nameOrAbbrOrLocale==NULL ||
+            (fillIn == NULL ? capacity != 0 : capacity < 0)) {
+        *err = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    triedCode = FALSE;
+    if(uprv_strchr(nameOrAbbrOrLocale, '-')==NULL && uprv_strchr(nameOrAbbrOrLocale, '_')==NULL ){
+        /* try long and abbreviated script names first */
+        UScriptCode code = (UScriptCode) u_getPropertyValueEnum(UCHAR_SCRIPT, nameOrAbbrOrLocale);
+        if(code!=USCRIPT_INVALID_CODE) {
+            return setOneCode(code, fillIn, capacity, err);
+        }
+        triedCode = TRUE;
+    }
+    internalErrorCode = U_ZERO_ERROR;
+    length = getCodesFromLocale(nameOrAbbrOrLocale, fillIn, capacity, err);
+    if(U_FAILURE(*err) || length != 0) {
+        return length;
+    }
+    (void)uloc_addLikelySubtags(nameOrAbbrOrLocale,
+                                likely, UPRV_LENGTHOF(likely), &internalErrorCode);
+    if(U_SUCCESS(internalErrorCode) && internalErrorCode != U_STRING_NOT_TERMINATED_WARNING) {
+        length = getCodesFromLocale(likely, fillIn, capacity, err);
+        if(U_FAILURE(*err) || length != 0) {
+            return length;
+        }
+    }
+    if(!triedCode) {
+        /* still not found .. try long and abbreviated script names again */
+        UScriptCode code = (UScriptCode) u_getPropertyValueEnum(UCHAR_SCRIPT, nameOrAbbrOrLocale);
+        if(code!=USCRIPT_INVALID_CODE) {
+            return setOneCode(code, fillIn, capacity, err);
+        }
+    }
+    return 0;
+}
index f8ec5e3..20c7cdc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uscript_props.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 39ad0a3..dbbf694 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7233b93..703c881 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset_imp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f08e760..fd48f45 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uset_props.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 93048ba..514dc03 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 90f339b..8420cc9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
@@ -8,7 +8,7 @@
  *
  ******************************************************************************
  *   file name:  ushape.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index d96e825..565d9e5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  usprep.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index fb314b0..1de79ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 38f4d82..e27639f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ustr_cnv.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 861e3eb..74f8885 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ustr_cnv.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9815915..34a6936 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ustr_imp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #define __USTR_IMP_H__
 
 #include "unicode/utypes.h"
+#include "unicode/uiter.h"
+#include "ucase.h"
+
+/** Simple declaration to avoid including unicode/ubrk.h. */
+#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
+#   define UBRK_TYPEDEF_UBREAK_ITERATOR
+    typedef struct UBreakIterator UBreakIterator;
+#endif
+
+#ifndef U_COMPARE_IGNORE_CASE
+/* see also unorm.h */
+/**
+ * Option bit for unorm_compare:
+ * Perform case-insensitive comparison.
+ */
+#define U_COMPARE_IGNORE_CASE       0x10000
+#endif
 
 /**
  * Internal option for unorm_cmpEquivFold() for strncmp style.
@@ -36,6 +53,211 @@ uprv_strCompare(const UChar *s1, int32_t length1,
                 const UChar *s2, int32_t length2,
                 UBool strncmpStyle, UBool codePointOrder);
 
+/**
+ * Internal API, used by u_strcasecmp() etc.
+ * Compare strings case-insensitively,
+ * in code point order or code unit order.
+ */
+U_CFUNC int32_t
+u_strcmpFold(const UChar *s1, int32_t length1,
+             const UChar *s2, int32_t length2,
+             uint32_t options,
+             UErrorCode *pErrorCode);
+
+/**
+ * Interanl API, used for detecting length of
+ * shared prefix case-insensitively.
+ * @param s1            input string 1
+ * @param length1       length of string 1, or -1 (NULL terminated)
+ * @param s2            input string 2
+ * @param length2       length of string 2, or -1 (NULL terminated)
+ * @param options       compare options
+ * @param matchLen1     (output) length of partial prefix match in s1
+ * @param matchLen2     (output) length of partial prefix match in s2
+ * @param pErrorCode    receives error status
+ */
+U_CAPI void
+u_caseInsensitivePrefixMatch(const UChar *s1, int32_t length1,
+                             const UChar *s2, int32_t length2,
+                             uint32_t options,
+                             int32_t *matchLen1, int32_t *matchLen2,
+                             UErrorCode *pErrorCode);
+
+/**
+ * Are the Unicode properties loaded?
+ * This must be used before internal functions are called that do
+ * not perform this check.
+ * Generate a debug assertion failure if data is not loaded.
+ */
+U_CFUNC UBool
+uprv_haveProperties(UErrorCode *pErrorCode);
+
+/**
+  * Load the Unicode property data.
+  * Intended primarily for use from u_init().
+  * Has no effect if property data is already loaded.
+  * NOT thread safe.
+  */
+/*U_CFUNC int8_t
+uprv_loadPropsData(UErrorCode *errorCode);*/
+
+/*
+ * Internal string casing functions implementing
+ * ustring.h/ustrcase.c and UnicodeString case mapping functions.
+ */
+
+struct UCaseMap {
+    const UCaseProps *csp;
+#if !UCONFIG_NO_BREAK_ITERATION
+    UBreakIterator *iter;  /* We adopt the iterator, so we own it. */
+#endif
+    char locale[32];
+    int32_t locCache;
+    uint32_t options;
+};
+
+#ifndef __UCASEMAP_H__
+typedef struct UCaseMap UCaseMap;
+#endif
+
+#if UCONFIG_NO_BREAK_ITERATION
+#   define UCASEMAP_INITIALIZER { NULL, { 0 }, 0, 0 }
+#else
+#   define UCASEMAP_INITIALIZER { NULL, NULL, { 0 }, 0, 0 }
+#endif
+
+U_CFUNC void
+ustrcase_setTempCaseMapLocale(UCaseMap *csm, const char *locale);
+
+#ifndef U_STRING_CASE_MAPPER_DEFINED
+#define U_STRING_CASE_MAPPER_DEFINED
+
+/**
+ * String case mapping function type, used by ustrcase_map().
+ * All error checking must be done.
+ * The UCaseMap must be fully initialized, with locale and/or iter set as needed.
+ * src and dest must not overlap.
+ */
+typedef int32_t U_CALLCONV
+UStringCaseMapper(const UCaseMap *csm,
+                  UChar *dest, int32_t destCapacity,
+                  const UChar *src, int32_t srcLength,
+                  UErrorCode *pErrorCode);
+
+#endif
+
+/** Implements UStringCaseMapper. */
+U_CFUNC int32_t U_CALLCONV
+ustrcase_internalToLower(const UCaseMap *csm,
+                         UChar *dest, int32_t destCapacity,
+                         const UChar *src, int32_t srcLength,
+                         UErrorCode *pErrorCode);
+
+/** Implements UStringCaseMapper. */
+U_CFUNC int32_t U_CALLCONV
+ustrcase_internalToUpper(const UCaseMap *csm,
+                         UChar *dest, int32_t destCapacity,
+                         const UChar *src, int32_t srcLength,
+                         UErrorCode *pErrorCode);
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+/** Implements UStringCaseMapper. */
+U_CFUNC int32_t U_CALLCONV
+ustrcase_internalToTitle(const UCaseMap *csm,
+                         UChar *dest, int32_t destCapacity,
+                         const UChar *src, int32_t srcLength,
+                         UErrorCode *pErrorCode);
+
+#endif
+
+/** Implements UStringCaseMapper. */
+U_CFUNC int32_t U_CALLCONV
+ustrcase_internalFold(const UCaseMap *csm,
+                      UChar *dest, int32_t destCapacity,
+                      const UChar *src, int32_t srcLength,
+                      UErrorCode *pErrorCode);
+
+/**
+ * Implements argument checking and buffer handling
+ * for string case mapping as a common function.
+ */
+U_CFUNC int32_t
+ustrcase_map(const UCaseMap *csm,
+             UChar *dest, int32_t destCapacity,
+             const UChar *src, int32_t srcLength,
+             UStringCaseMapper *stringCaseMapper,
+             UErrorCode *pErrorCode);
+
+/**
+ * UTF-8 string case mapping function type, used by ucasemap_mapUTF8().
+ * UTF-8 version of UStringCaseMapper.
+ * All error checking must be done.
+ * The UCaseMap must be fully initialized, with locale and/or iter set as needed.
+ * src and dest must not overlap.
+ */
+typedef int32_t U_CALLCONV
+UTF8CaseMapper(const UCaseMap *csm,
+               uint8_t *dest, int32_t destCapacity,
+               const uint8_t *src, int32_t srcLength,
+               UErrorCode *pErrorCode);
+
+/** Implements UTF8CaseMapper. */
+U_CFUNC int32_t U_CALLCONV
+ucasemap_internalUTF8ToTitle(const UCaseMap *csm,
+         uint8_t *dest, int32_t destCapacity,
+         const uint8_t *src, int32_t srcLength,
+         UErrorCode *pErrorCode);
+
+/**
+ * Implements argument checking and buffer handling
+ * for UTF-8 string case mapping as a common function.
+ */
+U_CFUNC int32_t
+ucasemap_mapUTF8(const UCaseMap *csm,
+                 uint8_t *dest, int32_t destCapacity,
+                 const uint8_t *src, int32_t srcLength,
+                 UTF8CaseMapper *stringCaseMapper,
+                 UErrorCode *pErrorCode);
+
+#ifdef __cplusplus
+
+U_NAMESPACE_BEGIN
+namespace GreekUpper {
+
+// Data bits.
+static const uint32_t UPPER_MASK = 0x3ff;
+static const uint32_t HAS_VOWEL = 0x1000;
+static const uint32_t HAS_YPOGEGRAMMENI = 0x2000;
+static const uint32_t HAS_ACCENT = 0x4000;
+static const uint32_t HAS_DIALYTIKA = 0x8000;
+// Further bits during data building and processing, not stored in the data map.
+static const uint32_t HAS_COMBINING_DIALYTIKA = 0x10000;
+static const uint32_t HAS_OTHER_GREEK_DIACRITIC = 0x20000;
+
+static const uint32_t HAS_VOWEL_AND_ACCENT = HAS_VOWEL | HAS_ACCENT;
+static const uint32_t HAS_VOWEL_AND_ACCENT_AND_DIALYTIKA =
+        HAS_VOWEL_AND_ACCENT | HAS_DIALYTIKA;
+static const uint32_t HAS_EITHER_DIALYTIKA = HAS_DIALYTIKA | HAS_COMBINING_DIALYTIKA;
+
+// State bits.
+static const uint32_t AFTER_CASED = 1;
+static const uint32_t AFTER_VOWEL_WITH_ACCENT = 2;
+
+uint32_t getLetterData(UChar32 c);
+
+/**
+ * Returns a non-zero value for each of the Greek combining diacritics
+ * listed in The Unicode Standard, version 8, chapter 7.2 Greek,
+ * plus some perispomeni look-alikes.
+ */
+uint32_t getDiacriticData(UChar32 c);
+
+}  // namespace GreekUpper
+U_NAMESPACE_END
+
+#endif  // __cplusplus
+
 U_CAPI int32_t U_EXPORT2 
 ustr_hashUCharsN(const UChar *str, int32_t length);
 
index 0b2ba02..6380877 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ustr_titlecase_brkiter.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #if !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/brkiter.h"
-#include "unicode/casemap.h"
-#include "unicode/localpointer.h"
 #include "unicode/ubrk.h"
 #include "unicode/ucasemap.h"
 #include "cmemory.h"
 #include "ucase.h"
-#include "ucasemap_imp.h"
-
-U_NAMESPACE_USE
+#include "ustr_imp.h"
 
 /* functions available in the common library (for unistr_case.cpp) */
 
+/*
+ * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
+ * Do this fast because it is called with every function call.
+ * Duplicate of the same function in ustrcase.cpp, to keep it inline.
+ */
+static inline void
+setTempCaseMap(UCaseMap *csm, const char *locale) {
+    if(csm->csp==NULL) {
+        csm->csp=ucase_getSingleton();
+    }
+    if(locale!=NULL && locale[0]==0) {
+        csm->locale[0]=0;
+    } else {
+        ustrcase_setTempCaseMapLocale(csm, locale);
+    }
+}
+
 /* public API functions */
 
 U_CAPI int32_t U_EXPORT2
@@ -42,73 +55,39 @@ u_strToTitle(UChar *dest, int32_t destCapacity,
              UBreakIterator *titleIter,
              const char *locale,
              UErrorCode *pErrorCode) {
-    LocalPointer<BreakIterator> ownedIter;
-    BreakIterator *iter;
+    UCaseMap csm=UCASEMAP_INITIALIZER;
+    setTempCaseMap(&csm, locale);
     if(titleIter!=NULL) {
-        iter=reinterpret_cast<BreakIterator *>(titleIter);
+        ubrk_setText(csm.iter=titleIter, src, srcLength, pErrorCode);
     } else {
-        iter=BreakIterator::createWordInstance(Locale(locale), *pErrorCode);
-        ownedIter.adoptInstead(iter);
-    }
-    if(U_FAILURE(*pErrorCode)) {
-        return 0;
+        csm.iter=ubrk_open(UBRK_WORD, csm.locale, src, srcLength, pErrorCode);
     }
-    UnicodeString s(srcLength<0, src, srcLength);
-    iter->setText(s);
-    return ustrcase_mapWithOverlap(
-        ustrcase_getCaseLocale(locale), 0, iter,
+    int32_t length=ustrcase_map(
+        &csm,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToTitle, *pErrorCode);
-}
-
-U_NAMESPACE_BEGIN
-
-int32_t CaseMap::toTitle(
-        const char *locale, uint32_t options, BreakIterator *iter,
-        const UChar *src, int32_t srcLength,
-        UChar *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
-    LocalPointer<BreakIterator> ownedIter;
-    if(iter==NULL) {
-        iter=BreakIterator::createWordInstance(Locale(locale), errorCode);
-        ownedIter.adoptInstead(iter);
-    }
-    if(U_FAILURE(errorCode)) {
-        return 0;
+        ustrcase_internalToTitle, pErrorCode);
+    if(titleIter==NULL && csm.iter!=NULL) {
+        ubrk_close(csm.iter);
     }
-    UnicodeString s(srcLength<0, src, srcLength);
-    iter->setText(s);
-    return ustrcase_map(
-        ustrcase_getCaseLocale(locale), options, iter,
-        dest, destCapacity,
-        src, srcLength,
-        ustrcase_internalToTitle, edits, errorCode);
+    return length;
 }
 
-U_NAMESPACE_END
-
 U_CAPI int32_t U_EXPORT2
 ucasemap_toTitle(UCaseMap *csm,
                  UChar *dest, int32_t destCapacity,
                  const UChar *src, int32_t srcLength,
                  UErrorCode *pErrorCode) {
-    if (U_FAILURE(*pErrorCode)) {
-        return 0;
-    }
-    if (csm->iter == NULL) {
-        csm->iter = BreakIterator::createWordInstance(Locale(csm->locale), *pErrorCode);
-    }
-    if (U_FAILURE(*pErrorCode)) {
-        return 0;
+    if(csm->iter!=NULL) {
+        ubrk_setText(csm->iter, src, srcLength, pErrorCode);
+    } else {
+        csm->iter=ubrk_open(UBRK_WORD, csm->locale, src, srcLength, pErrorCode);
     }
-    UnicodeString s(srcLength<0, src, srcLength);
-    csm->iter->setText(s);
     return ustrcase_map(
-        csm->caseLocale, csm->options, csm->iter,
+        csm,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToTitle, NULL, *pErrorCode);
+        ustrcase_internalToTitle, pErrorCode);
 }
 
 #endif  // !UCONFIG_NO_BREAK_ITERATION
index e720549..59a5869 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ustr_wcs.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -254,7 +254,7 @@ u_strToWCS(wchar_t *dest,
         srcLength = u_strlen(src);
     }
     if(0 < srcLength && srcLength <= destCapacity){
-        u_memcpy((UChar *)dest, src, srcLength);
+        u_memcpy(dest, src, srcLength);
     }
     if(pDestLength){
        *pDestLength = srcLength;
@@ -509,7 +509,7 @@ u_strFromWCS(UChar   *dest,
         srcLength = u_strlen((const UChar *)src);
     }
     if(0 < srcLength && srcLength <= destCapacity){
-        u_memcpy(dest, (const UChar *)src, srcLength);
+        u_memcpy(dest, src, srcLength);
     }
     if(pDestLength){
        *pDestLength = srcLength;
index b12e7a7..8f594ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  ustrcase.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,8 +22,6 @@
 
 #include "unicode/utypes.h"
 #include "unicode/brkiter.h"
-#include "unicode/casemap.h"
-#include "unicode/edits.h"
 #include "unicode/ustring.h"
 #include "unicode/ucasemap.h"
 #include "unicode/ubrk.h"
 #include "unicode/utf16.h"
 #include "cmemory.h"
 #include "ucase.h"
-#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 #include "uassert.h"
 
-U_NAMESPACE_BEGIN
-
-namespace {
-
-int32_t checkOverflowAndEditsError(int32_t destIndex, int32_t destCapacity,
-                                   Edits *edits, UErrorCode &errorCode) {
-    if (U_SUCCESS(errorCode)) {
-        if (destIndex > destCapacity) {
-            errorCode = U_BUFFER_OVERFLOW_ERROR;
-        } else if (edits != NULL) {
-            edits->copyErrorTo(errorCode);
-        }
-    }
-    return destIndex;
-}
-
-}  // namespace
-
-U_NAMESPACE_END
-
 U_NAMESPACE_USE
 
 /* string casing ------------------------------------------------------------ */
@@ -62,43 +39,21 @@ U_NAMESPACE_USE
 /* Appends a full case mapping result, see UCASE_MAX_STRING_LENGTH. */
 static inline int32_t
 appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
-             int32_t result, const UChar *s,
-             int32_t cpLength, uint32_t options, icu::Edits *edits) {
+             int32_t result, const UChar *s) {
     UChar32 c;
     int32_t length;
 
     /* decode the result */
     if(result<0) {
         /* (not) original code point */
-        if(edits!=NULL) {
-            edits->addUnchanged(cpLength);
-            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
-                return destIndex;
-            }
-        }
         c=~result;
-        if(destIndex<destCapacity && c<=0xffff) {  // BMP slightly-fastpath
-            dest[destIndex++]=(UChar)c;
-            return destIndex;
-        }
-        length=cpLength;
+        length=U16_LENGTH(c);
+    } else if(result<=UCASE_MAX_STRING_LENGTH) {
+        c=U_SENTINEL;
+        length=result;
     } else {
-        if(result<=UCASE_MAX_STRING_LENGTH) {
-            c=U_SENTINEL;
-            length=result;
-        } else if(destIndex<destCapacity && result<=0xffff) {  // BMP slightly-fastpath
-            dest[destIndex++]=(UChar)result;
-            if(edits!=NULL) {
-                edits->addReplace(cpLength, 1);
-            }
-            return destIndex;
-        } else {
-            c=result;
-            length=U16_LENGTH(c);
-        }
-        if(edits!=NULL) {
-            edits->addReplace(cpLength, length);
-        }
+        c=result;
+        length=U16_LENGTH(c);
     }
     if(length>(INT32_MAX-destIndex)) {
         return -1;  // integer overflow
@@ -144,15 +99,9 @@ appendUChar(UChar *dest, int32_t destIndex, int32_t destCapacity, UChar c) {
 }
 
 static inline int32_t
-appendUnchanged(UChar *dest, int32_t destIndex, int32_t destCapacity,
-                const UChar *s, int32_t length, uint32_t options, icu::Edits *edits) {
+appendString(UChar *dest, int32_t destIndex, int32_t destCapacity,
+             const UChar *s, int32_t length) {
     if(length>0) {
-        if(edits!=NULL) {
-            edits->addUnchanged(length);
-            if(options & UCASEMAP_OMIT_UNCHANGED_TEXT) {
-                return destIndex;
-            }
-        }
         if(length>(INT32_MAX-destIndex)) {
             return -1;  // integer overflow
         }
@@ -201,66 +150,84 @@ utf16_caseContextIterator(void *context, int8_t dir) {
  * context [0..srcLength[ into account.
  */
 static int32_t
-_caseMap(int32_t caseLocale, uint32_t options, UCaseMapFull *map,
+_caseMap(const UCaseMap *csm, UCaseMapFull *map,
          UChar *dest, int32_t destCapacity,
          const UChar *src, UCaseContext *csc,
          int32_t srcStart, int32_t srcLimit,
-         icu::Edits *edits,
-         UErrorCode &errorCode) {
+         UErrorCode *pErrorCode) {
+    const UChar *s;
+    UChar32 c, c2 = 0;
+    int32_t srcIndex, destIndex;
+    int32_t locCache;
+
+    locCache=csm->locCache;
+
     /* case mapping loop */
-    int32_t srcIndex=srcStart;
-    int32_t destIndex=0;
+    srcIndex=srcStart;
+    destIndex=0;
     while(srcIndex<srcLimit) {
-        int32_t cpStart;
-        csc->cpStart=cpStart=srcIndex;
-        UChar32 c;
+        csc->cpStart=srcIndex;
         U16_NEXT(src, srcIndex, srcLimit, c);
         csc->cpLimit=srcIndex;
-        const UChar *s;
-        c=map(c, utf16_caseContextIterator, csc, &s, caseLocale);
-        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
-                                 srcIndex - cpStart, options, edits);
-        if (destIndex < 0) {
-            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
-            return 0;
+        c=map(csm->csp, c, utf16_caseContextIterator, csc, &s, csm->locale, &locCache);
+        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0xffff : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0xffff)) {
+            /* fast path version of appendResult() for BMP results */
+            dest[destIndex++]=(UChar)c2;
+        } else {
+            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+            if(destIndex<0) {
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
+            }
         }
     }
 
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
     return destIndex;
 }
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
 U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *iter,
+ustrcase_internalToTitle(const UCaseMap *csm,
                          UChar *dest, int32_t destCapacity,
                          const UChar *src, int32_t srcLength,
-                         icu::Edits *edits,
-                         UErrorCode &errorCode) {
-    if(U_FAILURE(errorCode)) {
+                         UErrorCode *pErrorCode) {
+    const UChar *s;
+    UChar32 c;
+    int32_t prev, titleStart, titleLimit, idx, destIndex;
+    UBool isFirstIndex;
+
+    if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
 
+    // Use the C++ abstract base class to minimize dependencies.
+    // TODO: Change UCaseMap.iter to store a BreakIterator directly.
+    BreakIterator *bi=reinterpret_cast<BreakIterator *>(csm->iter);
+
     /* set up local variables */
+    int32_t locCache=csm->locCache;
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    int32_t destIndex=0;
-    int32_t prev=0;
-    UBool isFirstIndex=TRUE;
+    destIndex=0;
+    prev=0;
+    isFirstIndex=TRUE;
 
     /* titlecasing loop */
     while(prev<srcLength) {
         /* find next index where to titlecase */
-        int32_t index;
         if(isFirstIndex) {
             isFirstIndex=FALSE;
-            index=iter->first();
+            idx=bi->first();
         } else {
-            index=iter->next();
+            idx=bi->next();
         }
-        if(index==UBRK_DONE || index>srcLength) {
-            index=srcLength;
+        if(idx==UBRK_DONE || idx>srcLength) {
+            idx=srcLength;
         }
 
         /*
@@ -276,32 +243,29 @@ ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *it
          * b) first case letter (titlecase)         [titleStart..titleLimit[
          * c) subsequent characters (lowercase)                 [titleLimit..index[
          */
-        if(prev<index) {
+        if(prev<idx) {
             /* find and copy uncased characters [prev..titleStart[ */
-            int32_t titleStart=prev;
-            int32_t titleLimit=prev;
-            UChar32 c;
-            U16_NEXT(src, titleLimit, index, c);
-            if((options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(c)) {
+            titleStart=titleLimit=prev;
+            U16_NEXT(src, titleLimit, idx, c);
+            if((csm->options&U_TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCASE_NONE==ucase_getType(csm->csp, c)) {
                 /* Adjust the titlecasing index (titleStart) to the next cased character. */
                 for(;;) {
                     titleStart=titleLimit;
-                    if(titleLimit==index) {
+                    if(titleLimit==idx) {
                         /*
                          * only uncased characters in [prev..index[
                          * stop with titleStart==titleLimit==index
                          */
                         break;
                     }
-                    U16_NEXT(src, titleLimit, index, c);
-                    if(UCASE_NONE!=ucase_getType(c)) {
+                    U16_NEXT(src, titleLimit, idx, c);
+                    if(UCASE_NONE!=ucase_getType(csm->csp, c)) {
                         break; /* cased letter at [titleStart..titleLimit[ */
                     }
                 }
-                destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                          src+prev, titleStart-prev, options, edits);
+                destIndex=appendString(dest, destIndex, destCapacity, src+prev, titleStart-prev);
                 if(destIndex<0) {
-                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
             }
@@ -310,64 +274,48 @@ ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *it
                 /* titlecase c which is from [titleStart..titleLimit[ */
                 csc.cpStart=titleStart;
                 csc.cpLimit=titleLimit;
-                const UChar *s;
-                c=ucase_toFullTitle(c, utf16_caseContextIterator, &csc, &s, caseLocale);
-                destIndex=appendResult(dest, destIndex, destCapacity, c, s,
-                                       titleLimit-titleStart, options, edits);
+                c=ucase_toFullTitle(csm->csp, c, utf16_caseContextIterator, &csc, &s, csm->locale, &locCache);
+                destIndex=appendResult(dest, destIndex, destCapacity, c, s); 
                 if(destIndex<0) {
-                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                     return 0;
                 }
 
                 /* Special case Dutch IJ titlecasing */
-                if (titleStart+1 < index &&
-                        caseLocale == UCASE_LOC_DUTCH &&
-                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069)) {
-                    if (src[titleStart+1] == 0x006A) {
-                        destIndex=appendUChar(dest, destIndex, destCapacity, 0x004A);
-                        if(destIndex<0) {
-                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                            return 0;
-                        }
-                        if(edits!=NULL) {
-                            edits->addReplace(1, 1);
-                        }
-                        titleLimit++;
-                    } else if (src[titleStart+1] == 0x004A) {
-                        // Keep the capital J from getting lowercased.
-                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                                  src+titleStart+1, 1, options, edits);
-                        if(destIndex<0) {
-                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                            return 0;
-                        }
-                        titleLimit++;
+                if (titleStart+1 < idx &&
+                        ucase_getCaseLocale(csm->locale,&locCache) == UCASE_LOC_DUTCH &&
+                        (src[titleStart] == 0x0049 || src[titleStart] == 0x0069) &&
+                        (src[titleStart+1] == 0x004A || src[titleStart+1] == 0x006A)) {
+                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x004A);
+                    if(destIndex<0) {
+                        *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                        return 0;
                     }
+                    titleLimit++;
                 }
 
                 /* lowercase [titleLimit..index[ */
-                if(titleLimit<index) {
-                    if((options&U_TITLECASE_NO_LOWERCASE)==0) {
+                if(titleLimit<idx) {
+                    if((csm->options&U_TITLECASE_NO_LOWERCASE)==0) {
                         /* Normal operation: Lowercase the rest of the word. */
                         destIndex+=
                             _caseMap(
-                                caseLocale, options, ucase_toFullLower,
+                                csm, ucase_toFullLower,
                                 dest+destIndex, destCapacity-destIndex,
                                 src, &csc,
-                                titleLimit, index,
-                                edits, errorCode);
-                        if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
-                            errorCode=U_ZERO_ERROR;
+                                titleLimit, idx,
+                                pErrorCode);
+                        if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+                            *pErrorCode=U_ZERO_ERROR;
                         }
-                        if(U_FAILURE(errorCode)) {
+                        if(U_FAILURE(*pErrorCode)) {
                             return destIndex;
                         }
                     } else {
                         /* Optionally just copy the rest of the word unchanged. */
-                        destIndex=appendUnchanged(dest, destIndex, destCapacity,
-                                                  src+titleLimit, index-titleLimit, options, edits);
+                        destIndex=appendString(dest, destIndex, destCapacity, src+titleLimit, idx-titleLimit);
                         if(destIndex<0) {
-                            errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                            *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
                             return 0;
                         }
                     }
@@ -375,10 +323,13 @@ ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *it
             }
         }
 
-        prev=index;
+        prev=idx;
     }
 
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+    return destIndex;
 }
 
 #endif  // !UCONFIG_NO_BREAK_ITERATION
@@ -840,11 +791,11 @@ uint32_t getDiacriticData(UChar32 c) {
     }
 }
 
-UBool isFollowedByCasedLetter(const UChar *s, int32_t i, int32_t length) {
+UBool isFollowedByCasedLetter(const UCaseProps *csp, const UChar *s, int32_t i, int32_t length) {
     while (i < length) {
         UChar32 c;
         U16_NEXT(s, i, length, c);
-        int32_t type = ucase_getTypeOrIgnorable(c);
+        int32_t type = ucase_getTypeOrIgnorable(csp, c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // Case-ignorable, continue with the loop.
         } else if (type != UCASE_NONE) {
@@ -862,11 +813,11 @@ UBool isFollowedByCasedLetter(const UChar *s, int32_t i, int32_t length) {
  * for each character.
  * TODO: Try to re-consolidate one way or another with the non-Greek function.
  */
-int32_t toUpper(uint32_t options,
+int32_t toUpper(const UCaseMap *csm,
                 UChar *dest, int32_t destCapacity,
                 const UChar *src, int32_t srcLength,
-                Edits *edits,
-                UErrorCode &errorCode) {
+                UErrorCode *pErrorCode) {
+    int32_t locCache = UCASE_LOC_GREEK;
     int32_t destIndex=0;
     uint32_t state = 0;
     for (int32_t i = 0; i < srcLength;) {
@@ -874,7 +825,7 @@ int32_t toUpper(uint32_t options,
         UChar32 c;
         U16_NEXT(src, nextIndex, srcLength, c);
         uint32_t nextState = 0;
-        int32_t type = ucase_getTypeOrIgnorable(c);
+        int32_t type = ucase_getTypeOrIgnorable(csm->csp, c);
         if ((type & UCASE_IGNORABLE) != 0) {
             // c is case-ignorable
             nextState |= (state & AFTER_CASED);
@@ -921,7 +872,7 @@ int32_t toUpper(uint32_t options,
                     (data & HAS_ACCENT) != 0 &&
                     numYpogegrammeni == 0 &&
                     (state & AFTER_CASED) == 0 &&
-                    !isFollowedByCasedLetter(src, nextIndex, srcLength)) {
+                    !isFollowedByCasedLetter(csm->csp, src, nextIndex, srcLength)) {
                 // Keep disjunctive "or" with (only) a tonos.
                 // We use the same "word boundary" conditions as for the Final_Sigma test.
                 if (i == nextIndex) {
@@ -939,67 +890,43 @@ int32_t toUpper(uint32_t options,
                     data &= ~HAS_EITHER_DIALYTIKA;
                 }
             }
-
-            UBool change = TRUE;
-            if (edits != NULL) {
-                // Find out first whether we are changing the text.
-                change = src[i] != upper || numYpogegrammeni > 0;
-                int32_t i2 = i + 1;
-                if ((data & HAS_EITHER_DIALYTIKA) != 0) {
-                    change |= i2 >= nextIndex || src[i2] != 0x308;
-                    ++i2;
-                }
-                if (addTonos) {
-                    change |= i2 >= nextIndex || src[i2] != 0x301;
-                    ++i2;
-                }
-                int32_t oldLength = nextIndex - i;
-                int32_t newLength = (i2 - i) + numYpogegrammeni;
-                change |= oldLength != newLength;
-                if (change) {
-                    if (edits != NULL) {
-                        edits->addReplace(oldLength, newLength);
-                    }
-                } else {
-                    if (edits != NULL) {
-                        edits->addUnchanged(oldLength);
-                    }
-                    // Write unchanged text?
-                    change = (options & UCASEMAP_OMIT_UNCHANGED_TEXT) == 0;
-                }
+            destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
+            if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, 0x308);  // restore or add a dialytika
             }
-
-            if (change) {
-                destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
-                if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
-                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x308);  // restore or add a dialytika
-                }
-                if (destIndex >= 0 && addTonos) {
-                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x301);
-                }
-                while (destIndex >= 0 && numYpogegrammeni > 0) {
-                    destIndex=appendUChar(dest, destIndex, destCapacity, 0x399);
-                    --numYpogegrammeni;
-                }
-                if(destIndex<0) {
-                    errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                    return 0;
-                }
+            if (destIndex >= 0 && addTonos) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, 0x301);
+            }
+            while (destIndex >= 0 && numYpogegrammeni > 0) {
+                destIndex=appendUChar(dest, destIndex, destCapacity, 0x399);
+                --numYpogegrammeni;
+            }
+            if(destIndex<0) {
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
             }
         } else {
             const UChar *s;
-            c=ucase_toFullUpper(c, NULL, NULL, &s, UCASE_LOC_GREEK);
-            destIndex = appendResult(dest, destIndex, destCapacity, c, s,
-                                     nextIndex - i, options, edits);
-            if (destIndex < 0) {
-                errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
+            UChar32 c2 = 0;
+            c=ucase_toFullUpper(csm->csp, c, NULL, NULL, &s, csm->locale, &locCache);
+            if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0xffff : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0xffff)) {
+                /* fast path version of appendResult() for BMP results */
+                dest[destIndex++]=(UChar)c2;
+            } else {
+                destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+                if(destIndex<0) {
+                    *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                    return 0;
+                }
             }
         }
         i = nextIndex;
         state = nextState;
     }
 
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
     return destIndex;
 }
 
@@ -1009,128 +936,94 @@ U_NAMESPACE_END
 /* functions available in the common library (for unistr_case.cpp) */
 
 U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
+ustrcase_internalToLower(const UCaseMap *csm,
                          UChar *dest, int32_t destCapacity,
                          const UChar *src, int32_t srcLength,
-                         icu::Edits *edits,
-                         UErrorCode &errorCode) {
+                         UErrorCode *pErrorCode) {
     UCaseContext csc=UCASECONTEXT_INITIALIZER;
     csc.p=(void *)src;
     csc.limit=srcLength;
-    int32_t destIndex = _caseMap(
-        caseLocale, options, ucase_toFullLower,
+    return _caseMap(
+        csm, ucase_toFullLower,
         dest, destCapacity,
         src, &csc, 0, srcLength,
-        edits, errorCode);
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+        pErrorCode);
 }
 
 U_CFUNC int32_t U_CALLCONV
-ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
+ustrcase_internalToUpper(const UCaseMap *csm,
                          UChar *dest, int32_t destCapacity,
                          const UChar *src, int32_t srcLength,
-                         icu::Edits *edits,
-                         UErrorCode &errorCode) {
-    int32_t destIndex;
-    if (caseLocale == UCASE_LOC_GREEK) {
-        destIndex = GreekUpper::toUpper(options, dest, destCapacity,
-                                        src, srcLength, edits, errorCode);
-    } else {
-        UCaseContext csc=UCASECONTEXT_INITIALIZER;
-        csc.p=(void *)src;
-        csc.limit=srcLength;
-        destIndex = _caseMap(
-            caseLocale, options, ucase_toFullUpper,
-            dest, destCapacity,
-            src, &csc, 0, srcLength,
-            edits, errorCode);
+                         UErrorCode *pErrorCode) {
+    int32_t locCache = csm->locCache;
+    if (ucase_getCaseLocale(csm->locale, &locCache) == UCASE_LOC_GREEK) {
+        return GreekUpper::toUpper(csm, dest, destCapacity, src, srcLength, pErrorCode);
     }
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+    UCaseContext csc=UCASECONTEXT_INITIALIZER;
+    csc.p=(void *)src;
+    csc.limit=srcLength;
+    return _caseMap(
+        csm, ucase_toFullUpper,
+        dest, destCapacity,
+        src, &csc, 0, srcLength,
+        pErrorCode);
 }
 
-U_CFUNC int32_t U_CALLCONV
-ustrcase_internalFold(int32_t /* caseLocale */, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
-                      UChar *dest, int32_t destCapacity,
-                      const UChar *src, int32_t srcLength,
-                      icu::Edits *edits,
-                      UErrorCode &errorCode) {
+static int32_t
+ustr_foldCase(const UCaseProps *csp,
+              UChar *dest, int32_t destCapacity,
+              const UChar *src, int32_t srcLength,
+              uint32_t options,
+              UErrorCode *pErrorCode) {
+    int32_t srcIndex, destIndex;
+
+    const UChar *s;
+    UChar32 c, c2 = 0;
+
     /* case mapping loop */
-    int32_t srcIndex = 0;
-    int32_t destIndex = 0;
-    while (srcIndex < srcLength) {
-        int32_t cpStart = srcIndex;
-        UChar32 c;
+    srcIndex=destIndex=0;
+    while(srcIndex<srcLength) {
         U16_NEXT(src, srcIndex, srcLength, c);
-        const UChar *s;
-        c = ucase_toFullFolding(c, &s, options);
-        destIndex = appendResult(dest, destIndex, destCapacity, c, s,
-                                 srcIndex - cpStart, options, edits);
-        if (destIndex < 0) {
-            errorCode = U_INDEX_OUTOFBOUNDS_ERROR;
-            return 0;
+        c=ucase_toFullFolding(csp, c, &s, options);
+        if((destIndex<destCapacity) && (c<0 ? (c2=~c)<=0xffff : UCASE_MAX_STRING_LENGTH<c && (c2=c)<=0xffff)) {
+            /* fast path version of appendResult() for BMP results */
+            dest[destIndex++]=(UChar)c2;
+        } else {
+            destIndex=appendResult(dest, destIndex, destCapacity, c, s);
+            if(destIndex<0) {
+                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+                return 0;
+            }
         }
     }
 
-    return checkOverflowAndEditsError(destIndex, destCapacity, edits, errorCode);
+    if(destIndex>destCapacity) {
+        *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+    }
+    return destIndex;
+}
+
+U_CFUNC int32_t U_CALLCONV
+ustrcase_internalFold(const UCaseMap *csm,
+                      UChar *dest, int32_t destCapacity,
+                      const UChar *src, int32_t srcLength,
+                      UErrorCode *pErrorCode) {
+    return ustr_foldCase(csm->csp, dest, destCapacity, src, srcLength, csm->options, pErrorCode);
 }
 
 U_CFUNC int32_t
-ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
+ustrcase_map(const UCaseMap *csm,
              UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              UStringCaseMapper *stringCaseMapper,
-             icu::Edits *edits,
-             UErrorCode &errorCode) {
-    int32_t destLength;
-
-    /* check argument values */
-    if(U_FAILURE(errorCode)) {
-        return 0;
-    }
-    if( destCapacity<0 ||
-        (dest==NULL && destCapacity>0) ||
-        src==NULL ||
-        srcLength<-1
-    ) {
-        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    /* get the string length */
-    if(srcLength==-1) {
-        srcLength=u_strlen(src);
-    }
-
-    /* check for overlapping source and destination */
-    if( dest!=NULL &&
-        ((src>=dest && src<(dest+destCapacity)) ||
-         (dest>=src && dest<(src+srcLength)))
-    ) {
-        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-
-    if(edits!=NULL) {
-        edits->reset();
-    }
-    destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
-                                dest, destCapacity, src, srcLength, edits, errorCode);
-    return u_terminateUChars(dest, destCapacity, destLength, &errorCode);
-}
-
-U_CFUNC int32_t
-ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
-                        UChar *dest, int32_t destCapacity,
-                        const UChar *src, int32_t srcLength,
-                        UStringCaseMapper *stringCaseMapper,
-                        UErrorCode &errorCode) {
+             UErrorCode *pErrorCode) {
     UChar buffer[300];
     UChar *temp;
 
     int32_t destLength;
 
     /* check argument values */
-    if(U_FAILURE(errorCode)) {
+    if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
     if( destCapacity<0 ||
@@ -1138,7 +1031,7 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
         src==NULL ||
         srcLength<-1
     ) {
-        errorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
 
@@ -1160,7 +1053,7 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
             /* allocate a buffer */
             temp=(UChar *)uprv_malloc(destCapacity*U_SIZEOF_UCHAR);
             if(temp==NULL) {
-                errorCode=U_MEMORY_ALLOCATION_ERROR;
+                *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
                 return 0;
             }
         }
@@ -1168,19 +1061,21 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
         temp=dest;
     }
 
-    destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
-                                temp, destCapacity, src, srcLength, NULL, errorCode);
+    destLength=stringCaseMapper(csm, temp, destCapacity, src, srcLength, pErrorCode);
     if(temp!=dest) {
         /* copy the result string to the destination buffer */
-        if (U_SUCCESS(errorCode) && 0 < destLength && destLength <= destCapacity) {
-            u_memmove(dest, temp, destLength);
+        if(destLength>0) {
+            int32_t copyLength= destLength<=destCapacity ? destLength : destCapacity;
+            if(copyLength>0) {
+                u_memmove(dest, temp, copyLength);
+            }
         }
         if(temp!=buffer) {
             uprv_free(temp);
         }
     }
 
-    return u_terminateUChars(dest, destCapacity, destLength, &errorCode);
+    return u_terminateUChars(dest, destCapacity, destLength, pErrorCode);
 }
 
 /* public API functions */
@@ -1190,29 +1085,16 @@ u_strFoldCase(UChar *dest, int32_t destCapacity,
               const UChar *src, int32_t srcLength,
               uint32_t options,
               UErrorCode *pErrorCode) {
-    return ustrcase_mapWithOverlap(
-        UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
-        dest, destCapacity,
-        src, srcLength,
-        ustrcase_internalFold, *pErrorCode);
-}
-
-U_NAMESPACE_BEGIN
-
-int32_t CaseMap::fold(
-        uint32_t options,
-        const UChar *src, int32_t srcLength,
-        UChar *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
+    UCaseMap csm=UCASEMAP_INITIALIZER;
+    csm.csp=ucase_getSingleton();
+    csm.options=options;
     return ustrcase_map(
-        UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
+        &csm,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalFold, edits, errorCode);
+        ustrcase_internalFold, pErrorCode);
 }
 
-U_NAMESPACE_END
-
 /* case-insensitive string comparisons -------------------------------------- */
 
 /*
@@ -1252,6 +1134,8 @@ static int32_t _cmpFold(
             UErrorCode *pErrorCode) {
     int32_t cmpRes = 0;
 
+    const UCaseProps *csp;
+
     /* current-level start/limit - s1/s2 as current */
     const UChar *start1, *start2, *limit1, *limit2;
 
@@ -1283,6 +1167,7 @@ static int32_t _cmpFold(
      * assume that at least the option U_COMPARE_IGNORE_CASE is set
      * otherwise this function would have to behave exactly as uprv_strCompare()
      */
+    csp=ucase_getSingleton();
     if(U_FAILURE(*pErrorCode)) {
         return 0;
     }
@@ -1464,7 +1349,7 @@ static int32_t _cmpFold(
          */
 
         if( level1==0 &&
-            (length=ucase_toFullFolding((UChar32)cp1, &p, options))>=0
+            (length=ucase_toFullFolding(csp, (UChar32)cp1, &p, options))>=0
         ) {
             /* cp1 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c1)) {
@@ -1510,7 +1395,7 @@ static int32_t _cmpFold(
         }
 
         if( level2==0 &&
-            (length=ucase_toFullFolding((UChar32)cp2, &p, options))>=0
+            (length=ucase_toFullFolding(csp, (UChar32)cp2, &p, options))>=0
         ) {
             /* cp2 case-folds to the code point "length" or to p[length] */
             if(U_IS_SURROGATE(c2)) {
index 2ecd24f..78f4bbd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ustrcase_locale.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 */
 
 #include "unicode/utypes.h"
-#include "uassert.h"
-#include "unicode/brkiter.h"
-#include "unicode/casemap.h"
 #include "unicode/ucasemap.h"
 #include "unicode/uloc.h"
 #include "unicode/ustring.h"
 #include "ucase.h"
-#include "ucasemap_imp.h"
+#include "ustr_imp.h"
 
-U_CFUNC int32_t
-ustrcase_getCaseLocale(const char *locale) {
-    if (locale == NULL) {
-        locale = uloc_getDefault();
+U_CFUNC void
+ustrcase_setTempCaseMapLocale(UCaseMap *csm, const char *locale) {
+    /*
+     * We could call ucasemap_setLocale(), but here we really only care about
+     * the initial language subtag, we need not return the real string via
+     * ucasemap_getLocale(), and we don't care about only getting "x" from
+     * "x-some-thing" etc.
+     *
+     * We ignore locales with a longer-than-3 initial subtag.
+     *
+     * We also do not fill in the locCache because it is rarely used,
+     * and not worth setting unless we reuse it for many case mapping operations.
+     * (That's why UCaseMap was created.)
+     */
+    int i;
+    char c;
+
+    /* the internal functions require locale!=NULL */
+    if(locale==NULL) {
+        // Do not call uprv_getDefaultLocaleID() because that does not see
+        // changes to the default locale via uloc_setDefault().
+        // It would also be inefficient if used frequently because uprv_getDefaultLocaleID()
+        // does not cache the locale ID.
+        //
+        // Unfortunately, uloc_getDefault() has many dependencies.
+        // We only care about a small set of language subtags,
+        // and we do not need the locale ID to be canonicalized.
+        //
+        // Best is to not call case mapping functions with a NULL locale ID.
+        locale=uloc_getDefault();
+    }
+    for(i=0; i<4 && (c=locale[i])!=0 && c!='-' && c!='_'; ++i) {
+        csm->locale[i]=c;
+    }
+    if(i<=3) {
+        csm->locale[i]=0;  /* Up to 3 non-separator characters. */
+    } else {
+        csm->locale[0]=0;  /* Longer-than-3 initial subtag: Ignore. */
+    }
+}
+
+/*
+ * Set parameters on an empty UCaseMap, for UCaseMap-less API functions.
+ * Do this fast because it is called with every function call.
+ */
+static inline void
+setTempCaseMap(UCaseMap *csm, const char *locale) {
+    if(csm->csp==NULL) {
+        csm->csp=ucase_getSingleton();
     }
-    if (*locale == 0) {
-        return UCASE_LOC_ROOT;
+    if(locale!=NULL && locale[0]==0) {
+        csm->locale[0]=0;
     } else {
-        return ucase_getCaseLocale(locale);
+        ustrcase_setTempCaseMapLocale(csm, locale);
     }
 }
 
@@ -46,11 +88,13 @@ u_strToLower(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
              UErrorCode *pErrorCode) {
-    return ustrcase_mapWithOverlap(
-        ustrcase_getCaseLocale(locale), 0, UCASEMAP_BREAK_ITERATOR_NULL
+    UCaseMap csm=UCASEMAP_INITIALIZER;
+    setTempCaseMap(&csm, locale);
+    return ustrcase_map(
+        &csm,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToLower, *pErrorCode);
+        ustrcase_internalToLower, pErrorCode);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -58,37 +102,11 @@ u_strToUpper(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
              UErrorCode *pErrorCode) {
-    return ustrcase_mapWithOverlap(
-        ustrcase_getCaseLocale(locale), 0, UCASEMAP_BREAK_ITERATOR_NULL
-        dest, destCapacity,
-        src, srcLength,
-        ustrcase_internalToUpper, *pErrorCode);
-}
-
-U_NAMESPACE_BEGIN
-
-int32_t CaseMap::toLower(
-        const char *locale, uint32_t options,
-        const UChar *src, int32_t srcLength,
-        UChar *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
-    return ustrcase_map(
-        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
-        dest, destCapacity,
-        src, srcLength,
-        ustrcase_internalToLower, edits, errorCode);
-}
-
-int32_t CaseMap::toUpper(
-        const char *locale, uint32_t options,
-        const UChar *src, int32_t srcLength,
-        UChar *dest, int32_t destCapacity, Edits *edits,
-        UErrorCode &errorCode) {
+    UCaseMap csm=UCASEMAP_INITIALIZER;
+    setTempCaseMap(&csm, locale);
     return ustrcase_map(
-        ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
+        &csm,
         dest, destCapacity,
         src, srcLength,
-        ustrcase_internalToUpper, edits, errorCode);
+        ustrcase_internalToUpper, pErrorCode);
 }
-
-U_NAMESPACE_END
index ed23eaa..df73264 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a82162e..c893cd1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/ustrfmt.c b/source/common/ustrfmt.c
new file mode 100644 (file)
index 0000000..c7805d8
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 2001-2006, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+#include "cstring.h"
+#include "ustrfmt.h"
+
+
+/***
+ * Fills in a UChar* string with the radix-based representation of a
+ * uint32_t number padded with zeroes to minwidth.  The result
+ * will be null terminated if there is room.
+ *
+ * @param buffer UChar buffer to receive result
+ * @param capacity capacity of buffer
+ * @param i the unsigned number to be formatted
+ * @param radix the radix from 2..36
+ * @param minwidth the minimum width.  If the result is narrower than
+ *        this, '0's will be added on the left.  Must be <=
+ *        capacity.
+ * @return the length of the result, not including any terminating
+ *        null
+ */
+U_CAPI int32_t U_EXPORT2
+uprv_itou (UChar * buffer, int32_t capacity,
+           uint32_t i, uint32_t radix, int32_t minwidth)
+{
+    int32_t length = 0;
+    int digit;
+    int32_t j;
+    UChar temp;
+
+    do{
+        digit = (int)(i % radix);
+        buffer[length++]=(UChar)(digit<=9?(0x0030+digit):(0x0030+digit+7));
+        i=i/radix;
+    } while(i && length<capacity);
+
+    while (length < minwidth){
+        buffer[length++] = (UChar) 0x0030;/*zero padding */
+    }
+    /* null terminate the buffer */
+    if(length<capacity){
+        buffer[length] = (UChar) 0x0000;
+    }
+
+    /* Reverses the string */
+    for (j = 0; j < (length / 2); j++){
+        temp = buffer[(length-1) - j];
+        buffer[(length-1) - j] = buffer[j];
+        buffer[j] = temp;
+    }
+    return length;
+}
index 53eb055..3cc3d69 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6450ea2..aae7f5c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -19,7 +19,6 @@
 
 #include "unicode/utypes.h"
 #include "unicode/putil.h"
-#include "unicode/uchar.h"
 #include "unicode/ustring.h"
 #include "unicode/utf16.h"
 #include "cstring.h"
index a468287..2867aaa 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 52ae7ff..a89e7a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utext.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -847,15 +847,9 @@ U_CDECL_END
 //------------------------------------------------------------------------------
 
 // Chunk size.
-//     Must be less than 42  (256/6), because of byte mapping from UChar indexes to native indexes.
-//     Worst case there are six UTF-8 bytes per UChar.
-//         obsolete 6 byte form fd + 5 trails maps to fffd
-//         obsolete 5 byte form fc + 4 trails maps to fffd
-//         non-shortest 4 byte forms maps to fffd
-//         normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit
-//     mapToUChars array size must allow for the worst case, 6.
-//     This could be brought down to 4, by treating fd and fc as pure illegal,
-//     rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros.
+//     Must be less than 85, because of byte mapping from UChar indexes to native indexes.
+//     Worst case is three native bytes to one UChar.  (Supplemenaries are 4 native bytes
+//     to two UChars.)
 //
 enum { UTF8_TEXT_CHUNK_SIZE=32 };
 
@@ -895,7 +889,7 @@ struct UTF8Buf {
                                                      //  Requires two extra slots,
                                                      //    one for a supplementary starting in the last normal position,
                                                      //    and one for an entry for the buffer limit position.
-    uint8_t   mapToUChars[UTF8_TEXT_CHUNK_SIZE*6+6]; // Map native offset from bufNativeStart to
+    uint8_t   mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to
                                                      //   correspoding offset in filled part of buf.
     int32_t   align;
 };
@@ -1038,7 +1032,6 @@ utf8TextAccess(UText *ut, int64_t index, UBool forward) {
             // Requested index is in this buffer.
             u8b = (UTF8Buf *)ut->p;   // the current buffer
             mapIndex = ix - u8b->toUCharsMapStart;
-            U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
             ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
             return TRUE;
 
@@ -1305,10 +1298,6 @@ fillReverse:
         // Can only do this if the incoming index is somewhere in the interior of the string.
         //   If index is at the end, there is no character there to look at.
         if (ix != ut->b) {
-            // Note: this function will only move the index back if it is on a trail byte
-            //       and there is a preceding lead byte and the sequence from the lead 
-            //       through this trail could be part of a valid UTF-8 sequence
-            //       Otherwise the index remains unchanged.
             U8_SET_CP_START(s8, 0, ix);
         }
 
@@ -1322,10 +1311,7 @@ fillReverse:
         UChar   *buf = u8b->buf;
         uint8_t *mapToNative = u8b->mapToNative;
         uint8_t *mapToUChars = u8b->mapToUChars;
-        int32_t  toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1;
-        // Note that toUCharsMapStart can be negative. Happens when the remaining
-        // text from current position to the beginning is less than the buffer size.
-        // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry.
+        int32_t  toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1);
         int32_t  destIx = UTF8_TEXT_CHUNK_SIZE+2;   // Start in the overflow region
                                                     //   at end of buffer to leave room
                                                     //   for a surrogate pair at the
@@ -1352,7 +1338,6 @@ fillReverse:
             if (c<0x80) {
                 // Special case ASCII range for speed.
                 buf[destIx] = (UChar)c;
-                U_ASSERT(toUCharsMapStart <= srcIx);
                 mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
                 mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
             } else {
@@ -1382,7 +1367,6 @@ fillReverse:
                 do {
                     mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx;
                 } while (sIx >= srcIx);
-                U_ASSERT(toUCharsMapStart <= (srcIx+1));
 
                 // Set native indexing limit to be the current position.
                 //   We are processing a non-ascii, non-native-indexing char now;
@@ -1557,7 +1541,6 @@ utf8TextMapIndexToUTF16(const UText *ut, int64_t index64) {
     U_ASSERT(index>=ut->chunkNativeStart+ut->nativeIndexingLimit);
     U_ASSERT(index<=ut->chunkNativeLimit);
     int32_t mapIndex = index - u8b->toUCharsMapStart;
-    U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
     int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
     U_ASSERT(offset>=0 && offset<=ut->chunkLength);
     return offset;
@@ -2242,13 +2225,13 @@ unistrTextCopy(UText *ut,
     }
 
     if(move) {
-        // move: copy to destIndex, then remove original
+        // move: copy to destIndex, then replace original with nothing
         int32_t segLength=limit32-start32;
         us->copy(start32, limit32, destIndex32);
         if(destIndex32<start32) {
             start32+=segLength;
         }
-        us->remove(start32, segLength);
+        us->replace(start32, segLength, NULL, 0);
     } else {
         // copy
         us->copy(start32, limit32, destIndex32);
diff --git a/source/common/utf_impl.c b/source/common/utf_impl.c
new file mode 100644 (file)
index 0000000..c4c8812
--- /dev/null
@@ -0,0 +1,328 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1999-2012, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  utf_impl.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 1999sep13
+*   created by: Markus W. Scherer
+*
+*   This file provides implementation functions for macros in the utfXX.h
+*   that would otherwise be too long as macros.
+*/
+
+/* set import/export definitions */
+#ifndef U_UTF8_IMPL
+#   define U_UTF8_IMPL
+#endif
+
+#include "unicode/utypes.h"
+#include "unicode/utf.h"
+#include "unicode/utf8.h"
+#include "unicode/utf_old.h"
+#include "uassert.h"
+
+/*
+ * This table could be replaced on many machines by
+ * a few lines of assembler code using an
+ * "index of first 0-bit from msb" instruction and
+ * one or two more integer instructions.
+ *
+ * For example, on an i386, do something like
+ * - MOV AL, leadByte
+ * - NOT AL         (8-bit, leave b15..b8==0..0, reverse only b7..b0)
+ * - MOV AH, 0
+ * - BSR BX, AX     (16-bit)
+ * - MOV AX, 6      (result)
+ * - JZ finish      (ZF==1 if leadByte==0xff)
+ * - SUB AX, BX (result)
+ * -finish:
+ * (BSR: Bit Scan Reverse, scans for a 1-bit, starting from the MSB)
+ *
+ * In Unicode, all UTF-8 byte sequences with more than 4 bytes are illegal;
+ * lead bytes above 0xf4 are illegal.
+ * We keep them in this table for skipping long ISO 10646-UTF-8 sequences.
+ */
+U_EXPORT const uint8_t 
+utf8_countTrailBytes[256]={
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+    3, 3, 3, 3, 3,
+    3, 3, 3,    /* illegal in Unicode */
+    4, 4, 4, 4, /* illegal in Unicode */
+    5, 5,       /* illegal in Unicode */
+    0, 0        /* illegal bytes 0xfe and 0xff */
+};
+
+static const UChar32
+utf8_minLegal[4]={ 0, 0x80, 0x800, 0x10000 };
+
+static const UChar32
+utf8_errorValue[6]={
+    UTF8_ERROR_VALUE_1, UTF8_ERROR_VALUE_2, UTF_ERROR_VALUE, 0x10ffff,
+    0x3ffffff, 0x7fffffff
+};
+
+static UChar32
+errorValue(int32_t count, int8_t strict) {
+    if(strict>=0) {
+        return utf8_errorValue[count];
+    } else if(strict==-3) {
+        return 0xfffd;
+    } else {
+        return U_SENTINEL;
+    }
+}
+
+/*
+ * Handle the non-inline part of the U8_NEXT() and U8_NEXT_FFFD() macros
+ * and their obsolete sibling UTF8_NEXT_CHAR_SAFE().
+ *
+ * U8_NEXT() supports NUL-terminated strings indicated via length<0.
+ *
+ * The "strict" parameter controls the error behavior:
+ * <0  "Safe" behavior of U8_NEXT():
+ *     -1: All illegal byte sequences yield U_SENTINEL=-1.
+ *     -2: Same as -1, except for lenient treatment of surrogate code points as legal.
+ *         Some implementations use this for roundtripping of
+ *         Unicode 16-bit strings that are not well-formed UTF-16, that is, they
+ *         contain unpaired surrogates.
+ *     -3: All illegal byte sequences yield U+FFFD.
+ *  0  Obsolete "safe" behavior of UTF8_NEXT_CHAR_SAFE(..., FALSE):
+ *     All illegal byte sequences yield a positive code point such that this
+ *     result code point would be encoded with the same number of bytes as
+ *     the illegal sequence.
+ * >0  Obsolete "strict" behavior of UTF8_NEXT_CHAR_SAFE(..., TRUE):
+ *     Same as the obsolete "safe" behavior, but non-characters are also treated
+ *     like illegal sequences.
+ *
+ * Note that a UBool is the same as an int8_t.
+ */
+U_CAPI UChar32 U_EXPORT2
+utf8_nextCharSafeBody(const uint8_t *s, int32_t *pi, int32_t length, UChar32 c, UBool strict) {
+    int32_t i=*pi;
+    uint8_t count=U8_COUNT_TRAIL_BYTES(c);
+    U_ASSERT(count <= 5); /* U8_COUNT_TRAIL_BYTES returns value 0...5 */
+    if(i+count<=length || length<0) {
+        uint8_t trail;
+
+        U8_MASK_LEAD_BYTE(c, count);
+        /* support NUL-terminated strings: do not read beyond the first non-trail byte */
+        switch(count) {
+        /* each branch falls through to the next one */
+        case 0:
+            /* count==0 for illegally leading trail bytes and the illegal bytes 0xfe and 0xff */
+        case 5:
+        case 4:
+            /* count>=4 is always illegal: no more than 3 trail bytes in Unicode's UTF-8 */
+            break;
+        case 3:
+            trail=s[i++]-0x80;
+            c=(c<<6)|trail;
+            /* c>=0x110 would result in code point>0x10ffff, outside Unicode */
+            if(c>=0x110 || trail>0x3f) { break; }
+        case 2:
+            trail=s[i++]-0x80;
+            c=(c<<6)|trail;
+            /*
+             * test for a surrogate d800..dfff unless we are lenient:
+             * before the last (c<<6), a surrogate is c=360..37f
+             */
+            if(((c&0xffe0)==0x360 && strict!=-2) || trail>0x3f) { break; }
+        case 1:
+            trail=s[i++]-0x80;
+            c=(c<<6)|trail;
+            if(trail>0x3f) { break; }
+            /* correct sequence - all trail bytes have (b7..b6)==(10) */
+            if(c>=utf8_minLegal[count] &&
+                    /* strict: forbid non-characters like U+fffe */
+                    (strict<=0 || !U_IS_UNICODE_NONCHAR(c))) {
+                *pi=i;
+                return c;
+            }
+        /* no default branch to optimize switch()  - all values are covered */
+        }
+    } else {
+        /* too few bytes left */
+        count=length-i;
+    }
+
+    /* error handling */
+    i=*pi;
+    while(count>0 && U8_IS_TRAIL(s[i])) {
+        ++i;
+        --count;
+    }
+    c=errorValue(i-*pi, strict);
+    *pi=i;
+    return c;
+}
+
+U_CAPI int32_t U_EXPORT2
+utf8_appendCharSafeBody(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool *pIsError) {
+    if((uint32_t)(c)<=0x7ff) {
+        if((i)+1<(length)) {
+            (s)[(i)++]=(uint8_t)(((c)>>6)|0xc0);
+            (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80);
+            return i;
+        }
+    } else if((uint32_t)(c)<=0xffff) {
+        /* Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8. */
+        if((i)+2<(length) && !U_IS_SURROGATE(c)) {
+            (s)[(i)++]=(uint8_t)(((c)>>12)|0xe0);
+            (s)[(i)++]=(uint8_t)((((c)>>6)&0x3f)|0x80);
+            (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80);
+            return i;
+        }
+    } else if((uint32_t)(c)<=0x10ffff) {
+        if((i)+3<(length)) {
+            (s)[(i)++]=(uint8_t)(((c)>>18)|0xf0);
+            (s)[(i)++]=(uint8_t)((((c)>>12)&0x3f)|0x80);
+            (s)[(i)++]=(uint8_t)((((c)>>6)&0x3f)|0x80);
+            (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80);
+            return i;
+        }
+    }
+    /* c>0x10ffff or not enough space, write an error value */
+    if(pIsError!=NULL) {
+        *pIsError=TRUE;
+    } else {
+        length-=i;
+        if(length>0) {
+            int32_t offset;
+            if(length>3) {
+                length=3;
+            }
+            s+=i;
+            offset=0;
+            c=utf8_errorValue[length-1];
+            UTF8_APPEND_CHAR_UNSAFE(s, offset, c);
+            i=i+offset;
+        }
+    }
+    return i;
+}
+
+U_CAPI UChar32 U_EXPORT2
+utf8_prevCharSafeBody(const uint8_t *s, int32_t start, int32_t *pi, UChar32 c, UBool strict) {
+    int32_t i=*pi;
+    uint8_t b, count=1, shift=6;
+
+    if(!U8_IS_TRAIL(c)) { return errorValue(0, strict); }
+
+    /* extract value bits from the last trail byte */
+    c&=0x3f;
+
+    for(;;) {
+        if(i<=start) {
+            /* no lead byte at all */
+            return errorValue(0, strict);
+        }
+
+        /* read another previous byte */
+        b=s[--i];
+        if((uint8_t)(b-0x80)<0x7e) { /* 0x80<=b<0xfe */
+            if(b&0x40) {
+                /* lead byte, this will always end the loop */
+                uint8_t shouldCount=U8_COUNT_TRAIL_BYTES(b);
+
+                if(count==shouldCount) {
+                    /* set the new position */
+                    *pi=i;
+                    U8_MASK_LEAD_BYTE(b, count);
+                    c|=(UChar32)b<<shift;
+                    if(count>=4 || c>0x10ffff || c<utf8_minLegal[count] || (U_IS_SURROGATE(c) && strict!=-2) || (strict>0 && U_IS_UNICODE_NONCHAR(c))) {
+                        /* illegal sequence or (strict and non-character) */
+                        if(count>=4) {
+                            count=3;
+                        }
+                        c=errorValue(count, strict);
+                    } else {
+                        /* exit with correct c */
+                    }
+                } else {
+                    /* the lead byte does not match the number of trail bytes */
+                    /* only set the position to the lead byte if it would
+                       include the trail byte that we started with */
+                    if(count<shouldCount) {
+                        *pi=i;
+                        c=errorValue(count, strict);
+                    } else {
+                        c=errorValue(0, strict);
+                    }
+                }
+                break;
+            } else if(count<5) {
+                /* trail byte */
+                c|=(UChar32)(b&0x3f)<<shift;
+                ++count;
+                shift+=6;
+            } else {
+                /* more than 5 trail bytes is illegal */
+                c=errorValue(0, strict);
+                break;
+            }
+        } else {
+            /* single-byte character precedes trailing bytes */
+            c=errorValue(0, strict);
+            break;
+        }
+    }
+    return c;
+}
+
+U_CAPI int32_t U_EXPORT2
+utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i) {
+    /* i had been decremented once before the function call */
+    int32_t I=i, Z;
+    uint8_t b;
+
+    /* read at most the 6 bytes s[Z] to s[i], inclusively */
+    if(I-5>start) {
+        Z=I-5;
+    } else {
+        Z=start;
+    }
+
+    /* return I if the sequence starting there is long enough to include i */
+    do {
+        b=s[I];
+        if((uint8_t)(b-0x80)>=0x7e) { /* not 0x80<=b<0xfe */
+            break;
+        } else if(b>=0xc0) {
+            if(U8_COUNT_TRAIL_BYTES(b)>=(i-I)) {
+                return I;
+            } else {
+                break;
+            }
+        }
+    } while(Z<=--I);
+
+    /* return i itself to be consistent with the FWD_1 macro */
+    return i;
+}
index a762cc4..1b77110 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index e782249..57f1bb0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 95a112b..a88d581 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/utrace.c b/source/common/utrace.c
new file mode 100644 (file)
index 0000000..ca4dddf
--- /dev/null
@@ -0,0 +1,490 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*   Copyright (C) 2003-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*   file name:  utrace.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*/
+
+#define   UTRACE_IMPL
+#include "unicode/utrace.h"
+#include "utracimp.h"
+#include "cstring.h"
+#include "uassert.h"
+#include "ucln_cmn.h"
+
+
+static UTraceEntry     *pTraceEntryFunc = NULL;
+static UTraceExit      *pTraceExitFunc  = NULL;
+static UTraceData      *pTraceDataFunc  = NULL;
+static const void      *gTraceContext   = NULL;
+
+U_EXPORT int32_t
+utrace_level = UTRACE_ERROR;
+
+U_CAPI void U_EXPORT2
+utrace_entry(int32_t fnNumber) {
+    if (pTraceEntryFunc != NULL) {
+        (*pTraceEntryFunc)(gTraceContext, fnNumber);
+    }
+}
+
+
+static const char gExitFmt[]             = "Returns.";
+static const char gExitFmtValue[]        = "Returns %d.";
+static const char gExitFmtStatus[]       = "Returns.  Status = %d.";
+static const char gExitFmtValueStatus[]  = "Returns %d.  Status = %d.";
+static const char gExitFmtPtrStatus[]    = "Returns %d.  Status = %p.";
+
+U_CAPI void U_EXPORT2
+utrace_exit(int32_t fnNumber, int32_t returnType, ...) {
+    if (pTraceExitFunc != NULL) {
+        va_list     args;
+        const char *fmt;
+
+        switch (returnType) {
+        case 0:
+            fmt = gExitFmt;
+            break;
+        case UTRACE_EXITV_I32:
+            fmt = gExitFmtValue;
+            break;
+        case UTRACE_EXITV_STATUS:
+            fmt = gExitFmtStatus;
+            break;
+        case UTRACE_EXITV_I32 | UTRACE_EXITV_STATUS:
+            fmt = gExitFmtValueStatus;
+            break;
+        case UTRACE_EXITV_PTR | UTRACE_EXITV_STATUS:
+            fmt = gExitFmtPtrStatus;
+            break;
+        default:
+            U_ASSERT(FALSE);
+            fmt = gExitFmt;
+        }
+
+        va_start(args, returnType);
+        (*pTraceExitFunc)(gTraceContext, fnNumber, fmt, args);
+        va_end(args);
+    }
+}
+
+U_CAPI void U_EXPORT2 
+utrace_data(int32_t fnNumber, int32_t level, const char *fmt, ...) {
+    if (pTraceDataFunc != NULL) {
+           va_list args;
+           va_start(args, fmt ); 
+           (*pTraceDataFunc)(gTraceContext, fnNumber, level, fmt, args);
+           va_end(args);
+    }
+}
+
+
+static void outputChar(char c, char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
+    int32_t i;
+    /* Check whether a start of line indenting is needed.  Three cases:
+     *   1.  At the start of the first line  (output index == 0).
+     *   2.  At the start of subsequent lines  (preceeding char in buffer == '\n')
+     *   3.  When preflighting buffer len (buffer capacity is exceeded), when
+     *       a \n is output.  Ideally we wouldn't do the indent until the following char
+     *       is received, but that won't work because there's no place to remember that
+     *       the preceding char was \n.  Meaning that we may overstimate the
+     *       buffer size needed.  No harm done.
+     */
+    if (*outIx==0 ||   /* case 1. */
+        (c!='\n' && c!=0 && *outIx < capacity && outBuf[(*outIx)-1]=='\n') ||  /* case 2. */
+        (c=='\n' && *outIx>=capacity))    /* case 3 */
+    {
+        /* At the start of a line.  Indent. */
+        for(i=0; i<indent; i++) {
+            if (*outIx < capacity) {
+                outBuf[*outIx] = ' ';
+            }
+            (*outIx)++;
+        }
+    }
+
+    if (*outIx < capacity) {
+        outBuf[*outIx] = c;
+    }
+    if (c != 0) {
+        /* Nulls only appear as end-of-string terminators.  Move them to the output
+         *  buffer, but do not update the length of the buffer, so that any
+         *  following output will overwrite the null. */
+        (*outIx)++;
+    }
+}
+
+static void outputHexBytes(int64_t val, int32_t charsToOutput,
+                           char *outBuf, int32_t *outIx, int32_t capacity) {
+    static const char gHexChars[] = "0123456789abcdef";
+    int32_t shiftCount;
+    for  (shiftCount=(charsToOutput-1)*4; shiftCount >= 0; shiftCount-=4) {
+        char c = gHexChars[(val >> shiftCount) & 0xf];
+        outputChar(c, outBuf, outIx, capacity, 0);
+    }
+}
+
+/* Output a pointer value in hex.  Work with any size of pointer   */
+static void outputPtrBytes(void *val, char *outBuf, int32_t *outIx, int32_t capacity) {
+    int32_t  i;
+    int32_t  incVal = 1;              /* +1 for big endian, -1 for little endian          */
+    char     *p     = (char *)&val;   /* point to current byte to output in the ptr val  */
+
+#if !U_IS_BIG_ENDIAN
+    /* Little Endian.  Move p to most significant end of the value      */
+    incVal = -1;
+    p += sizeof(void *) - 1;
+#endif
+
+    /* Loop through the bytes of the ptr as it sits in memory, from 
+     * most significant to least significant end                    */
+    for (i=0; i<sizeof(void *); i++) {
+        outputHexBytes(*p, 2, outBuf, outIx, capacity);
+        p += incVal;
+    }
+}
+
+static void outputString(const char *s, char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
+    int32_t i = 0;
+    char    c;
+    if (s==NULL) {
+        s = "*NULL*";
+    }
+    do {
+        c = s[i++];
+        outputChar(c, outBuf, outIx, capacity, indent);
+    } while (c != 0);
+}
+        
+
+
+static void outputUString(const UChar *s, int32_t len, 
+                          char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
+    int32_t i = 0;
+    UChar   c;
+    if (s==NULL) {
+        outputString(NULL, outBuf, outIx, capacity, indent);
+        return;
+    }
+
+    for (i=0; i<len || len==-1; i++) {
+        c = s[i];
+        outputHexBytes(c, 4, outBuf, outIx, capacity);
+        outputChar(' ', outBuf, outIx, capacity, indent);
+        if (len == -1 && c==0) {
+            break;
+        }
+    }
+}
+        
+U_CAPI int32_t U_EXPORT2
+utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt, va_list args) {
+    int32_t   outIx  = 0;
+    int32_t   fmtIx  = 0;
+    char      fmtC;
+    char      c;
+    int32_t   intArg;
+    int64_t   longArg = 0;
+    char      *ptrArg;
+
+    /*   Loop runs once for each character in the format string.
+     */
+    for (;;) {
+        fmtC = fmt[fmtIx++];
+        if (fmtC != '%') {
+            /* Literal character, not part of a %sequence.  Just copy it to the output. */
+            outputChar(fmtC, outBuf, &outIx, capacity, indent);
+            if (fmtC == 0) {
+                /* We hit the null that terminates the format string.
+                 * This is the normal (and only) exit from the loop that
+                 * interprets the format
+                 */
+                break;
+            }
+            continue;
+        }
+
+        /* We encountered a '%'.  Pick up the following format char */
+        fmtC = fmt[fmtIx++];
+
+        switch (fmtC) {
+        case 'c':
+            /* single 8 bit char   */
+            c = (char)va_arg(args, int32_t);
+            outputChar(c, outBuf, &outIx, capacity, indent);
+            break;
+
+        case 's':
+            /* char * string, null terminated.  */
+            ptrArg = va_arg(args, char *);
+            outputString((const char *)ptrArg, outBuf, &outIx, capacity, indent);
+            break;
+
+        case 'S':
+            /* UChar * string, with length, len==-1 for null terminated. */
+            ptrArg = va_arg(args, void *);             /* Ptr    */
+            intArg =(int32_t)va_arg(args, int32_t);    /* Length */
+            outputUString((const UChar *)ptrArg, intArg, outBuf, &outIx, capacity, indent);
+            break;
+
+        case 'b':
+            /*  8 bit int  */
+            intArg = va_arg(args, int);
+            outputHexBytes(intArg, 2, outBuf, &outIx, capacity);
+            break;
+
+        case 'h':
+            /*  16 bit int  */
+            intArg = va_arg(args, int);
+            outputHexBytes(intArg, 4, outBuf, &outIx, capacity);
+            break;
+
+        case 'd':
+            /*  32 bit int  */
+            intArg = va_arg(args, int);
+            outputHexBytes(intArg, 8, outBuf, &outIx, capacity);
+            break;
+
+        case 'l':
+            /*  64 bit long  */
+            longArg = va_arg(args, int64_t);
+            outputHexBytes(longArg, 16, outBuf, &outIx, capacity);
+            break;
+            
+        case 'p':
+            /*  Pointers.   */
+            ptrArg = va_arg(args, void *);
+            outputPtrBytes(ptrArg, outBuf, &outIx, capacity);
+            break;
+
+        case 0:
+            /* Single '%' at end of fmt string.  Output as literal '%'.   
+             * Back up index into format string so that the terminating null will be
+             * re-fetched in the outer loop, causing it to terminate.
+             */
+            outputChar('%', outBuf, &outIx, capacity, indent);
+            fmtIx--;
+            break;
+
+        case 'v':
+            {
+                /* Vector of values, e.g. %vh */
+                char     vectorType;
+                int32_t  vectorLen;
+                const char   *i8Ptr;
+                int16_t  *i16Ptr;
+                int32_t  *i32Ptr;
+                int64_t  *i64Ptr;
+                void     **ptrPtr;
+                int32_t   charsToOutput = 0;
+                int32_t   i;
+                
+                vectorType = fmt[fmtIx];    /* b, h, d, l, p, etc. */
+                if (vectorType != 0) {
+                    fmtIx++;
+                }
+                i8Ptr = (const char *)va_arg(args, void*);
+                i16Ptr = (int16_t *)i8Ptr;
+                i32Ptr = (int32_t *)i8Ptr;
+                i64Ptr = (int64_t *)i8Ptr;
+                ptrPtr = (void **)i8Ptr;
+                vectorLen =(int32_t)va_arg(args, int32_t);
+                if (ptrPtr == NULL) {
+                    outputString("*NULL* ", outBuf, &outIx, capacity, indent);
+                } else {
+                    for (i=0; i<vectorLen || vectorLen==-1; i++) { 
+                        switch (vectorType) {
+                        case 'b':
+                            charsToOutput = 2;
+                            longArg = *i8Ptr++;
+                            break;
+                        case 'h':
+                            charsToOutput = 4;
+                            longArg = *i16Ptr++;
+                            break;
+                        case 'd':
+                            charsToOutput = 8;
+                            longArg = *i32Ptr++;
+                            break;
+                        case 'l':
+                            charsToOutput = 16;
+                            longArg = *i64Ptr++;
+                            break;
+                        case 'p':
+                            charsToOutput = 0;
+                            outputPtrBytes(*ptrPtr, outBuf, &outIx, capacity);
+                            longArg = *ptrPtr==NULL? 0: 1;    /* test for null terminated array. */
+                            ptrPtr++;
+                            break;
+                        case 'c':
+                            charsToOutput = 0;
+                            outputChar(*i8Ptr, outBuf, &outIx, capacity, indent);
+                            longArg = *i8Ptr;    /* for test for null terminated array. */
+                            i8Ptr++;
+                            break;
+                        case 's':
+                            charsToOutput = 0;
+                            outputString(*ptrPtr, outBuf, &outIx, capacity, indent);
+                            outputChar('\n', outBuf, &outIx, capacity, indent);
+                            longArg = *ptrPtr==NULL? 0: 1;   /* for test for null term. array. */
+                            ptrPtr++;
+                            break;
+
+                        case 'S':
+                            charsToOutput = 0;
+                            outputUString((const UChar *)*ptrPtr, -1, outBuf, &outIx, capacity, indent);
+                            outputChar('\n', outBuf, &outIx, capacity, indent);
+                            longArg = *ptrPtr==NULL? 0: 1;   /* for test for null term. array. */
+                            ptrPtr++;
+                            break;
+
+                            
+                        }
+                        if (charsToOutput > 0) {
+                            outputHexBytes(longArg, charsToOutput, outBuf, &outIx, capacity);
+                            outputChar(' ', outBuf, &outIx, capacity, indent);
+                        }
+                        if (vectorLen == -1 && longArg == 0) {
+                            break;
+                        }
+                    }
+                }
+                outputChar('[', outBuf, &outIx, capacity, indent);
+                outputHexBytes(vectorLen, 8, outBuf, &outIx, capacity);
+                outputChar(']', outBuf, &outIx, capacity, indent);
+            }
+            break;
+
+
+        default:
+            /* %. in format string, where . is some character not in the set
+             *    of recognized format chars.  Just output it as if % wasn't there.
+             *    (Covers "%%" outputing a single '%')
+             */
+             outputChar(fmtC, outBuf, &outIx, capacity, indent);
+        }
+    }
+    outputChar(0, outBuf, &outIx, capacity, indent);  /* Make sure that output is null terminated  */
+    return outIx + 1;     /* outIx + 1 because outIx does not increment when outputing final null. */
+}
+
+
+
+
+U_CAPI int32_t U_EXPORT2
+utrace_format(char *outBuf, int32_t capacity,
+                int32_t indent, const char *fmt,  ...) {
+    int32_t retVal;
+    va_list args;
+    va_start(args, fmt ); 
+    retVal = utrace_vformat(outBuf, capacity, indent, fmt, args);
+    va_end(args);
+    return retVal;
+}
+
+
+U_CAPI void U_EXPORT2
+utrace_setFunctions(const void *context,
+                    UTraceEntry *e, UTraceExit *x, UTraceData *d) {
+    pTraceEntryFunc = e;
+    pTraceExitFunc  = x;
+    pTraceDataFunc  = d;
+    gTraceContext   = context;
+}
+
+
+U_CAPI void U_EXPORT2
+utrace_getFunctions(const void **context,
+                    UTraceEntry **e, UTraceExit **x, UTraceData **d) {
+    *e = pTraceEntryFunc;
+    *x = pTraceExitFunc;
+    *d = pTraceDataFunc;
+    *context = gTraceContext;
+}
+
+U_CAPI void U_EXPORT2
+utrace_setLevel(int32_t level) {
+    if (level < UTRACE_OFF) {
+        level = UTRACE_OFF;
+    }
+    if (level > UTRACE_VERBOSE) {
+        level = UTRACE_VERBOSE;
+    }
+    utrace_level = level;
+}
+
+U_CAPI int32_t U_EXPORT2
+utrace_getLevel() {
+    return utrace_level;
+}
+
+
+U_CFUNC UBool 
+utrace_cleanup() {
+    pTraceEntryFunc = NULL;
+    pTraceExitFunc  = NULL;
+    pTraceDataFunc  = NULL;
+    utrace_level    = UTRACE_OFF;
+    gTraceContext   = NULL;
+    return TRUE;
+}
+
+
+static const char * const
+trFnName[] = {
+    "u_init",
+    "u_cleanup",
+    NULL
+};
+
+
+static const char * const
+trConvNames[] = {
+    "ucnv_open",
+    "ucnv_openPackage",
+    "ucnv_openAlgorithmic",
+    "ucnv_clone",
+    "ucnv_close",
+    "ucnv_flushCache",
+    "ucnv_load",
+    "ucnv_unload",
+    NULL
+};
+
+    
+static const char * const
+trCollNames[] = {
+    "ucol_open",
+    "ucol_close",
+    "ucol_strcoll",
+    "ucol_getSortKey",
+    "ucol_getLocale",
+    "ucol_nextSortKeyPart",
+    "ucol_strcollIter",
+    "ucol_openFromShortString",
+    "ucol_strcollUTF8",
+    NULL
+};
+
+                
+U_CAPI const char * U_EXPORT2
+utrace_functionName(int32_t fnNumber) {
+    if(UTRACE_FUNCTION_START <= fnNumber && fnNumber < UTRACE_FUNCTION_LIMIT) {
+        return trFnName[fnNumber];
+    } else if(UTRACE_CONVERSION_START <= fnNumber && fnNumber < UTRACE_CONVERSION_LIMIT) {
+        return trConvNames[fnNumber - UTRACE_CONVERSION_START];
+    } else if(UTRACE_COLLATION_START <= fnNumber && fnNumber < UTRACE_COLLATION_LIMIT){
+        return trCollNames[fnNumber - UTRACE_COLLATION_START];
+    } else {
+        return "[BOGUS Trace Function Number]";
+    }
+}
+
index e8ee53f..c1786f5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  utracimp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 
 U_CDECL_BEGIN
 
+/**
+ * \var utrace_level
+ * Trace level variable. Negative for "off".
+ * Use only via UTRACE_ macros.
+ * @internal
+ */
+#ifdef UTRACE_IMPL
+U_EXPORT int32_t
+#else
+U_CFUNC U_COMMON_API int32_t
+#endif
+utrace_level;
+
+
 /** 
  *   Traced Function Exit return types.  
  *   Flags indicating the number and types of varargs included in a call
index ecf9b1c..478560d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 9c5382c..17e660b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index cec7224..4bd35a9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8e87bf8..810bcfc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index d8a3a06..664051c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2_builder.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b7dc9d3..4888363 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  utrie2_impl.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f2cff2d..7bc4f92 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uts46.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index c666373..b39aa0d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -24,7 +24,7 @@
 #include <exception>
 using std::exception;
 #endif
-#if defined(__GLIBCXX__)
+#if !defined(_MSC_VER)
 namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 #include <typeinfo>  // for 'typeid' to work
diff --git a/source/common/utypes.c b/source/common/utypes.c
new file mode 100644 (file)
index 0000000..c506dd4
--- /dev/null
@@ -0,0 +1,224 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1997-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+*  FILE NAME : utypes.c (previously putil.c)
+*
+*   Date        Name        Description
+*   10/07/2004  grhoten     split from putil.c
+******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+/* u_errorName() ------------------------------------------------------------ */
+
+static const char * const
+_uErrorInfoName[U_ERROR_WARNING_LIMIT-U_ERROR_WARNING_START]={
+    "U_USING_FALLBACK_WARNING",
+    "U_USING_DEFAULT_WARNING",
+    "U_SAFECLONE_ALLOCATED_WARNING",
+    "U_STATE_OLD_WARNING",
+    "U_STRING_NOT_TERMINATED_WARNING",
+    "U_SORT_KEY_TOO_SHORT_WARNING",
+    "U_AMBIGUOUS_ALIAS_WARNING",
+    "U_DIFFERENT_UCA_VERSION",
+    "U_PLUGIN_CHANGED_LEVEL_WARNING",
+};
+
+static const char * const
+_uTransErrorName[U_PARSE_ERROR_LIMIT - U_PARSE_ERROR_START]={
+    "U_BAD_VARIABLE_DEFINITION",
+    "U_MALFORMED_RULE",
+    "U_MALFORMED_SET",
+    "U_MALFORMED_SYMBOL_REFERENCE",
+    "U_MALFORMED_UNICODE_ESCAPE",
+    "U_MALFORMED_VARIABLE_DEFINITION",
+    "U_MALFORMED_VARIABLE_REFERENCE",
+    "U_MISMATCHED_SEGMENT_DELIMITERS",
+    "U_MISPLACED_ANCHOR_START",
+    "U_MISPLACED_CURSOR_OFFSET",
+    "U_MISPLACED_QUANTIFIER",
+    "U_MISSING_OPERATOR",
+    "U_MISSING_SEGMENT_CLOSE",
+    "U_MULTIPLE_ANTE_CONTEXTS",
+    "U_MULTIPLE_CURSORS",
+    "U_MULTIPLE_POST_CONTEXTS",
+    "U_TRAILING_BACKSLASH",
+    "U_UNDEFINED_SEGMENT_REFERENCE",
+    "U_UNDEFINED_VARIABLE",
+    "U_UNQUOTED_SPECIAL",
+    "U_UNTERMINATED_QUOTE",
+    "U_RULE_MASK_ERROR",
+    "U_MISPLACED_COMPOUND_FILTER",
+    "U_MULTIPLE_COMPOUND_FILTERS",
+    "U_INVALID_RBT_SYNTAX",
+    "U_INVALID_PROPERTY_PATTERN",
+    "U_MALFORMED_PRAGMA",
+    "U_UNCLOSED_SEGMENT",
+    "U_ILLEGAL_CHAR_IN_SEGMENT",
+    "U_VARIABLE_RANGE_EXHAUSTED",
+    "U_VARIABLE_RANGE_OVERLAP",
+    "U_ILLEGAL_CHARACTER",
+    "U_INTERNAL_TRANSLITERATOR_ERROR",
+    "U_INVALID_ID",
+    "U_INVALID_FUNCTION"
+};
+
+static const char * const
+_uErrorName[U_STANDARD_ERROR_LIMIT]={
+    "U_ZERO_ERROR",
+
+    "U_ILLEGAL_ARGUMENT_ERROR",
+    "U_MISSING_RESOURCE_ERROR",
+    "U_INVALID_FORMAT_ERROR",
+    "U_FILE_ACCESS_ERROR",
+    "U_INTERNAL_PROGRAM_ERROR",
+    "U_MESSAGE_PARSE_ERROR",
+    "U_MEMORY_ALLOCATION_ERROR",
+    "U_INDEX_OUTOFBOUNDS_ERROR",
+    "U_PARSE_ERROR",
+    "U_INVALID_CHAR_FOUND",
+    "U_TRUNCATED_CHAR_FOUND",
+    "U_ILLEGAL_CHAR_FOUND",
+    "U_INVALID_TABLE_FORMAT",
+    "U_INVALID_TABLE_FILE",
+    "U_BUFFER_OVERFLOW_ERROR",
+    "U_UNSUPPORTED_ERROR",
+    "U_RESOURCE_TYPE_MISMATCH",
+    "U_ILLEGAL_ESCAPE_SEQUENCE",
+    "U_UNSUPPORTED_ESCAPE_SEQUENCE",
+    "U_NO_SPACE_AVAILABLE",
+    "U_CE_NOT_FOUND_ERROR",
+    "U_PRIMARY_TOO_LONG_ERROR",
+    "U_STATE_TOO_OLD_ERROR",
+    "U_TOO_MANY_ALIASES_ERROR",
+    "U_ENUM_OUT_OF_SYNC_ERROR",
+    "U_INVARIANT_CONVERSION_ERROR",
+    "U_INVALID_STATE_ERROR",
+    "U_COLLATOR_VERSION_MISMATCH",
+    "U_USELESS_COLLATOR_ERROR",
+    "U_NO_WRITE_PERMISSION"
+};
+static const char * const
+_uFmtErrorName[U_FMT_PARSE_ERROR_LIMIT - U_FMT_PARSE_ERROR_START] = {
+    "U_UNEXPECTED_TOKEN",
+    "U_MULTIPLE_DECIMAL_SEPARATORS",
+    "U_MULTIPLE_EXPONENTIAL_SYMBOLS",
+    "U_MALFORMED_EXPONENTIAL_PATTERN",
+    "U_MULTIPLE_PERCENT_SYMBOLS",
+    "U_MULTIPLE_PERMILL_SYMBOLS",
+    "U_MULTIPLE_PAD_SPECIFIERS",
+    "U_PATTERN_SYNTAX_ERROR",
+    "U_ILLEGAL_PAD_POSITION",
+    "U_UNMATCHED_BRACES",
+    "U_UNSUPPORTED_PROPERTY",
+    "U_UNSUPPORTED_ATTRIBUTE",
+    "U_ARGUMENT_TYPE_MISMATCH",
+    "U_DUPLICATE_KEYWORD",
+    "U_UNDEFINED_KEYWORD",
+    "U_DEFAULT_KEYWORD_MISSING",
+    "U_DECIMAL_NUMBER_SYNTAX_ERROR",
+    "U_FORMAT_INEXACT_ERROR"
+};
+
+static const char * const
+_uBrkErrorName[U_BRK_ERROR_LIMIT - U_BRK_ERROR_START] = {
+    "U_BRK_INTERNAL_ERROR",
+    "U_BRK_HEX_DIGITS_EXPECTED",
+    "U_BRK_SEMICOLON_EXPECTED",
+    "U_BRK_RULE_SYNTAX",
+    "U_BRK_UNCLOSED_SET",
+    "U_BRK_ASSIGN_ERROR",
+    "U_BRK_VARIABLE_REDFINITION",
+    "U_BRK_MISMATCHED_PAREN",
+    "U_BRK_NEW_LINE_IN_QUOTED_STRING",
+    "U_BRK_UNDEFINED_VARIABLE",
+    "U_BRK_INIT_ERROR",
+    "U_BRK_RULE_EMPTY_SET",
+    "U_BRK_UNRECOGNIZED_OPTION",
+    "U_BRK_MALFORMED_RULE_TAG"
+};
+
+static const char * const
+_uRegexErrorName[U_REGEX_ERROR_LIMIT - U_REGEX_ERROR_START] = {
+    "U_REGEX_INTERNAL_ERROR",
+    "U_REGEX_RULE_SYNTAX",
+    "U_REGEX_INVALID_STATE",
+    "U_REGEX_BAD_ESCAPE_SEQUENCE",
+    "U_REGEX_PROPERTY_SYNTAX",
+    "U_REGEX_UNIMPLEMENTED",
+    "U_REGEX_MISMATCHED_PAREN",
+    "U_REGEX_NUMBER_TOO_BIG",
+    "U_REGEX_BAD_INTERVAL",
+    "U_REGEX_MAX_LT_MIN",
+    "U_REGEX_INVALID_BACK_REF",
+    "U_REGEX_INVALID_FLAG",
+    "U_REGEX_LOOK_BEHIND_LIMIT",
+    "U_REGEX_SET_CONTAINS_STRING",
+    "U_REGEX_OCTAL_TOO_BIG",
+    "U_REGEX_MISSING_CLOSE_BRACKET",
+    "U_REGEX_INVALID_RANGE",
+    "U_REGEX_STACK_OVERFLOW",
+    "U_REGEX_TIME_OUT",
+    "U_REGEX_STOPPED_BY_CALLER",
+    "U_REGEX_PATTERN_TOO_BIG",
+    "U_REGEX_INVALID_CAPTURE_GROUP_NAME"
+};
+
+static const char * const
+_uIDNAErrorName[U_IDNA_ERROR_LIMIT - U_IDNA_ERROR_START] = {
+     "U_STRINGPREP_PROHIBITED_ERROR",
+     "U_STRINGPREP_UNASSIGNED_ERROR",
+     "U_STRINGPREP_CHECK_BIDI_ERROR",
+     "U_IDNA_STD3_ASCII_RULES_ERROR",
+     "U_IDNA_ACE_PREFIX_ERROR",
+     "U_IDNA_VERIFICATION_ERROR",
+     "U_IDNA_LABEL_TOO_LONG_ERROR",
+     "U_IDNA_ZERO_LENGTH_LABEL_ERROR",
+     "U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR"
+};
+
+static const char * const
+_uPluginErrorName[U_PLUGIN_ERROR_LIMIT - U_PLUGIN_ERROR_START] = {
+     "U_PLUGIN_TOO_HIGH",
+     "U_PLUGIN_DIDNT_SET_LEVEL",
+};
+
+U_CAPI const char * U_EXPORT2
+u_errorName(UErrorCode code) {
+    if(U_ZERO_ERROR <= code && code < U_STANDARD_ERROR_LIMIT) {
+        return _uErrorName[code];
+    } else if(U_ERROR_WARNING_START <= code && code < U_ERROR_WARNING_LIMIT) {
+        return _uErrorInfoName[code - U_ERROR_WARNING_START];
+    } else if(U_PARSE_ERROR_START <= code && code < U_PARSE_ERROR_LIMIT){
+        return _uTransErrorName[code - U_PARSE_ERROR_START];
+    } else if(U_FMT_PARSE_ERROR_START <= code && code < U_FMT_PARSE_ERROR_LIMIT){
+        return _uFmtErrorName[code - U_FMT_PARSE_ERROR_START];
+    } else if (U_BRK_ERROR_START <= code  && code < U_BRK_ERROR_LIMIT){
+        return _uBrkErrorName[code - U_BRK_ERROR_START];
+    } else if (U_REGEX_ERROR_START <= code && code < U_REGEX_ERROR_LIMIT) {
+        return _uRegexErrorName[code - U_REGEX_ERROR_START];
+    } else if(U_IDNA_ERROR_START <= code && code < U_IDNA_ERROR_LIMIT) {
+        return _uIDNAErrorName[code - U_IDNA_ERROR_START];
+    } else if(U_PLUGIN_ERROR_START <= code && code < U_PLUGIN_ERROR_LIMIT) {
+        return _uPluginErrorName[code - U_PLUGIN_ERROR_START];
+    } else {
+        return "[BOGUS UErrorCode]";
+    }
+}
+
+/*
+ * Hey, Emacs, please set the following:
+ *
+ * Local Variables:
+ * indent-tabs-mode: nil
+ * End:
+ *
+ */
index cf19edf..863ef78 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 5ec6e11..6439b4e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d1ae659..41f5fb7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 9112d9f..e3a0577 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 0815659..b69e193 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 5571685..b78ed87 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
diff --git a/source/common/wintz.c b/source/common/wintz.c
new file mode 100644 (file)
index 0000000..a8696af
--- /dev/null
@@ -0,0 +1,441 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+********************************************************************************
+*   Copyright (C) 2005-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+********************************************************************************
+*
+* File WINTZ.CPP
+*
+********************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if U_PLATFORM_HAS_WIN32_API
+
+#include "wintz.h"
+#include "cmemory.h"
+#include "cstring.h"
+
+#include "unicode/ures.h"
+#include "unicode/ustring.h"
+
+#   define WIN32_LEAN_AND_MEAN
+#   define VC_EXTRALEAN
+#   define NOUSER
+#   define NOSERVICE
+#   define NOIME
+#   define NOMCX
+#include <windows.h>
+
+#define MAX_LENGTH_ID 40
+
+/* The layout of the Tzi value in the registry */
+typedef struct
+{
+    int32_t bias;
+    int32_t standardBias;
+    int32_t daylightBias;
+    SYSTEMTIME standardDate;
+    SYSTEMTIME daylightDate;
+} TZI;
+
+/**
+ * Various registry keys and key fragments.
+ */
+static const char CURRENT_ZONE_REGKEY[] = "SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\";
+/* static const char STANDARD_NAME_REGKEY[] = "StandardName"; Currently unused constant */
+static const char STANDARD_TIME_REGKEY[] = " Standard Time";
+static const char TZI_REGKEY[] = "TZI";
+static const char STD_REGKEY[] = "Std";
+
+/**
+ * HKLM subkeys used to probe for the flavor of Windows.  Note that we
+ * specifically check for the "GMT" zone subkey; this is present on
+ * NT, but on XP has become "GMT Standard Time".  We need to
+ * discriminate between these cases.
+ */
+static const char* const WIN_TYPE_PROBE_REGKEY[] = {
+    /* WIN_9X_ME_TYPE */
+    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Time Zones",
+
+    /* WIN_NT_TYPE */
+    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\GMT"
+
+    /* otherwise: WIN_2K_XP_TYPE */
+};
+
+/**
+ * The time zone root subkeys (under HKLM) for different flavors of
+ * Windows.
+ */
+static const char* const TZ_REGKEY[] = {
+    /* WIN_9X_ME_TYPE */
+    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Time Zones\\",
+
+    /* WIN_NT_TYPE | WIN_2K_XP_TYPE */
+    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\"
+};
+
+/**
+ * Flavor of Windows, from our perspective.  Not a real OS version,
+ * but rather the flavor of the layout of the time zone information in
+ * the registry.
+ */
+enum {
+    WIN_9X_ME_TYPE = 1,
+    WIN_NT_TYPE = 2,
+    WIN_2K_XP_TYPE = 3
+};
+
+static int32_t gWinType = 0;
+
+static int32_t detectWindowsType()
+{
+    int32_t winType;
+    LONG result;
+    HKEY hkey;
+
+    /* Detect the version of windows by trying to open a sequence of
+        probe keys.  We don't use the OS version API because what we
+        really want to know is how the registry is laid out.
+        Specifically, is it 9x/Me or not, and is it "GMT" or "GMT
+        Standard Time". */
+    for (winType = 0; winType < 2; winType++) {
+        result = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
+                              WIN_TYPE_PROBE_REGKEY[winType],
+                              0,
+                              KEY_QUERY_VALUE,
+                              &hkey);
+        RegCloseKey(hkey);
+
+        if (result == ERROR_SUCCESS) {
+            break;
+        }
+    }
+
+    return winType+1; /* +1 to bring it inline with the enum */
+}
+
+static LONG openTZRegKey(HKEY *hkey, const char *winid)
+{
+    char subKeyName[110]; /* TODO: why 96?? */
+    char *name;
+    LONG result;
+
+    /* This isn't thread safe, but it's good enough because the result should be constant per system. */
+    if (gWinType <= 0) {
+        gWinType = detectWindowsType();
+    }
+
+    uprv_strcpy(subKeyName, TZ_REGKEY[(gWinType != WIN_9X_ME_TYPE)]);
+    name = &subKeyName[strlen(subKeyName)];
+    uprv_strcat(subKeyName, winid);
+
+    if (gWinType == WIN_9X_ME_TYPE) {
+        /* Remove " Standard Time" */
+        char *pStd = uprv_strstr(subKeyName, STANDARD_TIME_REGKEY);
+        if (pStd) {
+            *pStd = 0;
+        }
+    }
+
+    result = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
+                            subKeyName,
+                            0,
+                            KEY_QUERY_VALUE,
+                            hkey);
+    return result;
+}
+
+static LONG getTZI(const char *winid, TZI *tzi)
+{
+    DWORD cbData = sizeof(TZI);
+    LONG result;
+    HKEY hkey;
+
+    result = openTZRegKey(&hkey, winid);
+
+    if (result == ERROR_SUCCESS) {
+        result = RegQueryValueExA(hkey,
+                                    TZI_REGKEY,
+                                    NULL,
+                                    NULL,
+                                    (LPBYTE)tzi,
+                                    &cbData);
+
+    }
+
+    RegCloseKey(hkey);
+
+    return result;
+}
+
+static LONG getSTDName(const char *winid, char *regStdName, int32_t length) {
+    DWORD cbData = length;
+    LONG result;
+    HKEY hkey;
+
+    result = openTZRegKey(&hkey, winid);
+
+    if (result == ERROR_SUCCESS) {
+        result = RegQueryValueExA(hkey,
+                                    STD_REGKEY,
+                                    NULL,
+                                    NULL,
+                                    (LPBYTE)regStdName,
+                                    &cbData);
+
+    }
+
+    RegCloseKey(hkey);
+
+    return result;
+}
+
+static LONG getTZKeyName(char* tzKeyName, int32_t length) {
+    HKEY hkey;
+    LONG result = FALSE;
+    DWORD cbData = length;
+
+    if(ERROR_SUCCESS == RegOpenKeyExA(
+        HKEY_LOCAL_MACHINE,
+        CURRENT_ZONE_REGKEY,
+        0, 
+        KEY_QUERY_VALUE,
+        &hkey))
+    {
+         result = RegQueryValueExA(
+             hkey,
+             "TimeZoneKeyName",
+             NULL,
+             NULL,
+             (LPBYTE)tzKeyName,
+             &cbData);
+    }
+
+    return result;
+}
+
+/*
+  This code attempts to detect the Windows time zone, as set in the
+  Windows Date and Time control panel.  It attempts to work on
+  multiple flavors of Windows (9x, Me, NT, 2000, XP) and on localized
+  installs.  It works by directly interrogating the registry and
+  comparing the data there with the data returned by the
+  GetTimeZoneInformation API, along with some other strategies.  The
+  registry contains time zone data under one of two keys (depending on
+  the flavor of Windows):
+
+    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones\
+    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
+
+  Under this key are several subkeys, one for each time zone.  These
+  subkeys are named "Pacific" on Win9x/Me and "Pacific Standard Time"
+  on WinNT/2k/XP.  There are some other wrinkles; see the code for
+  details.  The subkey name is NOT LOCALIZED, allowing us to support
+  localized installs.
+
+  Under the subkey are data values.  We care about:
+
+    Std   Standard time display name, localized
+    TZI   Binary block of data
+
+  The TZI data is of particular interest.  It contains the offset, two
+  more offsets for standard and daylight time, and the start and end
+  rules.  This is the same data returned by the GetTimeZoneInformation
+  API.  The API may modify the data on the way out, so we have to be
+  careful, but essentially we do a binary comparison against the TZI
+  blocks of various registry keys.  When we find a match, we know what
+  time zone Windows is set to.  Since the registry key is not
+  localized, we can then translate the key through a simple table
+  lookup into the corresponding ICU time zone.
+
+  This strategy doesn't always work because there are zones which
+  share an offset and rules, so more than one TZI block will match.
+  For example, both Tokyo and Seoul are at GMT+9 with no DST rules;
+  their TZI blocks are identical.  For these cases, we fall back to a
+  name lookup.  We attempt to match the display name as stored in the
+  registry for the current zone to the display name stored in the
+  registry for various Windows zones.  By comparing the registry data
+  directly we avoid conversion complications.
+
+  Author: Alan Liu
+  Since: ICU 2.6
+  Based on original code by Carl Brown <cbrown@xnetinc.com>
+*/
+
+/**
+ * Main Windows time zone detection function.  Returns the Windows
+ * time zone, translated to an ICU time zone, or NULL upon failure.
+ */
+U_CFUNC const char* U_EXPORT2
+uprv_detectWindowsTimeZone() {
+    UErrorCode status = U_ZERO_ERROR;
+    UResourceBundle* bundle = NULL;
+    char* icuid = NULL;
+    char apiStdName[MAX_LENGTH_ID];
+    char regStdName[MAX_LENGTH_ID];
+    char tmpid[MAX_LENGTH_ID];
+    int32_t len;
+    int id;
+    int errorCode;
+    UChar ISOcodeW[3]; /* 2 letter iso code in UTF-16*/
+    char  ISOcodeA[3]; /* 2 letter iso code in ansi */
+
+    LONG result;
+    TZI tziKey;
+    TZI tziReg;
+    TIME_ZONE_INFORMATION apiTZI;
+
+    BOOL isVistaOrHigher;
+    BOOL tryPreVistaFallback;
+    OSVERSIONINFO osVerInfo;
+
+    /* Obtain TIME_ZONE_INFORMATION from the API, and then convert it
+       to TZI.  We could also interrogate the registry directly; we do
+       this below if needed. */
+    uprv_memset(&apiTZI, 0, sizeof(apiTZI));
+    uprv_memset(&tziKey, 0, sizeof(tziKey));
+    uprv_memset(&tziReg, 0, sizeof(tziReg));
+    GetTimeZoneInformation(&apiTZI);
+    tziKey.bias = apiTZI.Bias;
+    uprv_memcpy((char *)&tziKey.standardDate, (char*)&apiTZI.StandardDate,
+           sizeof(apiTZI.StandardDate));
+    uprv_memcpy((char *)&tziKey.daylightDate, (char*)&apiTZI.DaylightDate,
+           sizeof(apiTZI.DaylightDate));
+
+    /* Convert the wchar_t* standard name to char* */
+    uprv_memset(apiStdName, 0, sizeof(apiStdName));
+    wcstombs(apiStdName, apiTZI.StandardName, MAX_LENGTH_ID);
+
+    tmpid[0] = 0;
+
+    id = GetUserGeoID(GEOCLASS_NATION);
+    errorCode = GetGeoInfoW(id,GEO_ISO2,ISOcodeW,3,0);
+    u_strToUTF8(ISOcodeA, 3, NULL, ISOcodeW, 3, &status);
+
+    bundle = ures_openDirect(NULL, "windowsZones", &status);
+    ures_getByKey(bundle, "mapTimezones", bundle, &status);
+
+    /*
+        Windows Vista+ provides us with a "TimeZoneKeyName" that is not localized
+        and can be used to directly map a name in our bundle. Try to use that first
+        if we're on Vista or higher
+    */
+    uprv_memset(&osVerInfo, 0, sizeof(osVerInfo));
+    osVerInfo.dwOSVersionInfoSize = sizeof(osVerInfo);
+    GetVersionEx(&osVerInfo);
+    isVistaOrHigher = osVerInfo.dwMajorVersion >= 6;   /* actually includes Windows Server 2008 as well, but don't worry about it */
+    tryPreVistaFallback = TRUE;
+    if(isVistaOrHigher) {
+        result = getTZKeyName(regStdName, sizeof(regStdName));
+        if(ERROR_SUCCESS == result) {
+            UResourceBundle* winTZ = ures_getByKey(bundle, regStdName, NULL, &status);
+            if(U_SUCCESS(status)) {
+                const UChar* icuTZ = NULL;
+                if (errorCode != 0) {
+                    icuTZ = ures_getStringByKey(winTZ, ISOcodeA, &len, &status);
+                }
+                if (errorCode==0 || icuTZ==NULL) {
+                    /* fallback to default "001" and reset status */
+                    status = U_ZERO_ERROR;
+                    icuTZ = ures_getStringByKey(winTZ, "001", &len, &status);
+                }
+
+                if(U_SUCCESS(status)) {
+                    int index=0;
+                    while (! (*icuTZ == '\0' || *icuTZ ==' ')) {
+                        tmpid[index++]=(char)(*icuTZ++);  /* safe to assume 'char' is ASCII compatible on windows */
+                    }
+                    tmpid[index]='\0';
+                    tryPreVistaFallback = FALSE;
+                }
+            }
+            ures_close(winTZ);
+        }
+    }
+
+    if(tryPreVistaFallback) {
+
+        /* Note: We get the winid not from static tables but from resource bundle. */
+        while (U_SUCCESS(status) && ures_hasNext(bundle)) {
+            UBool idFound = FALSE;
+            const char* winid;
+            UResourceBundle* winTZ = ures_getNextResource(bundle, NULL, &status);
+            if (U_FAILURE(status)) {
+                break;
+            }
+            winid = ures_getKey(winTZ);
+            result = getTZI(winid, &tziReg);
+
+            if (result == ERROR_SUCCESS) {
+                /* Windows alters the DaylightBias in some situations.
+                   Using the bias and the rules suffices, so overwrite
+                   these unreliable fields. */
+                tziKey.standardBias = tziReg.standardBias;
+                tziKey.daylightBias = tziReg.daylightBias;
+
+                if (uprv_memcmp((char *)&tziKey, (char*)&tziReg, sizeof(tziKey)) == 0) {
+                    const UChar* icuTZ = NULL;
+                    if (errorCode != 0) {
+                        icuTZ = ures_getStringByKey(winTZ, ISOcodeA, &len, &status);
+                    }
+                    if (errorCode==0 || icuTZ==NULL) {
+                        /* fallback to default "001" and reset status */
+                        status = U_ZERO_ERROR;
+                        icuTZ = ures_getStringByKey(winTZ, "001", &len, &status);
+                    }
+
+                    if (U_SUCCESS(status)) {
+                        /* Get the standard name from the registry key to compare with
+                           the one from Windows API call. */
+                        uprv_memset(regStdName, 0, sizeof(regStdName));
+                        result = getSTDName(winid, regStdName, sizeof(regStdName));
+                        if (result == ERROR_SUCCESS) {
+                            if (uprv_strcmp(apiStdName, regStdName) == 0) {
+                                idFound = TRUE;
+                            }
+                        }
+
+                        /* tmpid buffer holds the ICU timezone ID corresponding to the timezone ID from Windows.
+                         * If none is found, tmpid buffer will contain a fallback ID (i.e. the time zone ID matching
+                         * the current time zone information)
+                         */
+                        if (idFound || tmpid[0] == 0) {
+                            /* if icuTZ has more than one city, take only the first (i.e. terminate icuTZ at first space) */
+                            int index=0;
+                            while (! (*icuTZ == '\0' || *icuTZ ==' ')) {
+                                tmpid[index++]=(char)(*icuTZ++);  /* safe to assume 'char' is ASCII compatible on windows */
+                            }
+                            tmpid[index]='\0';
+                        }
+                    }
+                }
+            }
+            ures_close(winTZ);
+            if (idFound) {
+                break;
+            }
+        }
+    }
+
+    /*
+     * Copy the timezone ID to icuid to be returned.
+     */
+    if (tmpid[0] != 0) {
+        len = uprv_strlen(tmpid);
+        icuid = (char*)uprv_calloc(len + 1, sizeof(char));
+        if (icuid != NULL) {
+            uprv_strcpy(icuid, tmpid);
+        }
+    }
+
+    ures_close(bundle);
+    
+    return icuid;
+}
+
+#endif /* U_PLATFORM_HAS_WIN32_API */
index 7be30eb..1d4db87 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,9 +16,7 @@
 
 #include "unicode/utypes.h"
 
-// This file contains only desktop windows behavior
-// Windows UWP calls Windows::Globalization directly, so this isn't needed there.
-#if U_PLATFORM_USES_ONLY_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0)
+#if U_PLATFORM_HAS_WIN32_API
 
 /**
  * \file 
@@ -33,6 +31,6 @@ U_CDECL_END
 U_CFUNC const char* U_EXPORT2
 uprv_detectWindowsTimeZone();
 
-#endif /* U_PLATFORM_USES_ONLY_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0) */
+#endif /* U_PLATFORM_HAS_WIN32_API */
 
 #endif /* __WINTZ */
index f7430f6..442782b 100644 (file)
@@ -8,8 +8,6 @@
 # This is to be called from ../Makefile.in
 #
 # This will only work if subversion is installed.
-# You must checkout ICU4C at the `/icu`  or `/icu/icu4c` level - not just `…/source`
-# also note that `make dist` does NOT reflect any local modifications - it only does a fresh SVN export.
 
 top_builddir = .
 
@@ -19,12 +17,13 @@ include $(top_builddir)/icudefs.mk
 DISTY_TMP=dist/tmp
 DISTY_ICU=$(DISTY_TMP)/icu
 DISTY_DATA=$(DISTY_ICU)/source/data
-DISTY_RMV=brkitr coll curr lang locales mappings rbnf region translit xml zone misc unit
+DISTY_RMV=brkitr coll curr lang locales mappings rbnf region translit xml zone
 DISTY_RMDIR=$(DISTY_RMV:%=$(DISTY_DATA)/%)
 DISTY_IN=$(DISTY_DATA)/in
 DOCZIP=icu-docs.zip
 
 SVNTOP=$(top_srcdir)/..
+SVNDOT=$(SVNTOP)/.svn
 SVNVER=$(shell svnversion $(SVNTOP) | cut -d: -f1 | tr -cd 'a-zA-Z0-9')
 SVNURL=$(shell svn info $(SVNTOP) | grep '^URL:' | cut -d: -f2-)
 DISTY_VER=$(shell echo $(VERSION) | tr '.' '_' )
@@ -39,13 +38,17 @@ DISTY_DAT=$(firstword $(wildcard data/out/tmp/icudt$(SO_TARGET_VERSION_MAJOR)*.d
 DISTY_FILES_SRC=$(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP)
 DISTY_FILES=$(DISTY_FILES_SRC) $(DISTY_DOC_ZIP)
 
+$(SVNDOT):
+       @echo "ERROR: 'dist' will not work unless the parent of the top_srcdir ( $(SVNTOP) ) is checked out from svn, and svn is installed."
+       false
+
 $(DISTY_FILE_DIR):
        $(MKINSTALLDIRS) $(DISTY_FILE_DIR)
 
 $(DISTY_TMP):
        $(MKINSTALLDIRS) $(DISTY_TMP)
 
-$(DISTY_DOC_ZIP):  $(DOCZIP) $(DISTY_FILE_DIR)
+$(DISTY_DOC_ZIP): $(SVNDOT) $(DOCZIP) $(DISTY_FILE_DIR)
        cp $(DOCZIP) $(DISTY_DOC_ZIP)
 
 $(DISTY_DAT): 
@@ -55,22 +58,19 @@ $(DISTY_DAT):
 $(DOCZIP):
        $(MAKE) -C . srcdir="$(srcdir)" top_srcdir="$(top_srcdir)" builddir=. $@
 
-$(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP) $(DISTY_DATA_ZIP):  $(DISTY_DAT) $(DISTY_TMP)
+$(DISTY_FILE_TGZ) $(DISTY_FILE_ZIP) $(DISTY_DATA_ZIP): $(SVNDOT) $(DISTY_DAT) $(DISTY_TMP)
        @echo "svnversion of $(SVNTOP) is as follows (if this fails, make sure svn is installed..)"
        svnversion $(SVNTOP)
        -$(RMV) $(DISTY_FILE) $(DISTY_TMP)
        $(MKINSTALLDIRS) $(DISTY_TMP)
-       echo exporting $(SVNVER)
        svn export -r $(shell echo $(SVNVER) | tr -d 'a-zA-Z' ) $(SVNURL) "$(DISTY_TMP)/icu"
        ( cd $(DISTY_TMP)/icu/source ; zip -rlq $(DISTY_DATA_ZIP) data )
+       $(RMV) $(DISTY_RMDIR)
        $(MKINSTALLDIRS) $(DISTY_IN)
-       echo DISTY_DAT=$(DISTY_DAT)
        cp $(DISTY_DAT) $(DISTY_IN)
        ( cd $(DISTY_TMP)/icu ; python as_is/bomlist.py > as_is/bomlist.txt || rm -f as_is/bomlist.txt )
-       ( cd $(DISTY_TMP) ; zip -rlq $(DISTY_FILE_ZIP) icu )
-       $(RMV) $(DISTY_RMDIR)
-       ( cd $(DISTY_TMP)/icu ; python as_is/bomlist.py > as_is/bomlist.txt || rm -f as_is/bomlist.txt )
        ( cd $(DISTY_TMP) ; tar cfpz $(DISTY_FILE_TGZ) icu )
+       ( cd $(DISTY_TMP) ; zip -rlq $(DISTY_FILE_ZIP) icu )
        ls -l $(DISTY_FILE)
 
 dist-local: $(DISTY_FILES)
index 0f488ba..df53e4e 100644 (file)
@@ -4,7 +4,6 @@
 s%^\([a-zA-Z0-9\._-]*\)[       ]*+=%\1=$(\1) %
 s%^[A-Z]*_SO_TARG*%## &%
 s%^SHARED_OBJECT.*%## &%
-s@^_%.*@## &@
 s%^LD_SONAME.*%## &%
 s%$(\([^\)]*\))%${\1}%g
 s%^    %#M#    %
index 1572466..e1b4236 100644 (file)
@@ -13,8 +13,8 @@ GEN_DEPS.cc=  $(CXX) -E -M $(DEFS) $(CPPFLAGS)
 #           This helps in the data library,
 # -qproto assumes all functions are prototyped (for optimization)
 # -qrtti turns on compiler RTTI, required beginning with ICU 4.6
-CFLAGS += -qproto -qroconst -qlanglvl=extended
-CXXFLAGS += -qproto -qroconst -qrtti -qlanglvl=extended0x
+CFLAGS += -qproto -qroconst
+CXXFLAGS += -qproto -qroconst -qrtti
 
 # If you readd this line, you must change the SO value
 #LDFLAGS += -brtl
@@ -111,31 +111,11 @@ $(LIBDIR)/%.a : %.so
 %.o: $(srcdir)/%.c
        $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
 
-
-## C++ compilation rules.
-
-# This causes escapesrc to be built before other ICU targets.
-NEED_ESCAPING=YES
-
-ifneq ($(SKIP_ESCAPING),)
-# no escaping - bootstrap
+%.$(STATIC_O): $(srcdir)/%.cpp
+       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
 %.o: $(srcdir)/%.cpp
        $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
-else
-# convert *.cpp files to _*.cpp with \u / \U escaping
-CLEANFILES += _*.cpp
 
-# the actual escaping
-_%.cpp: $(srcdir)/%.cpp
-       @$(BINDIR)/escapesrc$(EXEEXT) $< $@
-
-# compilation for static obj
-%.$(STATIC_O): _%.cpp
-       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
-# compilation for dynamic obj
-%.o: _%.cpp
-       $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
-endif
 
 ## Dependency rules
 %.d : %.u
index c5a3717..1cc2d74 100644 (file)
@@ -7,7 +7,7 @@
 
 ## Commands to generate dependency files
 GEN_DEPS.c=    $(CC) -E -MM $(DEFS) $(CPPFLAGS)
-GEN_DEPS.cc=   $(CXX) -E -MM -std=c++11 $(DEFS) $(CPPFLAGS)
+GEN_DEPS.cc=   $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
 
 ## Flags to create/use a static library
 ifneq ($(ENABLE_SHARED),YES)
index 4744bb9..01003ac 100644 (file)
@@ -47,9 +47,8 @@ endif
 # /EHsc enables exception handling
 # /Zc:wchar_t makes wchar_t a native type. Required for C++ ABI compatibility.
 # -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions.
-# -utf-8 set source file encoding to utf-8.
-CFLAGS+=-GF -nologo -utf-8
-CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t -utf-8
+CFLAGS+=-GF -nologo
+CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t
 CPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE
 DEFS+=-DWIN32 -DCYGWINMSVC
 LDFLAGS+=-nologo
index dc9d1a1..0af0c88 100644 (file)
@@ -7,7 +7,7 @@
 
 ## Commands to generate dependency files
 GEN_DEPS.c=    $(CC) -E -MM $(DEFS) $(CPPFLAGS)
-GEN_DEPS.cc=   $(CXX) -E -MM -std=c++11 $(DEFS) $(CPPFLAGS)
+GEN_DEPS.cc=   $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
 
 ## Flags to create/use a static library
 ifneq ($(ENABLE_SHARED),YES)
index 05fe514..6b57c26 100644 (file)
@@ -52,9 +52,8 @@ endif
 # -EHsc enables exception handling
 # -Zc:wchar_t makes wchar_t a native type. Required for C++ ABI compatibility.
 # -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions.
-# -utf-8 set source file encoding to utf-8.
-CFLAGS+=-GF -nologo -utf-8
-CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t -utf-8
+CFLAGS+=-GF -nologo
+CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t
 CPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE
 DEFS+=-DWIN32 -DCYGWINMSVC
 LDFLAGS+=-nologo
index 9bd3f9b..dbc3a3a 100644 (file)
@@ -69,7 +69,7 @@ SHAREDLIBCXXFLAGS     = -Wc,expo
 # NOCSECT might be used as an optimization option.
 # -+ means accept any file extension as a C++ file. By default only .C is accepted.
 CFLAGS          += -Wc,DLL,ROS,RENT,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED)' $(ICU_IEEE)
-CXXFLAGS        += -Wc,DLL,ROS,RTTI,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED0X)' $(ICU_IEEE) -+
+CXXFLAGS        += -Wc,DLL,ROS,RTTI,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED)' $(ICU_IEEE) -+
 ARFLAGS         = -cr
 
 # _MSE_PROTOS usually interacts with _XOPEN_SOURCE. It affects some standard
@@ -208,27 +208,10 @@ endif
 %.o: $(srcdir)/%.c
        $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
 
-# This causes escapesrc to be built before other ICU targets.
-NEED_ESCAPING=YES
-
-ifneq ($(SKIP_ESCAPING),)
 %.$(STATIC_O): $(srcdir)/%.cpp
        $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
 %.o: $(srcdir)/%.cpp
        $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
-else
-# convert *.cpp files to _*.cpp with \u / \U escaping
-CLEANFILES += _*.cpp
-
-# the actual escaping
-_%.cpp: $(srcdir)/%.cpp
-       @$(BINDIR)/escapesrc$(EXEEXT) $< $@
-
-%.$(STATIC_O): _%.cpp
-       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
-%.o: _%.cpp
-       $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
-endif
 
 ## Dependency rules
 %.d : %.u
index e1d4ccf..469b210 100644 (file)
@@ -5,10 +5,6 @@
 ## Copyright (c) 1999-2010, International Business Machines Corporation and
 ## others. All Rights Reserved.
 
-## Flags for ICU 59+
-CXXFLAGS += -std=c++11
-CFLAGS   += -std=c99
-
 ## Flags for position independent code
 SHAREDLIBCFLAGS = -KPIC
 SHAREDLIBCXXFLAGS = -KPIC
@@ -63,34 +59,17 @@ SO=         so
 ## Non-shared intermediate object suffix
 STATIC_O = o
 
-# This causes escapesrc to be built before other ICU targets.
-NEED_ESCAPING=YES
-
 ## Compilation rules
 %.$(STATIC_O): $(srcdir)/%.c
        $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
 %.o: $(srcdir)/%.c
        $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
 
-ifneq ($(SKIP_ESCAPING),)
-%.o: $(srcdir)/%.cpp
-       $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
 %.$(STATIC_O): $(srcdir)/%.cpp
        $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
-else
-# convert *.cpp files to _*.cpp with \u / \U escaping
-CLEANFILES += _*.cpp
-
-# the actual escaping
-_%.cpp: $(srcdir)/%.cpp
-       @$(BINDIR)/escapesrc$(EXEEXT) $< $@
-
-# no escaping - bootstrap
-%.$(STATIC_O): _%.cpp
-       $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
-%.o: _%.cpp
+%.o: $(srcdir)/%.cpp
        $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
-endif
+
 
 ## Dependency rules
 %.d : $(srcdir)/%.c
index abcdeb9..29732a1 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ICU 59.1.
+# Generated by GNU Autoconf 2.69 for ICU 58.1.
 #
 # Report bugs to <http://icu-project.org/bugs>.
 #
@@ -582,8 +582,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='ICU'
 PACKAGE_TARNAME='International Components for Unicode'
-PACKAGE_VERSION='59.1'
-PACKAGE_STRING='ICU 59.1'
+PACKAGE_VERSION='58.1'
+PACKAGE_STRING='ICU 58.1'
 PACKAGE_BUGREPORT='http://icu-project.org/bugs'
 PACKAGE_URL='http://icu-project.org'
 
@@ -674,6 +674,7 @@ GENCCODE_ASSEMBLY
 HAVE_MMAP
 LIB_THREAD
 U_HAVE_ATOMIC
+U_HAVE_STD_STRING
 ENABLE_RPATH
 U_ENABLE_DYLOAD
 U_HAVE_PLUGINS
@@ -681,7 +682,6 @@ PLUGINS_TRUE
 U_ENABLE_TRACING
 U_DISABLE_RENAMING
 AR
-SED
 RANLIB
 U_DEFAULT_SHOW_DRAFT
 UCLN_NO_AUTO_CLEANUP
@@ -1357,7 +1357,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ICU 59.1 to adapt to many kinds of systems.
+\`configure' configures ICU 58.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1423,7 +1423,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ICU 59.1:";;
+     short | recursive ) echo "Configuration of ICU 58.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1559,7 +1559,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ICU configure 59.1
+ICU configure 58.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2251,7 +2251,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ICU $as_me 59.1, which was
+It was created by ICU $as_me 58.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5561,77 +5561,6 @@ else
 fi
 
 
-# need sed
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-
 # look for 'ar' the proper way
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
@@ -5988,11 +5917,11 @@ $as_echo "no" >&6; }
 fi
 
 if [ "$GXX" = yes ]; then
-    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++11,
+    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++0x,
     # and check that the compiler still works.
     if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
         OLD_CXXFLAGS="${CXXFLAGS}"
-        CXXFLAGS="$CXXFLAGS -std=c++11"
+        CXXFLAGS="$CXXFLAGS --std=c++0x"
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have a C++11 compiler" >&5
 $as_echo_n "checking if we have a C++11 compiler... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6015,9 +5944,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cxx11_okay" >&5
 $as_echo "$cxx11_okay" >&6; }
         if [ $cxx11_okay = yes ]; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CXXFLAGS option -std=c++11" >&5
-$as_echo "$as_me: Adding CXXFLAGS option -std=c++11" >&6;}
-            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++11"
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CXXFLAGS option --std=c++0x" >&5
+$as_echo "$as_me: Adding CXXFLAGS option --std=c++0x" >&6;}
+            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} --std=c++0x"
         else
             CXXFLAGS="$OLD_CXXFLAGS"
         fi
@@ -6029,6 +5958,37 @@ $as_echo "$as_me: Adding CXXFLAGS option -std=c++11" >&6;}
     fi
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if #include <string> works" >&5
+$as_echo_n "checking if #include <string> works... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_header_stdstring=yes
+else
+  ac_cv_header_stdstring=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdstring" >&5
+$as_echo "$ac_cv_header_stdstring" >&6; }
+if test $ac_cv_header_stdstring = yes
+then
+       U_HAVE_STD_STRING=1
+else
+        U_HAVE_STD_STRING=0
+        CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STD_STRING=0"
+fi
+
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if #include <atomic> works" >&5
 $as_echo_n "checking if #include <atomic> works... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7840,7 +7800,7 @@ echo "CXXFLAGS=$CXXFLAGS"
 
 
 # output the Makefiles
-ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
+ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -8385,7 +8345,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ICU $as_me 59.1, which was
+This file was extended by ICU $as_me 58.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8439,7 +8399,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ICU config.status 59.1
+ICU config.status 58.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -8585,7 +8545,6 @@ do
     "tools/pkgdata/Makefile") CONFIG_FILES="$CONFIG_FILES tools/pkgdata/Makefile" ;;
     "tools/tzcode/Makefile") CONFIG_FILES="$CONFIG_FILES tools/tzcode/Makefile" ;;
     "tools/gencfu/Makefile") CONFIG_FILES="$CONFIG_FILES tools/gencfu/Makefile" ;;
-    "tools/escapesrc/Makefile") CONFIG_FILES="$CONFIG_FILES tools/escapesrc/Makefile" ;;
     "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
     "test/compat/Makefile") CONFIG_FILES="$CONFIG_FILES test/compat/Makefile" ;;
     "test/testdata/Makefile") CONFIG_FILES="$CONFIG_FILES test/testdata/Makefile" ;;
index bfbf772..eb62936 100644 (file)
@@ -371,9 +371,6 @@ AC_SUBST(U_DEFAULT_SHOW_DRAFT)
 
 AC_PROG_RANLIB
 
-# need sed
-AC_PROG_SED
-
 # look for 'ar' the proper way
 AC_CHECK_TOOL(AR, ar, false)
 
@@ -495,17 +492,17 @@ else
 fi
 
 if [[ "$GXX" = yes ]]; then
-    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++11,
+    # if CXXFLAGS does not have a "-std=" setting, set it now to -std=c++0x,
     # and check that the compiler still works.
     if ! echo "$CXXFLAGS" | grep '\-std=' >/dev/null 2>&1; then
         OLD_CXXFLAGS="${CXXFLAGS}"
-        CXXFLAGS="$CXXFLAGS -std=c++11"
+        CXXFLAGS="$CXXFLAGS --std=c++0x"
         AC_MSG_CHECKING([[if we have a C++11 compiler]])
         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[cxx11_okay=yes],[cxx11_okay=no])
         AC_MSG_RESULT($cxx11_okay)
         if [[ $cxx11_okay = yes ]]; then
-            AC_MSG_NOTICE([Adding CXXFLAGS option -std=c++11])
-            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} -std=c++11"
+            AC_MSG_NOTICE([Adding CXXFLAGS option --std=c++0x])
+            UCONFIG_CXXFLAGS="${UCONFIG_CXXFLAGS} --std=c++0x"
         else
             CXXFLAGS="$OLD_CXXFLAGS"
         fi
@@ -517,6 +514,19 @@ if [[ "$GXX" = yes ]]; then
     fi
 fi
 
+AC_MSG_CHECKING([[if #include <string> works]])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string>]], [[]])], [ac_cv_header_stdstring=yes], [ac_cv_header_stdstring=no])
+AC_MSG_RESULT($ac_cv_header_stdstring)
+if test $ac_cv_header_stdstring = yes
+then
+       U_HAVE_STD_STRING=1
+else
+        U_HAVE_STD_STRING=0
+        CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STD_STRING=0"
+fi
+AC_SUBST(U_HAVE_STD_STRING)
+
+
 AC_MSG_CHECKING([[if #include <atomic> works]])
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <atomic>]], [[]])], [ac_cv_header_atomic=yes], [ac_cv_header_atomic=no])
 AC_MSG_RESULT($ac_cv_header_atomic)
@@ -1352,7 +1362,6 @@ AC_CONFIG_FILES([icudefs.mk \
                tools/pkgdata/Makefile \
                tools/tzcode/Makefile \
                tools/gencfu/Makefile \
-               tools/escapesrc/Makefile \
                test/Makefile \
                test/compat/Makefile \
                test/testdata/Makefile \
index 64f5a24..b85cbe5 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-BRK_RES_CLDR_VERSION = 31.0.1\r
+BRK_RES_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'brklocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'brklocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
index 2167dee..92832ef 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 root{\r
-    Version{"2.1.32.92"}\r
+    Version{"2.1.30.50"}\r
     boundaries{\r
         grapheme:process(dependency){"char.brk"}\r
         line:process(dependency){"line.brk"}\r
index 5362960..a8d9c8f 100644 (file)
@@ -9,8 +9,7 @@
 #   ICU Character Break Rules, also known as Grapheme Cluster Boundaries\r
 #      See Unicode Standard Annex #29.\r
 #      These rules are based on UAX #29 Revision 29 for Unicode Version 9.0\r
-#      Plus revisions to rule GB 11 from http://unicode.org/cldr/trac/ticket/10088\r
-#      Plus additional characters introduces with Emoji 5, http://www.unicode.org/reports/tr51/proposed.html\r
+#      plus proposed updates for Emoji 4.0 from https://goo.gl/cluFCn\r
 \r
 #\r
 #  Character Class Definitions.\r
@@ -36,11 +35,11 @@ $LVT         = [\p{Grapheme_Cluster_Break = LVT}];
 \r
 # Emoji defintions\r
 \r
-$E_Base      = [\p{Grapheme_Cluster_Break = EB}];\r
+$E_Base      = [[\p{Grapheme_Cluster_Break = EB}] \U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $E_Modifier  = [\p{Grapheme_Cluster_Break = EM}];\r
 \r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 $E_Base_GAZ  = [\p{Grapheme_Cluster_Break = EBG}];\r
 $EmojiNRK    = [[\p{Emoji}] - [\p{Grapheme_Cluster_Break = Regional_Indicator}*\u00230-9©®™〰〽]];\r
 \r
@@ -68,7 +67,7 @@ $Prepend [^$Control $CR $LF];
 ($E_Base | $E_Base_GAZ) $Extend* $E_Modifier;\r
 \r
 # GB 11\r
-($Extended_Pict | $EmojiNRK) $Extend* $ZWJ ($Extended_Pict | $EmojiNRK);\r
+($Extended_Pict | $EmojiNRK) $ZWJ ($Extended_Pict | $EmojiNRK);\r
 \r
 # GB 12-13. Keep pairs of regional indicators together\r
 #           Note that hard break '/' rule triggers only if there are three or more initial RIs,\r
@@ -97,7 +96,7 @@ $SpacingMark [^$Control $CR $LF];
 $E_Modifier $Extend* ($E_Base | $E_Base_GAZ);\r
 \r
 # GB 11 Don't break between ZWJ and Glue_After_ZWJ\r
-($Extended_Pict | $EmojiNRK) $ZWJ $Extend* ($Extended_Pict | $EmojiNRK);\r
+($Extended_Pict | $EmojiNRK) $ZWJ ($Extended_Pict | $EmojiNRK);\r
 \r
 # GB 12-13. Going backwards, we must scan through any number of regional indicators as pairs.\r
 #\r
index 6e6dbc3..254a36b 100644 (file)
@@ -38,7 +38,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -72,8 +72,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 0a0a4c4..01e6b0a 100644 (file)
@@ -44,7 +44,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -78,8 +78,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 32028e7..2b43ac8 100644 (file)
@@ -45,7 +45,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -80,8 +80,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 8f3404d..1cb6d36 100644 (file)
@@ -53,7 +53,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EXX = [\uFF01 \uFF1F];\r
 $EX = [[:LineBreak =  Exclamation:] - $EXX];\r
@@ -91,8 +91,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 3d75a9c..d294584 100644 (file)
@@ -42,7 +42,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -77,8 +77,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index dd6ed1a..b1d0d74 100644 (file)
@@ -42,7 +42,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -76,8 +76,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index dd202ef..d1cb65a 100644 (file)
@@ -44,7 +44,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -79,8 +79,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 070f946..0695097 100644 (file)
@@ -42,7 +42,7 @@ $CL = [:LineBreak =  Close_Punctuation:];
 # $CM = [:LineBreak =  Combining_Mark:];\r
 $CP = [:LineBreak =  Close_Parenthesis:];\r
 $CR = [:LineBreak =  Carriage_Return:];\r
-$EB = [:LineBreak =  EB:];\r
+$EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $EM = [:LineBreak =  EM:];\r
 $EX = [:LineBreak =  Exclamation:];\r
 $GL = [:LineBreak =  Glue:];\r
@@ -76,8 +76,8 @@ $ZW = [:LineBreak =  ZWSpace:];
 $ZWJ = [:LineBreak = ZWJ:];\r
 \r
 $EmojiNRK = [[\p{Emoji}] - [$RI \u002a\u00230-9©®™〰〽]];\r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 \r
 # By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly\r
 #         list it in the numerous rules that use CM.\r
index 277dc92..ea483c2 100644 (file)
@@ -10,7 +10,6 @@
 #      See Unicode Standard Annex #29.\r
 #      These rules are based on UAX #29 Revision 29 for Unicode Version 9.0\r
 #      with additions for Emoji Sequences from https://goo.gl/cluFCn\r
-#      Plus additional characters introduces with Emoji 5, http://www.unicode.org/reports/tr51/proposed.html\r
 #\r
 # Note:  Updates to word.txt will usually need to be merged into\r
 #        word_POSIX.txt also.\r
@@ -45,11 +44,11 @@ $MidLetter          = [\p{Word_Break = MidLetter}];
 $MidNum             = [\p{Word_Break = MidNum}];\r
 $Numeric            = [\p{Word_Break = Numeric}];\r
 $ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];\r
-$E_Base             = [\p{Word_Break = EB}];\r
+$E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $E_Modifier         = [\p{Word_Break = EM}];\r
 \r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 $EBG                = [\p{Word_Break = EBG}];\r
 $EmojiNRK           = [[\p{Emoji}] - [\p{Word_Break = Regional_Indicator}\u002a\u00230-9©®™〰〽]];\r
 \r
index a44e7b0..4ca3a20 100644 (file)
@@ -10,7 +10,6 @@
 #      See Unicode Standard Annex #29.\r
 #      These rules are based on UAX #29 Revision 29 for Unicode Version 9.0\r
 #      with additions for Emoji Sequences from https://goo.gl/cluFCn\r
-#      Plus additional characters introduces with Emoji 5, http://www.unicode.org/reports/tr51/proposed.html\r
 #\r
 # Note:  Updates to word.txt will usually need to be merged into\r
 #        word_POSIX.txt also.\r
@@ -45,11 +44,11 @@ $MidLetter          = [\p{Word_Break = MidLetter} - [\:]];
 $MidNum             = [\p{Word_Break = MidNum} [.]];\r
 $Numeric            = [\p{Word_Break = Numeric}];\r
 $ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];\r
-$E_Base             = [\p{Word_Break = EB}];\r
+$E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];\r
 $E_Modifier         = [\p{Word_Break = EM}];\r
 \r
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267\r
-$Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];\r
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773\r
+$Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];\r
 $EBG                = [\p{Word_Break = EBG}];\r
 $EmojiNRK           = [[\p{Emoji}] - [\p{Word_Break = Regional_Indicator}\u002a\u00230-9©®™〰〽]];\r
 \r
index ac17ada..df5bb22 100644 (file)
@@ -52,7 +52,7 @@
 #\r
 # ANT_OPTS:      You may want to set:\r
 #\r
-#                -Xmx3072m, to give Java more memory; otherwise it may run out\r
+#                -Xmx1024m, to give Java more memory; otherwise it may run out\r
 #                 of heap.\r
 #\r
 # b) CLDR-related variables\r
 # 1a. Java and ant variables, adjust for your system\r
 \r
 export JAVA_HOME=`/usr/libexec/java_home`\r
-export ANT_OPTS="-Xmx3072m"\r
+export ANT_OPTS="-Xmx1024m"\r
 \r
 # 1b. CLDR variables, adjust for your setup; with cygwin it might be e.g.\r
 # CLDR_DIR=`cygpath -wp /build/cldr`\r
@@ -134,12 +134,13 @@ export CLDR_DIR=$HOME/cldr/trunk
 \r
 # 1c. ICU variables\r
 \r
-export ICU4C_DIR=$HOME/icu/trunk/icu4c\r
-export ICU4J_ROOT=$HOME/icu/trunk/icu4j\r
+export ICU4C_DIR=$HOME/icu/icu/trunk\r
+export ICU4J_ROOT=$HOME/icu/icu4j/trunk\r
 \r
 # 2. Build the CLDR Java tools\r
 \r
 cd $CLDR_DIR/tools/java\r
+#cd $CLDR_DIR/cldr-tools\r
 ant jar\r
 \r
 # 3. Configure ICU4C, build and test without new data first, to verify that\r
@@ -161,7 +162,7 @@ make check 2>&1 | tee /tmp/icu4c-oldData-makeCheck.txt
 \r
 cd $ICU4C_DIR/source/data\r
 ant clean\r
-ant all 2>&1 | tee /tmp/cldr-newData-buildLog.txt\r
+ant all 2>&1 | tee /tmp/cldrNN-buildLog.txt\r
 \r
 # 5. Check which data files have modifications, which have been added or removed\r
 # (if there are no changes, you may not need to proceed further). Make sure the\r
@@ -219,12 +220,10 @@ cd $ICU4J_ROOT
 ant all 2>&1 | tee /tmp/icu4j-oldData-antAll.txt\r
 ant check 2>&1 | tee /tmp/icu4j-oldData-antCheck.txt\r
 \r
-# 12. Now build the new data and test data for ICU4J\r
+# 12. Now build the new data for ICU4J\r
 \r
 cd $ICU4C_DIR/source/data\r
 make icu4j-data-install\r
-cd $ICU4C_DIR/source/test/testdata\r
-make icu4j-data-install\r
 \r
 # 13. Now rebuild ICU4J with the new data and run tests:\r
 # Keep a log so you can investigate the errors.\r
@@ -242,24 +241,25 @@ ant check 2>&1 | tee /tmp/icu4j-newData-antCheck.txt
 \r
 cd $ICU4C_DIR/source\r
 svn status\r
-# add or remove as necessary\r
+# add or remove as necessary, then commit\r
 \r
 cd $ICU4J_ROOT\r
 svn status\r
-# add or remove as necessary\r
-\r
-cd $HOME/icu/trunk/\r
-# commit\r
+# add or remove as necessary, then commit\r
 \r
-# 16. For an official CLDR data integration into ICU, now tag the CLDR and\r
-# ICU sources with an appropriate CLDR milestone (you can check previous\r
+# 16. For an official CLDR data integration into ICU, now tag the CLDR, ICU4J,\r
+# and ICU4C sources with an appropriate CLDR milestone (you can check previous\r
 # tags for format), e.g.:\r
 \r
 svn copy svn+ssh://unicode.org/repos/cldr/trunk \\r
 svn+ssh://unicode.org/repos/cldr/tags/release-NNN \\r
 --parents -m "cldrbug nnnn: tag cldr sources for NNN"\r
 \r
-svn copy svn+ssh://source.icu-project.org/repos/icu/trunk \\r
-svn+ssh://source.icu-project.org/repos/icu/tags/cldr-NNN \\r
+svn copy svn+ssh://source.icu-project.org/repos/icu/icu4j/trunk \\r
+svn+ssh://source.icu-project.org/repos/icu/icu4j/tags/cldr-NNN \\r
+--parents -m 'ticket:mmmm: tag the version used for integrating CLDR NNN'\r
+\r
+svn copy svn+ssh://source.icu-project.org/repos/icu/icu/trunk \\r
+svn+ssh://source.icu-project.org/repos/icu/icu/tags/cldr-NNN \\r
 --parents -m 'ticket:mmmm: tag the version used for integrating CLDR NNN'\r
 \r
index 6b31bdf..9e27b06 100644 (file)
@@ -5,7 +5,7 @@ af{
     collations{\r
         standard{\r
             Sequence{"&N<<<ʼn"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 53cf1a4..10a6c1a 100644 (file)
@@ -5,7 +5,7 @@ am{
     collations{\r
         standard{\r
             Sequence{"[reorder Ethi]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 4a15774..9bded73 100644 (file)
@@ -9,7 +9,7 @@ ar{
                 "&ت<<ة<<<ﺔ<<<ﺓ"\r
                 "&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -397,7 +397,7 @@ ar{
                 "‎&ۓ‎=ﮰ‎=ﮱ"\r
                 "‎&ۀ‎=ﮤ‎=ﮥ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
diff --git a/source/data/coll/ars.txt b/source/data/coll/ars.txt
deleted file mode 100644 (file)
index 8de1f41..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar"}\r
-}\r
index 1d16299..c35246a 100644 (file)
@@ -11,7 +11,7 @@ as{
                 "&[before 1]ত<ৎ=ত্\u200D"\r
                 "&হ<ক্ষ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index d1e6210..128fa89 100644 (file)
@@ -9,7 +9,7 @@ az{
                 "[import az-u-co-standard]"\r
                 "[reorder others]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -26,7 +26,7 @@ az{
                 "&H<x<<<X"\r
                 "&Z<w<<<W"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index d44a161..3613d80 100644 (file)
@@ -9,7 +9,7 @@ be{
                 "&Е<ё<<<Ё"\r
                 "&у<ў<<<Ў"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 20bedf3..795f1a6 100644 (file)
@@ -5,7 +5,7 @@ bg{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 8e0075c..f8de4d3 100644 (file)
@@ -9,7 +9,7 @@ bn{
                 "[reorder Beng Deva Guru Gujr Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ঔ<ং<ঃ<ঁ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -629,7 +629,7 @@ bn{
                 "&যৌ<<<য়ৌ"\r
                 "&য্<<<য়্"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index fedf54a..6de3f23 100644 (file)
@@ -5,11 +5,11 @@ bs{
     collations{\r
         search{\r
             Sequence{"[import hr-u-co-search]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{"[import hr]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index c61c022..f066721 100644 (file)
@@ -5,7 +5,7 @@ bs_Cyrl{
     collations{\r
         standard{\r
             Sequence{"[import sr]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index ceb4959..119b6ca 100644 (file)
@@ -8,7 +8,7 @@ ca{
                 "[import und-u-co-search]"\r
                 "&L<ŀ=l·<<<Ŀ=L·"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index b16df4a..4fd159b 100644 (file)
@@ -5,7 +5,7 @@ chr{
     collations{\r
         standard{\r
             Sequence{"[reorder Cher]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 3f72e4c..c51211b 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-COLLATION_CLDR_VERSION = 31.0.1\r
+COLLATION_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'collocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'collocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,15 +26,15 @@ COLLATION_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-COLLATION_SYNTHETIC_ALIAS = ars.txt de_.txt de__PHONEBOOK.txt es_.txt\\r
es__TRADITIONAL.txt he_IL.txt id_ID.txt in.txt in_ID.txt\\r
- iw.txt iw_IL.txt mo.txt nb_NO.txt no.txt\\r
no_NO.txt pa_Guru.txt pa_Guru_IN.txt pa_IN.txt ro_MD.txt\\r
- sh.txt sh_BA.txt sh_CS.txt sh_YU.txt sr_BA.txt\\r
- sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Latn_BA.txt\\r
- sr_Latn_RS.txt sr_ME.txt sr_RS.txt zh_CN.txt zh_HK.txt\\r
- zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_HK.txt zh_Hant_MO.txt\\r
- zh_Hant_TW.txt zh_MO.txt zh_SG.txt zh_TW.txt\r
+COLLATION_SYNTHETIC_ALIAS = de_.txt de__PHONEBOOK.txt es_.txt es__TRADITIONAL.txt\\r
he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
+ iw_IL.txt mo.txt nb_NO.txt no.txt no_NO.txt\\r
pa_Guru.txt pa_Guru_IN.txt pa_IN.txt ro_MD.txt sh.txt\\r
+ sh_BA.txt sh_CS.txt sh_YU.txt sr_BA.txt sr_Cyrl.txt\\r
+ sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Latn_BA.txt sr_Latn_RS.txt\\r
+ sr_ME.txt sr_RS.txt zh_CN.txt zh_HK.txt zh_Hans.txt\\r
+ zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_HK.txt zh_Hant_MO.txt zh_Hant_TW.txt\\r
+ zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
index aae0f45..b2ac7cb 100644 (file)
@@ -11,7 +11,7 @@ cs{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 945f118..0005d0b 100644 (file)
@@ -14,7 +14,7 @@ cy{
                 "&R<rh<<<Rh<<<RH"\r
                 "&T<th<<<Th<<<TH"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 1ccf5f4..1db23b0 100644 (file)
@@ -9,7 +9,7 @@ da{
                 "[import da-u-co-standard]"\r
                 "[caseFirst off]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ da{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 33bdb68..3c3b613 100644 (file)
@@ -9,14 +9,14 @@ de{
                 "&OE<<ö<<<Ö"\r
                 "&UE<<ü<<<Ü"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         search{\r
             Sequence{\r
                 "[import und-u-co-search]"\r
                 "[import de-u-co-phonebk]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 3078eb8..12267e4 100644 (file)
@@ -10,7 +10,7 @@ de_AT{
                 "&u<ü<<<Ü"\r
                 "&ss<ß<<<ẞ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 5c83f37..2bf07a9 100644 (file)
@@ -14,7 +14,7 @@ dsb{
                 "&S<š<<<Š<ś<<<Ś"\r
                 "&Z<ž<<<Ž<ź<<<Ź"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 345682e..1caab58 100644 (file)
@@ -17,7 +17,7 @@ ee{
                 "&T<ts<<<Ts<<<TS"\r
                 "&V<ʋ<<<Ʋ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 81b1b2f..d98f0cb 100644 (file)
@@ -8,7 +8,7 @@ el{
                 "[normalization on]"\r
                 "[reorder Grek]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 86fb301..7bc4f4f 100644 (file)
@@ -8,7 +8,7 @@ en_US_POSIX{
                 "&A<*'\u0020'-'/'<*0-'@'<*ABCDEFGHIJKLMNOPQRSTUVWXYZ<*'['-'`'<*abcdefghijklmnopqrstuvwxyz"\r
                 "<*'{'-'\u007F'"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 5f08456..42167a4 100644 (file)
@@ -12,7 +12,7 @@ eo{
                 "&S<ŝ<<<Ŝ"\r
                 "&U<ŭ<<<Ŭ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index c38e73e..2f67225 100644 (file)
@@ -8,11 +8,11 @@ es{
                 "[import und-u-co-search]"\r
                 "&N<ñ<<<Ñ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -20,7 +20,7 @@ es{
                 "&C<ch<<<Ch<<<CH"\r
                 "&l<ll<<<Ll<<<LL"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index ac7c883..67da2c4 100644 (file)
@@ -8,7 +8,7 @@ et{
                 "&[before 1]T<š<<<Š<z<<<Z<ž<<<Ž"\r
                 "&[before 1]X<õ<<<Õ<ä<<<Ä<ö<<<Ö<ü<<<Ü"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 4ffb69e..963ed67 100644 (file)
@@ -16,7 +16,7 @@ fa{
                 "&ۏ<ه<<ە<<ہ<<ة<<ۃ<<ۀ<<ھ"\r
                 "&ی<<*ىےيېۑۍێ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 681e66c..079736b 100644 (file)
@@ -5,7 +5,7 @@ fa_AF{
     collations{\r
         standard{\r
             Sequence{"[import ps]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 0efee7d..0843d64 100644 (file)
@@ -8,7 +8,7 @@ fi{
                 "[import und-u-co-search]"\r
                 "[import fi-u-co-trad]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ fi{
                 "&Z\u0335<<ʒ<<<Ʒ"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -31,7 +31,7 @@ fi{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<õ<<<Õ<<œ<<<Œ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index cea8c60..495ba24 100644 (file)
@@ -5,7 +5,7 @@ fil{
     collations{\r
         standard{\r
             Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index cbf6fa4..941b3db 100644 (file)
@@ -8,7 +8,7 @@ fo{
                 "[import und-u-co-search]"\r
                 "[import fo-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -18,7 +18,7 @@ fo{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 308a2e6..8ed0154 100644 (file)
@@ -5,7 +5,7 @@ fr_CA{
     collations{\r
         standard{\r
             Sequence{"[backwards 2]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 0823a4f..92a7fbc 100644 (file)
@@ -5,11 +5,11 @@ gl{
     collations{\r
         search{\r
             Sequence{"[import es-u-co-search]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{"[import es]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 2943573..cb4cdb4 100644 (file)
@@ -9,7 +9,7 @@ gu{
                 "[reorder Gujr Deva Beng Guru Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ૐ<ં<<ઁ<ઃ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index e3778d4..7a558e9 100644 (file)
@@ -12,7 +12,7 @@ ha{
                 "&T<ts<<<Ts<<<TS"\r
                 "&Y<ƴ<<<ʼy<<<''y<<<Ƴ<<<ʼY<<<''Y"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index c23d145..7753a9f 100644 (file)
@@ -8,7 +8,7 @@ haw{
                 "&a<e<<<E<i<<<I<o<<<O<u<<<U"\r
                 "&w<ʻ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 02999b2..f6adcb0 100644 (file)
@@ -11,7 +11,7 @@ he{
                 "‎&״"\r
                 "<<'\u0022'"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ he{
                 "&[before 2]''<<׳"\r
                 "&[before 2]'\u0022'<<״"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index eb90754..f006704 100644 (file)
@@ -9,7 +9,7 @@ hi{
                 "[reorder Deva Beng Guru Gujr Orya Taml Telu Knda Mlym Sinh]"\r
                 "&ॐ<ं<<ँ<ः"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 955198f..4dfbc5c 100644 (file)
@@ -9,7 +9,7 @@ hr{
                 "[import hr-u-co-standard]"\r
                 "[reorder others]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ hr{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 1693dca..243fc7b 100644 (file)
@@ -13,7 +13,7 @@ hsb{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž<ź<<<Ź"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 33678b1..6bebaef 100644 (file)
@@ -44,7 +44,7 @@ hu{
                 "&Zs<<<Zzs/zs"\r
                 "&ZS<<<ZZS/ZS"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index f41d6cb..2b969cb 100644 (file)
@@ -8,7 +8,7 @@ hy{
                 "[reorder Armn]"\r
                 "&ք<և<<<Եւ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 00213ed..bb46a03 100644 (file)
@@ -15,7 +15,7 @@ ig{
                 "&S<sh<<<Sh<<<SH"\r
                 "&U<ụ<<<Ụ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index db1fe81..8505a68 100644 (file)
@@ -8,7 +8,7 @@ is{
                 "[import und-u-co-search]"\r
                 "[import is-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -21,7 +21,7 @@ is{
                 "&[before 1]z<ý<<<Ý"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ö<<<Ö<<ø<<<Ø<å<<<Å"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index afa8c1b..fa2740e 100644 (file)
@@ -412,21 +412,21 @@ ja{
                 "&「=「"\r
                 "&」=」"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
                 "[import ja-u-co-private-kana]"\r
                 "&[last regular]<*亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         unihan{\r
             Sequence{\r
                 "[import und-u-co-private-unihan]"\r
                 "[import ja-u-co-private-kana]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 3fd1e38..33ed5cf 100644 (file)
@@ -5,7 +5,7 @@ ka{
     collations{\r
         standard{\r
             Sequence{"[reorder Geor]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index a9c5112..96ab7c1 100644 (file)
@@ -10,7 +10,7 @@ kk{
                 "&Ұ<ү<<<Ү"\r
                 "&[before 1]ь<і<<<І"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 8719f6a..d17df2a 100644 (file)
@@ -8,7 +8,7 @@ kl{
                 "[import und-u-co-search]"\r
                 "[import kl-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ kl{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 91d8f16..1460a4e 100644 (file)
@@ -66,7 +66,7 @@ km{
                 "&ឱ<<<ឲ"\r
                 "&ៅ<ុំ<ំ<ាំ<ះ<ិះ<ុះ<េះ<ោះ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 03511e5..cb48dea 100644 (file)
@@ -9,7 +9,7 @@ kn{
                 "[reorder Knda Deva Beng Guru Gujr Orya Taml Telu Mlym Sinh]"\r
                 "&ಔ<ಂ<ಃ<ೱ<ೲ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -651,7 +651,7 @@ kn{
                 "&ಫೋ<<<ಫ಼ೋ"\r
                 "&ಫೌ<<<ಫ಼ೌ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 7fed405..1af45d9 100644 (file)
@@ -283,7 +283,7 @@ ko{
                 "&ᅩᅣᅵ"\r
                 "=ᆧ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         searchjl{\r
             Sequence{\r
@@ -378,7 +378,7 @@ ko{
                 "&\u1109\u1109=\u110A<<<\u3146"\r
                 "&\u110C\u110C=\u110D<<<\u3149"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -862,14 +862,14 @@ ko{
                 "&희<<*僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲咥唏嘻悕戲暿欷燹爔豨餼"\r
                 "&힐<<*詰犵纈襭頡黠"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         unihan{\r
             Sequence{\r
                 "[import und-u-co-private-unihan]"\r
                 "[reorder Hang Hani]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 47a099b..7165ad9 100644 (file)
@@ -11,7 +11,7 @@ kok{
                 "&ह<ळ"\r
                 "<क्ष"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index a7bdfa6..3628c40 100644 (file)
@@ -8,7 +8,7 @@ ky{
                 "[reorder Cyrl]"\r
                 "&е<ё<<<Ё"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 004ad9e..e47ffa0 100644 (file)
@@ -11,7 +11,7 @@ lkt{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 329569f..fb4f7bc 100644 (file)
@@ -16,14 +16,14 @@ ln{
                 "&S<sh<<<sH<<<Sh<<<SH"\r
                 "&T<ts<<<tS<<<Ts<<<TS"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
                 "&E<ɛ<<<Ɛ"\r
                 "&O<<ɔ<<<Ɔ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 2793e84..bf8560b 100644 (file)
@@ -5,7 +5,7 @@ lo{
     collations{\r
         standard{\r
             Sequence{"[reorder Laoo]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 9e4e027..71d815f 100644 (file)
@@ -16,7 +16,7 @@ lt{
                 "&U<<ų<<<Ų<<ū<<<Ū"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index f446e0f..35c512e 100644 (file)
@@ -15,7 +15,7 @@ lv{
                 "&[before 1]T<š<<<Š"\r
                 "&[before 1]Ʒ<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 37fc374..4c0b4d5 100644 (file)
@@ -10,7 +10,7 @@ mk{
                 "&ԃ<ѓ<<<Ѓ"\r
                 "&ћ<ќ<<<Ќ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 3dd9d7a..a31fd8a 100644 (file)
@@ -17,7 +17,7 @@ ml{
                 "&മ്<<ം"\r
                 "&ന്<<<ൻ്"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index d0cac04..a1467f1 100644 (file)
@@ -5,7 +5,7 @@ mn{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl Mong]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 0a2ee84..f40720b 100644 (file)
@@ -12,7 +12,7 @@ mr{
                 "<क्ष"\r
                 "<ज्ञ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 25a490c..6765408 100644 (file)
@@ -12,7 +12,7 @@ mt{
                 "&[before 1]i<ħ<<<Ħ"\r
                 "&[before 1]z<ż<<<Ż"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 728c47f..0e33ccf 100644 (file)
@@ -373,7 +373,7 @@ my{
                 "&ထမင်း=ထ္မင်း"\r
                 "&လက်ဘက်=လ္ဘက်"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index ba78afe..a5805ae 100644 (file)
@@ -8,7 +8,7 @@ nb{
                 "[import und-u-co-search]"\r
                 "[import nb-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -18,7 +18,7 @@ nb{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<aa<<<Aa<<<AA"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 587e0b4..43a11b1 100644 (file)
@@ -5,7 +5,7 @@ ne{
     collations{\r
         standard{\r
             Sequence{"[reorder Deva]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 01d4686..72db04e 100644 (file)
@@ -5,11 +5,11 @@ nn{
     collations{\r
         search{\r
             Sequence{"[import nb-u-co-search]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{"[import nb-u-co-standard]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 780e5c1..560b8ea 100644 (file)
@@ -8,7 +8,7 @@ om{
                 "&Z<ch<<<Ch<<<CH<dh<<<Dh<<<DH<kh<<<Kh<<<KH<ny<<<Ny<<<NY<ph<<<Ph<<<PH<"\r
                 "sh<<<Sh"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 8e3edac..e4b94ec 100644 (file)
@@ -11,7 +11,7 @@ or{
                 "&ହ<କ୍ଷ"\r
                 "&ଯ<<ୟ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index d73b2d2..be2818c 100644 (file)
@@ -10,7 +10,7 @@ pa{
                 "&ੱ<<ੰ<<ਂ<<ਁ<<਼"\r
                 "&ੜ<੍"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 48d42aa..85297ff 100644 (file)
@@ -14,7 +14,7 @@ pl{
                 "&S<ś<<<Ś"\r
                 "&Z<ź<<<Ź<ż<<<Ż"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 2848bfc..d197824 100644 (file)
@@ -24,7 +24,7 @@ ps{
                 "&ی<<*ىےيېۍ<<یٔ<<<ىٔ<<<ئ"\r
                 "&\u00A0<<\u200C<<\u200D"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 94d29bb..1584857 100644 (file)
@@ -10,7 +10,7 @@ ro{
                 "&S<ş=ș<<<Ş=Ș"\r
                 "&T<ţ=ț<<<Ţ=Ț"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 4565efe..1dc578e 100644 (file)
  */\r
 root{\r
     UCARules:process(uca_rules){"../unidata/UCARules.txt"}\r
-    Version{"2.1.32.70"}\r
+    Version{"2.1.29.77"}\r
     collations{\r
         default{"standard"}\r
         emoji{\r
             Sequence{\r
                 "& [last primary ignorable]<<*🏻🏼🏽🏾🏿"\r
                 "& [last regular]"\r
-                "<*😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗🤩"\r
-                "<*ð\9f¤\94ð\9f¤¨ð\9f\98\90ð\9f\98\91ð\9f\98¶ð\9f\99\84ð\9f\98\8fð\9f\98£ð\9f\98¥ð\9f\98®ð\9f¤\90ð\9f\98¯ð\9f\98ªð\9f\98«ð\9f\98´ð\9f\98\8c😛😜😝🤤😒😓😔😕🙃🤑😲"\r
-                "<*â\98¹ð\9f\99\81ð\9f\98\96ð\9f\98\9eð\9f\98\9fð\9f\98¤ð\9f\98¢ð\9f\98­ð\9f\98¦ð\9f\98§ð\9f\98¨ð\9f\98©ð\9f¤¯ð\9f\98¬ð\9f\98°ð\9f\98±ð\9f\98³ð\9f¤ªð\9f\98µð\9f\98¡ð\9f\98 ð\9f¤¬"\r
-                "<*ð\9f\98·ð\9f¤\92ð\9f¤\95ð\9f¤¢ð\9f¤®ð\9f¤§"\r
-                "<*ð\9f\98\87ð\9f¤ ð\9f¤¡ð\9f¤¥ð\9f¤«ð\9f¤­ð\9f§\90ð\9f¤\93"\r
+                "<*😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗"\r
+                "<*ð\9f¤\94ð\9f\98\90ð\9f\98\91ð\9f\98¶ð\9f\99\84ð\9f\98\8fð\9f\98£ð\9f\98¥ð\9f\98®ð\9f¤\90ð\9f\98¯ð\9f\98ªð\9f\98«ð\9f\98´ð\9f\98\8cð\9f¤\93😛😜😝🤤😒😓😔😕🙃🤑😲"\r
+                "<*â\98¹ð\9f\99\81ð\9f\98\96ð\9f\98\9eð\9f\98\9fð\9f\98¤ð\9f\98¢ð\9f\98­ð\9f\98¦ð\9f\98§ð\9f\98¨ð\9f\98©ð\9f\98¬ð\9f\98°ð\9f\98±ð\9f\98³ð\9f\98µð\9f\98¡ð\9f\98 "\r
+                "<*ð\9f\98\87ð\9f¤ ð\9f¤¡ð\9f¤¥"\r
+                "<*ð\9f\98·ð\9f¤\92ð\9f¤\95ð\9f¤¢ð\9f¤§"\r
                 "<*😈👿👹👺💀☠👻👽👾🤖💩"\r
                 "<*😺😸😹😻😼😽🙀😿😾"\r
                 "<*🙈🙉🙊"\r
-                "<*👶🧒👦👧🧑👨👩🧓👴👵"\r
-                "< 🧑‍⚕ << 🧑🏻‍⚕ << 🧑🏼‍⚕ << 🧑🏽‍⚕ << 🧑🏾‍⚕ << 🧑🏿‍⚕"\r
-                "< 👨‍⚕ << 👨🏻‍⚕ << 👨🏼‍⚕ << 👨🏽‍⚕ << 👨🏾‍⚕ << 👨🏿‍⚕"\r
-                "< 👩‍⚕ << 👩🏻‍⚕ << 👩🏼‍⚕ << 👩🏽‍⚕ << 👩🏾‍⚕ << 👩🏿‍⚕"\r
-                "< 🧑‍🎓 << 🧑🏻‍🎓 << 🧑🏼‍🎓 << 🧑🏽‍🎓 << 🧑🏾‍🎓 << 🧑🏿‍🎓"\r
-                "< 👨‍🎓 << 👨🏻‍🎓 << 👨🏼‍🎓 << 👨🏽‍🎓 << 👨🏾‍🎓 << 👨🏿‍🎓"\r
-                "< 👩‍🎓 << 👩🏻‍🎓 << 👩🏼‍🎓 << 👩🏽‍🎓 << 👩🏾‍🎓 << 👩🏿‍🎓"\r
-                "< 🧑‍🏫 << 🧑🏻‍🏫 << 🧑🏼‍🏫 << 🧑🏽‍🏫 << 🧑🏾‍🏫 << 🧑🏿‍🏫"\r
-                "< 👨‍🏫 << 👨🏻‍🏫 << 👨🏼‍🏫 << 👨🏽‍🏫 << 👨🏾‍🏫 << 👨🏿‍🏫"\r
-                "< 👩‍🏫 << 👩🏻‍🏫 << 👩🏼‍🏫 << 👩🏽‍🏫 << 👩🏾‍🏫 << 👩🏿‍🏫"\r
-                "< 🧑‍⚖ << 🧑🏻‍⚖ << 🧑🏼‍⚖ << 🧑🏽‍⚖ << 🧑🏾‍⚖ << 🧑🏿‍⚖"\r
-                "< 👨‍⚖ << 👨🏻‍⚖ << 👨🏼‍⚖ << 👨🏽‍⚖ << 👨🏾‍⚖ << 👨🏿‍⚖"\r
-                "< 👩‍⚖ << 👩🏻‍⚖ << 👩🏼‍⚖ << 👩🏽‍⚖ << 👩🏾‍⚖ << 👩🏿‍⚖"\r
-                "< 🧑‍🌾 << 🧑🏻‍🌾 << 🧑🏼‍🌾 << 🧑🏽‍🌾 << 🧑🏾‍🌾 << 🧑🏿‍🌾"\r
-                "< 👨‍🌾 << 👨🏻‍🌾 << 👨🏼‍🌾 << 👨🏽‍🌾 << 👨🏾‍🌾 << 👨🏿‍🌾"\r
-                "< 👩‍🌾 << 👩🏻‍🌾 << 👩🏼‍🌾 << 👩🏽‍🌾 << 👩🏾‍🌾 << 👩🏿‍🌾"\r
-                "< 🧑‍🍳 << 🧑🏻‍🍳 << 🧑🏼‍🍳 << 🧑🏽‍🍳 << 🧑🏾‍🍳 << 🧑🏿‍🍳"\r
-                "< 👨‍🍳 << 👨🏻‍🍳 << 👨🏼‍🍳 << 👨🏽‍🍳 << 👨🏾‍🍳 << 👨🏿‍🍳"\r
-                "< 👩‍🍳 << 👩🏻‍🍳 << 👩🏼‍🍳 << 👩🏽‍🍳 << 👩🏾‍🍳 << 👩🏿‍🍳"\r
-                "< 🧑‍🔧 << 🧑🏻‍🔧 << 🧑🏼‍🔧 << 🧑🏽‍🔧 << 🧑🏾‍🔧 << 🧑🏿‍🔧"\r
-                "< 👨‍🔧 << 👨🏻‍🔧 << 👨🏼‍🔧 << 👨🏽‍🔧 << 👨🏾‍🔧 << 👨🏿‍🔧"\r
-                "< 👩‍🔧 << 👩🏻‍🔧 << 👩🏼‍🔧 << 👩🏽‍🔧 << 👩🏾‍🔧 << 👩🏿‍🔧"\r
-                "< 🧑‍🏭 << 🧑🏻‍🏭 << 🧑🏼‍🏭 << 🧑🏽‍🏭 << 🧑🏾‍🏭 << 🧑🏿‍🏭"\r
-                "< 👨‍🏭 << 👨🏻‍🏭 << 👨🏼‍🏭 << 👨🏽‍🏭 << 👨🏾‍🏭 << 👨🏿‍🏭"\r
-                "< 👩‍🏭 << 👩🏻‍🏭 << 👩🏼‍🏭 << 👩🏽‍🏭 << 👩🏾‍🏭 << 👩🏿‍🏭"\r
-                "< 🧑‍💼 << 🧑🏻‍💼 << 🧑🏼‍💼 << 🧑🏽‍💼 << 🧑🏾‍💼 << 🧑🏿‍💼"\r
-                "< 👨‍💼 << 👨🏻‍💼 << 👨🏼‍💼 << 👨🏽‍💼 << 👨🏾‍💼 << 👨🏿‍💼"\r
-                "< 👩‍💼 << 👩🏻‍💼 << 👩🏼‍💼 << 👩🏽‍💼 << 👩🏾‍💼 << 👩🏿‍💼"\r
-                "< 🧑‍🔬 << 🧑🏻‍🔬 << 🧑🏼‍🔬 << 🧑🏽‍🔬 << 🧑🏾‍🔬 << 🧑🏿‍🔬"\r
-                "< 👨‍🔬 << 👨🏻‍🔬 << 👨🏼‍🔬 << 👨🏽‍🔬 << 👨🏾‍🔬 << 👨🏿‍🔬"\r
-                "< 👩‍🔬 << 👩🏻‍🔬 << 👩🏼‍🔬 << 👩🏽‍🔬 << 👩🏾‍🔬 << 👩🏿‍🔬"\r
-                "< 🧑‍💻 << 🧑🏻‍💻 << 🧑🏼‍💻 << 🧑🏽‍💻 << 🧑🏾‍💻 << 🧑🏿‍💻"\r
-                "< 👨‍💻 << 👨🏻‍💻 << 👨🏼‍💻 << 👨🏽‍💻 << 👨🏾‍💻 << 👨🏿‍💻"\r
-                "< 👩‍💻 << 👩🏻‍💻 << 👩🏼‍💻 << 👩🏽‍💻 << 👩🏾‍💻 << 👩🏿‍💻"\r
-                "< 🧑‍🎤 << 🧑🏻‍🎤 << 🧑🏼‍🎤 << 🧑🏽‍🎤 << 🧑🏾‍🎤 << 🧑🏿‍🎤"\r
-                "< 👨‍🎤 << 👨🏻‍🎤 << 👨🏼‍🎤 << 👨🏽‍🎤 << 👨🏾‍🎤 << 👨🏿‍🎤"\r
-                "< 👩‍🎤 << 👩🏻‍🎤 << 👩🏼‍🎤 << 👩🏽‍🎤 << 👩🏾‍🎤 << 👩🏿‍🎤"\r
-                "< 🧑‍🎨 << 🧑🏻‍🎨 << 🧑🏼‍🎨 << 🧑🏽‍🎨 << 🧑🏾‍🎨 << 🧑🏿‍🎨"\r
-                "< 👨‍🎨 << 👨🏻‍🎨 << 👨🏼‍🎨 << 👨🏽‍🎨 << 👨🏾‍🎨 << 👨🏿‍🎨"\r
-                "< 👩‍🎨 << 👩🏻‍🎨 << 👩🏼‍🎨 << 👩🏽‍🎨 << 👩🏾‍🎨 << 👩🏿‍🎨"\r
-                "< 🧑‍✈ << 🧑🏻‍✈ << 🧑🏼‍✈ << 🧑🏽‍✈ << 🧑🏾‍✈ << 🧑🏿‍✈"\r
-                "< 👨‍✈ << 👨🏻‍✈ << 👨🏼‍✈ << 👨🏽‍✈ << 👨🏾‍✈ << 👨🏿‍✈"\r
-                "< 👩‍✈ << 👩🏻‍✈ << 👩🏼‍✈ << 👩🏽‍✈ << 👩🏾‍✈ << 👩🏿‍✈"\r
-                "< 🧑‍🚀 << 🧑🏻‍🚀 << 🧑🏼‍🚀 << 🧑🏽‍🚀 << 🧑🏾‍🚀 << 🧑🏿‍🚀"\r
-                "< 👨‍🚀 << 👨🏻‍🚀 << 👨🏼‍🚀 << 👨🏽‍🚀 << 👨🏾‍🚀 << 👨🏿‍🚀"\r
-                "< 👩‍🚀 << 👩🏻‍🚀 << 👩🏼‍🚀 << 👩🏽‍🚀 << 👩🏾‍🚀 << 👩🏿‍🚀"\r
-                "< 🧑‍🚒 << 🧑🏻‍🚒 << 🧑🏼‍🚒 << 🧑🏽‍🚒 << 🧑🏾‍🚒 << 🧑🏿‍🚒"\r
-                "< 👨‍🚒 << 👨🏻‍🚒 << 👨🏼‍🚒 << 👨🏽‍🚒 << 👨🏾‍🚒 << 👨🏿‍🚒"\r
-                "< 👩‍🚒 << 👩🏻‍🚒 << 👩🏼‍🚒 << 👩🏽‍🚒 << 👩🏾‍🚒 << 👩🏿‍🚒"\r
+                "<*👦👧👨👩👴👵👶👼"\r
+                "<👨‍⚕"\r
+                "<<👨🏻‍⚕"\r
+                "<<👨🏼‍⚕"\r
+                "<<👨🏽‍⚕"\r
+                "<<👨🏾‍⚕"\r
+                "<<👨🏿‍⚕"\r
+                "<👩‍⚕"\r
+                "<<👩🏻‍⚕"\r
+                "<<👩🏼‍⚕"\r
+                "<<👩🏽‍⚕"\r
+                "<<👩🏾‍⚕"\r
+                "<<👩🏿‍⚕"\r
+                "<👨‍🎓"\r
+                "<<👨🏻‍🎓"\r
+                "<<👨🏼‍🎓"\r
+                "<<👨🏽‍🎓"\r
+                "<<👨🏾‍🎓"\r
+                "<<👨🏿‍🎓"\r
+                "<👩‍🎓"\r
+                "<<👩🏻‍🎓"\r
+                "<<👩🏼‍🎓"\r
+                "<<👩🏽‍🎓"\r
+                "<<👩🏾‍🎓"\r
+                "<<👩🏿‍🎓"\r
+                "<👨‍🏫"\r
+                "<<👨🏻‍🏫"\r
+                "<<👨🏼‍🏫"\r
+                "<<👨🏽‍🏫"\r
+                "<<👨🏾‍🏫"\r
+                "<<👨🏿‍🏫"\r
+                "<👩‍🏫"\r
+                "<<👩🏻‍🏫"\r
+                "<<👩🏼‍🏫"\r
+                "<<👩🏽‍🏫"\r
+                "<<👩🏾‍🏫"\r
+                "<<👩🏿‍🏫"\r
+                "<👨‍⚖"\r
+                "<<👨🏻‍⚖"\r
+                "<<👨🏼‍⚖"\r
+                "<<👨🏽‍⚖"\r
+                "<<👨🏾‍⚖"\r
+                "<<👨🏿‍⚖"\r
+                "<👩‍⚖"\r
+                "<<👩🏻‍⚖"\r
+                "<<👩🏼‍⚖"\r
+                "<<👩🏽‍⚖"\r
+                "<<👩🏾‍⚖"\r
+                "<<👩🏿‍⚖"\r
+                "<👨‍🌾"\r
+                "<<👨🏻‍🌾"\r
+                "<<👨🏼‍🌾"\r
+                "<<👨🏽‍🌾"\r
+                "<<👨🏾‍🌾"\r
+                "<<👨🏿‍🌾"\r
+                "<👩‍🌾"\r
+                "<<👩🏻‍🌾"\r
+                "<<👩🏼‍🌾"\r
+                "<<👩🏽‍🌾"\r
+                "<<👩🏾‍🌾"\r
+                "<<👩🏿‍🌾"\r
+                "<👨‍🍳"\r
+                "<<👨🏻‍🍳"\r
+                "<<👨🏼‍🍳"\r
+                "<<👨🏽‍🍳"\r
+                "<<👨🏾‍🍳"\r
+                "<<👨🏿‍🍳"\r
+                "<👩‍🍳"\r
+                "<<👩🏻‍🍳"\r
+                "<<👩🏼‍🍳"\r
+                "<<👩🏽‍🍳"\r
+                "<<👩🏾‍🍳"\r
+                "<<👩🏿‍🍳"\r
+                "<👨‍🔧"\r
+                "<<👨🏻‍🔧"\r
+                "<<👨🏼‍🔧"\r
+                "<<👨🏽‍🔧"\r
+                "<<👨🏾‍🔧"\r
+                "<<👨🏿‍🔧"\r
+                "<👩‍🔧"\r
+                "<<👩🏻‍🔧"\r
+                "<<👩🏼‍🔧"\r
+                "<<👩🏽‍🔧"\r
+                "<<👩🏾‍🔧"\r
+                "<<👩🏿‍🔧"\r
+                "<👨‍🏭"\r
+                "<<👨🏻‍🏭"\r
+                "<<👨🏼‍🏭"\r
+                "<<👨🏽‍🏭"\r
+                "<<👨🏾‍🏭"\r
+                "<<👨🏿‍🏭"\r
+                "<👩‍🏭"\r
+                "<<👩🏻‍🏭"\r
+                "<<👩🏼‍🏭"\r
+                "<<👩🏽‍🏭"\r
+                "<<👩🏾‍🏭"\r
+                "<<👩🏿‍🏭"\r
+                "<👨‍💼"\r
+                "<<👨🏻‍💼"\r
+                "<<👨🏼‍💼"\r
+                "<<👨🏽‍💼"\r
+                "<<👨🏾‍💼"\r
+                "<<👨🏿‍💼"\r
+                "<👩‍💼"\r
+                "<<👩🏻‍💼"\r
+                "<<👩🏼‍💼"\r
+                "<<👩🏽‍💼"\r
+                "<<👩🏾‍💼"\r
+                "<<👩🏿‍💼"\r
+                "<👨‍🔬"\r
+                "<<👨🏻‍🔬"\r
+                "<<👨🏼‍🔬"\r
+                "<<👨🏽‍🔬"\r
+                "<<👨🏾‍🔬"\r
+                "<<👨🏿‍🔬"\r
+                "<👩‍🔬"\r
+                "<<👩🏻‍🔬"\r
+                "<<👩🏼‍🔬"\r
+                "<<👩🏽‍🔬"\r
+                "<<👩🏾‍🔬"\r
+                "<<👩🏿‍🔬"\r
+                "<👨‍💻"\r
+                "<<👨🏻‍💻"\r
+                "<<👨🏼‍💻"\r
+                "<<👨🏽‍💻"\r
+                "<<👨🏾‍💻"\r
+                "<<👨🏿‍💻"\r
+                "<👩‍💻"\r
+                "<<👩🏻‍💻"\r
+                "<<👩🏼‍💻"\r
+                "<<👩🏽‍💻"\r
+                "<<👩🏾‍💻"\r
+                "<<👩🏿‍💻"\r
+                "<👨‍🎤"\r
+                "<<👨🏻‍🎤"\r
+                "<<👨🏼‍🎤"\r
+                "<<👨🏽‍🎤"\r
+                "<<👨🏾‍🎤"\r
+                "<<👨🏿‍🎤"\r
+                "<👩‍🎤"\r
+                "<<👩🏻‍🎤"\r
+                "<<👩🏼‍🎤"\r
+                "<<👩🏽‍🎤"\r
+                "<<👩🏾‍🎤"\r
+                "<<👩🏿‍🎤"\r
+                "<👨‍🎨"\r
+                "<<👨🏻‍🎨"\r
+                "<<👨🏼‍🎨"\r
+                "<<👨🏽‍🎨"\r
+                "<<👨🏾‍🎨"\r
+                "<<👨🏿‍🎨"\r
+                "<👩‍🎨"\r
+                "<<👩🏻‍🎨"\r
+                "<<👩🏼‍🎨"\r
+                "<<👩🏽‍🎨"\r
+                "<<👩🏾‍🎨"\r
+                "<<👩🏿‍🎨"\r
+                "<👨‍✈"\r
+                "<<👨🏻‍✈"\r
+                "<<👨🏼‍✈"\r
+                "<<👨🏽‍✈"\r
+                "<<👨🏾‍✈"\r
+                "<<👨🏿‍✈"\r
+                "<👩‍✈"\r
+                "<<👩🏻‍✈"\r
+                "<<👩🏼‍✈"\r
+                "<<👩🏽‍✈"\r
+                "<<👩🏾‍✈"\r
+                "<<👩🏿‍✈"\r
+                "<👨‍🚀"\r
+                "<<👨🏻‍🚀"\r
+                "<<👨🏼‍🚀"\r
+                "<<👨🏽‍🚀"\r
+                "<<👨🏾‍🚀"\r
+                "<<👨🏿‍🚀"\r
+                "<👩‍🚀"\r
+                "<<👩🏻‍🚀"\r
+                "<<👩🏼‍🚀"\r
+                "<<👩🏽‍🚀"\r
+                "<<👩🏾‍🚀"\r
+                "<<👩🏿‍🚀"\r
+                "<👨‍🚒"\r
+                "<<👨🏻‍🚒"\r
+                "<<👨🏼‍🚒"\r
+                "<<👨🏽‍🚒"\r
+                "<<👨🏾‍🚒"\r
+                "<<👨🏿‍🚒"\r
+                "<👩‍🚒"\r
+                "<<👩🏻‍🚒"\r
+                "<<👩🏼‍🚒"\r
+                "<<👩🏽‍🚒"\r
+                "<<👩🏾‍🚒"\r
+                "<<👩🏿‍🚒"\r
                 "<*👮"\r
-                "< 👮‍♂ << 👮🏻‍♂ << 👮🏼‍♂ << 👮🏽‍♂ << 👮🏾‍♂ << 👮🏿‍♂"\r
-                "< 👮‍♀ << 👮🏻‍♀ << 👮🏼‍♀ << 👮🏽‍♀ << 👮🏾‍♀ << 👮🏿‍♀"\r
+                "<👮‍♂"\r
+                "<<👮🏻‍♂"\r
+                "<<👮🏼‍♂"\r
+                "<<👮🏽‍♂"\r
+                "<<👮🏾‍♂"\r
+                "<<👮🏿‍♂"\r
+                "<👮‍♀"\r
+                "<<👮🏻‍♀"\r
+                "<<👮🏼‍♀"\r
+                "<<👮🏽‍♀"\r
+                "<<👮🏾‍♀"\r
+                "<<👮🏿‍♀"\r
                 "<*🕵"\r
-                "< 🕵‍♂ = 🕵️‍♂ << 🕵🏻‍♂ << 🕵🏼‍♂ << 🕵🏽‍♂ << 🕵🏾‍♂ << 🕵🏿‍♂"\r
-                "< 🕵‍♀ = 🕵️‍♀ << 🕵🏻‍♀ << 🕵🏼‍♀ << 🕵🏽‍♀ << 🕵🏾‍♀ << 🕵🏿‍♀"\r
+                "<🕵‍♂ = 🕵️‍♂"\r
+                "<<🕵🏻‍♂"\r
+                "<<🕵🏼‍♂"\r
+                "<<🕵🏽‍♂"\r
+                "<<🕵🏾‍♂"\r
+                "<<🕵🏿‍♂"\r
+                "<🕵‍♀ = 🕵️‍♀"\r
+                "<<🕵🏻‍♀"\r
+                "<<🕵🏼‍♀"\r
+                "<<🕵🏽‍♀"\r
+                "<<🕵🏾‍♀"\r
+                "<<🕵🏿‍♀"\r
                 "<*💂"\r
-                "< 💂‍♂ << 💂🏻‍♂ << 💂🏼‍♂ << 💂🏽‍♂ << 💂🏾‍♂ << 💂🏿‍♂"\r
-                "< 💂‍♀ << 💂🏻‍♀ << 💂🏼‍♀ << 💂🏽‍♀ << 💂🏾‍♀ << 💂🏿‍♀"\r
+                "<💂‍♂"\r
+                "<<💂🏻‍♂"\r
+                "<<💂🏼‍♂"\r
+                "<<💂🏽‍♂"\r
+                "<<💂🏾‍♂"\r
+                "<<💂🏿‍♂"\r
+                "<💂‍♀"\r
+                "<<💂🏻‍♀"\r
+                "<<💂🏼‍♀"\r
+                "<<💂🏽‍♀"\r
+                "<<💂🏾‍♀"\r
+                "<<💂🏿‍♀"\r
                 "<*👷"\r
-                "< 👷‍♂ << 👷🏻‍♂ << 👷🏼‍♂ << 👷🏽‍♂ << 👷🏾‍♂ << 👷🏿‍♂"\r
-                "< 👷‍♀ << 👷🏻‍♀ << 👷🏼‍♀ << 👷🏽‍♀ << 👷🏾‍♀ << 👷🏿‍♀"\r
-                "<*🤴👸👳"\r
-                "< 👳‍♂ << 👳🏻‍♂ << 👳🏼‍♂ << 👳🏽‍♂ << 👳🏾‍♂ << 👳🏿‍♂"\r
-                "< 👳‍♀ << 👳🏻‍♀ << 👳🏼‍♀ << 👳🏽‍♀ << 👳🏾‍♀ << 👳🏿‍♀"\r
-                "<*👲🧕🧔👱"\r
-                "< 👱‍♂ << 👱🏻‍♂ << 👱🏼‍♂ << 👱🏽‍♂ << 👱🏾‍♂ << 👱🏿‍♂"\r
-                "< 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"\r
-                "<*🤵👰🤰🤱👼🎅🤶🧙"\r
-                "< 🧙‍♀ << 🧙🏻‍♀ << 🧙🏼‍♀ << 🧙🏽‍♀ << 🧙🏾‍♀ << 🧙🏿‍♀"\r
-                "< 🧙‍♂ << 🧙🏻‍♂ << 🧙🏼‍♂ << 🧙🏽‍♂ << 🧙🏾‍♂ << 🧙🏿‍♂"\r
-                "<*🧚"\r
-                "< 🧚‍♀ << 🧚🏻‍♀ << 🧚🏼‍♀ << 🧚🏽‍♀ << 🧚🏾‍♀ << 🧚🏿‍♀"\r
-                "< 🧚‍♂ << 🧚🏻‍♂ << 🧚🏼‍♂ << 🧚🏽‍♂ << 🧚🏾‍♂ << 🧚🏿‍♂"\r
-                "<*🧛"\r
-                "< 🧛‍♀ << 🧛🏻‍♀ << 🧛🏼‍♀ << 🧛🏽‍♀ << 🧛🏾‍♀ << 🧛🏿‍♀"\r
-                "< 🧛‍♂ << 🧛🏻‍♂ << 🧛🏼‍♂ << 🧛🏽‍♂ << 🧛🏾‍♂ << 🧛🏿‍♂"\r
-                "<*🧜"\r
-                "< 🧜‍♀ << 🧜🏻‍♀ << 🧜🏼‍♀ << 🧜🏽‍♀ << 🧜🏾‍♀ << 🧜🏿‍♀"\r
-                "< 🧜‍♂ << 🧜🏻‍♂ << 🧜🏼‍♂ << 🧜🏽‍♂ << 🧜🏾‍♂ << 🧜🏿‍♂"\r
-                "<*🧝"\r
-                "< 🧝‍♀ << 🧝🏻‍♀ << 🧝🏼‍♀ << 🧝🏽‍♀ << 🧝🏾‍♀ << 🧝🏿‍♀"\r
-                "< 🧝‍♂ << 🧝🏻‍♂ << 🧝🏼‍♂ << 🧝🏽‍♂ << 🧝🏾‍♂ << 🧝🏿‍♂"\r
-                "<*🧞"\r
-                "< 🧞‍♀"\r
-                "< 🧞‍♂"\r
-                "<*🧟"\r
-                "< 🧟‍♀"\r
-                "< 🧟‍♂"\r
+                "<👷‍♂"\r
+                "<<👷🏻‍♂"\r
+                "<<👷🏼‍♂"\r
+                "<<👷🏽‍♂"\r
+                "<<👷🏾‍♂"\r
+                "<<👷🏿‍♂"\r
+                "<👷‍♀"\r
+                "<<👷🏻‍♀"\r
+                "<<👷🏼‍♀"\r
+                "<<👷🏽‍♀"\r
+                "<<👷🏾‍♀"\r
+                "<<👷🏿‍♀"\r
+                "<*👳"\r
+                "<👳‍♂"\r
+                "<<👳🏻‍♂"\r
+                "<<👳🏼‍♂"\r
+                "<<👳🏽‍♂"\r
+                "<<👳🏾‍♂"\r
+                "<<👳🏿‍♂"\r
+                "<👳‍♀"\r
+                "<<👳🏻‍♀"\r
+                "<<👳🏼‍♀"\r
+                "<<👳🏽‍♀"\r
+                "<<👳🏾‍♀"\r
+                "<<👳🏿‍♀"\r
+                "<*👱"\r
+                "<👱‍♂"\r
+                "<<👱🏻‍♂"\r
+                "<<👱🏼‍♂"\r
+                "<<👱🏽‍♂"\r
+                "<<👱🏾‍♂"\r
+                "<<👱🏿‍♂"\r
+                "<👱‍♀"\r
+                "<<👱🏻‍♀"\r
+                "<<👱🏼‍♀"\r
+                "<<👱🏽‍♀"\r
+                "<<👱🏾‍♀"\r
+                "<<👱🏿‍♀"\r
+                "<*🎅🤶👸🤴👰🤵🤰👲"\r
                 "<*🙍"\r
-                "< 🙍‍♂ << 🙍🏻‍♂ << 🙍🏼‍♂ << 🙍🏽‍♂ << 🙍🏾‍♂ << 🙍🏿‍♂"\r
-                "< 🙍‍♀ << 🙍🏻‍♀ << 🙍🏼‍♀ << 🙍🏽‍♀ << 🙍🏾‍♀ << 🙍🏿‍♀"\r
+                "<🙍‍♂"\r
+                "<<🙍🏻‍♂"\r
+                "<<🙍🏼‍♂"\r
+                "<<🙍🏽‍♂"\r
+                "<<🙍🏾‍♂"\r
+                "<<🙍🏿‍♂"\r
+                "<🙍‍♀"\r
+                "<<🙍🏻‍♀"\r
+                "<<🙍🏼‍♀"\r
+                "<<🙍🏽‍♀"\r
+                "<<🙍🏾‍♀"\r
+                "<<🙍🏿‍♀"\r
                 "<*🙎"\r
-                "< 🙎‍♂ << 🙎🏻‍♂ << 🙎🏼‍♂ << 🙎🏽‍♂ << 🙎🏾‍♂ << 🙎🏿‍♂"\r
-                "< 🙎‍♀ << 🙎🏻‍♀ << 🙎🏼‍♀ << 🙎🏽‍♀ << 🙎🏾‍♀ << 🙎🏿‍♀"\r
+                "<🙎‍♂"\r
+                "<<🙎🏻‍♂"\r
+                "<<🙎🏼‍♂"\r
+                "<<🙎🏽‍♂"\r
+                "<<🙎🏾‍♂"\r
+                "<<🙎🏿‍♂"\r
+                "<🙎‍♀"\r
+                "<<🙎🏻‍♀"\r
+                "<<🙎🏼‍♀"\r
+                "<<🙎🏽‍♀"\r
+                "<<🙎🏾‍♀"\r
+                "<<🙎🏿‍♀"\r
                 "<*🙅"\r
-                "< 🙅‍♂ << 🙅🏻‍♂ << 🙅🏼‍♂ << 🙅🏽‍♂ << 🙅🏾‍♂ << 🙅🏿‍♂"\r
-                "< 🙅‍♀ << 🙅🏻‍♀ << 🙅🏼‍♀ << 🙅🏽‍♀ << 🙅🏾‍♀ << 🙅🏿‍♀"\r
+                "<🙅‍♂"\r
+                "<<🙅🏻‍♂"\r
+                "<<🙅🏼‍♂"\r
+                "<<🙅🏽‍♂"\r
+                "<<🙅🏾‍♂"\r
+                "<<🙅🏿‍♂"\r
+                "<🙅‍♀"\r
+                "<<🙅🏻‍♀"\r
+                "<<🙅🏼‍♀"\r
+                "<<🙅🏽‍♀"\r
+                "<<🙅🏾‍♀"\r
+                "<<🙅🏿‍♀"\r
                 "<*🙆"\r
-                "< 🙆‍♂ << 🙆🏻‍♂ << 🙆🏼‍♂ << 🙆🏽‍♂ << 🙆🏾‍♂ << 🙆🏿‍♂"\r
-                "< 🙆‍♀ << 🙆🏻‍♀ << 🙆🏼‍♀ << 🙆🏽‍♀ << 🙆🏾‍♀ << 🙆🏿‍♀"\r
+                "<🙆‍♂"\r
+                "<<🙆🏻‍♂"\r
+                "<<🙆🏼‍♂"\r
+                "<<🙆🏽‍♂"\r
+                "<<🙆🏾‍♂"\r
+                "<<🙆🏿‍♂"\r
+                "<🙆‍♀"\r
+                "<<🙆🏻‍♀"\r
+                "<<🙆🏼‍♀"\r
+                "<<🙆🏽‍♀"\r
+                "<<🙆🏾‍♀"\r
+                "<<🙆🏿‍♀"\r
                 "<*💁"\r
-                "< 💁‍♂ << 💁🏻‍♂ << 💁🏼‍♂ << 💁🏽‍♂ << 💁🏾‍♂ << 💁🏿‍♂"\r
-                "< 💁‍♀ << 💁🏻‍♀ << 💁🏼‍♀ << 💁🏽‍♀ << 💁🏾‍♀ << 💁🏿‍♀"\r
+                "<💁‍♂"\r
+                "<<💁🏻‍♂"\r
+                "<<💁🏼‍♂"\r
+                "<<💁🏽‍♂"\r
+                "<<💁🏾‍♂"\r
+                "<<💁🏿‍♂"\r
+                "<💁‍♀"\r
+                "<<💁🏻‍♀"\r
+                "<<💁🏼‍♀"\r
+                "<<💁🏽‍♀"\r
+                "<<💁🏾‍♀"\r
+                "<<💁🏿‍♀"\r
                 "<*🙋"\r
-                "< 🙋‍♂ << 🙋🏻‍♂ << 🙋🏼‍♂ << 🙋🏽‍♂ << 🙋🏾‍♂ << 🙋🏿‍♂"\r
-                "< 🙋‍♀ << 🙋🏻‍♀ << 🙋🏼‍♀ << 🙋🏽‍♀ << 🙋🏾‍♀ << 🙋🏿‍♀"\r
+                "<🙋‍♂"\r
+                "<<🙋🏻‍♂"\r
+                "<<🙋🏼‍♂"\r
+                "<<🙋🏽‍♂"\r
+                "<<🙋🏾‍♂"\r
+                "<<🙋🏿‍♂"\r
+                "<🙋‍♀"\r
+                "<<🙋🏻‍♀"\r
+                "<<🙋🏼‍♀"\r
+                "<<🙋🏽‍♀"\r
+                "<<🙋🏾‍♀"\r
+                "<<🙋🏿‍♀"\r
                 "<*🙇"\r
-                "< 🙇‍♂ << 🙇🏻‍♂ << 🙇🏼‍♂ << 🙇🏽‍♂ << 🙇🏾‍♂ << 🙇🏿‍♂"\r
-                "< 🙇‍♀ << 🙇🏻‍♀ << 🙇🏼‍♀ << 🙇🏽‍♀ << 🙇🏾‍♀ << 🙇🏿‍♀"\r
+                "<🙇‍♂"\r
+                "<<🙇🏻‍♂"\r
+                "<<🙇🏼‍♂"\r
+                "<<🙇🏽‍♂"\r
+                "<<🙇🏾‍♂"\r
+                "<<🙇🏿‍♂"\r
+                "<🙇‍♀"\r
+                "<<🙇🏻‍♀"\r
+                "<<🙇🏼‍♀"\r
+                "<<🙇🏽‍♀"\r
+                "<<🙇🏾‍♀"\r
+                "<<🙇🏿‍♀"\r
                 "<*🤦"\r
-                "< 🤦‍♂ << 🤦🏻‍♂ << 🤦🏼‍♂ << 🤦🏽‍♂ << 🤦🏾‍♂ << 🤦🏿‍♂"\r
-                "< 🤦‍♀ << 🤦🏻‍♀ << 🤦🏼‍♀ << 🤦🏽‍♀ << 🤦🏾‍♀ << 🤦🏿‍♀"\r
+                "<🤦‍♂"\r
+                "<<🤦🏻‍♂"\r
+                "<<🤦🏼‍♂"\r
+                "<<🤦🏽‍♂"\r
+                "<<🤦🏾‍♂"\r
+                "<<🤦🏿‍♂"\r
+                "<🤦‍♀"\r
+                "<<🤦🏻‍♀"\r
+                "<<🤦🏼‍♀"\r
+                "<<🤦🏽‍♀"\r
+                "<<🤦🏾‍♀"\r
+                "<<🤦🏿‍♀"\r
                 "<*🤷"\r
-                "< 🤷‍♂ << 🤷🏻‍♂ << 🤷🏼‍♂ << 🤷🏽‍♂ << 🤷🏾‍♂ << 🤷🏿‍♂"\r
-                "< 🤷‍♀ << 🤷🏻‍♀ << 🤷🏼‍♀ << 🤷🏽‍♀ << 🤷🏾‍♀ << 🤷🏿‍♀"\r
+                "<🤷‍♂"\r
+                "<<🤷🏻‍♂"\r
+                "<<🤷🏼‍♂"\r
+                "<<🤷🏽‍♂"\r
+                "<<🤷🏾‍♂"\r
+                "<<🤷🏿‍♂"\r
+                "<🤷‍♀"\r
+                "<<🤷🏻‍♀"\r
+                "<<🤷🏼‍♀"\r
+                "<<🤷🏽‍♀"\r
+                "<<🤷🏾‍♀"\r
+                "<<🤷🏿‍♀"\r
                 "<*💆"\r
-                "< 💆‍♂ << 💆🏻‍♂ << 💆🏼‍♂ << 💆🏽‍♂ << 💆🏾‍♂ << 💆🏿‍♂"\r
-                "< 💆‍♀ << 💆🏻‍♀ << 💆🏼‍♀ << 💆🏽‍♀ << 💆🏾‍♀ << 💆🏿‍♀"\r
+                "<💆‍♂"\r
+                "<<💆🏻‍♂"\r
+                "<<💆🏼‍♂"\r
+                "<<💆🏽‍♂"\r
+                "<<💆🏾‍♂"\r
+                "<<💆🏿‍♂"\r
+                "<💆‍♀"\r
+                "<<💆🏻‍♀"\r
+                "<<💆🏼‍♀"\r
+                "<<💆🏽‍♀"\r
+                "<<💆🏾‍♀"\r
+                "<<💆🏿‍♀"\r
                 "<*💇"\r
-                "< 💇‍♂ << 💇🏻‍♂ << 💇🏼‍♂ << 💇🏽‍♂ << 💇🏾‍♂ << 💇🏿‍♂"\r
-                "< 💇‍♀ << 💇🏻‍♀ << 💇🏼‍♀ << 💇🏽‍♀ << 💇🏾‍♀ << 💇🏿‍♀"\r
+                "<💇‍♂"\r
+                "<<💇🏻‍♂"\r
+                "<<💇🏼‍♂"\r
+                "<<💇🏽‍♂"\r
+                "<<💇🏾‍♂"\r
+                "<<💇🏿‍♂"\r
+                "<💇‍♀"\r
+                "<<💇🏻‍♀"\r
+                "<<💇🏼‍♀"\r
+                "<<💇🏽‍♀"\r
+                "<<💇🏾‍♀"\r
+                "<<💇🏿‍♀"\r
                 "<*🚶"\r
-                "< 🚶‍♂ << 🚶🏻‍♂ << 🚶🏼‍♂ << 🚶🏽‍♂ << 🚶🏾‍♂ << 🚶🏿‍♂"\r
-                "< 🚶‍♀ << 🚶🏻‍♀ << 🚶🏼‍♀ << 🚶🏽‍♀ << 🚶🏾‍♀ << 🚶🏿‍♀"\r
+                "<🚶‍♂"\r
+                "<<🚶🏻‍♂"\r
+                "<<🚶🏼‍♂"\r
+                "<<🚶🏽‍♂"\r
+                "<<🚶🏾‍♂"\r
+                "<<🚶🏿‍♂"\r
+                "<🚶‍♀"\r
+                "<<🚶🏻‍♀"\r
+                "<<🚶🏼‍♀"\r
+                "<<🚶🏽‍♀"\r
+                "<<🚶🏾‍♀"\r
+                "<<🚶🏿‍♀"\r
                 "<*🏃"\r
-                "< 🏃‍♂ << 🏃🏻‍♂ << 🏃🏼‍♂ << 🏃🏽‍♂ << 🏃🏾‍♂ << 🏃🏿‍♂"\r
-                "< 🏃‍♀ << 🏃🏻‍♀ << 🏃🏼‍♀ << 🏃🏽‍♀ << 🏃🏾‍♀ << 🏃🏿‍♀"\r
+                "<🏃‍♂"\r
+                "<<🏃🏻‍♂"\r
+                "<<🏃🏼‍♂"\r
+                "<<🏃🏽‍♂"\r
+                "<<🏃🏾‍♂"\r
+                "<<🏃🏿‍♂"\r
+                "<🏃‍♀"\r
+                "<<🏃🏻‍♀"\r
+                "<<🏃🏼‍♀"\r
+                "<<🏃🏽‍♀"\r
+                "<<🏃🏾‍♀"\r
+                "<<🏃🏿‍♀"\r
                 "<*💃🕺👯"\r
-                "< 👯‍♂"\r
-                "< 👯‍♀"\r
-                "<*🧖"\r
-                "< 🧖‍♀ << 🧖🏻‍♀ << 🧖🏼‍♀ << 🧖🏽‍♀ << 🧖🏾‍♀ << 🧖🏿‍♀"\r
-                "< 🧖‍♂ << 🧖🏻‍♂ << 🧖🏼‍♂ << 🧖🏽‍♂ << 🧖🏾‍♂ << 🧖🏿‍♂"\r
-                "<*🧗"\r
-                "< 🧗‍♀ << 🧗🏻‍♀ << 🧗🏼‍♀ << 🧗🏽‍♀ << 🧗🏾‍♀ << 🧗🏿‍♀"\r
-                "< 🧗‍♂ << 🧗🏻‍♂ << 🧗🏼‍♂ << 🧗🏽‍♂ << 🧗🏾‍♂ << 🧗🏿‍♂"\r
-                "<*🧘"\r
-                "< 🧘‍♀ << 🧘🏻‍♀ << 🧘🏼‍♀ << 🧘🏽‍♀ << 🧘🏾‍♀ << 🧘🏿‍♀"\r
-                "< 🧘‍♂ << 🧘🏻‍♂ << 🧘🏼‍♂ << 🧘🏽‍♂ << 🧘🏾‍♂ << 🧘🏿‍♂"\r
-                "<*🛀🛌🕴🗣👤👥"\r
+                "<👯‍♂"\r
+                "<<👯🏻‍♂"\r
+                "<<👯🏼‍♂"\r
+                "<<👯🏽‍♂"\r
+                "<<👯🏾‍♂"\r
+                "<<👯🏿‍♂"\r
+                "<👯‍♀"\r
+                "<<👯🏻‍♀"\r
+                "<<👯🏼‍♀"\r
+                "<<👯🏽‍♀"\r
+                "<<👯🏾‍♀"\r
+                "<<👯🏿‍♀"\r
+                "<*🕴🗣👤👥"\r
                 "<*🤺🏇⛷🏂🏌"\r
-                "< 🏌‍♂ = 🏌️‍♂ << 🏌🏻‍♂ << 🏌🏼‍♂ << 🏌🏽‍♂ << 🏌🏾‍♂ << 🏌🏿‍♂"\r
-                "< 🏌‍♀ = 🏌️‍♀ << 🏌🏻‍♀ << 🏌🏼‍♀ << 🏌🏽‍♀ << 🏌🏾‍♀ << 🏌🏿‍♀"\r
+                "<🏌‍♂ = 🏌️‍♂"\r
+                "<<🏌🏻‍♂"\r
+                "<<🏌🏼‍♂"\r
+                "<<🏌🏽‍♂"\r
+                "<<🏌🏾‍♂"\r
+                "<<🏌🏿‍♂"\r
+                "<🏌‍♀ = 🏌️‍♀"\r
+                "<<🏌🏻‍♀"\r
+                "<<🏌🏼‍♀"\r
+                "<<🏌🏽‍♀"\r
+                "<<🏌🏾‍♀"\r
+                "<<🏌🏿‍♀"\r
                 "<*🏄"\r
-                "< 🏄‍♂ << 🏄🏻‍♂ << 🏄🏼‍♂ << 🏄🏽‍♂ << 🏄🏾‍♂ << 🏄🏿‍♂"\r
-                "< 🏄‍♀ << 🏄🏻‍♀ << 🏄🏼‍♀ << 🏄🏽‍♀ << 🏄🏾‍♀ << 🏄🏿‍♀"\r
+                "<🏄‍♂"\r
+                "<<🏄🏻‍♂"\r
+                "<<🏄🏼‍♂"\r
+                "<<🏄🏽‍♂"\r
+                "<<🏄🏾‍♂"\r
+                "<<🏄🏿‍♂"\r
+                "<🏄‍♀"\r
+                "<<🏄🏻‍♀"\r
+                "<<🏄🏼‍♀"\r
+                "<<🏄🏽‍♀"\r
+                "<<🏄🏾‍♀"\r
+                "<<🏄🏿‍♀"\r
                 "<*🚣"\r
-                "< 🚣‍♂ << 🚣🏻‍♂ << 🚣🏼‍♂ << 🚣🏽‍♂ << 🚣🏾‍♂ << 🚣🏿‍♂"\r
-                "< 🚣‍♀ << 🚣🏻‍♀ << 🚣🏼‍♀ << 🚣🏽‍♀ << 🚣🏾‍♀ << 🚣🏿‍♀"\r
+                "<🚣‍♂"\r
+                "<<🚣🏻‍♂"\r
+                "<<🚣🏼‍♂"\r
+                "<<🚣🏽‍♂"\r
+                "<<🚣🏾‍♂"\r
+                "<<🚣🏿‍♂"\r
+                "<🚣‍♀"\r
+                "<<🚣🏻‍♀"\r
+                "<<🚣🏼‍♀"\r
+                "<<🚣🏽‍♀"\r
+                "<<🚣🏾‍♀"\r
+                "<<🚣🏿‍♀"\r
                 "<*🏊"\r
-                "< 🏊‍♂ << 🏊🏻‍♂ << 🏊🏼‍♂ << 🏊🏽‍♂ << 🏊🏾‍♂ << 🏊🏿‍♂"\r
-                "< 🏊‍♀ << 🏊🏻‍♀ << 🏊🏼‍♀ << 🏊🏽‍♀ << 🏊🏾‍♀ << 🏊🏿‍♀"\r
+                "<🏊‍♂"\r
+                "<<🏊🏻‍♂"\r
+                "<<🏊🏼‍♂"\r
+                "<<🏊🏽‍♂"\r
+                "<<🏊🏾‍♂"\r
+                "<<🏊🏿‍♂"\r
+                "<🏊‍♀"\r
+                "<<🏊🏻‍♀"\r
+                "<<🏊🏼‍♀"\r
+                "<<🏊🏽‍♀"\r
+                "<<🏊🏾‍♀"\r
+                "<<🏊🏿‍♀"\r
                 "<*⛹"\r
-                "< ⛹‍♂ = ⛹️‍♂ << ⛹🏻‍♂ << ⛹🏼‍♂ << ⛹🏽‍♂ << ⛹🏾‍♂ << ⛹🏿‍♂"\r
-                "< ⛹‍♀ = ⛹️‍♀ << ⛹🏻‍♀ << ⛹🏼‍♀ << ⛹🏽‍♀ << ⛹🏾‍♀ << ⛹🏿‍♀"\r
+                "<⛹‍♂ = ⛹️‍♂"\r
+                "<<⛹🏻‍♂"\r
+                "<<⛹🏼‍♂"\r
+                "<<⛹🏽‍♂"\r
+                "<<⛹🏾‍♂"\r
+                "<<⛹🏿‍♂"\r
+                "<⛹‍♀ = ⛹️‍♀"\r
+                "<<⛹🏻‍♀"\r
+                "<<⛹🏼‍♀"\r
+                "<<⛹🏽‍♀"\r
+                "<<⛹🏾‍♀"\r
+                "<<⛹🏿‍♀"\r
                 "<*🏋"\r
-                "< 🏋‍♂ = 🏋️‍♂ << 🏋🏻‍♂ << 🏋🏼‍♂ << 🏋🏽‍♂ << 🏋🏾‍♂ << 🏋🏿‍♂"\r
-                "< 🏋‍♀ = 🏋️‍♀ << 🏋🏻‍♀ << 🏋🏼‍♀ << 🏋🏽‍♀ << 🏋🏾‍♀ << 🏋🏿‍♀"\r
+                "<🏋‍♂ = 🏋️‍♂"\r
+                "<<🏋🏻‍♂"\r
+                "<<🏋🏼‍♂"\r
+                "<<🏋🏽‍♂"\r
+                "<<🏋🏾‍♂"\r
+                "<<🏋🏿‍♂"\r
+                "<🏋‍♀ = 🏋️‍♀"\r
+                "<<🏋🏻‍♀"\r
+                "<<🏋🏼‍♀"\r
+                "<<🏋🏽‍♀"\r
+                "<<🏋🏾‍♀"\r
+                "<<🏋🏿‍♀"\r
                 "<*🚴"\r
-                "< 🚴‍♂ << 🚴🏻‍♂ << 🚴🏼‍♂ << 🚴🏽‍♂ << 🚴🏾‍♂ << 🚴🏿‍♂"\r
-                "< 🚴‍♀ << 🚴🏻‍♀ << 🚴🏼‍♀ << 🚴🏽‍♀ << 🚴🏾‍♀ << 🚴🏿‍♀"\r
+                "<🚴‍♂"\r
+                "<<🚴🏻‍♂"\r
+                "<<🚴🏼‍♂"\r
+                "<<🚴🏽‍♂"\r
+                "<<🚴🏾‍♂"\r
+                "<<🚴🏿‍♂"\r
+                "<🚴‍♀"\r
+                "<<🚴🏻‍♀"\r
+                "<<🚴🏼‍♀"\r
+                "<<🚴🏽‍♀"\r
+                "<<🚴🏾‍♀"\r
+                "<<🚴🏿‍♀"\r
                 "<*🚵"\r
-                "< 🚵‍♂ << 🚵🏻‍♂ << 🚵🏼‍♂ << 🚵🏽‍♂ << 🚵🏾‍♂ << 🚵🏿‍♂"\r
-                "< 🚵‍♀ << 🚵🏻‍♀ << 🚵🏼‍♀ << 🚵🏽‍♀ << 🚵🏾‍♀ << 🚵🏿‍♀"\r
+                "<🚵‍♂"\r
+                "<<🚵🏻‍♂"\r
+                "<<🚵🏼‍♂"\r
+                "<<🚵🏽‍♂"\r
+                "<<🚵🏾‍♂"\r
+                "<<🚵🏿‍♂"\r
+                "<🚵‍♀"\r
+                "<<🚵🏻‍♀"\r
+                "<<🚵🏼‍♀"\r
+                "<<🚵🏽‍♀"\r
+                "<<🚵🏾‍♀"\r
+                "<<🚵🏿‍♀"\r
                 "<*🏎🏍🤸"\r
-                "< 🤸‍♂ << 🤸🏻‍♂ << 🤸🏼‍♂ << 🤸🏽‍♂ << 🤸🏾‍♂ << 🤸🏿‍♂"\r
-                "< 🤸‍♀ << 🤸🏻‍♀ << 🤸🏼‍♀ << 🤸🏽‍♀ << 🤸🏾‍♀ << 🤸🏿‍♀"\r
+                "<🤸‍♂"\r
+                "<<🤸🏻‍♂"\r
+                "<<🤸🏼‍♂"\r
+                "<<🤸🏽‍♂"\r
+                "<<🤸🏾‍♂"\r
+                "<<🤸🏿‍♂"\r
+                "<🤸‍♀"\r
+                "<<🤸🏻‍♀"\r
+                "<<🤸🏼‍♀"\r
+                "<<🤸🏽‍♀"\r
+                "<<🤸🏾‍♀"\r
+                "<<🤸🏿‍♀"\r
                 "<*🤼"\r
-                "< 🤼‍♂"\r
-                "< 🤼‍♀"\r
+                "<🤼‍♂"\r
+                "<<🤼🏻‍♂"\r
+                "<<🤼🏼‍♂"\r
+                "<<🤼🏽‍♂"\r
+                "<<🤼🏾‍♂"\r
+                "<<🤼🏿‍♂"\r
+                "<🤼‍♀"\r
+                "<<🤼🏻‍♀"\r
+                "<<🤼🏼‍♀"\r
+                "<<🤼🏽‍♀"\r
+                "<<🤼🏾‍♀"\r
+                "<<🤼🏿‍♀"\r
                 "<*🤽"\r
-                "< 🤽‍♂ << 🤽🏻‍♂ << 🤽🏼‍♂ << 🤽🏽‍♂ << 🤽🏾‍♂ << 🤽🏿‍♂"\r
-                "< 🤽‍♀ << 🤽🏻‍♀ << 🤽🏼‍♀ << 🤽🏽‍♀ << 🤽🏾‍♀ << 🤽🏿‍♀"\r
+                "<🤽‍♂"\r
+                "<<🤽🏻‍♂"\r
+                "<<🤽🏼‍♂"\r
+                "<<🤽🏽‍♂"\r
+                "<<🤽🏾‍♂"\r
+                "<<🤽🏿‍♂"\r
+                "<🤽‍♀"\r
+                "<<🤽🏻‍♀"\r
+                "<<🤽🏼‍♀"\r
+                "<<🤽🏽‍♀"\r
+                "<<🤽🏾‍♀"\r
+                "<<🤽🏿‍♀"\r
                 "<*🤾"\r
-                "< 🤾‍♂ << 🤾🏻‍♂ << 🤾🏼‍♂ << 🤾🏽‍♂ << 🤾🏾‍♂ << 🤾🏿‍♂"\r
-                "< 🤾‍♀ << 🤾🏻‍♀ << 🤾🏼‍♀ << 🤾🏽‍♀ << 🤾🏾‍♀ << 🤾🏿‍♀"\r
+                "<🤾‍♂"\r
+                "<<🤾🏻‍♂"\r
+                "<<🤾🏼‍♂"\r
+                "<<🤾🏽‍♂"\r
+                "<<🤾🏾‍♂"\r
+                "<<🤾🏿‍♂"\r
+                "<🤾‍♀"\r
+                "<<🤾🏻‍♀"\r
+                "<<🤾🏼‍♀"\r
+                "<<🤾🏽‍♀"\r
+                "<<🤾🏾‍♀"\r
+                "<<🤾🏿‍♀"\r
                 "<*🤹"\r
-                "< 🤹‍♂ << 🤹🏻‍♂ << 🤹🏼‍♂ << 🤹🏽‍♂ << 🤹🏾‍♂ << 🤹🏿‍♂"\r
-                "< 🤹‍♀ << 🤹🏻‍♀ << 🤹🏼‍♀ << 🤹🏽‍♀ << 🤹🏾‍♀ << 🤹🏿‍♀"\r
+                "<🤹‍♂"\r
+                "<<🤹🏻‍♂"\r
+                "<<🤹🏼‍♂"\r
+                "<<🤹🏽‍♂"\r
+                "<<🤹🏾‍♂"\r
+                "<<🤹🏿‍♂"\r
+                "<🤹‍♀"\r
+                "<<🤹🏻‍♀"\r
+                "<<🤹🏼‍♀"\r
+                "<<🤹🏽‍♀"\r
+                "<<🤹🏾‍♀"\r
+                "<<🤹🏿‍♀"\r
                 "<*👫👬👭💏"\r
-                "< 👩‍❤‍💋‍👨 = 👩‍❤️‍💋‍👨"\r
-                "< 👨‍❤‍💋‍👨 = 👨‍❤️‍💋‍👨"\r
-                "< 👩‍❤‍💋‍👩 = 👩‍❤️‍💋‍👩"\r
+                "<👩‍❤‍💋‍👨 = 👩‍❤️‍💋‍👨"\r
+                "<👨‍❤‍💋‍👨 = 👨‍❤️‍💋‍👨"\r
+                "<👩‍❤‍💋‍👩 = 👩‍❤️‍💋‍👩"\r
                 "<*💑"\r
-                "< 👩‍❤‍👨 = 👩‍❤️‍👨"\r
-                "< 👨‍❤‍👨 = 👨‍❤️‍👨"\r
-                "< 👩‍❤‍👩 = 👩‍❤️‍👩"\r
+                "<👩‍❤‍👨 = 👩‍❤️‍👨"\r
+                "<👨‍❤‍👨 = 👨‍❤️‍👨"\r
+                "<👩‍❤‍👩 = 👩‍❤️‍👩"\r
                 "<*👪"\r
-                "< 👨‍👩‍👦"\r
-                "< 👨‍👩‍👧"\r
-                "< 👨‍👩‍👧‍👦"\r
-                "< 👨‍👩‍👦‍👦"\r
-                "< 👨‍👩‍👧‍👧"\r
-                "< 👨‍👨‍👦"\r
-                "< 👨‍👨‍👧"\r
-                "< 👨‍👨‍👧‍👦"\r
-                "< 👨‍👨‍👦‍👦"\r
-                "< 👨‍👨‍👧‍👧"\r
-                "< 👩‍👩‍👦"\r
-                "< 👩‍👩‍👧"\r
-                "< 👩‍👩‍👧‍👦"\r
-                "< 👩‍👩‍👦‍👦"\r
-                "< 👩‍👩‍👧‍👧"\r
-                "< 👨‍👦"\r
-                "< 👨‍👦‍👦"\r
-                "< 👨‍👧"\r
-                "< 👨‍👧‍👦"\r
-                "< 👨‍👧‍👧"\r
-                "< 👩‍👦"\r
-                "< 👩‍👦‍👦"\r
-                "< 👩‍👧"\r
-                "< 👩‍👧‍👦"\r
-                "< 👩‍👧‍👧"\r
-                "<*ð\9f¤³ð\9f\92ªð\9f\91\88ð\9f\91\89â\98\9dð\9f\91\86ð\9f\96\95ð\9f\91\87â\9c\8cð\9f¤\9eð\9f\96\96ð\9f¤\98ð\9f¤\99ð\9f\96\90â\9c\8bð\9f\91\8cð\9f\91\8dð\9f\91\8eâ\9c\8að\9f\91\8að\9f¤\9bð\9f¤\9cð\9f¤\9að\9f\91\8bð\9f¤\9fâ\9c\8dð\9f\91\8fð\9f\91\90ð\9f\99\8cð\9f¤²🙏🤝💅👂👃👣👀👁"\r
-                "< 👁‍🗨 = 👁️‍🗨"\r
-                "<*ð\9f§ ð\9f\91\85ð\9f\91\84"\r
-                "<*ð\9f\92\8bð\9f\92\98â\9d¤ð\9f\92\93ð\9f\92\94ð\9f\92\95ð\9f\92\96ð\9f\92\97ð\9f\92\99ð\9f\92\9að\9f\92\9bð\9f§¡ð\9f\92\9cð\9f\96¤ð\9f\92\9dð\9f\92\9eð\9f\92\9fâ\9d£ð\9f\92\8cð\9f\92¤ð\9f\92¢ð\9f\92£ð\9f\92¥ð\9f\92¦ð\9f\92¨ð\9f\92«ð\9f\92¬ð\9f\97¨ð\9f\97¯ð\9f\92­ð\9f\95³"\r
-                "<*ð\9f\91\93ð\9f\95¶ð\9f\91\94ð\9f\91\95ð\9f\91\96ð\9f§£ð\9f§¤ð\9f§¥ð\9f§¦ð\9f\91\97ð\9f\91\98ð\9f\91\99ð\9f\91\9að\9f\91\9bð\9f\91\9cð\9f\91\9dð\9f\9b\8dð\9f\8e\92ð\9f\91\9eð\9f\91\9fð\9f\91 ð\9f\91¡ð\9f\91¢ð\9f\91\91ð\9f\91\92ð\9f\8e©ð\9f\8e\93ð\9f§¢⛑📿💄💍💎"\r
-                "<*ð\9f\90µð\9f\90\92ð\9f¦\8dð\9f\90¶ð\9f\90\95ð\9f\90©ð\9f\90ºð\9f¦\8að\9f\90±ð\9f\90\88ð\9f¦\81ð\9f\90¯ð\9f\90\85ð\9f\90\86ð\9f\90´ð\9f\90\8eð\9f¦\84ð\9f¦\93ð\9f¦\8cð\9f\90®ð\9f\90\82ð\9f\90\83ð\9f\90\84ð\9f\90·ð\9f\90\96ð\9f\90\97ð\9f\90½ð\9f\90\8fð\9f\90\91ð\9f\90\90ð\9f\90ªð\9f\90«ð\9f¦\92ð\9f\90\98ð\9f¦\8fð\9f\90­ð\9f\90\81ð\9f\90\80ð\9f\90¹ð\9f\90°ð\9f\90\87ð\9f\90¿ð\9f¦\94🦇🐻🐨🐼🐾"\r
+                "<👨‍👩‍👦"\r
+                "<👨‍👩‍👧"\r
+                "<👨‍👩‍👧‍👦"\r
+                "<👨‍👩‍👦‍👦"\r
+                "<👨‍👩‍👧‍👧"\r
+                "<👨‍👨‍👦"\r
+                "<👨‍👨‍👧"\r
+                "<👨‍👨‍👧‍👦"\r
+                "<👨‍👨‍👦‍👦"\r
+                "<👨‍👨‍👧‍👧"\r
+                "<👩‍👩‍👦"\r
+                "<👩‍👩‍👧"\r
+                "<👩‍👩‍👧‍👦"\r
+                "<👩‍👩‍👦‍👦"\r
+                "<👩‍👩‍👧‍👧"\r
+                "<👨‍👦"\r
+                "<👨‍👦‍👦"\r
+                "<👨‍👧"\r
+                "<👨‍👧‍👦"\r
+                "<👨‍👧‍👧"\r
+                "<👩‍👦"\r
+                "<👩‍👦‍👦"\r
+                "<👩‍👧"\r
+                "<👩‍👧‍👦"\r
+                "<👩‍👧‍👧"\r
+                "<*ð\9f\92ªð\9f¤³ð\9f\91\88ð\9f\91\89â\98\9dð\9f\91\86ð\9f\96\95ð\9f\91\87â\9c\8cð\9f¤\9eð\9f\96\96ð\9f¤\98ð\9f¤\99ð\9f\96\90â\9c\8bð\9f\91\8cð\9f\91\8dð\9f\91\8eâ\9c\8að\9f\91\8að\9f¤\9bð\9f¤\9cð\9f¤\9að\9f\91\8bð\9f\91\8fâ\9c\8dð\9f\91\90ð\9f\99\8c🙏🤝💅👂👃👣👀👁"\r
+                "<👁‍🗨 = 👁️‍🗨"\r
+                "<*👅👄"\r
+                "<*💋💘❤💓💔💕💖💗💙💚💛💜🖤💝💞💟❣💌💤💢💣💥💦💨💫💬🗨🗯💭🕳"\r
+                "<*ð\9f\91\93ð\9f\95¶ð\9f\91\94ð\9f\91\95ð\9f\91\96ð\9f\91\97ð\9f\91\98ð\9f\91\99ð\9f\91\9að\9f\91\9bð\9f\91\9cð\9f\91\9dð\9f\9b\8dð\9f\8e\92ð\9f\91\9eð\9f\91\9fð\9f\91 ð\9f\91¡ð\9f\91¢ð\9f\91\91ð\9f\91\92ð\9f\8e©ð\9f\8e\93⛑📿💄💍💎"\r
+                "<*ð\9f\90µð\9f\90\92ð\9f¦\8dð\9f\90¶ð\9f\90\95ð\9f\90©ð\9f\90ºð\9f¦\8að\9f\90±ð\9f\90\88ð\9f¦\81ð\9f\90¯ð\9f\90\85ð\9f\90\86ð\9f\90´ð\9f\90\8eð\9f¦\8cð\9f¦\84ð\9f\90®ð\9f\90\82ð\9f\90\83ð\9f\90\84ð\9f\90·ð\9f\90\96ð\9f\90\97ð\9f\90½ð\9f\90\8fð\9f\90\91ð\9f\90\90ð\9f\90ªð\9f\90«ð\9f\90\98ð\9f¦\8fð\9f\90­ð\9f\90\81ð\9f\90\80ð\9f\90¹ð\9f\90°ð\9f\90\87ð\9f\90¿🦇🐻🐨🐼🐾"\r
                 "<*🦃🐔🐓🐣🐤🐥🐦🐧🕊🦅🦆🦉"\r
                 "<*🐸"\r
-                "<*🐊🐢🦎🐍🐲🐉🦕🦖"\r
+                "<*🐊🐢🦎🐍🐲🐉"\r
                 "<*🐳🐋🐬🐟🐠🐡🦈🐙🐚🦀🦐🦑"\r
-                "<*ð\9f\90\8cð\9f¦\8bð\9f\90\9bð\9f\90\9cð\9f\90\9dð\9f\90\9eð\9f¦\97🕷🕸🦂"\r
+                "<*ð\9f¦\8bð\9f\90\8cð\9f\90\9bð\9f\90\9cð\9f\90\9dð\9f\90\9e🕷🕸🦂"\r
                 "<*💐🌸💮🏵🌹🥀🌺🌻🌼🌷"\r
                 "<*🌱🌲🌳🌴🌵🌾🌿☘🍀🍁🍂🍃"\r
-                "<*🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🥝🍅🥥"\r
-                "<*ð\9f¥\91ð\9f\8d\86ð\9f¥\94ð\9f¥\95ð\9f\8c½ð\9f\8c¶ð\9f¥\92ð\9f¥¦ð\9f\8d\84ð\9f¥\9cð\9f\8c°"\r
-                "<*ð\9f\8d\9eð\9f¥\90ð\9f¥\96ð\9f¥¨ð\9f¥\9eð\9f§\80ð\9f\8d\96ð\9f\8d\97ð\9f¥©ð\9f¥\93ð\9f\8d\94ð\9f\8d\9fð\9f\8d\95ð\9f\8c­ð\9f¥ªð\9f\8c®ð\9f\8c¯ð\9f¥\99ð\9f¥\9að\9f\8d³ð\9f¥\98ð\9f\8d²ð\9f¥£ð\9f¥\97ð\9f\8d¿ð\9f¥«"\r
-                "<*🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🥟🥠🥡"\r
-                "<*ð\9f\8d¦ð\9f\8d§ð\9f\8d¨ð\9f\8d©ð\9f\8dªð\9f\8e\82ð\9f\8d°ð\9f¥§ð\9f\8d«ð\9f\8d¬ð\9f\8d­ð\9f\8d®ð\9f\8d¯"\r
-                "<*🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻🥂🥃🥤"\r
-                "<*ð\9f¥¢ð\9f\8d½ð\9f\8d´ð\9f¥\84ð\9f\94ªð\9f\8fº"\r
+                "<*🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🥝🍅"\r
+                "<*🥑🍆🥔🥕🌽🌶🥒🍄🥜🌰"\r
+                "<*ð\9f\8d\9eð\9f¥\90ð\9f¥\96ð\9f¥\9eð\9f§\80ð\9f\8d\96ð\9f\8d\97ð\9f¥\93ð\9f\8d\94ð\9f\8d\9fð\9f\8d\95ð\9f\8c­ð\9f\8c®ð\9f\8c¯ð\9f¥\99ð\9f¥\9að\9f\8d³ð\9f¥\98ð\9f\8d²ð\9f¥\97ð\9f\8d¿"\r
+                "<*🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡"\r
+                "<*🍦🍧🍨🍩🍪🎂🍰🍫🍬🍭🍮🍯"\r
+                "<*🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻🥂🥃"\r
+                "<*🍽🍴🥄🔪🏺"\r
                 "<*🌍🌎🌏🌐🗺🗾"\r
                 "<*🏔⛰🌋🗻🏕🏖🏜🏝🏞"\r
                 "<*🏟🏛🏗🏘🏙🏚🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽"\r
@@ -260,13 +705,13 @@ root{
                 "<*⛲⛺🌁🌃🌄🌅🌆🌇🌉♨🌌🎠🎡🎢💈🎪🎭🖼🎨🎰"\r
                 "<*🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚲🛴🛵🚏🛣🛤⛽🚨🚥🚦🚧🛑"\r
                 "<*⚓⛵🛶🚤🛳⛴🛥🚢"\r
-                "<*â\9c\88ð\9f\9b©ð\9f\9b«ð\9f\9b¬ð\9f\92ºð\9f\9a\81ð\9f\9a\9fð\9f\9a ð\9f\9a¡ð\9f\9b°ð\9f\9a\80ð\9f\9b¸"\r
-                "<*ð\9f\9b\8eð\9f\9aªð\9f\9b\8fð\9f\9b\8bð\9f\9a½ð\9f\9a¿🛁"\r
+                "<*â\9c\88ð\9f\9b©ð\9f\9b«ð\9f\9b¬ð\9f\92ºð\9f\9a\81ð\9f\9a\9fð\9f\9a ð\9f\9a¡ð\9f\9a\80ð\9f\9b°"\r
+                "<*ð\9f\9b\8eð\9f\9aªð\9f\9b\8cð\9f\9b\8fð\9f\9b\8bð\9f\9a½ð\9f\9a¿ð\9f\9b\80🛁"\r
                 "<*⌛⏳⌚⏰⏱⏲🕰🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦"\r
                 "<*🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌡☀🌝🌞⭐🌟🌠☁⛅⛈🌤🌥🌦🌧🌨🌩🌪🌫🌬🌀🌈🌂☂☔⛱⚡❄☃⛄☄🔥💧🌊"\r
                 "<*🎃🎄🎆🎇✨🎈🎉🎊🎋🎍🎎🎏🎐🎑🎀🎁🎗🎟🎫"\r
                 "<*🎖🏆🏅🥇🥈🥉"\r
-                "<*⚽⚾🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸🥊🥋🥅🎯⛳⛸🎣🎽🎿🛷🥌"\r
+                "<*⚽⚾🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸🥊🥋🥅🎯⛳⛸🎣🎽🎿"\r
                 "<*🎮🕹🎲♠♥♦♣🃏🀄🎴"\r
                 "<*🔇🔈🔉🔊📢📣📯🔔🔕"\r
                 "<*🎼🎵🎶🎙🎚🎛🎤🎧📻"\r
@@ -289,30 +734,27 @@ root{
                 "<*🛐⚛🕉✡☸☯✝☦☪☮🕎🔯"\r
                 "<*♈♉♊♋♌♍♎♏♐♑♒♓⛎"\r
                 "<*🔀🔁🔂▶⏩⏭⏯◀⏪⏮🔼⏫🔽⏬⏸⏹⏺⏏🎦🔅🔆📶📳📴"\r
-                "<*â\99\80â\99\82â\9a\95â\99»â\9a\9cð\9f\94±ð\9f\93\9bð\9f\94°â­\95â\9c\85â\98\91â\9c\94â\9c\96â\9d\8câ\9d\8eâ\9e\95â\9e\96â\9e\97â\9e°â\9e¿ã\80½â\9c³â\9c´â\9d\87â\80¼â\81\89â\9d\93â\9d\94â\9d\95â\9d\97ã\80°Â©Â®â\84¢"\r
-                "< '#⃣' = '#️⃣'"\r
-                "< '*⃣' = '*️⃣'"\r
-                "< 0⃣ = 0️⃣"\r
-                "< 1⃣ = 1️⃣"\r
-                "< 2⃣ = 2️⃣"\r
-                "< 3⃣ = 3️⃣"\r
-                "< 4⃣ = 4️⃣"\r
-                "< 5⃣ = 5️⃣"\r
-                "< 6⃣ = 6️⃣"\r
-                "< 7⃣ = 7️⃣"\r
-                "< 8⃣ = 8️⃣"\r
-                "< 9⃣ = 9️⃣"\r
+                "<*â\99»ð\9f\93\9bâ\9a\9cð\9f\94°ð\9f\94±â­\95â\9c\85â\98\91â\9c\94â\9c\96â\9d\8câ\9d\8eâ\9e\95â\99\80â\99\82â\9a\95â\9e\96â\9e\97â\9e°â\9e¿ã\80½â\9c³â\9c´â\9d\87â\80¼â\81\89â\9d\93â\9d\94â\9d\95â\9d\97ã\80°Â©Â®â\84¢"\r
+                "<'#⃣' = '#️⃣'"\r
+                "<'*⃣' = '*️⃣'"\r
+                "<0⃣ = 0️⃣"\r
+                "<1⃣ = 1️⃣"\r
+                "<2⃣ = 2️⃣"\r
+                "<3⃣ = 3️⃣"\r
+                "<4⃣ = 4️⃣"\r
+                "<5⃣ = 5️⃣"\r
+                "<6⃣ = 6️⃣"\r
+                "<7⃣ = 7️⃣"\r
+                "<8⃣ = 8️⃣"\r
+                "<9⃣ = 9️⃣"\r
                 "<*🔟"\r
                 "<*💯🔠🔡🔢🔣🔤🅰🆎🅱🆑🆒🆓ℹ🆔Ⓜ🆕🆖🅾🆗🅿🆘🆙🆚🈁🈂🈷🈶🈯🉐🈹🈚🈲🉑🈸🈴🈳㊗㊙🈺🈵"\r
                 "<*▪▫◻◼◽◾⬛⬜🔶🔷🔸🔹🔺🔻💠🔘🔲🔳⚪⚫🔴🔵"\r
                 "<*🏁🚩🎌🏴🏳"\r
-                "< 🏳‍🌈 = 🏳️‍🌈"\r
+                "<🏳‍🌈 = 🏳️‍🌈"\r
                 "<*🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿"\r
-                "< 🏴󠁧󠁢󠁥󠁮󠁧󠁿"\r
-                "< 🏴󠁧󠁢󠁳󠁣󠁴󠁿"\r
-                "< 🏴󠁧󠁢󠁷󠁬󠁳󠁿"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         eor{\r
             Sequence{\r
@@ -852,7 +1294,7 @@ root{
                 "&ք"\r
                 "<և"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         private-unihan{\r
             Sequence{\r
@@ -1095,7 +1537,7 @@ root{
                 "&龟=\uFDD0龟"\r
                 "&龠=\uFDD0龠"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         search{\r
             Sequence{\r
@@ -1212,11 +1654,11 @@ root{
                 "&ᅮᅵ"\r
                 "=ᅱ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{""}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
     depends:process(dependency){"ucadata.icu"}\r
index af57fe3..64e2bdb 100644 (file)
@@ -5,7 +5,7 @@ ru{
     collations{\r
         standard{\r
             Sequence{"[reorder Cyrl]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index da5c505..5024719 100644 (file)
@@ -8,7 +8,7 @@ se{
                 "[import und-u-co-search]"\r
                 "[import se-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -53,7 +53,7 @@ se{
                 "<<<Ô<<ǫ"\r
                 "<<<Ǫ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 7f088e6..5e54c30 100644 (file)
@@ -10,7 +10,7 @@ si{
                 "&ඖ<ං<ඃ"\r
                 "&ජ්ඤ<<ඥ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ si{
                 "&ඖ<ං<ඃ"\r
                 "&ඥ<ඤ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 2ca411e..0df2d7d 100644 (file)
@@ -21,7 +21,7 @@ sk{
                 "&Y<ý<<<Ý"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -33,7 +33,7 @@ sk{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 8e805cc..72113d1 100644 (file)
@@ -10,7 +10,7 @@ sl{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 4004791..6be8431 100644 (file)
@@ -8,7 +8,7 @@ smn{
                 "[import und-u-co-search]"\r
                 "[import smn-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -19,7 +19,7 @@ smn{
                 "&S<š<<<Š"\r
                 "&Z<ž<<<Ž<æ<<<Æ<ø<<<Ø<å<<<Å<ã<<<Ã<ä<<<Ä<á<<<Á<ö<<<Ö"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index fb78086..0818ced 100644 (file)
@@ -17,7 +17,7 @@ sq{
                 "&[before 1]Y<xh<<<Xh<<<XH"\r
                 "&[before 1]Ʒ<zh<<<Zh<<<ZH"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 703c437..f9ed91a 100644 (file)
@@ -8,7 +8,7 @@ sr{
                 "[reorder Cyrl]"\r
                 "[suppressContractions [Ии]]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 114fc4c..27ee707 100644 (file)
@@ -5,11 +5,11 @@ sr_Latn{
     collations{\r
         search{\r
             Sequence{"[import hr-u-co-search]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{"[import hr]"}\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 2e697c7..bd008cd 100644 (file)
@@ -12,14 +12,14 @@ sv{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         search{\r
             Sequence{\r
                 "[import und-u-co-search]"\r
                 "[import sv-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -30,7 +30,7 @@ sv{
                 "&Y<<ü<<<Ü<<ű<<<Ű"\r
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 1b390c9..c7e47ba 100644 (file)
@@ -34,7 +34,7 @@ ta{
                 "&[before 1]ஹ<ஹ்"\r
                 "&[before 1]க்ஷ<க்ஷ்"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 84b13ec..09e7e2b 100644 (file)
@@ -9,7 +9,7 @@ te{
                 "[reorder Telu Deva Beng Guru Gujr Orya Taml Knda Mlym Sinh]"\r
                 "&ఔ<ఁ<ం<ః"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index f15616b..354dadf 100644 (file)
@@ -17,7 +17,7 @@ th{
                 "&ๅํ<<<ํๅ"\r
                 "&ไ<ฺ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 27295fb..2879b10 100644 (file)
@@ -13,7 +13,7 @@ to{
                 "&o<<ó<<<Ó<<ō<<<Ō"\r
                 "&u<<ú<<<Ú<<ū<<<Ū"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 13f46d8..61c457c 100644 (file)
@@ -8,7 +8,7 @@ tr{
                 "[import und-u-co-search]"\r
                 "[import tr-u-co-standard]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -20,7 +20,7 @@ tr{
                 "&S<ş<<<Ş"\r
                 "&U<ü<<<Ü"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 8817b57..d678d9e 100644 (file)
@@ -10,7 +10,7 @@ ug{
                 "&ك<گ<ڭ<ل"\r
                 "&ھ<و<ۇ<ۆ<ۈ<ۋ<ې<ى<ي"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index b513817..5347617 100644 (file)
@@ -9,7 +9,7 @@ uk{
                 "&Г<ґ<<<Ґ"\r
                 "&ꙇ<ї<<<\uA676<<<Ї"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 27d6a93..ed8e8d4 100644 (file)
@@ -12,7 +12,7 @@ ur{
                 "<<\u0651<<\u0658<<\u0653"\r
                 "&[last tertiary ignorable]<<<\u0610<<<\u0611<<<\u0613<<<\u0612<<<\u0614"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 50438a5..85de6d8 100644 (file)
@@ -10,7 +10,7 @@ uz{
                 "<sh<<<Sh<<<SH"\r
                 "<ch<<<Ch<<<CH"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 5a2e486..e07496f 100644 (file)
@@ -13,7 +13,7 @@ vi{
                 "&o<ô<<<Ô<ơ<<<Ơ"\r
                 "&u<ư<<<Ư"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         traditional{\r
             Sequence{\r
@@ -32,7 +32,7 @@ vi{
                 "&T<th<<<Th<<<TH<tr<<<Tr<<<TR"\r
                 "&u<ư<<<Ư"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 40b6ceb..2fbae6b 100644 (file)
@@ -11,7 +11,7 @@ yi{
                 "‎&״"\r
                 "<<'\u0022'"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         standard{\r
             Sequence{\r
@@ -28,7 +28,7 @@ yi{
                 "&ש<שׂ"\r
                 "&[before 1]ת<תּ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index e4359ff..df47887 100644 (file)
@@ -11,7 +11,7 @@ yo{
                 "&O<ọ<<<Ọ"\r
                 "&S<ṣ<<<Ṣ"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 839e481..9e176f6 100644 (file)
@@ -9,7 +9,7 @@ zh{
                 "[reorder Latn Hani Bopo]"\r
                 "&[last regular]<*兙兛兞兝兡兣嗧瓩糎一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         default{"pinyin"}\r
         gb2312han{\r
@@ -18,7 +18,7 @@ zh{
                 "[reorder Latn Hani]"\r
                 "&[last regular]<*啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         pinyin{\r
             Sequence{\r
@@ -1888,7 +1888,7 @@ zh{
                 "&弞<沈阳/阳"\r
                 "&銺<藏文/文"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         private-pinyin{\r
             Sequence{\r
@@ -1902,7 +1902,7 @@ zh{
                 "&[before 2]u<<ū<<<Ū<<ú<<<Ú<<ǔ<<<Ǔ<<ù<<<Ù"\r
                 "&U<<ǖ<<<Ǖ<<ǘ<<<Ǘ<<ǚ<<<Ǚ<<ǜ<<<Ǜ<<ü<<<Ü"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         stroke{\r
             Sequence{\r
@@ -2604,7 +2604,7 @@ zh{
                 "&龟<<<⻳"\r
                 "&龠<<<⿕"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         unihan{\r
             Sequence{\r
@@ -2612,7 +2612,7 @@ zh{
                 "[import zh-u-co-private-pinyin]"\r
                 "[reorder Hani Bopo]"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
         zhuyin{\r
             Sequence{\r
@@ -4638,7 +4638,7 @@ zh{
                 "&龟<<<⻳"\r
                 "&龠<<<⿕"\r
             }\r
-            Version{"31.0.1"}\r
+            Version{"30.0.3"}\r
         }\r
     }\r
 }\r
index 50a114d..c728de6 100644 (file)
@@ -452,7 +452,7 @@ af{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaanse sol",\r
+            "Peruaanse nuwe sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1197,8 +1197,8 @@ af{
             other{"Panamese balboa"}\r
         }\r
         PEN{\r
-            one{"Peruaanse sol"}\r
-            other{"Peruaanse sol"}\r
+            one{"Peruaanse nuwe sol"}\r
+            other{"Peruaanse nuwe sol"}\r
         }\r
         PGK{\r
             one{"Papoea-Nieu-Guinese kina"}\r
@@ -1405,5 +1405,5 @@ af{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
 }\r
index 7f8c9bd..5174048 100644 (file)
@@ -7,5 +7,5 @@ af_NA{
             "Namibiese dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3c8bb57..d478f74 100644 (file)
@@ -223,5 +223,5 @@ agq{
             "Dɔlà è Zìmbagbɛ̀",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 71cc0c3..43dc3b8 100644 (file)
@@ -223,5 +223,5 @@ ak{
             "Zimbabwe Dɔla",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0966a4a..75a050d 100644 (file)
@@ -440,7 +440,7 @@ am{
         }\r
         PEN{\r
             "PEN",\r
-            "የፔሩቪያ ሶል",\r
+            "á\8b¨á\8d\94á\88©á\89ªá\8b« á\8a\91á\8a¤á\89® á\88¶á\88\8d",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1185,8 +1185,8 @@ am{
             other{"ፓናማኒአን ባልቦአ"}\r
         }\r
         PEN{\r
-            one{"የፔሩቪያ ሶል"}\r
-            other{"የፔሩቪያ ሶል"}\r
+            one{"á\8b¨á\8d\94á\88©á\89ªá\8b« á\8a\91á\8a¤á\89® á\88¶á\88\8d"}\r
+            other{"á\8b¨á\8d\94á\88©á\89ªá\8b« á\8a\91á\8a¤á\89® á\88¶á\88\8d"}\r
         }\r
         PGK{\r
             one{"የፓፕዋ ኒው ጊኒ ኪና"}\r
@@ -1397,5 +1397,5 @@ am{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index f2938aa..93f0b6e 100644 (file)
@@ -648,7 +648,7 @@ ar{
         }\r
         PEN{\r
             "PEN",\r
-            "سول البيرو",\r
+            "سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1981,12 +1981,12 @@ ar{
             zero{"بالبوا بنمي"}\r
         }\r
         PEN{\r
-            few{"سول البيرو"}\r
-            many{"سول البيرو"}\r
-            one{"سول البيرو"}\r
-            other{"سول البيرو"}\r
-            two{"سول البيرو"}\r
-            zero{"سول البيرو"}\r
+            few{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
+            many{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
+            one{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
+            other{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
+            two{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
+            zero{"سÙ\88Ù\84 Ø¬Ø¯Ù\8aد Ø§Ù\84بÙ\8aرÙ\88"}\r
         }\r
         PGK{\r
             few{"كينا بابوا غينيا الجديدة"}\r
@@ -2405,5 +2405,5 @@ ar{
         two{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 294ad5e..fd1e89c 100644 (file)
@@ -4,5 +4,5 @@ ar_AE{
     Currencies%narrow{\r
         BND{"$"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 53241ee..2d771f9 100644 (file)
@@ -7,5 +7,5 @@ ar_DJ{
             "فرنك جيبوتي",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 435a54d..6ed177f 100644 (file)
@@ -7,5 +7,5 @@ ar_ER{
             "ناكفا أريتري",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 53ec815..0dcf349 100644 (file)
@@ -7,5 +7,5 @@ ar_LB{
             "جنيه سوداني",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/curr/ar_SA.txt b/source/data/curr/ar_SA.txt
deleted file mode 100644 (file)
index 00baa1f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-/**\r
- * generated alias target\r
- */\r
-ar_SA{\r
-    ___{""}\r
-}\r
index e9ab189..64ceba2 100644 (file)
@@ -7,5 +7,5 @@ ar_SO{
             "شلن صومالي",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c23e2ba..38d6bda 100644 (file)
@@ -11,5 +11,5 @@ ar_SS{
             "جنيه جنوب السودان",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/curr/ars.txt b/source/data/curr/ars.txt
deleted file mode 100644 (file)
index 9bb22b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar_SA"}\r
-}\r
index 6b8c1a8..b73ce92 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7c5886b..2b02fb7 100644 (file)
@@ -227,5 +227,5 @@ asa{
             "dola ya Dhimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46753ff..945bf5f 100644 (file)
@@ -780,7 +780,7 @@ ast{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol peruanu",\r
+            "sol nuevu peruanu",\r
         }\r
         PES{\r
             "PES",\r
@@ -2076,8 +2076,8 @@ ast{
             other{"intis peruanos"}\r
         }\r
         PEN{\r
-            one{"sol peruanu"}\r
-            other{"soles peruanos"}\r
+            one{"sol nuevu peruanu"}\r
+            other{"soles nuevos peruanos"}\r
         }\r
         PES{\r
             one{"sol peruanu (1863–1965)"}\r
@@ -2496,5 +2496,5 @@ ast{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 975c4f8..c7dd2b6 100644 (file)
@@ -704,11 +704,11 @@ az{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru Solu",\r
+            "Peru Nuevo Solu",\r
         }\r
         PES{\r
             "PES",\r
-            "Peru Solu (1863–1965)",\r
+            "Peru Solu",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1865,12 +1865,12 @@ az{
             other{"Peru inti"}\r
         }\r
         PEN{\r
-            one{"Peru solu"}\r
-            other{"Peru solu"}\r
+            one{"Peru Nuevo solu"}\r
+            other{"Peru Nuevo solu"}\r
         }\r
         PES{\r
-            one{"Peru solu (1863–1965)"}\r
-            other{"Peru solu (1863–1965)"}\r
+            one{"Peru solu"}\r
+            other{"Peru solu"}\r
         }\r
         PGK{\r
             one{"Papua Yeni Qvineya kinası"}\r
@@ -2229,5 +2229,5 @@ az{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 0218992..087b336 100644 (file)
@@ -11,5 +11,5 @@ az_Cyrl{
     Currencies%variant{\r
         AZN{"ман."}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c0b75a..4ce2adb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 761767e..a80b696 100644 (file)
@@ -227,5 +227,5 @@ bas{
             "Dɔ̀lâr sìmbàbwê",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d284974..4bc913b 100644 (file)
@@ -424,7 +424,7 @@ be{
         }\r
         PEN{\r
             "PEN",\r
-            "перуанскі соль",\r
+            "перуанскі новы соль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1358,10 +1358,10 @@ be{
             other{"панамскага бальбоа"}\r
         }\r
         PEN{\r
-            few{"перуанскія солі"}\r
-            many{"перуанскіх соляў"}\r
-            one{"перуанскі соль"}\r
-            other{"перуанскага соля"}\r
+            few{"перуанскія новыя солі"}\r
+            many{"перуанскіх новых соляў"}\r
+            one{"перуанскі новы соль"}\r
+            other{"перуанскага новага соля"}\r
         }\r
         PGK{\r
             few{"кіна"}\r
@@ -1670,5 +1670,5 @@ be{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.66"}\r
 }\r
index 0c1ba7a..0ed0154 100644 (file)
@@ -7,5 +7,5 @@ bem{
             "ZMW",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2d925f0..7d3fe36 100644 (file)
@@ -223,5 +223,5 @@ bez{
             "Lupila lwa Huzimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b273a7e..2e7f639 100644 (file)
@@ -688,11 +688,11 @@ bg{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански сол",\r
+            "Перуански нов сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол (1863–1965)",\r
+            "Перуански сол",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1771,8 +1771,8 @@ bg{
             other{"панамски балбоа"}\r
         }\r
         PEN{\r
-            one{"перуански сол"}\r
-            other{"перуански сола"}\r
+            one{"перуански нов сол"}\r
+            other{"перуански нови сола"}\r
         }\r
         PES{\r
             one{"перуански сол (1863–1965)"}\r
@@ -2095,5 +2095,5 @@ bg{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.33.75"}\r
+    Version{"2.1.30.6"}\r
 }\r
index 0faeccf..5c0e4d4 100644 (file)
@@ -227,5 +227,5 @@ bm{
             "zimbabuwe Dolar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index da2b3bc..8cbb519 100644 (file)
@@ -708,11 +708,11 @@ bn{
         }\r
         PEN{\r
             "PEN",\r
-            "পেরুভিয়ান সোল",\r
+            "পেরুভিয়ান সোল নুয়েভো",\r
         }\r
         PES{\r
             "PES",\r
-            "পেরুভিয়ান সোল (1863–1965)",\r
+            "পেরুভিয়ান সোল",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1612,12 +1612,8 @@ bn{
             other{"পানামা বেলবোয়া"}\r
         }\r
         PEN{\r
-            one{"পেরুভিয়ান সোল"}\r
-            other{"পেরুভিয়ান সোল"}\r
-        }\r
-        PES{\r
-            one{"পেরুভিয়ান সোল (1863–1965)"}\r
-            other{"পেরুভিয়ান সোল (1863–1965)"}\r
+            one{"পেরুভিয়ান সোল নুয়েভো"}\r
+            other{"পেরুভিয়ান সোল নুয়েভো"}\r
         }\r
         PGK{\r
             one{"পাপুয়া নিউ গিনিয়ান কিনা"}\r
@@ -1820,5 +1816,5 @@ bn{
             other{"জাম্বিয়ান কওয়াচা"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
 }\r
index 978e8f6..af29f2d 100644 (file)
@@ -19,5 +19,5 @@ bo{
             "མ་རྟོགས་པའི་ནུས་མེད་དངུལ་ལོར",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 866f7c5..902d4f3 100644 (file)
@@ -7,5 +7,5 @@ bo_IN{
             "ཡུ་ཨན་",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3f29fc4..b58a9e5 100644 (file)
@@ -780,7 +780,7 @@ br{
         }\r
         PEN{\r
             "PEN",\r
-            "sol Perou",\r
+            "nuevo sol Perou",\r
         }\r
         PES{\r
             "PES",\r
@@ -2475,11 +2475,11 @@ br{
             two{"valboa Panamá"}\r
         }\r
         PEN{\r
-            few{"sol Perou"}\r
-            many{"sol Perou"}\r
-            one{"sol Perou"}\r
-            other{"sol Perou"}\r
-            two{"sol Perou"}\r
+            few{"nuevo sol Perou"}\r
+            many{"nuevo sol Perou"}\r
+            one{"nuevo sol Perou"}\r
+            other{"nuevo sol Perou"}\r
+            two{"nuevo sol Perou"}\r
         }\r
         PES{\r
             few{"sol Perou (1863–1965)"}\r
@@ -3105,5 +3105,5 @@ br{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 74374fe..a26b134 100644 (file)
@@ -704,11 +704,11 @@ brx{
         }\r
         PEN{\r
             "PEN",\r
-            "पेरुवाई सोल",\r
+            "पà¥\87रà¥\81वाà¤\88 à¤¨à¤¯à¤¾ à¤¸à¥\8bल",\r
         }\r
         PES{\r
             "PES",\r
-            "पेरुवाई सोल (1863–1965)",\r
+            "पेरुवाई सोल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1075,5 +1075,5 @@ brx{
             "ज़ीम्बाबवेई डॉलर",\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 055ae63..9fdfa83 100644 (file)
@@ -740,7 +740,7 @@ bs{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruanski sol",\r
+            "Peruanski novi sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2163,9 +2163,9 @@ bs{
             other{"peruanska inta"}\r
         }\r
         PEN{\r
-            few{"peruanska sola"}\r
-            one{"peruanski sol"}\r
-            other{"peruanskih sola"}\r
+            few{"peruanska nova sola"}\r
+            one{"peruanski novi sol"}\r
+            other{"peruanskih novih sola"}\r
         }\r
         PES{\r
             few{"peruanska sola (1863–1965)"}\r
@@ -2673,5 +2673,5 @@ bs{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index addd240..bf3ec0a 100644 (file)
@@ -717,11 +717,11 @@ bs_Cyrl{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански сол",\r
+            "Перуански нуево сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол (1863–1965)",\r
+            "Перуански сол",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2004,15 +2004,15 @@ bs_Cyrl{
             other{"перувијских интија"}\r
         }\r
         PEN{\r
+            few{"перуанска нуево сола"}\r
+            one{"перуански нуево сол"}\r
+            other{"перуанских нуево сола"}\r
+        }\r
+        PES{\r
             few{"перуанска сола"}\r
             one{"перуански сол"}\r
             other{"перуанских сола"}\r
         }\r
-        PES{\r
-            few{"перуанска сола (1863–1965)"}\r
-            one{"перуански сол (1863–1965)"}\r
-            other{"перуанских сола (1863–1965)"}\r
-        }\r
         PGK{\r
             few{"папуа ново гвинејска долара"}\r
             one{"папуа ново гвинејски долар"}\r
@@ -2494,5 +2494,5 @@ bs_Cyrl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.72"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 972dc01..20b4126 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a17441e..efeaa89 100644 (file)
@@ -777,11 +777,11 @@ ca{
         }\r
         PEN{\r
             "PEN",\r
-            "sol peruà",\r
+            "nou sol peruà",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruà (1863–1965)",\r
+            "sol peruà",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2057,12 +2057,12 @@ ca{
             other{"intis peruans"}\r
         }\r
         PEN{\r
-            one{"sol peruà"}\r
-            other{"sols peruans"}\r
+            one{"nou sol peruà"}\r
+            other{"nous sols peruans"}\r
         }\r
         PES{\r
-            one{"sol peruà (1863–1965)"}\r
-            other{"sols peruans (1863–1965)"}\r
+            one{"sol peruà"}\r
+            other{"sols peruans"}\r
         }\r
         PGK{\r
             one{"kina de Papua Nova Guinea"}\r
@@ -2469,5 +2469,5 @@ ca{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 474ef88..196a270 100644 (file)
@@ -7,5 +7,5 @@ ca_FR{
             "franc francès",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bd679e2..4fb41d1 100644 (file)
@@ -424,7 +424,7 @@ ce{
         }\r
         PEN{\r
             "PEN",\r
-            "Перун соль",\r
+            "Перун керла соль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1146,8 +1146,8 @@ ce{
             other{"Панаман бальбоаш"}\r
         }\r
         PEN{\r
-            one{"Перун соль"}\r
-            other{"Перун солаш"}\r
+            one{"Перун керла соль"}\r
+            other{"Перун керла солаш"}\r
         }\r
         PGK{\r
             one{"Папуа — Керла Гвинейн кина"}\r
@@ -1354,5 +1354,5 @@ ce{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 372efa3..7d17075 100644 (file)
@@ -223,5 +223,5 @@ cgg{
             "Doora ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d2ecad7..3bfb26a 100644 (file)
@@ -1355,5 +1355,5 @@ chr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 77d82e3..f0d8d1f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index b81266c..567e957 100644 (file)
@@ -776,7 +776,7 @@ cs{
         }\r
         PEN{\r
             "PEN",\r
-            "peruánský sol",\r
+            "peruánský nový sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2441,10 +2441,10 @@ cs{
             other{"peruánských inti"}\r
         }\r
         PEN{\r
-            few{"peruánské soly"}\r
-            many{"peruánského solu"}\r
-            one{"peruánský sol"}\r
-            other{"peruánských solů"}\r
+            few{"peruánské nové soly"}\r
+            many{"peruánského nového solu"}\r
+            one{"peruánský nový sol"}\r
+            other{"peruánských nových solů"}\r
         }\r
         PES{\r
             few{"peruánské soly (1863–1965)"}\r
@@ -3053,5 +3053,5 @@ cs{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index e0b1213..f528e7a 100644 (file)
@@ -728,7 +728,7 @@ cy{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol Periw",\r
+            "Nuevo Sol Periw",\r
         }\r
         PES{\r
             "PES",\r
@@ -2424,12 +2424,12 @@ cy{
             zero{"inti Periw"}\r
         }\r
         PEN{\r
-            few{"sol Periw"}\r
-            many{"sol Periw"}\r
-            one{"sol Periw"}\r
-            other{"sol Periw"}\r
-            two{"sol Periw"}\r
-            zero{"sol Periw"}\r
+            few{"nuevo sol Periw"}\r
+            many{"nuevo sol Periw"}\r
+            one{"nuevo sol Periw"}\r
+            other{"nuevo sol Periw"}\r
+            two{"nuevo sol Periw"}\r
+            zero{"nuevo sol Periw"}\r
         }\r
         PES{\r
             few{"sol Periw (1863–1965)"}\r
@@ -3032,5 +3032,5 @@ cy{
         two{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
 }\r
index a974828..1268ac3 100644 (file)
@@ -688,15 +688,15 @@ da{
         }\r
         PEI{\r
             "PEI",\r
-            "peruviansk inti",\r
+            "Peruviansk inti",\r
         }\r
         PEN{\r
             "PEN",\r
-            "peruviansk sol",\r
+            "peruviansk nuevo sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruviansk sol (1863–1965)",\r
+            "Peruviansk sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1861,16 +1861,16 @@ da{
             other{"panamanske balboa"}\r
         }\r
         PEI{\r
-            one{"peruviansk inti"}\r
-            other{"peruvianske inti"}\r
+            one{"Peruviansk inti"}\r
+            other{"Peruvianske inti"}\r
         }\r
         PEN{\r
-            one{"peruviansk sol"}\r
-            other{"peruvianske soles"}\r
+            one{"peruviansk nuevo sol"}\r
+            other{"peruvianske nuevos soles"}\r
         }\r
         PES{\r
-            one{"peruviansk sol (1863–1965)"}\r
-            other{"peruvianske sol (1863–1965)"}\r
+            one{"Peruviansk sol (1863–1965)"}\r
+            other{"Peruvianske sol (1863–1965)"}\r
         }\r
         PGK{\r
             one{"papuansk kina"}\r
@@ -2217,5 +2217,5 @@ da{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 7bdb437..1a11973 100644 (file)
@@ -223,5 +223,5 @@ dav{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a9267cd..4cbaa6d 100644 (file)
@@ -2495,5 +2495,5 @@ de{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 10c3b31..c47d2b0 100644 (file)
@@ -21,5 +21,5 @@ de_CH{
             other{"Weissrussische Rubel (2000–2016)"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 668065c..b19ad50 100644 (file)
@@ -7,5 +7,5 @@ de_LI{
             "Euro",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 16715da..7f1631f 100644 (file)
@@ -12,5 +12,5 @@ de_LU{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 77b7183..b9162a1 100644 (file)
@@ -227,5 +227,5 @@ dje{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b46b5b2..bbfb45c 100644 (file)
@@ -532,7 +532,7 @@ dsb{
         }\r
         PEN{\r
             "PEN",\r
-            "peruski sol",\r
+            "peruski nowy sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1536,10 +1536,10 @@ dsb{
             two{"panamaskej balboa"}\r
         }\r
         PEN{\r
-            few{"peruske sole"}\r
-            one{"peruski sol"}\r
-            other{"peruskich solow"}\r
-            two{"peruskej sola"}\r
+            few{"peruske nowe sole"}\r
+            one{"peruski nowy sol"}\r
+            other{"peruskich nowych solow"}\r
+            two{"peruskej nowej sola"}\r
         }\r
         PGK{\r
             few{"papua-neuguinejske kiny"}\r
@@ -1854,5 +1854,5 @@ dsb{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index ddd9f57..05959ba 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fd302c8..0c85db0 100644 (file)
@@ -119,5 +119,5 @@ dyo{
             "seefa yati BCEAO",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b5c41eb..5e862ed 100644 (file)
@@ -303,5 +303,5 @@ dz{
             "སཱའུཐ་ ཨཕ་རི་ཀ་གི་དངུལ་ རཱནད",\r
         }\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.29.61"}\r
 }\r
index 117c560..9f6e4dd 100644 (file)
@@ -223,5 +223,5 @@ ebu{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 25a9570..b211972 100644 (file)
@@ -748,11 +748,11 @@ ee{
         }\r
         PEN{\r
             "PEN",\r
-            "peruga sol",\r
+            "peruga nuevo sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruga sol (1863–1965)",\r
+            "peruga nuevo sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1923,12 +1923,12 @@ ee{
             other{"peruga inti"}\r
         }\r
         PEN{\r
-            one{"peruga sol"}\r
-            other{"peruga sol"}\r
+            one{"peruga nuevo sol"}\r
+            other{"peruga nuevo sol"}\r
         }\r
         PES{\r
-            one{"peruga sol (1863–1965)"}\r
-            other{"peruga sol (1863–1965)"}\r
+            one{"peruga nuevo sol (1863–1965)"}\r
+            other{"peruga nuevo sol (1863–1965)"}\r
         }\r
         PGK{\r
             one{"papua new giniga kina"}\r
@@ -2331,5 +2331,5 @@ ee{
         one{"{1} {0}"}\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index a994c04..76aab5e 100644 (file)
@@ -705,11 +705,11 @@ el{
         }\r
         PEN{\r
             "PEN",\r
-            "Σολ Περού",\r
+            "Î\9dέο Î£Î¿Î» Î ÎµÏ\81οÏ\8d",\r
         }\r
         PES{\r
             "PES",\r
-            "Σολ Περού (1863–1965)",\r
+            "Σολ Περού",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1861,12 +1861,12 @@ el{
             other{"ίντι Περού"}\r
         }\r
         PEN{\r
-            one{"σολ Περού"}\r
-            other{"Σολ Περού"}\r
+            one{"νέο σολ Περού"}\r
+            other{"νέα Î£Î¿Î» Î ÎµÏ\81οÏ\8d"}\r
         }\r
         PES{\r
-            one{"σολ Περού (1863–1965)"}\r
-            other{"σολ Περού (1863–1965)"}\r
+            one{"σολ Περού"}\r
+            other{"σολ Περού"}\r
         }\r
         PGK{\r
             one{"κίνα Παπούας Νέας Γουινέας"}\r
@@ -2233,5 +2233,5 @@ el{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index da96daa..0030ae0 100644 (file)
@@ -308,7 +308,7 @@ en{
         }\r
         CZK{\r
             "CZK",\r
-            "Czech Koruna",\r
+            "Czech Republic Koruna",\r
         }\r
         DDM{\r
             "DDM",\r
@@ -1501,8 +1501,8 @@ en{
             other{"Cypriot pounds"}\r
         }\r
         CZK{\r
-            one{"Czech koruna"}\r
-            other{"Czech korunas"}\r
+            one{"Czech Republic koruna"}\r
+            other{"Czech Republic korunas"}\r
         }\r
         DDM{\r
             one{"East German mark"}\r
@@ -2393,5 +2393,5 @@ en{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.50"}\r
 }\r
index e6b67eb..c4b0c9e 100644 (file)
@@ -69,5 +69,5 @@ en_001{
             other{"Tajikistani roubles"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 7f3f704..e902e0a 100644 (file)
@@ -13,5 +13,5 @@ en_150{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0d10d9a..fd34e39 100644 (file)
@@ -8,5 +8,5 @@ en_AG{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c92e1fa..f48a52f 100644 (file)
@@ -8,5 +8,5 @@ en_AI{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09171c4..b4edb3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20920d0..9d4d5c5 100644 (file)
@@ -200,5 +200,5 @@ en_AU{
             other{"Samoan talas"}\r
         }\r
     }\r
-    Version{"2.1.32.62"}\r
+    Version{"2.1.30.50"}\r
 }\r
index 338180b..c3dbe09 100644 (file)
@@ -8,5 +8,5 @@ en_BB{
             "Barbadian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7065545..c967ad1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 48e9892..5330b71 100644 (file)
@@ -7,5 +7,5 @@ en_BI{
             "Burundian Franc",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a700b64..40bc027 100644 (file)
@@ -8,5 +8,5 @@ en_BM{
             "Bermudan Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 71da5b4..3421c52 100644 (file)
@@ -8,5 +8,5 @@ en_BS{
             "Bahamian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index db7face..261289e 100644 (file)
@@ -8,5 +8,5 @@ en_BW{
             "Botswanan Pula",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index f776d1e..1746e55 100644 (file)
@@ -8,5 +8,5 @@ en_BZ{
             "Belize Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c6f5f29..878978e 100644 (file)
@@ -14,5 +14,5 @@ en_CA{
             other{"Israeli new sheqels"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index d5a9e5d..7eebf48 100644 (file)
@@ -8,5 +8,5 @@ en_CC{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f2d948..d055587 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 526cd70..f8d7ecd 100644 (file)
@@ -8,5 +8,5 @@ en_CK{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5aacc7b..e0ae421 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bd09b6d..e5e9d95 100644 (file)
@@ -8,5 +8,5 @@ en_CX{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46da087..81d8657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d2d71a..a91a9c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d758dd..af3ee11 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ccd40c9..5a9bd9f 100644 (file)
@@ -8,5 +8,5 @@ en_DK{
             "Danish Krone",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 39aef87..1411787 100644 (file)
@@ -8,5 +8,5 @@ en_DM{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 77949ac..d0479ac 100644 (file)
@@ -8,5 +8,5 @@ en_ER{
             "Eritrean Nakfa",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f699cc1..12aebe3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1fbdccc..b3ca6b8 100644 (file)
@@ -8,5 +8,5 @@ en_FJ{
             "Fijian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0e518be..a0dbf27 100644 (file)
@@ -12,5 +12,5 @@ en_FK{
             "British Pound",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eab91ca..78ffc47 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a57c80..d57d893 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.24"}\r
 }\r
index c11e18c..11fd184 100644 (file)
@@ -8,5 +8,5 @@ en_GD{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 602db61..ba69385 100644 (file)
@@ -14,5 +14,5 @@ en_GG{
             other{"UK pounds"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d6f700a..e7434b2 100644 (file)
@@ -8,5 +8,5 @@ en_GH{
             "Ghanaian Cedi",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 47475c7..4671a01 100644 (file)
@@ -12,5 +12,5 @@ en_GI{
             "Gibraltar Pound",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index aefcdc8..e10fb03 100644 (file)
@@ -8,5 +8,5 @@ en_GM{
             "Gambian Dalasi",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5e9190d..f939e99 100644 (file)
@@ -8,5 +8,5 @@ en_GY{
             "Guyanaese Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a04a10..7c42f22 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 18bb2f3..acfab3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 76bee45..1500279 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7a089d..9cfc107 100644 (file)
@@ -14,5 +14,5 @@ en_IM{
             other{"UK pounds"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0ae302f..1c73a40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2b8ba3f..73736a0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1d0587c..ef29a3a 100644 (file)
@@ -14,5 +14,5 @@ en_JE{
             other{"UK pounds"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a377865..2b02c35 100644 (file)
@@ -8,5 +8,5 @@ en_JM{
             "Jamaican Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 737e4b2..c9e4e58 100644 (file)
@@ -8,5 +8,5 @@ en_KE{
             "Kenyan Shilling",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cbb82b2..ca55d28 100644 (file)
@@ -8,5 +8,5 @@ en_KI{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b0c6ab9..3687a92 100644 (file)
@@ -8,5 +8,5 @@ en_KN{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 32875f9..5f2e087 100644 (file)
@@ -8,5 +8,5 @@ en_KY{
             "Cayman Islands Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 15a482f..80e2970 100644 (file)
@@ -8,5 +8,5 @@ en_LC{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bba2d7b..4c328d0 100644 (file)
@@ -8,5 +8,5 @@ en_LR{
             "Liberian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7e13bca..ef2e445 100644 (file)
@@ -8,5 +8,5 @@ en_LS{
             "South African Rand",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7132cbd..35f2701 100644 (file)
@@ -8,5 +8,5 @@ en_MG{
             "Malagasy Ariary",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b57ad0d..2246430 100644 (file)
@@ -8,5 +8,5 @@ en_MO{
             "Macanese Pataca",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index af0df1f..0180adf 100644 (file)
@@ -8,5 +8,5 @@ en_MS{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7dee04e..42c2de5 100644 (file)
@@ -8,5 +8,5 @@ en_MT{
             "British Pound",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9183a07..4e54f6e 100644 (file)
@@ -8,5 +8,5 @@ en_MU{
             "Mauritian Rupee",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e5f5d6e..cfa7324 100644 (file)
@@ -8,5 +8,5 @@ en_MW{
             "Malawian Kwacha",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1f42611..e061b9c 100644 (file)
@@ -8,5 +8,5 @@ en_MY{
             "Malaysian Ringgit",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9c09ad6..dc500f8 100644 (file)
@@ -8,5 +8,5 @@ en_NA{
             "Namibian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0354665..4032750 100644 (file)
@@ -8,5 +8,5 @@ en_NF{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 708edd6..8df4a66 100644 (file)
@@ -8,5 +8,5 @@ en_NG{
             "Nigerian Naira",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d0d0cd..21bbdc9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a8d731..d1cac31 100644 (file)
@@ -8,5 +8,5 @@ en_NR{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 852e226..8804d59 100644 (file)
@@ -8,5 +8,5 @@ en_NU{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 05752b7..7217259 100644 (file)
@@ -8,5 +8,5 @@ en_NZ{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4248db9..14d8fb8 100644 (file)
@@ -8,5 +8,5 @@ en_PG{
             "Papua New Guinean Kina",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8e0939d..54a3d13 100644 (file)
@@ -8,5 +8,5 @@ en_PH{
             "Philippine Peso",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 426a67b..d6e574c 100644 (file)
@@ -8,5 +8,5 @@ en_PK{
             "Pakistani Rupee",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eb3b036..c44d01f 100644 (file)
@@ -8,5 +8,5 @@ en_PN{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30541dc..0af3d13 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index baee0e1..9038cf3 100644 (file)
@@ -8,5 +8,5 @@ en_RW{
             "Rwandan Franc",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f0b3d68..f796d25 100644 (file)
@@ -8,5 +8,5 @@ en_SB{
             "Solomon Islands Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 95dccc3..6c88ac5 100644 (file)
@@ -8,5 +8,5 @@ en_SC{
             "Seychellois Rupee",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87a33e2..6206b27 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fb0e8b..3f9e032 100644 (file)
@@ -8,5 +8,5 @@ en_SE{
             "Swedish Krona",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 59612d6..7fe7320 100644 (file)
@@ -8,5 +8,5 @@ en_SG{
             "Singapore Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 0d5b103..ace4eae 100644 (file)
@@ -12,5 +12,5 @@ en_SH{
             "St. Helena Pound",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a259492..fedf1c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2f85b93..f6db8b8 100644 (file)
@@ -8,5 +8,5 @@ en_SL{
             "Sierra Leonean Leone",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e6ce7a7..04cdeef 100644 (file)
@@ -12,5 +12,5 @@ en_SS{
             "South Sudanese Pound",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 05b4580..2c62c8d 100644 (file)
@@ -8,5 +8,5 @@ en_SX{
             "Netherlands Antillean Guilder",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8d4b873..66df7d4 100644 (file)
@@ -8,5 +8,5 @@ en_SZ{
             "Swazi Lilangeni",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 852eb0f..eaabbe1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d54759a..a97fe8d 100644 (file)
@@ -8,5 +8,5 @@ en_TK{
             "New Zealand Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35c561e..a2d6a01 100644 (file)
@@ -8,5 +8,5 @@ en_TO{
             "Tongan Paʻanga",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 273a7c9..ea2d7b5 100644 (file)
@@ -8,5 +8,5 @@ en_TT{
             "Trinidad & Tobago Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7296e5c..740638d 100644 (file)
@@ -8,5 +8,5 @@ en_TV{
             "Australian Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 71ccf96..45913a3 100644 (file)
@@ -8,5 +8,5 @@ en_TZ{
             "Tanzanian Shilling",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 06e3946..1f90802 100644 (file)
@@ -8,5 +8,5 @@ en_UG{
             "Ugandan Shilling",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e84d9f5..5959580 100644 (file)
@@ -8,5 +8,5 @@ en_VC{
             "East Caribbean Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba6619b..e6a295b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2fe5232..efdb0ae 100644 (file)
@@ -8,5 +8,5 @@ en_VU{
             "Vanuatu Vatu",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c3b96f4..923004a 100644 (file)
@@ -8,5 +8,5 @@ en_WS{
             "Samoan Tala",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 097cdd6..9e5760f 100644 (file)
@@ -8,5 +8,5 @@ en_ZA{
             "South African Rand",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.64"}\r
 }\r
index e84000e..6a1113d 100644 (file)
@@ -8,5 +8,5 @@ en_ZM{
             "Zambian Kwacha",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bb5dbed..e725848 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 663d25a..1e6bc3f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a46ad4e..0efb933 100644 (file)
@@ -708,7 +708,7 @@ es{
         }\r
         PEN{\r
             "PEN",\r
-            "sol peruano",\r
+            "nuevo sol peruano",\r
         }\r
         PES{\r
             "PES",\r
@@ -1853,8 +1853,8 @@ es{
             other{"intis peruanos"}\r
         }\r
         PEN{\r
-            one{"sol peruano"}\r
-            other{"soles peruanos"}\r
+            one{"nuevo sol peruano"}\r
+            other{"nuevos soles peruanos"}\r
         }\r
         PES{\r
             one{"sol peruano (1863–1965)"}\r
@@ -2189,5 +2189,5 @@ es{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.80"}\r
 }\r
index beba07e..b040e6b 100644 (file)
@@ -45,5 +45,5 @@ es_419{
             other{"(moneda desconocida)"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index cc7e1b9..f450ca5 100644 (file)
@@ -15,5 +15,5 @@ es_AR{
     Currencies%variant{\r
         GEL{"GEL"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 909bde8..3f0fe1b 100644 (file)
@@ -8,5 +8,5 @@ es_BO{
             "boliviano",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 7d86e7f..70eb456 100644 (file)
@@ -8,5 +8,5 @@ es_BR{
             "real brasileño",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/curr/es_BZ.txt b/source/data/curr/es_BZ.txt
deleted file mode 100644 (file)
index 284c50a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-es_BZ{\r
-    %%Parent{"es_419"}\r
-    Currencies{\r
-        BZD{\r
-            "$",\r
-            "dólar beliceño",\r
-        }\r
-    }\r
-    Version{"2.1.32.37"}\r
-}\r
index 6fed4f0..fc0d25e 100644 (file)
@@ -12,5 +12,5 @@ es_CL{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index b9f54b9..6f1102d 100644 (file)
@@ -12,5 +12,5 @@ es_CO{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index a928b27..f06d913 100644 (file)
@@ -8,5 +8,5 @@ es_CR{
             "colón costarricense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 18c5b70..d03f40e 100644 (file)
@@ -12,5 +12,5 @@ es_CU{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f5a6ec5..6ace7ef 100644 (file)
@@ -12,5 +12,5 @@ es_DO{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e0632c6..e50308c 100644 (file)
@@ -8,5 +8,5 @@ es_EC{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 5c0abf2..7068aa4 100644 (file)
@@ -7,5 +7,5 @@ es_GQ{
             "franco CFA BEAC",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0665107..933e463 100644 (file)
@@ -18,5 +18,5 @@ es_GT{
         one{"{1} {0}"}\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 0f0a261..3f2ff4e 100644 (file)
@@ -8,5 +8,5 @@ es_HN{
             "lempira hondureño",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 6401542..2b3bfd4 100644 (file)
@@ -441,5 +441,5 @@ es_MX{
             other{"kwachas zambianos"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 2f9f32c..a4630d1 100644 (file)
@@ -8,5 +8,5 @@ es_NI{
             "córdoba nicaragüense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 8da4228..098ba7f 100644 (file)
@@ -8,5 +8,5 @@ es_PA{
             "balboa panameño",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2dc0bfa..cf9ad79 100644 (file)
@@ -5,8 +5,8 @@ es_PE{
     Currencies{\r
         PEN{\r
             "S/",\r
-            "sol peruano",\r
+            "nuevo sol peruano",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index a19010a..ca5e21e 100644 (file)
@@ -7,5 +7,5 @@ es_PH{
             "peso filipino",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2acfee1..db35509 100644 (file)
@@ -8,5 +8,5 @@ es_PR{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 7abfbf1..ac95396 100644 (file)
@@ -8,5 +8,5 @@ es_PY{
             "guaraní paraguayo",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 84fbab7..26bfc68 100644 (file)
@@ -8,5 +8,5 @@ es_SV{
             "dólar estadounidense",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 435b52a..92b3c30 100644 (file)
@@ -15,5 +15,5 @@ es_US{
     Currencies%narrow{\r
         RON{"lei"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e811437..fe837ee 100644 (file)
@@ -12,5 +12,5 @@ es_UY{
             "peso uruguayo",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 477bd3c..2e834fe 100644 (file)
@@ -11,5 +11,5 @@ es_VE{
     Currencies%narrow{\r
         VEF{"Bs."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 97c4ec2..cdaf692 100644 (file)
@@ -705,7 +705,7 @@ et{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruu soll",\r
+            "Peruu uus soll",\r
         }\r
         PES{\r
             "PES",\r
@@ -1814,8 +1814,8 @@ et{
             other{"Panama balboad"}\r
         }\r
         PEN{\r
-            one{"Peruu soll"}\r
-            other{"Peruu solli"}\r
+            one{"Peruu uus soll"}\r
+            other{"Peruu uut solli"}\r
         }\r
         PES{\r
             one{"Peruu soll (1863–1965)"}\r
@@ -2150,5 +2150,5 @@ et{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 768704d..0b541f3 100644 (file)
@@ -445,7 +445,7 @@ eu{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruko sol",\r
+            "Peruko sol berria",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1180,8 +1180,8 @@ eu{
             other{"Panamako balboa"}\r
         }\r
         PEN{\r
-            one{"Peruko sol"}\r
-            other{"Peruko sol"}\r
+            one{"Peruko sol berri"}\r
+            other{"Peruko sol berri"}\r
         }\r
         PGK{\r
             one{"Papua Ginea Berriko kina"}\r
@@ -1388,5 +1388,5 @@ eu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index 2e7d330..f8864e0 100644 (file)
@@ -227,5 +227,5 @@ ewo{
             "Dolár yá Zimbabwé",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bbeefc2..7021109 100644 (file)
@@ -1637,5 +1637,5 @@ fa{
             other{"کواچای زامبیا"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
 }\r
index 8ecc696..75e6993 100644 (file)
@@ -63,5 +63,5 @@ fa_AF{
             "دالر امریکا",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.44"}\r
 }\r
index e030826..a7881b7 100644 (file)
@@ -223,5 +223,5 @@ ff{
             "Dolaar Simbaabuwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8272c61..6e36029 100644 (file)
@@ -7,5 +7,5 @@ ff_GN{
             "GNF",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9e0ba74..8b576e4 100644 (file)
@@ -7,5 +7,5 @@ ff_MR{
             "Ugiyya Muritani",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e23021e..b9f883e 100644 (file)
@@ -780,7 +780,7 @@ fi{
         }\r
         PEN{\r
             "PEN",\r
-            "Perun sol",\r
+            "Perun uusi sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2073,8 +2073,8 @@ fi{
             other{"Perun intiä"}\r
         }\r
         PEN{\r
-            one{"Perun sol"}\r
-            other{"Perun solia"}\r
+            one{"Perun uusi sol"}\r
+            other{"Perun uutta solia"}\r
         }\r
         PES{\r
             one{"Perun sol (1863–1965)"}\r
@@ -2493,5 +2493,5 @@ fi{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.88"}\r
 }\r
index 67cfbdc..89f1171 100644 (file)
@@ -448,7 +448,7 @@ fil{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruvian Sol",\r
+            "Peruvian Nuevo Sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1196,8 +1196,8 @@ fil{
             other{"Balboas ng Panama"}\r
         }\r
         PEN{\r
-            one{"Peruvian sol"}\r
-            other{"Peruvian soles"}\r
+            one{"Peruvian nuevo sol"}\r
+            other{"Peruvian nuevos soles"}\r
         }\r
         PGK{\r
             one{"Papua New Guinean kina"}\r
@@ -1404,5 +1404,5 @@ fil{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2cc6c54..3d3aef4 100644 (file)
@@ -424,7 +424,7 @@ fo{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru sol",\r
+            "Peru nuevo sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1163,8 +1163,8 @@ fo{
             other{"Panama balboa"}\r
         }\r
         PEN{\r
-            one{"Peru sol"}\r
-            other{"Peru sol"}\r
+            one{"Peru nuevo sol"}\r
+            other{"Peru nuevo sol"}\r
         }\r
         PGK{\r
             one{"Papua Nýguinea kina"}\r
@@ -1387,5 +1387,5 @@ fo{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index dba1e64..08202db 100644 (file)
@@ -7,5 +7,5 @@ fo_DK{
             "donsk króna",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fcb778..e215b07 100644 (file)
@@ -712,11 +712,11 @@ fr{
         }\r
         PEN{\r
             "PEN",\r
-            "sol péruvien",\r
+            "nouveau sol péruvien",\r
         }\r
         PES{\r
             "PES",\r
-            "sol péruvien (1863–1985)",\r
+            "sol péruvien",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1921,8 +1921,8 @@ fr{
             other{"intis péruviens"}\r
         }\r
         PEN{\r
-            one{"sol péruvien"}\r
-            other{"sols péruviens"}\r
+            one{"nouveau sol péruvien"}\r
+            other{"nouveaux sols péruviens"}\r
         }\r
         PES{\r
             one{"sol péruvien (1863–1985)"}\r
@@ -2321,5 +2321,5 @@ fr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 35b99de..63470cd 100644 (file)
@@ -7,5 +7,5 @@ fr_BI{
             "franc burundais",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0ea7177..5f4a4af 100644 (file)
@@ -166,5 +166,5 @@ fr_CA{
             other{"(devise inconnue)"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 071897c..b3fc029 100644 (file)
@@ -7,5 +7,5 @@ fr_CD{
             "franc congolais",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 55bfc29..e6bd429 100644 (file)
@@ -7,5 +7,5 @@ fr_DJ{
             "franc djiboutien",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a0af163..b46ccd1 100644 (file)
@@ -7,5 +7,5 @@ fr_DZ{
             "dinar algérien",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8f3969d..d36e781 100644 (file)
@@ -7,5 +7,5 @@ fr_GN{
             "franc guinéen",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d091e9b..20b5299 100644 (file)
@@ -7,5 +7,5 @@ fr_HT{
             "gourde haïtienne",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.63"}\r
 }\r
index dccae96..559e575 100644 (file)
@@ -7,5 +7,5 @@ fr_KM{
             "franc comorien",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c5d994d..fd12c2e 100644 (file)
@@ -11,5 +11,5 @@ fr_LU{
             "franc luxembourgeois",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index db05262..6d7fd17 100644 (file)
@@ -7,5 +7,5 @@ fr_MG{
             "ariary malgache",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 062186a..607e583 100644 (file)
@@ -7,5 +7,5 @@ fr_MR{
             "ouguiya mauritanien",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87e3da7..e410dd1 100644 (file)
@@ -7,5 +7,5 @@ fr_MU{
             "roupie mauricienne",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2fdf2d8..46be556 100644 (file)
@@ -7,5 +7,5 @@ fr_RW{
             "franc rwandais",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f93b920..1f4d3de 100644 (file)
@@ -7,5 +7,5 @@ fr_SC{
             "roupie des Seychelles",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3b67083..8a7d0da 100644 (file)
@@ -7,5 +7,5 @@ fr_SY{
             "livre syrienne",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6572218..504382d 100644 (file)
@@ -7,5 +7,5 @@ fr_TN{
             "dinar tunisien",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ef54b61..928e0d4 100644 (file)
@@ -7,5 +7,5 @@ fr_VU{
             "vatu vanuatuan",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 598df45..97b696f 100644 (file)
@@ -377,5 +377,5 @@ fur{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 7243136..6183240 100644 (file)
@@ -760,11 +760,11 @@ fy{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaanske sol",\r
+            "Peruaanske nieuwe sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruaanske sol (1863–1985)",\r
+            "Peruaanske sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1933,12 +1933,12 @@ fy{
             other{"Peruaanske inti"}\r
         }\r
         PEN{\r
-            one{"Peruaanske sol"}\r
-            other{"Peruaanske sol"}\r
+            one{"Peruaanske nieuwe sol"}\r
+            other{"Peruaanske nieuwe sol"}\r
         }\r
         PES{\r
-            one{"Peruaanske sol (1863–1985)"}\r
-            other{"Peruaanske sol (1863–1985)"}\r
+            one{"Peruaanske sol"}\r
+            other{"Peruaanske sol"}\r
         }\r
         PGK{\r
             one{"Papuaanske kina"}\r
@@ -2353,5 +2353,5 @@ fy{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.44"}\r
 }\r
index 2fa363d..bced997 100644 (file)
@@ -740,7 +740,7 @@ ga{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol Pheiriú",\r
+            "Nuevo Sol Pheiriú",\r
         }\r
         PES{\r
             "PES",\r
@@ -2192,11 +2192,11 @@ ga{
             two{"bhalboa Phanama"}\r
         }\r
         PEN{\r
-            few{"sol Pheiriú"}\r
-            many{"sol Pheiriú"}\r
-            one{"sol Pheiriú"}\r
-            other{"sol Pheiriú"}\r
-            two{"sol Pheiriú"}\r
+            few{"nuevo sol Pheiriú"}\r
+            many{"nuevo sol Pheiriú"}\r
+            one{"nuevo sol Pheiriú"}\r
+            other{"nuevo sol Pheiriú"}\r
+            two{"nuevo sol Pheiriú"}\r
         }\r
         PES{\r
             few{"shol Pheiriú (1863–1965)"}\r
@@ -2675,5 +2675,5 @@ ga{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 59ecc98..85fcd5e 100644 (file)
@@ -780,7 +780,7 @@ gd{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol Pearùthach",\r
+            "Sol ùr Pearùthach",\r
         }\r
         PES{\r
             "PES",\r
@@ -2462,10 +2462,10 @@ gd{
             two{"inti Pearùthach"}\r
         }\r
         PEN{\r
-            few{"sol Pearùthach"}\r
-            one{"sol Pearùthach"}\r
-            other{"sol Pearùthach"}\r
-            two{"shol Pearùthach"}\r
+            few{"sol ùra Pearùthach"}\r
+            one{"sol ùr Pearùthach"}\r
+            other{"sol ùr Pearùthach"}\r
+            two{"shol ùr Pearùthach"}\r
         }\r
         PES{\r
             few{"sol Pearùthach (1863–1965)"}\r
@@ -3092,5 +3092,5 @@ gd{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 6065f2e..13426c9 100644 (file)
@@ -1432,10 +1432,6 @@ gl{
             one{"sol peruano"}\r
             other{"soles peruanos"}\r
         }\r
-        PES{\r
-            one{"sol peruano (1863–1965)"}\r
-            other{"soles peruanos (1863–1965)"}\r
-        }\r
         PGK{\r
             one{"kina de Papúa-Nova Guinea"}\r
             other{"kinas de Papúa-Nova Guinea"}\r
@@ -1657,5 +1653,5 @@ gl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ea01626..47a7498 100644 (file)
@@ -704,11 +704,11 @@ gsw{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol",\r
+            "Nöie Sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Sol (1863–1965)",\r
+            "Sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1757,12 +1757,12 @@ gsw{
             other{"Peruanischi Inti"}\r
         }\r
         PEN{\r
-            one{"Sol"}\r
-            other{"Sol"}\r
+            one{"Nöie Sol"}\r
+            other{"Nöii Sol"}\r
         }\r
         PES{\r
-            one{"Sol (1863–1965)"}\r
-            other{"Sol (1863–1965)"}\r
+            one{"Sol"}\r
+            other{"Sol"}\r
         }\r
         PGK{\r
             one{"Kina"}\r
@@ -2137,5 +2137,5 @@ gsw{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 8c9da09..8b1c9f5 100644 (file)
@@ -436,7 +436,7 @@ gu{
         }\r
         PEN{\r
             "PEN",\r
-            "પેરુવિયન સોલ",\r
+            "પà«\87રà«\81વિયન àª¨à«\8dયà«\81વà«\8b àª¸à«\8bલ",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1172,8 +1172,8 @@ gu{
             other{"પનામેનિયન બાલ્બોઆ"}\r
         }\r
         PEN{\r
-            one{"પેરુવિયન સોલ"}\r
-            other{"પેરુવિયન સોલ"}\r
+            one{"પà«\87રà«\81વિયન àª¨à«\8dયà«\81વà«\8b àª¸à«\8bલ"}\r
+            other{"પà«\87રà«\81વિયન àª¨à«\8dયà«\81વà«\8b àª¸à«\8bલ"}\r
         }\r
         PGK{\r
             one{"પાપુઆ ન્યૂ ગિનીયન કિના"}\r
@@ -1380,5 +1380,5 @@ gu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index e95e307..e92aff1 100644 (file)
@@ -223,5 +223,5 @@ guz{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2d77bb..a1fd188 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a77f8cb..f6b7691 100644 (file)
@@ -223,5 +223,5 @@ ha{
             "Dalar zimbabuwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8153857..84d225c 100644 (file)
@@ -7,5 +7,5 @@ ha_GH{
             "GHS",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 725fbe9..693d231 100644 (file)
@@ -11,5 +11,5 @@ haw{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 13b33a0..0b8c6be 100644 (file)
@@ -576,7 +576,7 @@ he{
         }\r
         PEN{\r
             "PEN",\r
-            "סול פרואני",\r
+            "סול פרואני חדש",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1639,10 +1639,10 @@ he{
             two{"בלבואה פנמי"}\r
         }\r
         PEN{\r
-            many{"סול פרואני"}\r
-            one{"סול פרואני"}\r
-            other{"סול פרואני"}\r
-            two{"סול פרואני"}\r
+            many{"סול פרואני חדש"}\r
+            one{"סול פרואני חדש"}\r
+            other{"סול פרואני חדש"}\r
+            two{"סול פרואני חדש"}\r
         }\r
         PGK{\r
             many{"קינה של פפואה גינאה החדשה"}\r
@@ -1957,5 +1957,5 @@ he{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.27"}\r
 }\r
index 4a8d946..fe0f7a0 100644 (file)
@@ -472,7 +472,7 @@ hi{
         }\r
         PEN{\r
             "PEN",\r
-            "पेरूवियन सोल",\r
+            "पà¥\87रà¥\82वियन à¤¨à¥\81à¤\8fवà¥\8b à¤¸à¥\8bल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1255,8 +1255,8 @@ hi{
             other{"पनामेनियन बैल्बोआ"}\r
         }\r
         PEN{\r
-            one{"पेरूवियन सोल"}\r
-            other{"पेरूवियन सोल"}\r
+            one{"पà¥\87रà¥\82वियन à¤¨à¥\81à¤\8fवà¥\8b à¤¸à¥\8bल"}\r
+            other{"पà¥\87रà¥\82वियन à¤¨à¥\81à¤\8fवà¥\8b à¤¸à¥\8bल"}\r
         }\r
         PGK{\r
             one{"पापुआ न्यू गिनीयन किना"}\r
@@ -1463,5 +1463,5 @@ hi{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 1611493..d9c1ccb 100644 (file)
@@ -780,11 +780,11 @@ hr{
         }\r
         PEN{\r
             "PEN",\r
-            "peruanski sol",\r
+            "peruanski novi sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruanski sol (1863–1965)",\r
+            "peruanski sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2258,15 +2258,15 @@ hr{
             other{"peruanskih inti"}\r
         }\r
         PEN{\r
+            few{"peruanska nova sola"}\r
+            one{"peruanski novi sol"}\r
+            other{"peruanskih novih sola"}\r
+        }\r
+        PES{\r
             few{"peruanska sola"}\r
             one{"peruanski sol"}\r
             other{"peruanskih sola"}\r
         }\r
-        PES{\r
-            few{"peruanska sola (1863–1965)"}\r
-            one{"peruanski sol (1863–1965)"}\r
-            other{"peruanskih sola (1863–1965)"}\r
-        }\r
         PGK{\r
             few{"kine Papue Nove Gvineje"}\r
             one{"kina Papue Nove Gvineje"}\r
@@ -2783,5 +2783,5 @@ hr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 04970ac..668ad31 100644 (file)
@@ -7,5 +7,5 @@ hr_BA{
             "konvertibilna marka",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 1cd2b60..a4618fd 100644 (file)
@@ -532,7 +532,7 @@ hsb{
         }\r
         PEN{\r
             "PEN",\r
-            "peruski sol",\r
+            "peruski nowy sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1536,10 +1536,10 @@ hsb{
             two{"panamaskej balbowaj"}\r
         }\r
         PEN{\r
-            few{"peruske sole"}\r
-            one{"peruski sol"}\r
-            other{"peruskich solow"}\r
-            two{"peruskej solej"}\r
+            few{"peruske nowe sole"}\r
+            one{"peruski nowy sol"}\r
+            other{"peruskich nowych solow"}\r
+            two{"peruskej nowej solej"}\r
         }\r
         PGK{\r
             few{"papua-nowoginejske kiny"}\r
@@ -1854,5 +1854,5 @@ hsb{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 9276be3..ce64460 100644 (file)
@@ -704,15 +704,15 @@ hu{
         }\r
         PEI{\r
             "PEI",\r
-            "perui inti",\r
+            "Perui inti",\r
         }\r
         PEN{\r
             "PEN",\r
-            "perui sol",\r
+            "perui sol nuevo",\r
         }\r
         PES{\r
             "PES",\r
-            "perui sol (1863–1965)",\r
+            "Perui sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1724,8 +1724,8 @@ hu{
             other{"panamai balboa"}\r
         }\r
         PEN{\r
-            one{"perui sol"}\r
-            other{"perui sol"}\r
+            one{"perui sol nuevo"}\r
+            other{"perui sol nuevo"}\r
         }\r
         PGK{\r
             one{"pápua új-guineai kina"}\r
@@ -2012,5 +2012,5 @@ hu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 46364d9..9e6beb5 100644 (file)
@@ -432,7 +432,7 @@ hy{
         }\r
         PEN{\r
             "PEN",\r
-            "Պերուի սոլ",\r
+            "Õ\8aÕ¥Ö\80Õ¸Ö\82Õ« Õ¶Õ¸Ö\80 Õ½Õ¸Õ¬",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1168,8 +1168,8 @@ hy{
             other{"պանամական բալբոա"}\r
         }\r
         PEN{\r
-            one{"Պերուի սոլ"}\r
-            other{"Պերուի սոլ"}\r
+            one{"Õ\8aÕ¥Ö\80Õ¸Ö\82Õ« Õ¶Õ¸Ö\80 Õ½Õ¸Õ¬"}\r
+            other{"Õ\8aÕ¥Ö\80Õ¸Ö\82Õ« Õ¶Õ¸Ö\80 Õ½Õ¸Õ¬"}\r
         }\r
         PGK{\r
             one{"Պապուա Նոր Գվինեայի կինա"}\r
@@ -1380,5 +1380,5 @@ hy{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index a664eff..7e0d5eb 100644 (file)
@@ -772,7 +772,7 @@ id{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol Peru",\r
+            "Nuevo Sol Peru",\r
         }\r
         PES{\r
             "PES",\r
@@ -1690,7 +1690,7 @@ id{
             other{"Balboa Panama"}\r
         }\r
         PEN{\r
-            other{"Sol Peru"}\r
+            other{"Nuevo Sol Peru"}\r
         }\r
         PES{\r
             other{"Sol Peru (1863–1965)"}\r
@@ -1906,5 +1906,5 @@ id{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2d4eaf4..6c28358 100644 (file)
@@ -14,5 +14,5 @@ ig{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index c572516..42ebf00 100644 (file)
@@ -14,5 +14,5 @@ ii{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7541b17..1545526 100644 (file)
@@ -1600,5 +1600,5 @@ is{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.65"}\r
 }\r
index 6389db7..f1cfbf1 100644 (file)
@@ -697,11 +697,11 @@ it{
         }\r
         PEN{\r
             "PEN",\r
-            "sol peruviano",\r
+            "nuovo sol peruviano",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruviano (1863–1965)",\r
+            "sol peruviano",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1622,8 +1622,8 @@ it{
             other{"balboa panamensi"}\r
         }\r
         PEN{\r
-            one{"sol peruviano"}\r
-            other{"sol peruviani"}\r
+            one{"nuovo sol peruviano"}\r
+            other{"nuovi sol peruviani"}\r
         }\r
         PGK{\r
             one{"kina papuana"}\r
@@ -1846,5 +1846,5 @@ it{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
 }\r
index f051318..0d57df4 100644 (file)
@@ -780,7 +780,7 @@ ja{
         }\r
         PEN{\r
             "PEN",\r
-            "ペルー ソル",\r
+            "ペルー ソル",\r
         }\r
         PES{\r
             "PES",\r
@@ -1879,7 +1879,7 @@ ja{
             other{"ペルー インティ"}\r
         }\r
         PEN{\r
-            other{"ペルー ソル"}\r
+            other{"ペルー ソル"}\r
         }\r
         PES{\r
             other{"ペルー ソル (1863–1965)"}\r
@@ -2194,5 +2194,5 @@ ja{
     CurrencyUnitPatterns{\r
         other{"{0}{1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 209b4cc..802dfbf 100644 (file)
@@ -23,5 +23,5 @@ jgo{
             "ntɛ-ŋkáp yi pɛ́ ká kɛ́ jínɛ",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 090e400..ed71325 100644 (file)
@@ -227,5 +227,5 @@ jmc{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d820e4..2ef1cf8 100644 (file)
@@ -640,11 +640,11 @@ ka{
         }\r
         PEN{\r
             "PEN",\r
-            "პერუს სოლი",\r
+            "á\83\9eá\83\94á\83 á\83£á\83¡ á\83\90á\83®á\83\90á\83\9aá\83\98 á\83¡á\83\9dá\83\9aá\83\98",\r
         }\r
         PES{\r
             "PES",\r
-            "პერუს სოლი (1863–1965)",\r
+            "პერუს სოლი",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1504,8 +1504,8 @@ ka{
             other{"პანამური ბალბოა"}\r
         }\r
         PEN{\r
-            one{"პერუს სოლი"}\r
-            other{"პერუს სოლი"}\r
+            one{"á\83\9eá\83\94á\83 á\83£á\83¡ á\83\90á\83®á\83\90á\83\9aá\83\98 á\83¡á\83\9dá\83\9aá\83\98"}\r
+            other{"á\83\9eá\83\94á\83 á\83£á\83¡ á\83\90á\83®á\83\90á\83\9aá\83\98 á\83¡á\83\9dá\83\9aá\83\98"}\r
         }\r
         PGK{\r
             one{"პაპუა-ახალი გვინეის კინა"}\r
@@ -1716,5 +1716,5 @@ ka{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index 21d06e0..1a5f4d0 100644 (file)
@@ -223,5 +223,5 @@ kab{
             "Adular Azimbabwi",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1399904..b986719 100644 (file)
@@ -223,5 +223,5 @@ kam{
             "Ndola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7adf0c1..07b8d0c 100644 (file)
@@ -227,5 +227,5 @@ kde{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 58a818e..644168f 100644 (file)
@@ -743,5 +743,5 @@ kea{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.46"}\r
 }\r
index 68e7ede..7c4a4b8 100644 (file)
@@ -227,5 +227,5 @@ khq{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c47905b..9298e3a 100644 (file)
@@ -223,5 +223,5 @@ ki{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8aafc07..9d80799 100644 (file)
@@ -432,7 +432,7 @@ kk{
         }\r
         PEN{\r
             "PEN",\r
-            "Перу солі",\r
+            "Перу жаңа солі",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1163,8 +1163,8 @@ kk{
             other{"Панама бальбоасы"}\r
         }\r
         PEN{\r
-            one{"Перу солі"}\r
-            other{"Перу солі"}\r
+            one{"Перу жаңа солі"}\r
+            other{"Перу жаңа солі"}\r
         }\r
         PGK{\r
             one{"Папуа - Жаңа Гвинея кинасы"}\r
@@ -1371,5 +1371,5 @@ kk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index d006838..d3033db 100644 (file)
@@ -7,5 +7,5 @@ kkj{
             "Franc CFA",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d8eb6b..c6d0fd6 100644 (file)
@@ -17,5 +17,5 @@ kl{
             other{"euro"}\r
         }\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 42a54fc..72bbba4 100644 (file)
@@ -223,5 +223,5 @@ kln{
             "Dolaitab ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2428662..66ea00d 100644 (file)
@@ -1214,5 +1214,5 @@ km{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 095c471..f469145 100644 (file)
@@ -436,7 +436,7 @@ kn{
         }\r
         PEN{\r
             "PEN",\r
-            "ಪೆರುವಿಯನ್ ಸೊಲ್",\r
+            "ಪà³\86ರà³\81ವಿಯನà³\8d à²¨à³\81ಯà³\86ವà³\8a à²¸à³\8aಲà³\8d",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1172,8 +1172,8 @@ kn{
             other{"ಪನಾಮಾನಿಯನ್ ಬಲ್ಬೋವಾಗಳು"}\r
         }\r
         PEN{\r
-            one{"ಪೆರುವಿಯನ್ ಸೊಲ್"}\r
-            other{"ಪೆರುವಿಯನ್ ಸೊಲ್‍ಗಳು"}\r
+            one{"ಪà³\86ರà³\81ವಿಯನà³\8d à²¨à³\81ಯà³\86ವà³\8a à²¸à³\8aಲà³\8d"}\r
+            other{"ಪà³\86ರà³\81ವಿಯನà³\8d à²¨à³\81ಯà³\86ವà³\8a à²¸à³\8aಲà³\8dâ\80\8dà²\97ಳà³\81"}\r
         }\r
         PGK{\r
             one{"ಪಪುವಾ ನ್ಯೂ ಗಿನಿಯನ್ ಕಿನಾ"}\r
@@ -1380,5 +1380,5 @@ kn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 9866083..69f097c 100644 (file)
@@ -752,11 +752,11 @@ ko{
         }\r
         PEN{\r
             "PEN",\r
-            "페루 솔",\r
+            "페루 누에보 솔",\r
         }\r
         PES{\r
             "PES",\r
-            "페루 솔 (1863–1965)",\r
+            "페루 솔",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1578,7 +1578,7 @@ ko{
             other{"파나마 발보아"}\r
         }\r
         PEN{\r
-            other{"페루 솔"}\r
+            other{"페루 누에보 솔"}\r
         }\r
         PGK{\r
             other{"파푸아뉴기니 키나"}\r
@@ -1734,5 +1734,5 @@ ko{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.22"}\r
 }\r
index f7965b0..6befe25 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4662432..3cb5263 100644 (file)
@@ -644,11 +644,11 @@ ks{
         }\r
         PEN{\r
             "PEN",\r
-            "پٔریوٗوِیَن سولٕز",\r
+            "پٔریوٗوِیَن نیوٗاوز سولٕز",\r
         }\r
         PES{\r
             "PES",\r
-            "پٔریوٗوِیَن سول (۱۸۶۳–۱۹۶۵)",\r
+            "پٔریوٗوِیَن سول",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1011,5 +1011,5 @@ ks{
             "زِمبابِیُک ڈالَر",\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
 }\r
index 6fb04bb..a0c3dc4 100644 (file)
@@ -227,5 +227,5 @@ ksb{
             "dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30e861e..ac41b1f 100644 (file)
@@ -223,5 +223,5 @@ ksf{
             "mɔni mǝ á zimbabwɛ́",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3c48e20..a6632ee 100644 (file)
@@ -448,7 +448,7 @@ ksh{
         }\r
         PEN{\r
             "PEN",\r
-            "perruaanesche Sol",\r
+            "perruaanesche Nuevo Sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -895,5 +895,5 @@ ksh{
         other{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 30cb7bd..f38a919 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e75b4d4..45e1fbb 100644 (file)
@@ -432,7 +432,7 @@ ky{
         }\r
         PEN{\r
             "PEN",\r
-            "перу солу",\r
+            "перу нуэво солу",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1165,8 +1165,8 @@ ky{
             other{"панама балбоасы"}\r
         }\r
         PEN{\r
-            one{"перу солу"}\r
-            other{"перу солу"}\r
+            one{"перу нуэво солу"}\r
+            other{"перу нуэво солу"}\r
         }\r
         PGK{\r
             one{"Папуа Жаӊы Гвинея кинасы"}\r
@@ -1373,5 +1373,5 @@ ky{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 5a65378..d7ac3e7 100644 (file)
@@ -223,5 +223,5 @@ lag{
             "Dóola ya Simbáabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9ea5a42..5cd7cf9 100644 (file)
@@ -708,11 +708,11 @@ lb{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaneschen Sol",\r
+            "Peruaneschen Neie Sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruaneschen Sol (1863–1965)",\r
+            "Peruanesche Sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1825,11 +1825,11 @@ lb{
             other{"Peruanesch Inti"}\r
         }\r
         PEN{\r
-            one{"Peruaneschen Sol"}\r
-            other{"Peruanesch Soles"}\r
+            one{"Peruaneschen Neie Sol"}\r
+            other{"Peruanesch Nei Soles"}\r
         }\r
         PES{\r
-            one{"Peruaneschen Sol (1863–1965)"}\r
+            one{"Peruanesche Sol (1863–1965)"}\r
             other{"Peruanesch Soles (1863–1965)"}\r
         }\r
         PGK{\r
@@ -2225,5 +2225,5 @@ lb{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index f16da89..2a8d5f9 100644 (file)
@@ -227,5 +227,5 @@ lg{
             "Doola ey’eZimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5c58cf0..610c379 100644 (file)
@@ -7,5 +7,5 @@ lkt{
             "USD",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 04e1715..b00a59b 100644 (file)
@@ -227,5 +227,5 @@ ln{
             "Dolarɛ ya Zimbabwɛ",\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 3b5af67..56da86b 100644 (file)
@@ -7,5 +7,5 @@ ln_AO{
             "Kwanza ya Angóla",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 32f440a..cec2b56 100644 (file)
@@ -760,7 +760,7 @@ lo{
         }\r
         PEN{\r
             "PEN",\r
-            "ເປ​ຣູ​ວຽນ ໂຊ​ລ໌",\r
+            "à»\80àº\9bâ\80\8bຣູâ\80\8bວຽàº\99 àº\99ູâ\80\8bà»\82ວ à»\82àº\8aâ\80\8bລà»\8c",\r
         }\r
         PES{\r
             "PES",\r
@@ -1589,7 +1589,7 @@ lo{
             other{"ພານາມານຽນ ບອນບົວ"}\r
         }\r
         PEN{\r
-            other{"ເປ​ຣູ​ວຽນ ໂຊ​ລ໌"}\r
+            other{"à»\80àº\9bâ\80\8bຣູâ\80\8bວຽàº\99 àº\99ູâ\80\8bà»\82ວ à»\82àº\8aâ\80\8bລà»\8c"}\r
         }\r
         PGK{\r
             other{"ປາ​ປົວ ນິວ ກິ​ນຽນ ກິ​ນາ"}\r
@@ -1745,5 +1745,5 @@ lo{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 0845619..a1805e0 100644 (file)
@@ -78,5 +78,5 @@ lrc{
             other{"پیل نادیار"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2f0dea4..5e42a04 100644 (file)
@@ -780,7 +780,7 @@ lt{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru solis",\r
+            "Peru naujasis solis",\r
         }\r
         PES{\r
             "PES",\r
@@ -2462,10 +2462,10 @@ lt{
             other{"Peru intis"}\r
         }\r
         PEN{\r
-            few{"Peru soliai"}\r
-            many{"Peru solio"}\r
-            one{"Peru solis"}\r
-            other{"Peru solių"}\r
+            few{"Peru naujieji soliai"}\r
+            many{"Peru naujojo solio"}\r
+            one{"Peru naujasis solis"}\r
+            other{"Peru naujųjų solių"}\r
         }\r
         PES{\r
             few{"Peru soliai (1863–1965)"}\r
@@ -3086,5 +3086,5 @@ lt{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 47e8fe8..9fd49a9 100644 (file)
@@ -227,5 +227,5 @@ lu{
             "Ndola wa Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a6bd0f..067a580 100644 (file)
@@ -223,5 +223,5 @@ luo{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a15c0f9..1768f18 100644 (file)
@@ -223,5 +223,5 @@ luy{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 725e90f..53b36dd 100644 (file)
@@ -312,7 +312,7 @@ lv{
         }\r
         ISK{\r
             "ISK",\r
-            "Islandes krona",\r
+            "Īslandes krona",\r
         }\r
         ITL{\r
             "ITL",\r
@@ -520,7 +520,7 @@ lv{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru sols",\r
+            "Peru jaunais sols",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1259,9 +1259,9 @@ lv{
             zero{"Irānas riāli"}\r
         }\r
         ISK{\r
-            one{"Islandes krona"}\r
-            other{"Islandes kronas"}\r
-            zero{"Islandes kronas"}\r
+            one{"Īslandes krona"}\r
+            other{"Īslandes kronas"}\r
+            zero{"Īslandes kronas"}\r
         }\r
         JMD{\r
             one{"Jamaikas dolārs"}\r
@@ -1474,9 +1474,9 @@ lv{
             zero{"Panamas balboa"}\r
         }\r
         PEN{\r
-            one{"Peru sols"}\r
-            other{"Peru soli"}\r
-            zero{"Peru soli"}\r
+            one{"Peru jaunais sols"}\r
+            other{"Peru jaunie soli"}\r
+            zero{"Peru jaunie soli"}\r
         }\r
         PGK{\r
             one{"Papua-Jaungvinejas kina"}\r
@@ -1784,5 +1784,5 @@ lv{
         other{"{0} {1}"}\r
         zero{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 64bd1d3..3910d0d 100644 (file)
@@ -223,5 +223,5 @@ mas{
             "Iropiyianí e Simbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 275f665..44a8180 100644 (file)
@@ -7,5 +7,5 @@ mas_TZ{
             "Iropiyianí e Tanzania",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d5fedc7..49526a3 100644 (file)
@@ -223,5 +223,5 @@ mer{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5e88281..38260a1 100644 (file)
@@ -227,5 +227,5 @@ mfe{
             "dolar zimbawe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b938d14..583a552 100644 (file)
@@ -231,5 +231,5 @@ mg{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09317cf..404a9dd 100644 (file)
@@ -7,5 +7,5 @@ mgh{
             "MZN",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8abbbc0..27ad453 100644 (file)
@@ -15,5 +15,5 @@ mgo{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a82933..153e9d4 100644 (file)
@@ -584,11 +584,11 @@ mk{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански сол",\r
+            "Перуански нов сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол (1863–1965)",\r
+            "Перуански сол",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1436,8 +1436,8 @@ mk{
             other{"Панамска балбоа"}\r
         }\r
         PEN{\r
-            one{"Перуански сол"}\r
-            other{"Перуански сол"}\r
+            one{"Перуански нов сол"}\r
+            other{"Перуански нов сол"}\r
         }\r
         PGK{\r
             one{"Папуа новогвинејска кина"}\r
@@ -1656,5 +1656,5 @@ mk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index aed191b..2c3d0f0 100644 (file)
@@ -708,11 +708,11 @@ ml{
         }\r
         PEN{\r
             "PEN",\r
-            "പെറുവിയൻ സോൾ",\r
+            "à´ªàµ\86à´±àµ\81വിയൻ à´¨àµ\8dà´¯àµ\82à´µàµ\8b à´¸àµ\8bൾ",\r
         }\r
         PES{\r
             "PES",\r
-            "പെറൂവിയൻ സോൾ (1863–1965)",\r
+            "പെറൂവിയൻ സോൾ",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1872,12 +1872,12 @@ ml{
             other{"പെറൂവിയൻ ഇൻറിസ്"}\r
         }\r
         PEN{\r
-            one{"പെറുവിയൻ സോൾ"}\r
-            other{"പെറുവിയൻ സോൾ"}\r
+            one{"à´ªàµ\86à´±àµ\81വിയൻ à´¨àµ\8dà´¯àµ\82à´µàµ\8b à´¸àµ\8bൾ"}\r
+            other{"à´ªàµ\86à´±àµ\81വിയൻ à´¨àµ\8dà´¯àµ\82à´µàµ\8b à´¸àµ\8bൾ"}\r
         }\r
         PES{\r
-            one{"പെറൂവിയൻ സോൾ (1863–1965)"}\r
-            other{"പെറൂവിയൻ സോൾസ് (1863–1965)"}\r
+            one{"പെറൂവിയൻ സോൾ"}\r
+            other{"പെറൂവിയൻ സോൾസ്"}\r
         }\r
         PGK{\r
             one{"പാപ്പുവ ന്യൂ ഗിനിയൻ കിന"}\r
@@ -2212,5 +2212,5 @@ ml{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 3b49bce..c51444c 100644 (file)
@@ -432,7 +432,7 @@ mn{
         }\r
         PEN{\r
             "PEN",\r
-            "перугийн соль",\r
+            "перугийн невосоль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1168,8 +1168,8 @@ mn{
             other{"панамын бальбоа"}\r
         }\r
         PEN{\r
-            one{"перугийн соль"}\r
-            other{"перугийн соль"}\r
+            one{"перугийн невосоль"}\r
+            other{"перугийн невосоль"}\r
         }\r
         PGK{\r
             one{"папуа-шинэ гвинейн кина"}\r
@@ -1380,5 +1380,5 @@ mn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index e119156..c6931fd 100644 (file)
@@ -436,7 +436,7 @@ mr{
         }\r
         PEN{\r
             "PEN",\r
-            "पेरुवियन सोल",\r
+            "पà¥\87रà¥\81वियन à¤¨à¥\81à¤\87वà¥\8dहà¥\8b à¤¸à¥\8bल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1172,8 +1172,8 @@ mr{
             other{"पनामा बाल्बोआज"}\r
         }\r
         PEN{\r
-            one{"पेरुवियन सोल"}\r
-            other{"पेरुवियन सोल्स"}\r
+            one{"पà¥\87रà¥\81वियन à¤¨à¥\81à¤\87वà¥\8dहà¥\8b à¤¸à¥\8bल"}\r
+            other{"पà¥\87रà¥\81वियन à¤¨à¥\81à¤\87वà¥\8dहà¥\8b à¤¸à¥\8bलà¥\8dस"}\r
         }\r
         PGK{\r
             one{"पापुआ न्यू गिनीयन किना"}\r
@@ -1376,5 +1376,5 @@ mr{
             other{"झांबियन क्वाचास"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2f8910a..54835da 100644 (file)
@@ -436,7 +436,7 @@ ms{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol Peru",\r
+            "Nuevo Sol Peru",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1065,7 +1065,7 @@ ms{
             other{"Balboa Panama"}\r
         }\r
         PEN{\r
-            other{"Sol Peru"}\r
+            other{"Nuevo Sol Peru"}\r
         }\r
         PGK{\r
             other{"Kina Papua New Guinea"}\r
@@ -1221,5 +1221,5 @@ ms{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2445e4a..7fddbfd 100644 (file)
@@ -7,5 +7,5 @@ ms_BN{
             "Dolar Brunei",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c50d23d..fd5ac19 100644 (file)
@@ -7,5 +7,5 @@ ms_SG{
             "Dolar Singapura",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f024291..0cd148d 100644 (file)
@@ -1581,5 +1581,5 @@ mt{
             other{"ZMW"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 1c36163..839533b 100644 (file)
@@ -227,5 +227,5 @@ mua{
             "Solai Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a3a28d8..69ab0b6 100644 (file)
@@ -472,7 +472,7 @@ my{
         }\r
         PEN{\r
             "PEN",\r
-            "ပီရူး ဆိုးလ်",\r
+            "á\80\95á\80®á\80\9bá\80°á\80¸ á\80\94á\80°á\80¡á\80®á\80\97á\80­á\80¯á\80\86á\80­á\80¯á\80¸á\80\9cá\80º",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1148,7 +1148,7 @@ my{
             other{"ပနားမား ဘလ်ဘိုးအာ"}\r
         }\r
         PEN{\r
-            other{"ပီရူး ဆိုးလ်"}\r
+            other{"á\80\95á\80®á\80\9bá\80°á\80¸ á\80\94á\80°á\80¡á\80®á\80\97á\80­á\80¯á\80\86á\80­á\80¯á\80¸á\80\9cá\80º"}\r
         }\r
         PGK{\r
             other{"ပါပူအာ နယူးဂီနီ ခီးနာ"}\r
@@ -1301,5 +1301,5 @@ my{
             other{"ဇင်ဘာဘွေခွါးချာ"}\r
         }\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.30.50"}\r
 }\r
index 662f232..d77dff9 100644 (file)
@@ -412,7 +412,7 @@ mzn{
         }\r
         PEN{\r
             "PEN",\r
-            "پروی ِسول",\r
+            "پروی ِنوئوو سول",\r
         }\r
         PHP{\r
             "PHP",\r
@@ -988,7 +988,7 @@ mzn{
             other{"پانامای بالبوا"}\r
         }\r
         PEN{\r
-            other{"پروی ِسول"}\r
+            other{"پروی ِنوئوو سول"}\r
         }\r
         PHP{\r
             other{"فیلیپین ِپزو"}\r
@@ -1120,5 +1120,5 @@ mzn{
             other{"زامبیای ِکواچا"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index ce8f599..13652c2 100644 (file)
@@ -227,5 +227,5 @@ naq{
             "Zimbabwe Dollari",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d468ba2..e561d7a 100644 (file)
@@ -776,15 +776,15 @@ nb{
         }\r
         PEI{\r
             "PEI",\r
-            "peruanske inti",\r
+            "peruvianske inti",\r
         }\r
         PEN{\r
             "PEN",\r
-            "peruanske sol",\r
+            "peruanske nuevo sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruanske sol (1863–1965)",\r
+            "peruvianske sol (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2063,16 +2063,16 @@ nb{
             other{"panamanske balboa"}\r
         }\r
         PEI{\r
-            one{"peruansk inti"}\r
-            other{"peruanske inti"}\r
+            one{"peruviansk inti"}\r
+            other{"peruvianske inti"}\r
         }\r
         PEN{\r
-            one{"peruansk sol"}\r
-            other{"peruanske sol"}\r
+            one{"peruansk nuevo sol"}\r
+            other{"peruanske nuevo sol"}\r
         }\r
         PES{\r
-            one{"peruansk sol (1863–1965)"}\r
-            other{"peruanske sol (1863–1965)"}\r
+            one{"peruviansk sol (1863–1965)"}\r
+            other{"peruvianske sol (1863–1965)"}\r
         }\r
         PGK{\r
             one{"papuansk kina"}\r
@@ -2483,5 +2483,5 @@ nb{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
 }\r
index 3abf330..54b8618 100644 (file)
@@ -227,5 +227,5 @@ nd{
             "Dola yase Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 7874b05..e395563 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index ed99d4b..efea0c1 100644 (file)
@@ -436,7 +436,7 @@ ne{
         }\r
         PEN{\r
             "PEN",\r
-            "पेरूभियाली सोल",\r
+            "पà¥\87रà¥\82भियालà¥\80 à¤¨à¥\8dयà¥\82भà¥\8b à¤¸à¥\8bल",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1173,8 +1173,8 @@ ne{
             other{"पानामानियाली बाल्बोआ"}\r
         }\r
         PEN{\r
-            one{"पेरूभियाली सोल"}\r
-            other{"पेरूभियाली सोल"}\r
+            one{"पà¥\87रà¥\82भियालà¥\80 à¤¨à¥\8dयà¥\82भà¥\8b à¤¸à¥\8bल"}\r
+            other{"पà¥\87रà¥\82भियालà¥\80 à¤¨à¥\8dयà¥\82भà¥\8b à¤¸à¥\8bल"}\r
         }\r
         PGK{\r
             one{"पपुआ न्यू गिनियाली किना"}\r
@@ -1381,5 +1381,5 @@ ne{
             other{"जाम्बियाली क्वाचा"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index 2d180a4..452e370 100644 (file)
@@ -780,11 +780,11 @@ nl{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruaanse sol",\r
+            "Peruaanse nieuwe sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruaanse sol (1863–1965)",\r
+            "Peruaanse sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2074,12 +2074,12 @@ nl{
             other{"Peruaanse inti"}\r
         }\r
         PEN{\r
-            one{"Peruaanse sol"}\r
-            other{"Peruaanse sol"}\r
+            one{"Peruaanse nieuwe sol"}\r
+            other{"Peruaanse nieuwe sol"}\r
         }\r
         PES{\r
-            one{"Peruaanse sol (1863–1965)"}\r
-            other{"Peruaanse sol (1863–1965)"}\r
+            one{"Peruaanse sol"}\r
+            other{"Peruaanse sol"}\r
         }\r
         PGK{\r
             one{"Papoea-Nieuw-Guinese kina"}\r
@@ -2494,5 +2494,5 @@ nl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 9a72fae..2f71923 100644 (file)
@@ -7,5 +7,5 @@ nl_AW{
             "Arubaanse gulden",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index aff2a9d..37931bb 100644 (file)
@@ -7,5 +7,5 @@ nl_BQ{
             "Amerikaanse dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 10378da..41300fe 100644 (file)
@@ -7,5 +7,5 @@ nl_CW{
             "Nederlands-Antilliaanse gulden",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d9cc4d2..43d112e 100644 (file)
@@ -7,5 +7,5 @@ nl_SR{
             "Surinaamse dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e7e4a79..544b032 100644 (file)
@@ -7,5 +7,5 @@ nl_SX{
             "Nederlands-Antilliaanse gulden",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2880d92..efd8572 100644 (file)
@@ -227,5 +227,5 @@ nmg{
             "Dɔ́llɔ Zimbabwǝ (1980–2008)",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 90fff98..c82303f 100644 (file)
@@ -704,11 +704,11 @@ nn{
         }\r
         PEN{\r
             "PEN",\r
-            "peruansk sol",\r
+            "peruansk nuevo sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruansk sol (1863–1965)",\r
+            "peruansk sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1577,12 +1577,12 @@ nn{
             other{"peruanske inti"}\r
         }\r
         PEN{\r
-            one{"peruansk sol"}\r
-            other{"peruanske sol"}\r
+            one{"peruansk nuevo sol"}\r
+            other{"peruanske nuevo sol"}\r
         }\r
         PES{\r
-            one{"peruansk sol (1863–1965)"}\r
-            other{"peruanske sol (1863–1965)"}\r
+            one{"peruansk sol"}\r
+            other{"peruanske sol"}\r
         }\r
         PGK{\r
             one{"papuansk kina"}\r
@@ -1921,5 +1921,5 @@ nn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index df6977b..671aaf2 100644 (file)
@@ -7,5 +7,5 @@ nnh{
             "feláŋ CFA",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e7b13c9..838d1b2 100644 (file)
@@ -11,5 +11,5 @@ nus{
             "SSP",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e158161..d4618f6 100644 (file)
@@ -227,5 +227,5 @@ nyn{
             "Doora ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35f8be0..575e615 100644 (file)
@@ -43,5 +43,5 @@ om{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index ca09e9f..6f65ec3 100644 (file)
@@ -7,5 +7,5 @@ om_KE{
             "KES",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index f19d02a..dfc4e59 100644 (file)
@@ -7,5 +7,5 @@ or{
             "ଟଙକା",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
 }\r
index f2f4d72..ae1a733 100644 (file)
@@ -65,5 +65,5 @@ os{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3f80b21..3e69fba 100644 (file)
@@ -11,5 +11,5 @@ os_RU{
             "Сом",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9b9f494..5d27aa3 100644 (file)
@@ -496,7 +496,7 @@ pa{
         }\r
         PEN{\r
             "PEN",\r
-            "ਪੇਰੂਵੀਅਨ ਸੋਲ",\r
+            "ਪà©\87ਰà©\82ਵà©\80à¨\85ਨ à¨¨à¨¿à¨\8aਵà©\8b à¨¸à©\8bਲ",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1341,8 +1341,8 @@ pa{
             other{"ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ"}\r
         }\r
         PEN{\r
-            one{"ਪੇਰੂਵੀਅਨ ਸੋਲ"}\r
-            other{"ਪੇਰੂਵੀਅਨ ਸੋਲ"}\r
+            one{"ਪà©\87ਰà©\82ਵà©\80à¨\85ਨ à¨¨à¨¿à¨\8aਵà©\8b à¨¸à©\8bਲ"}\r
+            other{"ਪà©\87ਰà©\82ਵà©\80à¨\85ਨ à¨¨à¨¿à¨\8aਵà©\8b à¨¸à©\8bਲ"}\r
         }\r
         PGK{\r
             one{"ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕੀਨਾ"}\r
@@ -1581,5 +1581,5 @@ pa{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ae8583d..892f270 100644 (file)
@@ -16,5 +16,5 @@ pa_Arab{
             "روپئیہ",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc1602d..dca680f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c2a8123..4ae7a85 100644 (file)
@@ -684,11 +684,11 @@ pl{
         }\r
         PEN{\r
             "PEN",\r
-            "sol peruwiański",\r
+            "nowy sol peruwiański",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruwiański (1863–1965)",\r
+            "sol peruwiański",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1900,16 +1900,10 @@ pl{
             other{"balboa panamskiego"}\r
         }\r
         PEN{\r
-            few{"sole peruwiańskie"}\r
-            many{"soli peruwiańskich"}\r
-            one{"sol peruwiański"}\r
-            other{"sola peruwiańskiego"}\r
-        }\r
-        PES{\r
-            few{"sole peruwiańskie (1863–1965)"}\r
-            many{"soli peruwiańskich (1863–1965)"}\r
-            one{"sol peruwiański (1863–1965)"}\r
-            other{"sola peruwiańskiego (1863–1965)"}\r
+            few{"nowe sole peruwiańskie"}\r
+            many{"nowych soli peruwiańskich"}\r
+            one{"nowy sol peruwiański"}\r
+            other{"nowego sola peruwiańskiego"}\r
         }\r
         PGK{\r
             few{"kina papuaskie"}\r
@@ -2290,5 +2284,5 @@ pl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index b41e218..bb6c429 100644 (file)
Binary files a/source/data/curr/pool.res and b/source/data/curr/pool.res differ
index 12b8218..de6240a 100644 (file)
@@ -13,5 +13,5 @@ ps{
             other{"افغانۍ"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f97b858..afc20d1 100644 (file)
@@ -776,7 +776,7 @@ pt{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol peruano",\r
+            "Novo sol peruano",\r
         }\r
         PES{\r
             "PES",\r
@@ -2057,12 +2057,12 @@ pt{
             other{"Intis peruanos"}\r
         }\r
         PEN{\r
-            one{"Sol peruano"}\r
-            other{"Sóis peruanos"}\r
+            one{"Novo sol peruano"}\r
+            other{"Novos sóis peruanos"}\r
         }\r
         PES{\r
-            one{"Sol peruano (1863–1965)"}\r
-            other{"Sóis peruanos (1863–1965)"}\r
+            one{"Sol peruano"}\r
+            other{"Soles peruanos"}\r
         }\r
         PGK{\r
             one{"Kina papuásia"}\r
@@ -2469,5 +2469,5 @@ pt{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2c946f4..3f975e2 100644 (file)
@@ -8,5 +8,5 @@ pt_AO{
             "Kwanza angolano",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ee7339..a4226b1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0ed7e6..1f64578 100644 (file)
@@ -17,5 +17,5 @@ pt_CV{
             "Escudo português",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f6e235..fd432f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4cd124..75c5d9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2797cb..034f337 100644 (file)
@@ -8,5 +8,5 @@ pt_LU{
             "Franco luxemburguês",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6838025..a780c66 100644 (file)
@@ -8,5 +8,5 @@ pt_MO{
             "Pataca de Macau",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8f9c6e..fff4f81 100644 (file)
@@ -8,5 +8,5 @@ pt_MZ{
             "Metical de Moçambique",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2e4b99c..c15c9a9 100644 (file)
@@ -542,12 +542,8 @@ pt_PT{
             other{"Balboas do Panamá"}\r
         }\r
         PEN{\r
-            one{"Sol peruano"}\r
-            other{"Soles peruanos"}\r
-        }\r
-        PES{\r
-            one{"Sol peruano (1863–1965)"}\r
-            other{"Soles peruanos (1863–1965)"}\r
+            one{"Novo sol peruano"}\r
+            other{"Novos soles peruanos"}\r
         }\r
         PGK{\r
             one{"Kina da Papua-Nova Guiné"}\r
@@ -646,5 +642,5 @@ pt_PT{
             other{"Kwachas zambianos (1968–2012)"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.54"}\r
 }\r
index c86713d..1541451 100644 (file)
@@ -8,5 +8,5 @@ pt_ST{
             "Dobra de São Tomé e Príncipe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8cb201..8bbbc3d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6ddce9f..189cff9 100644 (file)
@@ -10,5 +10,5 @@ qu{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 2069c14..29f500b 100644 (file)
@@ -11,5 +11,5 @@ qu_BO{
             "PEN",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8e6e49e..783f165 100644 (file)
@@ -11,5 +11,5 @@ qu_EC{
             "USD",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a80049..f72b113 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-CURR_CLDR_VERSION = 31.0.1\r
+CURR_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'reslocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'reslocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,20 +26,19 @@ CURR_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-CURR_SYNTHETIC_ALIAS = ar_SA.txt ars.txt az_AZ.txt az_Latn_AZ.txt\\r
- bs_BA.txt bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt\\r
- he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
- iw_IL.txt ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt\\r
- nn_NO.txt no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt\\r
- pa_Guru_IN.txt pa_IN.txt pa_PK.txt sh.txt sh_BA.txt\\r
- sh_CS.txt sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt\\r
- sr_CS.txt sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt\\r
- sr_Cyrl_YU.txt sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt\\r
- sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
- th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
- uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
- zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt\\r
- zh_SG.txt zh_TW.txt\r
+CURR_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
+ en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
+ in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
+ ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
+ no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
+ pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
+ shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_BA.txt\\r
+ sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Cyrl_YU.txt sr_Latn_BA.txt\\r
+ sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_YU.txt sr_ME.txt\\r
+ sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt th_TH_TRADITIONAL.txt\\r
+ tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt uz_Latn_UZ.txt\\r
+ uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt zh_HK.txt\\r
+ zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -78,56 +77,56 @@ CURR_SOURCE = af.txt af_NA.txt agq.txt ak.txt\
  en_TO.txt en_TT.txt en_TV.txt en_TZ.txt en_UG.txt\\r
  en_VC.txt en_VG.txt en_VU.txt en_WS.txt en_ZA.txt\\r
  en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\\r
- es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\\r
- es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\\r
- es_GQ.txt es_GT.txt es_HN.txt es_MX.txt es_NI.txt\\r
- es_PA.txt es_PE.txt es_PH.txt es_PR.txt es_PY.txt\\r
- es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\\r
- eu.txt ewo.txt fa.txt fa_AF.txt ff.txt\\r
- ff_GN.txt ff_MR.txt fi.txt fil.txt fo.txt\\r
- fo_DK.txt fr.txt fr_BI.txt fr_CA.txt fr_CD.txt\\r
- fr_DJ.txt fr_DZ.txt fr_GN.txt fr_HT.txt fr_KM.txt\\r
- fr_LU.txt fr_MG.txt fr_MR.txt fr_MU.txt fr_RW.txt\\r
- fr_SC.txt fr_SY.txt fr_TN.txt fr_VU.txt fur.txt\\r
fy.txt ga.txt gd.txt gl.txt gsw.txt\\r
- gu.txt guz.txt gv.txt ha.txt ha_GH.txt\\r
- haw.txt he.txt hi.txt hr.txt hr_BA.txt\\r
- hsb.txt hu.txt hy.txt id.txt ig.txt\\r
- ii.txt is.txt it.txt ja.txt jgo.txt\\r
jmc.txt ka.txt kab.txt kam.txt kde.txt\\r
- kea.txt khq.txt ki.txt kk.txt kkj.txt\\r
- kl.txt kln.txt km.txt kn.txt ko.txt\\r
- kok.txt ks.txt ksb.txt ksf.txt ksh.txt\\r
- kw.txt ky.txt lag.txt lb.txt lg.txt\\r
- lkt.txt ln.txt ln_AO.txt lo.txt lrc.txt\\r
- lt.txt lu.txt luo.txt luy.txt lv.txt\\r
- mas.txt mas_TZ.txt mer.txt mfe.txt mg.txt\\r
- mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
- mr.txt ms.txt ms_BN.txt ms_SG.txt mt.txt\\r
- mua.txt my.txt mzn.txt naq.txt nb.txt\\r
- nd.txt nds.txt ne.txt nl.txt nl_AW.txt\\r
- nl_BQ.txt nl_CW.txt nl_SR.txt nl_SX.txt nmg.txt\\r
- nn.txt nnh.txt nus.txt nyn.txt om.txt\\r
- om_KE.txt or.txt os.txt os_RU.txt pa.txt\\r
- pa_Arab.txt pa_Guru.txt pl.txt ps.txt pt.txt\\r
- pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\\r
- pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\\r
pt_TL.txt qu.txt qu_BO.txt qu_EC.txt rm.txt\\r
- rn.txt ro.txt ro_MD.txt rof.txt ru.txt\\r
- ru_BY.txt ru_KG.txt ru_KZ.txt ru_MD.txt rw.txt\\r
rwk.txt sah.txt saq.txt sbp.txt se.txt\\r
- se_SE.txt seh.txt ses.txt sg.txt shi.txt\\r
- shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\\r
- smn.txt sn.txt so.txt so_DJ.txt so_ET.txt\\r
- so_KE.txt sq.txt sq_MK.txt sr.txt sr_Cyrl.txt\\r
- sr_Latn.txt sv.txt sw.txt sw_CD.txt sw_UG.txt\\r
- ta.txt ta_LK.txt ta_MY.txt ta_SG.txt te.txt\\r
- teo.txt teo_KE.txt th.txt ti.txt ti_ER.txt\\r
- to.txt tr.txt twq.txt tzm.txt ug.txt\\r
- uk.txt ur.txt ur_IN.txt uz.txt uz_Arab.txt\\r
- uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt\\r
- vi.txt vun.txt wae.txt xog.txt yav.txt\\r
- yi.txt yo.txt yo_BJ.txt yue.txt zgh.txt\\r
- zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\\r
- zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\\r
+ es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GQ.txt\\r
+ es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\\r
+ es_PE.txt es_PH.txt es_PR.txt es_PY.txt es_SV.txt\\r
+ es_US.txt es_UY.txt es_VE.txt et.txt eu.txt\\r
+ ewo.txt fa.txt fa_AF.txt ff.txt ff_GN.txt\\r
+ ff_MR.txt fi.txt fil.txt fo.txt fo_DK.txt\\r
+ fr.txt fr_BI.txt fr_CA.txt fr_CD.txt fr_DJ.txt\\r
+ fr_DZ.txt fr_GN.txt fr_HT.txt fr_KM.txt fr_LU.txt\\r
+ fr_MG.txt fr_MR.txt fr_MU.txt fr_RW.txt fr_SC.txt\\r
+ fr_SY.txt fr_TN.txt fr_VU.txt fur.txt fy.txt\\r
ga.txt gd.txt gl.txt gsw.txt gu.txt\\r
+ guz.txt gv.txt ha.txt ha_GH.txt haw.txt\\r
+ he.txt hi.txt hr.txt hr_BA.txt hsb.txt\\r
+ hu.txt hy.txt id.txt ig.txt ii.txt\\r
+ is.txt it.txt ja.txt jgo.txt jmc.txt\\r
ka.txt kab.txt kam.txt kde.txt kea.txt\\r
+ khq.txt ki.txt kk.txt kkj.txt kl.txt\\r
+ kln.txt km.txt kn.txt ko.txt kok.txt\\r
+ ks.txt ksb.txt ksf.txt ksh.txt kw.txt\\r
+ ky.txt lag.txt lb.txt lg.txt lkt.txt\\r
+ ln.txt ln_AO.txt lo.txt lrc.txt lt.txt\\r
+ lu.txt luo.txt luy.txt lv.txt mas.txt\\r
+ mas_TZ.txt mer.txt mfe.txt mg.txt mgh.txt\\r
+ mgo.txt mk.txt ml.txt mn.txt mr.txt\\r
+ ms.txt ms_BN.txt ms_SG.txt mt.txt mua.txt\\r
+ my.txt mzn.txt naq.txt nb.txt nd.txt\\r
+ nds.txt ne.txt nl.txt nl_AW.txt nl_BQ.txt\\r
+ nl_CW.txt nl_SR.txt nl_SX.txt nmg.txt nn.txt\\r
+ nnh.txt nus.txt nyn.txt om.txt om_KE.txt\\r
+ or.txt os.txt os_RU.txt pa.txt pa_Arab.txt\\r
+ pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\\r
+ pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\\r
+ pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\\r
qu.txt qu_BO.txt qu_EC.txt rm.txt rn.txt\\r
+ ro.txt ro_MD.txt rof.txt ru.txt ru_BY.txt\\r
+ ru_KG.txt ru_KZ.txt ru_MD.txt rw.txt rwk.txt\\r
sah.txt saq.txt sbp.txt se.txt se_SE.txt\\r
+ seh.txt ses.txt sg.txt shi.txt shi_Latn.txt\\r
+ shi_Tfng.txt si.txt sk.txt sl.txt smn.txt\\r
+ sn.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\\r
+ sq.txt sq_MK.txt sr.txt sr_Cyrl.txt sr_Latn.txt\\r
+ sv.txt sw.txt sw_CD.txt sw_UG.txt ta.txt\\r
+ ta_LK.txt ta_MY.txt ta_SG.txt te.txt teo.txt\\r
+ teo_KE.txt th.txt ti.txt ti_ER.txt to.txt\\r
+ tr.txt twq.txt tzm.txt ug.txt uk.txt\\r
+ ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\\r
+ uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\\r
+ vun.txt wae.txt xog.txt yav.txt yi.txt\\r
+ yo.txt yo_BJ.txt yue.txt zgh.txt zh.txt\\r
+ zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt\\r
+ zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index edc6643..543989d 100644 (file)
@@ -772,11 +772,11 @@ rm{
         }\r
         PEN{\r
             "PEN",\r
-            "sol peruan",\r
+            "nov sol peruan",\r
         }\r
         PES{\r
             "PES",\r
-            "sol peruan (1863–1965)",\r
+            "sol peruan",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1265,5 +1265,5 @@ rm{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 16e5f24..44b5681 100644 (file)
@@ -215,5 +215,5 @@ rn{
             "Idolari ryo muri Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 96d6975..b55633a 100644 (file)
@@ -616,7 +616,7 @@ ro{
         }\r
         PEN{\r
             "PEN",\r
-            "sol peruvian",\r
+            "sol nou peruvian",\r
         }\r
         PES{\r
             "PES",\r
@@ -1788,14 +1788,14 @@ ro{
             other{"balboa panameze"}\r
         }\r
         PEN{\r
-            few{"soli peruvieni"}\r
-            one{"sol peruvian"}\r
-            other{"soli peruvieni"}\r
+            few{"soli noi peruvieni"}\r
+            one{"sol nou peruvian"}\r
+            other{"soli noi peruvieni"}\r
         }\r
         PES{\r
-            few{"soli peruvieni (1863–1965)"}\r
+            few{"soli Peru (1863–1965)"}\r
             one{"sol peruvian (1863–1965)"}\r
-            other{"soli peruvieni (1863–1965)"}\r
+            other{"soli Peru (1863–1965)"}\r
         }\r
         PGK{\r
             few{"kina din Papua-Noua Guinee"}\r
@@ -2188,5 +2188,5 @@ ro{
         one{"{0} {1}"}\r
         other{"{0} de {1}"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
 }\r
index d1d4189..269bfe4 100644 (file)
@@ -7,5 +7,5 @@ ro_MD{
             "leu moldovenesc",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 4492bf0..fb6b93c 100644 (file)
@@ -223,5 +223,5 @@ rof{
             "heleri sa Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5a9b2bb..f1360f2 100644 (file)
@@ -192,7 +192,7 @@ root{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.58"}\r
     currencySpacing{\r
         afterCurrency{\r
             currencyMatch{"[:^S:]"}\r
index 2cb72e3..9a8a1ad 100644 (file)
@@ -708,11 +708,11 @@ ru{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуанский соль",\r
+            "Перуанский новый соль",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуанский соль (1863–1965)",\r
+            "Перуанский соль",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1866,16 +1866,10 @@ ru{
             other{"панамского бальбоа"}\r
         }\r
         PEN{\r
-            few{"перуанских соля"}\r
-            many{"перуанских солей"}\r
-            one{"перуанский соль"}\r
-            other{"перуанского соля"}\r
-        }\r
-        PES{\r
-            few{"перуанских соля (1863–1965)"}\r
-            many{"перуанских солей (1863–1965)"}\r
-            one{"перуанский соль (1863–1965)"}\r
-            other{"перуанского соля (1863–1965)"}\r
+            few{"перуанских новых соля"}\r
+            many{"перуанских новый солей"}\r
+            one{"перуанский новый соль"}\r
+            other{"перуанского нового соля"}\r
         }\r
         PGK{\r
             few{"кины Папуа – Новой Гвинеи"}\r
@@ -2196,5 +2190,5 @@ ru{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index bffedb8..9d355ec 100644 (file)
@@ -14,5 +14,5 @@ ru_BY{
     Currencies%narrow{\r
         BYN{"Br"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.30.5"}\r
 }\r
index e565412..71c00d4 100644 (file)
@@ -7,5 +7,5 @@ ru_KG{
             "Киргизский сом",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 945fb55..5fa9f76 100644 (file)
@@ -7,5 +7,5 @@ ru_KZ{
             "Казахский тенге",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6bfb075..cb29694 100644 (file)
@@ -7,5 +7,5 @@ ru_MD{
             "Молдавский лей",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2234237..6c829f1 100644 (file)
@@ -10,5 +10,5 @@ rw{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 01315b5..6944090 100644 (file)
@@ -227,5 +227,5 @@ rwk{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6c21980..d7f201a 100644 (file)
@@ -25,5 +25,5 @@ sah{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.87"}\r
 }\r
index 2e392d2..0ddaa1e 100644 (file)
@@ -223,5 +223,5 @@ saq{
             "Dola eel Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1cbf234..12f1f94 100644 (file)
@@ -223,5 +223,5 @@ sbp{
             "Ihela ya Simbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5b4dfb1..63d8e51 100644 (file)
@@ -73,5 +73,5 @@ se{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 20c9078..6efc762 100644 (file)
@@ -11,5 +11,5 @@ se_SE{
             "ruoŧŧa kruvdno",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5eab8f2..505058c 100644 (file)
@@ -231,5 +231,5 @@ seh{
             "Dólar do Zimbábue",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f9eaadc..21c1632 100644 (file)
@@ -227,5 +227,5 @@ ses{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8324604..c3d6c07 100644 (file)
@@ -223,5 +223,5 @@ sg{
             "dolära tî Zimbäbwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2a7b250..140f0ef 100644 (file)
@@ -227,5 +227,5 @@ shi{
             "ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 988d7fa..a247e7f 100644 (file)
@@ -228,5 +228,5 @@ shi_Latn{
             "adular n zimbabwi",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2db194b..22785f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba5e2a2..c037c76 100644 (file)
@@ -432,7 +432,7 @@ si{
         }\r
         PEN{\r
             "PEN",\r
-            "පේරු සොල්",\r
+            "පà·\9aරà·\94 à¶±à·\92යà·\94à·\80à·\9d à·\83à·\9cලà·\8a",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1165,8 +1165,8 @@ si{
             other{"පැනමා බැල්බෝ"}\r
         }\r
         PEN{\r
-            one{"පේරු සොල්"}\r
-            other{"පේරු සොල්"}\r
+            one{"පà·\9aරà·\94 à¶±à·\92යà·\94à·\80à·\9d à·\83à·\9cලà·\8a"}\r
+            other{"පà·\9aරà·\94 à¶±à·\92යà·\94à·\80à·\9d à·\83à·\9cලà·\8a"}\r
         }\r
         PGK{\r
             one{"පැපුවා නිව් ගිනියානු කිනා"}\r
@@ -1373,5 +1373,5 @@ si{
         one{"{1}{0}"}\r
         other{"{1}{0}"}\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 7d39431..d0a33c1 100644 (file)
@@ -672,11 +672,11 @@ sk{
         }\r
         PEN{\r
             "PEN",\r
-            "peruánsky sol",\r
+            "peruánsky nový sol",\r
         }\r
         PES{\r
             "PES",\r
-            "peruánsky sol (1863–1965)",\r
+            "Peruvský sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1816,16 +1816,10 @@ sk{
             other{"panamských balboí"}\r
         }\r
         PEN{\r
-            few{"peruánske soly"}\r
-            many{"peruánskeho sola"}\r
-            one{"peruánsky sol"}\r
-            other{"peruánskych solov"}\r
-        }\r
-        PES{\r
-            few{"peruánske soly (1863–1965)"}\r
-            many{"peruánskeho sola (1863–1965)"}\r
-            one{"peruánsky sol (1863–1965)"}\r
-            other{"peruánskych solov (1863–1965)"}\r
+            few{"peruánske nové soly"}\r
+            many{"peruánskeho nového sola"}\r
+            one{"peruánsky nový sol"}\r
+            other{"peruánskych nových solov"}\r
         }\r
         PGK{\r
             few{"papuánske kiny"}\r
@@ -2194,5 +2188,5 @@ sk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2a30139..f074357 100644 (file)
@@ -708,11 +708,11 @@ sl{
         }\r
         PEN{\r
             "PEN",\r
-            "perujski sol",\r
+            "perujski novi sol",\r
         }\r
         PES{\r
             "PES",\r
-            "perujski sol (1863–1965)",\r
+            "perujski sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1838,16 +1838,10 @@ sl{
             two{"panamski balboi"}\r
         }\r
         PEN{\r
-            few{"perujski soli"}\r
-            one{"perujski sol"}\r
-            other{"perujskih solov"}\r
-            two{"perujska sola"}\r
-        }\r
-        PES{\r
-            few{"perujski soli (1863–1965)"}\r
-            one{"perujski sol (1863–1965)"}\r
-            other{"perujskih solov (1863–1965)"}\r
-            two{"perujska sola (1863–1965)"}\r
+            few{"perujski novi soli"}\r
+            one{"perujski novi sol"}\r
+            other{"perujskih novih solov"}\r
+            two{"perujska nova sola"}\r
         }\r
         PGK{\r
             few{"kine Papue Nove Gvineje"}\r
@@ -2156,5 +2150,5 @@ sl{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 6ea24da..ac9ab96 100644 (file)
@@ -40,5 +40,5 @@ smn{
         other{"{0} {1}"}\r
         two{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 03127e8..eefacae 100644 (file)
@@ -231,5 +231,5 @@ sn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index d62d507..b777b39 100644 (file)
@@ -35,5 +35,5 @@ so{
             "Lacag aan la qoon ama aan saxnayn",\r
         }\r
     }\r
-    Version{"2.1.33.76"}\r
+    Version{"2.1.27.78"}\r
 }\r
index 8b18362..873313b 100644 (file)
@@ -7,5 +7,5 @@ so_DJ{
             "Faran Jabbuuti",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87c7c4a..e4ad12a 100644 (file)
@@ -7,5 +7,5 @@ so_ET{
             "Birta Itoobbiya",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20a5f43..b488e87 100644 (file)
@@ -7,5 +7,5 @@ so_KE{
             "KES",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a69e210..32474fa 100644 (file)
@@ -432,7 +432,7 @@ sq{
         }\r
         PEN{\r
             "PEN",\r
-            "Sola peruane",\r
+            "Sola nuevo-peruane",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1069,8 +1069,8 @@ sq{
             other{"balboa panameze"}\r
         }\r
         PEN{\r
-            one{"solë peruane"}\r
-            other{"sola peruane"}\r
+            one{"solë nuevo-peruane"}\r
+            other{"sola nuevo-peruane"}\r
         }\r
         PGK{\r
             one{"kinë e Papua-Guineas së Re"}\r
@@ -1277,5 +1277,5 @@ sq{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index f5039be..092031f 100644 (file)
@@ -7,5 +7,5 @@ sq_MK{
             "Denari maqedonas",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 25a6141..ffc033b 100644 (file)
@@ -716,11 +716,11 @@ sr{
         }\r
         PEN{\r
             "PEN",\r
-            "Перуански сол",\r
+            "Перуански нови сол",\r
         }\r
         PES{\r
             "PES",\r
-            "Перуански сол (1863–1965)",\r
+            "Перуански сол",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2110,15 +2110,15 @@ sr{
             other{"перувијских интија"}\r
         }\r
         PEN{\r
+            few{"перуанска нова сола"}\r
+            one{"перуански нови сол"}\r
+            other{"перуанских нових сола"}\r
+        }\r
+        PES{\r
             few{"перуанска сола"}\r
             one{"перуански сол"}\r
             other{"перуанских сола"}\r
         }\r
-        PES{\r
-            few{"перуанска сола (1863–1965)"}\r
-            one{"перуански сол (1863–1965)"}\r
-            other{"перуанских сола (1863–1965)"}\r
-        }\r
         PGK{\r
             few{"папуанскe кинe"}\r
             one{"папуанска кина"}\r
@@ -2620,5 +2620,5 @@ sr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2e18268..0b50a55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 58aeaa0..03e0485 100644 (file)
@@ -717,11 +717,11 @@ sr_Latn{
         }\r
         PEN{\r
             "PEN",\r
-            "Peruanski sol",\r
+            "Peruanski novi sol",\r
         }\r
         PES{\r
             "PES",\r
-            "Peruanski sol (1863–1965)",\r
+            "Peruanski sol",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2111,15 +2111,15 @@ sr_Latn{
             other{"peruvijskih intija"}\r
         }\r
         PEN{\r
+            few{"peruanska nova sola"}\r
+            one{"peruanski novi sol"}\r
+            other{"peruanskih novih sola"}\r
+        }\r
+        PES{\r
             few{"peruanska sola"}\r
             one{"peruanski sol"}\r
             other{"peruanskih sola"}\r
         }\r
-        PES{\r
-            few{"peruanska sola (1863–1965)"}\r
-            one{"peruanski sol (1863–1965)"}\r
-            other{"peruanskih sola (1863–1965)"}\r
-        }\r
         PGK{\r
             few{"papuanske kine"}\r
             one{"papuanska kina"}\r
@@ -2621,5 +2621,5 @@ sr_Latn{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.29.33"}\r
 }\r
index daade2f..e3db197 100644 (file)
@@ -780,7 +780,7 @@ sv{
         }\r
         PEN{\r
             "PEN",\r
-            "peruansk sol",\r
+            "peruansk nuevo sol",\r
         }\r
         PES{\r
             "PES",\r
@@ -2074,8 +2074,8 @@ sv{
             other{"peruanska intier"}\r
         }\r
         PEN{\r
-            one{"peruansk sol"}\r
-            other{"peruanska sol"}\r
+            one{"peruansk nuevo sol"}\r
+            other{"peruanska nuevo sol"}\r
         }\r
         PES{\r
             one{"peruansk sol (1863–1965)"}\r
@@ -2494,5 +2494,5 @@ sv{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
 }\r
index 72733a5..1206509 100644 (file)
@@ -448,7 +448,7 @@ sw{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol ya Peru",\r
+            "Nuevo Sol ya Peru",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1196,8 +1196,8 @@ sw{
             other{"Balboa za Panama"}\r
         }\r
         PEN{\r
-            one{"Sol ya Peru"}\r
-            other{"Sol za Peru"}\r
+            one{"Nuevo Sol ya Peru"}\r
+            other{"Nuevo Sol za Peru"}\r
         }\r
         PGK{\r
             one{"Kina ya Papua New Guinea"}\r
@@ -1408,5 +1408,5 @@ sw{
         one{"{1} {0}"}\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.33.73"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 4788450..f48a6ac 100644 (file)
@@ -39,5 +39,5 @@ sw_CD{
             "Faranga CFA BCEAO",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 64f7fd3..8a0cddc 100644 (file)
@@ -7,5 +7,5 @@ sw_UG{
             "Shilingi ya Uganda",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b6669d1..b38c868 100644 (file)
@@ -1380,5 +1380,5 @@ ta{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.4"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ec2c52e..d9761fc 100644 (file)
@@ -7,5 +7,5 @@ ta_LK{
             "இலங்கை ரூபாய்",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8181993..df27001 100644 (file)
@@ -11,5 +11,5 @@ ta_MY{
             "சிங்கப்பூர் டாலர்",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 016265c..208a1bb 100644 (file)
@@ -15,5 +15,5 @@ ta_SG{
             "அமெரிக்க டாலர்",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0fbedc4..a9cb4f2 100644 (file)
@@ -436,7 +436,7 @@ te{
         }\r
         PEN{\r
             "PEN",\r
-            "పెరువియన్ సోల్",\r
+            "à°ªà±\86à°°à±\81వియనà±\8d à°¨à±\8dà°¯à±\82à°µà±\8b à°¸à±\8bà°²à±\8d",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1173,8 +1173,8 @@ te{
             other{"పనామనియన్ బల్బోవాలు"}\r
         }\r
         PEN{\r
-            one{"పెరువియన్ సోల్"}\r
-            other{"పెరువియన్ సోల్‌లు"}\r
+            one{"à°ªà±\86à°°à±\81వియనà±\8d à°¨à±\8dà°¯à±\82à°µà±\8b à°¸à±\8bà°²à±\8d"}\r
+            other{"à°ªà±\86à°°à±\81వియనà±\8d à°¨à±\8dà°¯à±\82à°µà±\8b à°¸à±\8bà°²à±\8dâ\80\8cà°²à±\81"}\r
         }\r
         PGK{\r
             one{"పప్యూ న్యూ గ్యినియన్ కినా"}\r
@@ -1381,5 +1381,5 @@ te{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 13e1af3..207bf51 100644 (file)
@@ -223,5 +223,5 @@ teo{
             "Edola lok’Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 074c930..365e307 100644 (file)
@@ -7,5 +7,5 @@ teo_KE{
             "Ango’otol lok’ Kenya",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dcf70f1..b357476 100644 (file)
@@ -760,11 +760,11 @@ th{
         }\r
         PEN{\r
             "PEN",\r
-            "ซอลเปรู",\r
+            "à¸\99ูà¹\82วà¸\8bอลà¹\80à¸\9bรู",\r
         }\r
         PES{\r
             "PES",\r
-            "ซอลเปรู (1863–1965)",\r
+            "ซอลเปรู",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1596,10 +1596,7 @@ th{
             other{"บัลบัวปานามา"}\r
         }\r
         PEN{\r
-            other{"ซอลเปรู"}\r
-        }\r
-        PES{\r
-            other{"ซอลเปรู(1863–1965)"}\r
+            other{"นูโวซอลเปรู"}\r
         }\r
         PGK{\r
             other{"กีนาปาปัวนิวกินี"}\r
@@ -1761,5 +1758,5 @@ th{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index f616316..b54eade 100644 (file)
@@ -43,5 +43,5 @@ ti{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2d8a116..ba0d60a 100644 (file)
@@ -7,5 +7,5 @@ ti_ER{
             "ERN",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 5e88b2c..5c768d1 100644 (file)
@@ -71,5 +71,5 @@ to{
     CurrencyUnitPatterns{\r
         other{"{1} {0}"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 3e5a8f5..4a0be85 100644 (file)
@@ -780,11 +780,11 @@ tr{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru Solü",\r
+            "Peru Nuevo Solü",\r
         }\r
         PES{\r
             "PES",\r
-            "Peru Solü (1863–1965)",\r
+            "Peru Solu",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -2024,12 +2024,12 @@ tr{
             other{"Peru İnti"}\r
         }\r
         PEN{\r
-            one{"Peru solü"}\r
-            other{"Peru solü"}\r
+            one{"Peru nuevo solü"}\r
+            other{"Peru nuevo solü"}\r
         }\r
         PES{\r
-            one{"Peru Solü (1863–1965)"}\r
-            other{"Peru Solü (1863–1965)"}\r
+            one{"Peru Solu"}\r
+            other{"Peru Solu"}\r
         }\r
         PGK{\r
             one{"Papua Yeni Gine kinası"}\r
@@ -2368,5 +2368,5 @@ tr{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index b8f361d..11d544e 100644 (file)
@@ -227,5 +227,5 @@ twq{
             "Zimbabwe Dollar",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 48d881a..29ec30c 100644 (file)
@@ -227,5 +227,5 @@ tzm{
             "Ḍular Uzimbabwi",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 560455c..67faeff 100644 (file)
@@ -780,7 +780,7 @@ ug{
         }\r
         PEN{\r
             "PEN",\r
-            "پېرۇ سولى",\r
+            "پېرۇ يېڭى سولى",\r
         }\r
         PES{\r
             "PES",\r
@@ -1973,8 +1973,8 @@ ug{
             other{"پېرۇ ئىنتىسى"}\r
         }\r
         PEN{\r
-            one{"پېرۇ سولى"}\r
-            other{"پېرۇ سولى"}\r
+            one{"پېرۇ يېڭى سولى"}\r
+            other{"پېرۇ يېڭى سولى"}\r
         }\r
         PES{\r
             one{"پېرۇ سولى (1863–1965)"}\r
@@ -2393,5 +2393,5 @@ ug{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 8e274e0..65eda2b 100644 (file)
@@ -708,11 +708,11 @@ uk{
         }\r
         PEN{\r
             "PEN",\r
-            "перуанський сол",\r
+            "перуанський новий сол",\r
         }\r
         PES{\r
             "PES",\r
-            "перуанський сол (1863–1965)",\r
+            "перуанський сол",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1907,16 +1907,10 @@ uk{
             other{"панамського бальбоа"}\r
         }\r
         PEN{\r
-            few{"перуанські соли"}\r
-            many{"перуанських солів"}\r
-            one{"перуанський сол"}\r
-            other{"перуанського сола"}\r
-        }\r
-        PES{\r
-            few{"перуанські соли (1863–1965)"}\r
-            many{"перуанських солів (1863–1965)"}\r
-            one{"перуанський сол (1863–1965)"}\r
-            other{"перуанського сола (1863–1965)"}\r
+            few{"перуанські нові соли"}\r
+            many{"перуанських нових солів"}\r
+            one{"перуанський новий сол"}\r
+            other{"перуанського нового сола"}\r
         }\r
         PGK{\r
             few{"кіни Папуа Нової Гвінеї"}\r
@@ -2273,5 +2267,5 @@ uk{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.38"}\r
 }\r
index 9949dad..957efd6 100644 (file)
@@ -444,7 +444,7 @@ ur{
         }\r
         PEN{\r
             "PEN",\r
-            "پیرو نیووسول",\r
+            "پیروین نیووسول",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1192,8 +1192,8 @@ ur{
             other{"پنامہ کا بالبوآ"}\r
         }\r
         PEN{\r
-            one{"پیرو نیووسول"}\r
-            other{"پیرو نیووسول"}\r
+            one{"پیروین نیووسول"}\r
+            other{"پیروین نیووسول"}\r
         }\r
         PGK{\r
             one{"پاپوآ نیو گنی کا کینا"}\r
@@ -1400,5 +1400,5 @@ ur{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 918da35..31807d5 100644 (file)
@@ -77,5 +77,5 @@ ur_IN{
             other{"ساموآئی ٹالا"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.79"}\r
 }\r
index dde6744..f5de1f7 100644 (file)
@@ -432,7 +432,7 @@ uz{
         }\r
         PEN{\r
             "PEN",\r
-            "Peru soli",\r
+            "Peru yangi soli",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1164,8 +1164,8 @@ uz{
             other{"Panama balboasi"}\r
         }\r
         PEN{\r
-            one{"Peru soli"}\r
-            other{"Peru soli"}\r
+            one{"Peru yangi soli"}\r
+            other{"Peru yangi soli"}\r
         }\r
         PGK{\r
             one{"Papua – Yangi Gvineya kinasi"}\r
@@ -1372,5 +1372,5 @@ uz{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.44"}\r
 }\r
index dfbd277..8debd4b 100644 (file)
@@ -8,5 +8,5 @@ uz_Arab{
             "افغانی",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index acaea6c..dcb6c40 100644 (file)
@@ -165,7 +165,7 @@ uz_Cyrl{
         }\r
         PEN{\r
             "PEN",\r
-            "Перу сол",\r
+            "Перу нуево сол",\r
         }\r
         PYG{\r
             "PYG",\r
@@ -370,8 +370,8 @@ uz_Cyrl{
             other{"Панама бальбоаси"}\r
         }\r
         PEN{\r
-            one{"Перу сол"}\r
-            other{"Перу сол"}\r
+            one{"Перу нуево сол"}\r
+            other{"Перу нуево сол"}\r
         }\r
         PYG{\r
             one{"Парагвай гуарани"}\r
@@ -414,5 +414,5 @@ uz_Cyrl{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.27.98"}\r
 }\r
index fdd810c..bdf99c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bc4148d..a7290d2 100644 (file)
@@ -215,5 +215,5 @@ vai{
             "ꔽꕓꖜꔃ ꕜꕞ",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index daf641d..592a810 100644 (file)
@@ -220,5 +220,5 @@ vai_Latn{
             "Zimbhabhuwe Dala",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66f0f3..38872b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a7bd284..f61191f 100644 (file)
@@ -760,7 +760,7 @@ vi{
         }\r
         PEN{\r
             "PEN",\r
-            "Sol Peru",\r
+            "Nuevo Sol Peru",\r
         }\r
         PES{\r
             "PES",\r
@@ -1589,7 +1589,7 @@ vi{
             other{"Balboa Panama"}\r
         }\r
         PEN{\r
-            other{"Sol Peru"}\r
+            other{"Nuevo Sol Peru"}\r
         }\r
         PGK{\r
             other{"Kina Papua New Guinean"}\r
@@ -1748,5 +1748,5 @@ vi{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index fa96613..e256f59 100644 (file)
@@ -227,5 +227,5 @@ vun{
             "Dola ya Zimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c12ecb..a70a92d 100644 (file)
@@ -81,5 +81,5 @@ wae{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e554eb0..7f0e3c4 100644 (file)
@@ -223,5 +223,5 @@ xog{
             "Doola ey’eZimbabwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f70156a..363a376 100644 (file)
@@ -95,5 +95,5 @@ yav{
             "́faláŋɛ u kɔmɔ́ɔl",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 69f2889..062fb94 100644 (file)
@@ -105,5 +105,5 @@ yi{
             other{"אומבאַוואוסטע וואַלוטע"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.97"}\r
 }\r
index a8568da..93f4ac3 100644 (file)
@@ -230,5 +230,5 @@ yo{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2fe8191..8048304 100644 (file)
@@ -215,5 +215,5 @@ yo_BJ{
             "Dɔla ti Orílɛ́ède Siibabuwe",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index bec0d5a..9c78c3f 100644 (file)
@@ -780,7 +780,7 @@ yue{
         }\r
         PEN{\r
             "PEN",\r
-            "秘魯太陽幣",\r
+            "秘魯太陽幣",\r
         }\r
         PES{\r
             "PES",\r
@@ -1878,7 +1878,7 @@ yue{
             other{"祕魯因蒂"}\r
         }\r
         PEN{\r
-            other{"秘魯太陽幣"}\r
+            other{"秘魯太陽幣"}\r
         }\r
         PES{\r
             other{"秘魯索爾 (1863–1965)"}\r
@@ -2193,5 +2193,5 @@ yue{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index ba6af71..2ea1d08 100644 (file)
@@ -234,5 +234,5 @@ zgh{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b7c765f..9ac5b5c 100644 (file)
@@ -776,7 +776,7 @@ zh{
         }\r
         PEN{\r
             "PEN",\r
-            "秘鲁索尔",\r
+            "秘鲁索尔",\r
         }\r
         PES{\r
             "PES",\r
@@ -1854,7 +1854,7 @@ zh{
             other{"秘鲁印第"}\r
         }\r
         PEN{\r
-            other{"秘鲁索尔"}\r
+            other{"秘鲁索尔"}\r
         }\r
         PES{\r
             other{"秘鲁索尔 (1863–1965)"}\r
@@ -2118,5 +2118,5 @@ zh{
     CurrencyUnitPatterns{\r
         other{"{0}{1}"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.29.84"}\r
 }\r
index 1e311fc..c64cac5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8aa4615..38eebfa 100644 (file)
@@ -29,5 +29,5 @@ zh_Hans_HK{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index eee6306..7f0bdd4 100644 (file)
@@ -29,5 +29,5 @@ zh_Hans_MO{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index fa8c23a..8b1d0eb 100644 (file)
@@ -29,5 +29,5 @@ zh_Hans_SG{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 4a74765..92e4b7b 100644 (file)
@@ -781,11 +781,11 @@ zh_Hant{
         }\r
         PEN{\r
             "PEN",\r
-            "秘魯太陽幣",\r
+            "秘魯太陽幣",\r
         }\r
         PES{\r
             "PES",\r
-            "秘魯太陽幣 (1863–1965)",\r
+            "秘魯索爾 (1863–1965)",\r
         }\r
         PGK{\r
             "PGK",\r
@@ -1878,10 +1878,10 @@ zh_Hant{
             other{"祕魯因蒂"}\r
         }\r
         PEN{\r
-            other{"秘魯太陽幣"}\r
+            other{"秘魯太陽幣"}\r
         }\r
         PES{\r
-            other{"秘魯太陽幣 (1863–1965)"}\r
+            other{"秘魯索爾 (1863–1965)"}\r
         }\r
         PGK{\r
             other{"巴布亞紐幾內亞基那"}\r
@@ -2193,5 +2193,5 @@ zh_Hant{
     CurrencyUnitPatterns{\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.28.79"}\r
 }\r
index c689ef0..91ee224 100644 (file)
@@ -449,5 +449,5 @@ zh_Hant_HK{
             other{"贊比亞克瓦查"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 9430aa4..f2c880d 100644 (file)
@@ -8,5 +8,5 @@ zh_Hant_MO{
             "澳門元",\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21d8d59..aaf5a2f 100644 (file)
@@ -1372,5 +1372,5 @@ zu{
         one{"{0} {1}"}\r
         other{"{0} {1}"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.29.22"}\r
 }\r
index aee3c4d..2f47c19 100644 (file)
@@ -9,7 +9,6 @@
 */\r
 -->\r
 <deprecates>\r
-       <alias from="ars" to="ar"/>\r
        <alias from="de__PHONEBOOK" to="de"  rbpath="/collations/default" value="phonebook"/>\r
        <alias from="es__TRADITIONAL" to="es" rbpath="/collations/default" value="traditional"/>\r
        <alias from="in" to="id" />\r
index 4ffded9..a2c216c 100644 (file)
@@ -49,7 +49,6 @@
                <include locales="ar_TD"/>\r
                <include locales="ar_TN"/>\r
                <include locales="ar_YE"/>\r
-               <include locales="ars"/>\r
                <include locales="as"/>\r
                <include locales="as_IN"/>\r
                <include locales="asa"/>\r
                <include locales="es_AR"/>\r
                <include locales="es_BO"/>\r
                <include locales="es_BR"/>\r
-               <include locales="es_BZ"/>\r
                <include locales="es_CL"/>\r
                <include locales="es_CO"/>\r
                <include locales="es_CR"/>\r
                <include locales="it_CH"/>\r
                <include locales="it_IT"/>\r
                <include locales="it_SM"/>\r
-               <include locales="it_VA"/>\r
                <include locales="iw"/>\r
                <include locales="iw_IL"/>\r
                <include locales="ja"/>\r
index a919330..cfd7b1b 100644 (file)
@@ -9,7 +9,6 @@
 */\r
 -->\r
 <deprecates>\r
-    <alias from="ars" to="ar_SA"/>\r
     <alias from="az_AZ" to="az_Latn_AZ"/>\r
     <alias from="bs_BA" to="bs_Latn_BA" />\r
     <alias from="en_NH" to="en_VU"/>\r
index 1a6cee2..1b1907f 100644 (file)
@@ -9,7 +9,6 @@
 */\r
 -->\r
 <deprecates>\r
-   <alias from="ars" to="ar" />\r
    <alias from="es_DO" to="es_419" />\r
    <alias from="es_GT" to="es_419" />\r
    <alias from="es_HN" to="es_419" />\r
index 8cd7c55..6e5774c 100644 (file)
Binary files a/source/data/in/ubidi.icu and b/source/data/in/ubidi.icu differ
index 3a986d9..9e3ce0e 100644 (file)
Binary files a/source/data/in/uprops.icu and b/source/data/in/uprops.icu differ
index e35ccd9..4882b79 100644 (file)
@@ -618,7 +618,7 @@ af{
             vaii{"Vai-syfers"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     characterLabelPattern{\r
         all{"{0} – Alle"}\r
         category-list{"{0}: {1}"}\r
index aaabc5b..6a24066 100644 (file)
@@ -48,5 +48,5 @@ agq{
         zh{"Chàenê"}\r
         zu{"Zulù"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 85f721f..d9088c6 100644 (file)
@@ -47,5 +47,5 @@ ak{
         zh{"Kyaena kasa"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2182e89..ede4237 100644 (file)
@@ -688,7 +688,7 @@ am{
             vaii{"የቫይ አሃዞች"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — ሁሉም"}\r
         category-list{"{0}: {1}"}\r
index 0662d80..4a5d25c 100644 (file)
@@ -849,7 +849,7 @@ ar{
         VALENCIA{"بلنسية"}\r
         WADEGILE{"المندرين باللاتينية - ويد–جيلز"}\r
     }\r
-    Version{"2.1.32.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} - الكل"}\r
         category-list{"{0}: {1}"}\r
index ccdddda..102a250 100644 (file)
@@ -4,5 +4,5 @@ ar_EG{
     Languages{\r
         da{"الدنماركية"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 79356aa..b83cdb5 100644 (file)
@@ -12,5 +12,5 @@ ar_LY{
         sw_CD{"السواحيلية الكونغولية"}\r
         ti{"التيغرينية"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 9fe79da..cf85227 100644 (file)
@@ -13,5 +13,5 @@ ar_SA{
         sw_CD{"السواحيلية الكونغولية"}\r
         ti{"التيغرينية"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
diff --git a/source/data/lang/ars.txt b/source/data/lang/ars.txt
deleted file mode 100644 (file)
index 9bb22b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar_SA"}\r
-}\r
index 931c55a..af2f9bf 100644 (file)
@@ -33,5 +33,5 @@ as{
             traditional{"পৰম্পৰাগতভাবে শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cedcb4b..78f6499 100644 (file)
@@ -48,5 +48,5 @@ asa{
         zh{"Kichina"}\r
         zu{"Kidhulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 034d2fa..3b5ddb5 100644 (file)
@@ -1077,7 +1077,7 @@ ast{
         VALLADER{"VALLADER"}\r
         WADEGILE{"romanización de Wade-Giles"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     characterLabelPattern{\r
         all{"{0} — too"}\r
         compatibility{"{0} — compatibilidá"}\r
index 316adcf..baa3a06 100644 (file)
@@ -743,7 +743,7 @@ az{
             tibt{"Tibet Rəqəmləri"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Bütün"}\r
         category-list{"{0}: {1}"}\r
index 48da152..913822c 100644 (file)
@@ -399,7 +399,7 @@ az_Cyrl{
     Scripts{\r
         Cyrl{"Кирил"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"Дил: {0}"}\r
         script{"Скрипт: {0}"}\r
index 4c0b75a..4ce2adb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12f5bc9..015cccc 100644 (file)
@@ -48,5 +48,5 @@ bas{
         zh{"Hɔp u kinà"}\r
         zu{"Hɔp u zulù"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2c8ecda..8d3648c 100644 (file)
@@ -565,7 +565,7 @@ be{
             tibt{"тыбецкія лічбы"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.66"}\r
     characterLabelPattern{\r
         all{"{0} — Усё"}\r
         category-list{"{0}: {1}"}\r
index 9f11ce7..7b52bdb 100644 (file)
@@ -48,5 +48,5 @@ bem{
         zh{"Ichi Chainisi"}\r
         zu{"Ichi Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2911e12..135a6cc 100644 (file)
@@ -48,5 +48,5 @@ bez{
         zh{"Hichina"}\r
         zu{"Hizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 54dce57..acb1692 100644 (file)
@@ -828,7 +828,7 @@ bg{
         VALENCIA{"Валенсиански"}\r
         WADEGILE{"Уейд-Джайлс романизация"}\r
     }\r
-    Version{"2.1.33.75"}\r
+    Version{"2.1.30.6"}\r
     characterLabelPattern{\r
         all{"{0} – всички"}\r
         category-list{"{0}: {1}"}\r
index 49574b9..18560fb 100644 (file)
@@ -48,5 +48,5 @@ bm{
         zh{"siniwakan"}\r
         zu{"zulukan"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 786e767..4eab759 100644 (file)
@@ -826,7 +826,7 @@ bn{
             vaii{"ভাই সংখ্যা"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     characterLabelPattern{\r
         all{"{0} — সমস্ত"}\r
         category-list{"{0}: {1}"}\r
index c9111aa..2d87ff5 100644 (file)
@@ -4,5 +4,5 @@ bn_IN{
     Languages{\r
         ksh{"কোলোনিয়ান"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 946d4bf..a0c7bd0 100644 (file)
@@ -21,5 +21,5 @@ bo{
         Tibt{"བོད་ཡིག་"}\r
         Zxxx{"སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་ཟིན་ཐོ།"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7926a6f..ce2e4d8 100644 (file)
@@ -732,7 +732,7 @@ br{
         VALLADER{"rannyezh romañchek Vallader"}\r
         WADEGILE{"romanekadur Wade-Giles"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index 0022238..243dc91 100644 (file)
@@ -609,7 +609,7 @@ brx{
         SOLBA{"श्टोलविज़्ज़ा या सोलबीका डायलेक्ट"}\r
         TARASK{"तारास्कीएवीचा वर्तनी"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         script{"देवनागरी: {0}"}\r
         territory{"क्षेत्र:भारत {0}"}\r
index 0644438..e90cfea 100644 (file)
@@ -788,7 +788,7 @@ bs{
         TARASK{"Taraskijevica ortografija"}\r
         VALENCIA{"Valencijski"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — sve"}\r
         category-list{"{0}: {1}"}\r
index ca08547..cd1c718 100644 (file)
@@ -702,7 +702,7 @@ bs_Cyrl{
         TARASK{"Тараскијевичка ортографија"}\r
         VALENCIA{"Валенцијска"}\r
     }\r
-    Version{"2.1.32.72"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index 972dc01..20b4126 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9778547..f326170 100644 (file)
@@ -994,7 +994,7 @@ ca{
         VALLADER{"baix engiadinès"}\r
         WADEGILE{"romanització Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — tot"}\r
         category-list{"{0}: {1}"}\r
index 33c3cce..cbca919 100644 (file)
@@ -295,7 +295,7 @@ ce{
             persian{"гӀажарийн"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Мотт: {0}"}\r
         script{"Скрипт: {0}"}\r
index fea3e5c..2bea37c 100644 (file)
@@ -48,5 +48,5 @@ cgg{
         zh{"Oruchaina"}\r
         zu{"Oruzuru"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1fdda6c..689089d 100644 (file)
@@ -537,7 +537,7 @@ chr{
             tibt{"ᏘᏇᏔᏂ ᏗᏎᏍᏗ"}\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
     characterLabelPattern{\r
         all{"{0} — ᏂᎦᏓ"}\r
         compatibility{"{0} — ᎤᏠᏯᏉᏗᏙᎵᎩ"}\r
index 35b18d4..3d4e1f1 100644 (file)
@@ -137,5 +137,5 @@ ckb{
         Thaa{"تانە"}\r
         Thai{"تایلەندی"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 929ff9c..9e8acc7 100644 (file)
@@ -957,7 +957,7 @@ cs{
         SCOTLAND{"angličtina (Skotsko)"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} – vše"}\r
         category-list{"{0}: {1}"}\r
index ef331d6..74438d1 100644 (file)
@@ -732,7 +732,7 @@ cy{
         VAIDIKA{"VAIDIKA"}\r
         VALLADER{"VALLADER"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     characterLabelPattern{\r
         all{"{0} — Popeth"}\r
         category-list{"{0}: {1}"}\r
index 3d2812b..b0341bb 100644 (file)
@@ -953,7 +953,7 @@ da{
         VALLADER{"vallader"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — alle"}\r
         category-list{"{0}: {1}"}\r
index d85c264..170f3f9 100644 (file)
@@ -48,5 +48,5 @@ dav{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6acd606..dbe073a 100644 (file)
@@ -1016,7 +1016,7 @@ de{
         VALENCIA{"Valencianisch"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Alle"}\r
         category-list{"{0}: {1}"}\r
index fedf4f5..00da72d 100644 (file)
@@ -16,5 +16,5 @@ de_AT{
         sh{"Serbokroatisch"}\r
         szl{"Schlesisch"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.73"}\r
 }\r
index 94f3f8f..f92ff03 100644 (file)
@@ -34,5 +34,5 @@ de_CH{
             ussystem{"US Mass-System"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 1b16c8b..40b0880 100644 (file)
@@ -4,5 +4,5 @@ de_LU{
     Languages{\r
         be{"Belarussisch"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 86096ce..186bfb3 100644 (file)
@@ -48,5 +48,5 @@ dje{
         zh{"Sinuwa senni"}\r
         zu{"Zulu senni"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5741651..8a24ada 100644 (file)
@@ -378,7 +378,7 @@ dsb{
             tibt{"tibetske cyfry"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Rěc: {0}"}\r
         script{"Pismo: {0}"}\r
index dc04c73..e6ba227 100644 (file)
@@ -4,5 +4,5 @@ dua{
     Languages{\r
         dua{"duálá"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2e1ac86..ae9ee38 100644 (file)
@@ -48,5 +48,5 @@ dyo{
         zh{"sinua"}\r
         zu{"sulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c8a2dc8..9210f84 100644 (file)
@@ -234,7 +234,7 @@ dz{
             tibt{"ང་བཅས་ཀྱི་ཨང་ཡིག"}\r
         }\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.29.61"}\r
     codePatterns{\r
         language{"ཁ་སྐད་: {0}"}\r
         script{"ཡིག་གཟུགས་: {0}"}\r
index 1a78def..7b96351 100644 (file)
@@ -48,5 +48,5 @@ ebu{
         zh{"Kĩchina"}\r
         zu{"Kĩzulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4e0cc7a..f0b002b 100644 (file)
@@ -299,7 +299,7 @@ ee{
             tibt{"tibet digitwo"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"gbegbɔgblɔ {0}"}\r
         script{"gbeŋɔŋlɔ {0}"}\r
index 61bdf6a..9efa836 100644 (file)
@@ -876,7 +876,7 @@ el{
         VALENCIA{"Βαλενθιανά"}\r
         WADEGILE{"Εκλατινισμένα Γουάντ-Γκιλς"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Όλα"}\r
         category-list{"{0}: {1}"}\r
index dc364ea..99fbe2d 100644 (file)
@@ -17,7 +17,6 @@ en{
         d0{"Transform Destination"}\r
         em{"Emoji Presentation Style"}\r
         fw{"First day of week"}\r
-        h0{"Mixed-in Language"}\r
         hc{"Hour Cycle (12 vs 24)"}\r
         i0{"Input Method"}\r
         k0{"Keyboard"}\r
@@ -935,12 +934,8 @@ en{
             zhuyin{"Zhuyin Sort Order"}\r
         }\r
         d0{\r
-            accents{"To Accented Characters From ASCII Sequence"}\r
             ascii{"To ASCII"}\r
-            casefold{"To Casefolded"}\r
             charname{"To Unicode Character Names"}\r
-            fcc{"To Unicode FCC"}\r
-            fcd{"To Unicode FCD"}\r
             fwidth{"To Fullwidth"}\r
             hex{"To Hexadecimal Codes"}\r
             hwidth{"To Halfwidth"}\r
@@ -950,9 +945,6 @@ en{
             nfkc{"To Unicode NFKC"}\r
             nfkd{"To Unicode NFKD"}\r
             npinyin{"To Pinyin With Numeric Tones"}\r
-            null{"No Change"}\r
-            publish{"To Publishing Characters From ASCII"}\r
-            remove{"To Empty String"}\r
             title{"To Titlecase"}\r
             upper{"To Uppercase"}\r
         }\r
@@ -970,52 +962,12 @@ en{
             tue{"First Day of Week Is Tuesday"}\r
             wed{"First Day of Week Is Wednesday"}\r
         }\r
-        h0{\r
-            hybrid{"Hybrid Language"}\r
-        }\r
         hc{\r
             h11{"12 Hour System (0–11)"}\r
             h12{"12 Hour System (1–12)"}\r
             h23{"24 Hour System (0–23)"}\r
             h24{"24 Hour System (1–24)"}\r
         }\r
-        i0{\r
-            handwrit{"Handwriting Input Method"}\r
-            pinyin{"Pinyin Input Method"}\r
-            und{"Unspecified Input Method"}\r
-            wubi{"Wubi Input Method"}\r
-        }\r
-        k0{\r
-            101key{"101-Key Keyboard"}\r
-            102key{"102-Key Keyboard"}\r
-            600dpi{"600 dpi Keyboard"}\r
-            768dpi{"768 dpi Keyboard"}\r
-            android{"Android Keyboard"}\r
-            azerty{"AZERTY-Based Keyboard"}\r
-            chromeos{"ChromeOS Keyboard"}\r
-            colemak{"Colemak Keyboard"}\r
-            dvorak{"Dvorak Keyboard"}\r
-            dvorakl{"Dvorak Left-Handed Keyboard"}\r
-            dvorakr{"Dvorak Right-Handed Keyboard"}\r
-            el220{"Greek 220 Keyboard"}\r
-            el319{"Greek 319 Keyboard"}\r
-            extended{"Keyboard With Many Extra Characters"}\r
-            googlevk{"Google Virtual Keyboard"}\r
-            isiri{"Persian ISIRI Keyboard"}\r
-            legacy{"Legacy Keyboard"}\r
-            lt1205{"Lithuanian LST 1205 Keyboard"}\r
-            lt1582{"Lithuanian LST 1582 Keyboard"}\r
-            nutaaq{"Inuktitut Nutaaq Keyboard"}\r
-            osx{"macOS Keyboard"}\r
-            patta{"Thai Pattachote Keyboard"}\r
-            qwerty{"QWERTY-Based Keyboard"}\r
-            qwertz{"QWERTZ-Based Keyboard"}\r
-            ta99{"Tamil 99 Keyboard"}\r
-            und{"Unspecified Keyboard"}\r
-            var{"Keyboard Variant"}\r
-            viqr{"Vietnamese VIQR Keyboard"}\r
-            windows{"Windows Keyboard"}\r
-        }\r
         kr{\r
             currency{"Currency"}\r
             digit{"Digits"}\r
@@ -1040,17 +992,8 @@ en{
             normal{"Normal Line Breaks For Words"}\r
         }\r
         m0{\r
-            alaloc{"US ALA-LOC Transliteration"}\r
-            bgn{"US BGN Transliteration"}\r
-            buckwalt{"Buckwalter Arabic Transliteration"}\r
-            din{"German DIN Transliteration"}\r
-            gost{"CIS GOST Transliteration"}\r
-            iso{"ISO Transliteration"}\r
-            mcst{"Korean MCST Transliteration"}\r
-            mns{"Mongolian National Standard Transliteration"}\r
-            prprname{"Personal Name Transliteration Variant"}\r
-            satts{"Standard Arabic Technical Transliteration"}\r
-            ungegn{"UN GEGN Transliteration"}\r
+            bgn{"BGN"}\r
+            ungegn{"UNGEGN"}\r
         }\r
         ms{\r
             metric{"Metric System"}\r
@@ -1139,21 +1082,10 @@ en{
             vaii{"Vai Digits"}\r
             wara{"Warang Citi Digits"}\r
         }\r
-        s0{\r
-            accents{"From Accented Characters To ASCII Sequence"}\r
-            ascii{"From ASCII"}\r
-            hex{"From Hexadecimal Codes"}\r
-            npinyin{"From Pinyin With Numeric Tones"}\r
-            publish{"From Publishing Punctuation To ASCII"}\r
-            zawgyi{"From Zawgyi Myanmar Encoding"}\r
-        }\r
         ss{\r
             none{"Sentence Breaks Without Abbreviation Handling"}\r
             standard{"Suppress Sentence Breaks After Standard Abbreviations"}\r
         }\r
-        t0{\r
-            und{"Unspecified Machine Translation"}\r
-        }\r
         va{\r
             posix{"POSIX Compliant Locale"}\r
         }\r
@@ -1220,7 +1152,7 @@ en{
         VALENCIA{"Valencian"}\r
         WADEGILE{"Wade-Giles Romanization"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.50"}\r
     characterLabelPattern{\r
         all{"{0} — all"}\r
         category-list{"{0}: {1}"}\r
index 864c6e5..3fba1a0 100644 (file)
@@ -10,5 +10,5 @@ en_001{
             yes{"Sort Unicode Normalised"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 78561e0..249596a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a0d454..93d0c87 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 07cb4ef..d55549d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09171c4..b4edb3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 33fb77f..0e8a773 100644 (file)
@@ -12,5 +12,5 @@ en_AU{
             ethiopic{"Ethiopian Calendar"}\r
         }\r
     }\r
-    Version{"2.1.32.62"}\r
+    Version{"2.1.30.50"}\r
 }\r
index 84a0efd..7083244 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7065545..c967ad1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a3b9186..17ad945 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 95e82b5..03e7849 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a73b7bc..d4c98cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 5891076..13545f6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2fe08f5..095353c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index a54c911..a2871e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f2d948..d055587 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f59d92a..8bd2eba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5aacc7b..e0ae421 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c9c483..a5c8744 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46da087..81d8657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d2d71a..a91a9c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d758dd..af3ee11 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5a92d6b..55574ee 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b548583..4eaa7dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7fd2c9a..228a8a8 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f699cc1..12aebe3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 86f8e9d..c439098 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5df30b2..21a12bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eab91ca..78ffc47 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a57c80..d57d893 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.24"}\r
 }\r
index 7921b24..ab0594c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0d3839..8474cce 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b66f585..33fc5d4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fe0d68..46d28cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1a05f40..e0d4e60 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7397d6..dec9373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a04a10..7c42f22 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 18bb2f3..acfab3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 76bee45..1500279 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66ecc0..b5e5329 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0b82dc0..bc2a255 100644 (file)
@@ -16,5 +16,5 @@ en_IN{
             orya{"Oriya Digits"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2b8ba3f..73736a0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c47ce4e..f31e9bf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d812c18..67edbc7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b11b581..26213f7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 899b1ea..3f8c7e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35fb03c..f755a2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bd356e9..e26f444 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bfd0689..7abb21b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3fc63c0..07b6a83 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b723857..b5123bd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f967e69..9eafad7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f6dfb6a..0b1b6a5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a027fc6..df8f657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8464a2e..23b6896 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 890b025..bb0cc54 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 873b8e1..58ee57a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b36d9ba..064aa6e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5f0af42..26854fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 358d626..0a360ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 745a114..5038494 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d0d0cd..21bbdc9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 165856c..039e457 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 266914a..eb82604 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 99e896c..2c73397 100644 (file)
@@ -5,5 +5,5 @@ en_NZ{
     Languages{\r
         mi{"Māori"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6aa4d92..c1792a4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 080d0e6..0ca66f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fef2013..ccbdf7f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4094568..5bf94f0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30541dc..0af3d13 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 76b4d89..7bb21c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2de69a..cb507b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 77c65fa..699d679 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87a33e2..6206b27 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 31f586b..d7fa572 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5250ec4..66e6ec7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index cf6ab49..968da99 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a259492..fedf1c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3e61485..4005802 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2b3a430..002988b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ec1778f..9862443 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cc8b6f1..47c792d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 852eb0f..eaabbe1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 020c31b..797d773 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d27b6ec..f1697f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21b8b30..599a8fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ebd07d..a2c5021 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5e30f2b..c0c2960 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eaac010..3b6c1e4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12317cf..de17869 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba6619b..e6a295b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12b8824..2cecbf4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c90fd7..a3f70e3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0461373..d528625 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.64"}\r
 }\r
index 19ed0d0..05bb346 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bb5dbed..e725848 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 82693f7..7a8faf8 100644 (file)
@@ -156,5 +156,5 @@ eo{
         zu{"zulua"}\r
         zxx{"nelingvaĵo"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5609b2e..cafd3ff 100644 (file)
@@ -845,7 +845,7 @@ es{
         VALENCIA{"Valenciano"}\r
         WADEGILE{"Romanización Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.80"}\r
     characterLabelPattern{\r
         all{"{0} — Todo"}\r
         category-list{"{0}: {1}"}\r
index 87b9468..324950d 100644 (file)
@@ -50,7 +50,7 @@ es_419{
             uksystem{"sistema inglés"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     characterLabelPattern{\r
         enclosed{"{0} — Adjunto"}\r
         extended{"{0} — Extendido"}\r
index f8b0bb3..0847712 100644 (file)
@@ -18,5 +18,5 @@ es_AR{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 94a9aa0..c3cfa2f 100644 (file)
@@ -18,5 +18,5 @@ es_BO{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e68498b..2f5e37a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/lang/es_BZ.txt b/source/data/lang/es_BZ.txt
deleted file mode 100644 (file)
index aa10911..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-es_BZ{\r
-    %%Parent{"es_419"}\r
-    Version{"2.1.32.37"}\r
-}\r
index ed469a2..194fd96 100644 (file)
@@ -23,5 +23,5 @@ es_CL{
             phonebook{"orden de directorio telefónico"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 84181c1..2fe1ed1 100644 (file)
@@ -18,5 +18,5 @@ es_CO{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 3e108b8..ee6f9c0 100644 (file)
@@ -18,5 +18,5 @@ es_CR{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 66f010e..791d7f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2f0c761..825fa94 100644 (file)
@@ -18,5 +18,5 @@ es_DO{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 440f31c..f634c98 100644 (file)
@@ -18,5 +18,5 @@ es_EC{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 8807e3a..cb79018 100644 (file)
@@ -18,5 +18,5 @@ es_GT{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e5774b0..040acdd 100644 (file)
@@ -18,5 +18,5 @@ es_HN{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 0a1c9b1..aa9ae7e 100644 (file)
@@ -87,5 +87,5 @@ es_MX{
             tibt{"Dígitos en tibetano"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 9c8fada..65de27d 100644 (file)
@@ -18,5 +18,5 @@ es_NI{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 1856f3d..ea7c239 100644 (file)
@@ -18,5 +18,5 @@ es_PA{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 1e64516..60f56bb 100644 (file)
@@ -18,5 +18,5 @@ es_PE{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index ea43a9f..9ca3fa9 100644 (file)
@@ -11,5 +11,5 @@ es_PR{
         ss{"siswati"}\r
         wo{"wolof"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index d9cccdc..1b3f446 100644 (file)
@@ -18,5 +18,5 @@ es_PY{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 61df978..aa6bc4b 100644 (file)
@@ -11,5 +11,5 @@ es_SV{
         ss{"siswati"}\r
         wo{"wolof"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 65c2f2a..c5de946 100644 (file)
@@ -46,5 +46,5 @@ es_US{
             laoo{"números en lao"}\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 38b881e..2344e94 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9fee6ec..18b8145 100644 (file)
@@ -18,5 +18,5 @@ es_VE{
         wo{"wolof"}\r
         zgh{"tamazight marroquí estándar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index f813615..5ea108c 100644 (file)
@@ -1011,7 +1011,7 @@ et{
         VALENCIA{"valentsia"}\r
         WADEGILE{"Wade’i-Gilesi latinisatsioon"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Kõik"}\r
         category-list{"{0}: {1}"}\r
index 69a2e0a..98069cc 100644 (file)
@@ -628,7 +628,7 @@ eu{
         SCOTLAND{"ESKOZIAR INGELESA"}\r
         VALENCIA{"VALENTZIERA"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     characterLabelPattern{\r
         all{"{0} — Guztiak"}\r
         category-list{"{0}: {1}"}\r
index 8b8678f..2749c96 100644 (file)
@@ -48,5 +48,5 @@ ewo{
         zh{"Ǹkɔ́bɔ tsainís"}\r
         zu{"ǹkɔ́bɔ zulú"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b292072..85c2b73 100644 (file)
@@ -851,7 +851,7 @@ fa{
         SAAHO{"ساهویی"}\r
         SCOTLAND{"انگلیسی معیار اسکاتلند"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     characterLabelPattern{\r
         all{"{0} — همه"}\r
         category-list{"{0}: {1}"}\r
index 5d2411e..8a5199e 100644 (file)
@@ -32,5 +32,5 @@ fa_AF{
     Scripts{\r
         Mong{"مغلی"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.44"}\r
 }\r
index d93f363..7b472dd 100644 (file)
@@ -48,5 +48,5 @@ ff{
         zh{"Sinuwaare"}\r
         zu{"Suluŋkoore"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 680e7be..9dec409 100644 (file)
@@ -1106,7 +1106,7 @@ fi{
     Variants%secondary{\r
         FONUPA{"suomalais-ugrilainen tarkekirjoitus"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.88"}\r
     characterLabelPattern{\r
         all{"{0} – Kaikki"}\r
         category-list{"{0}: {1}"}\r
index 089bd4f..a3b9df8 100644 (file)
@@ -630,7 +630,7 @@ fil{
         PINYIN{"Pinyin Romanization"}\r
         WADEGILE{"Wade-Giles Romanization"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Lahat"}\r
         category-list{"{0}: {1}"}\r
index 18d9ed8..2529c58 100644 (file)
@@ -550,7 +550,7 @@ fo{
         POLYTON{"polytonísk"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     characterLabelPattern{\r
         all{"{0} — Alt"}\r
         compatibility{"{0} — Sambæri"}\r
index 036b86f..9d3cf9f 100644 (file)
@@ -962,7 +962,7 @@ fr{
         VALENCIA{"valencien"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — tout"}\r
         category-list{"{0}: {1}"}\r
index 68f47b6..90ceb2f 100644 (file)
@@ -13,5 +13,5 @@ fr_BE{
         smn{"same d’Inari"}\r
         sms{"same skolt"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dd578b3..df38990 100644 (file)
@@ -88,5 +88,5 @@ fr_CA{
             taml{"chiffres tamouls traditionnels"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 29fa168..f82100e 100644 (file)
@@ -6,5 +6,5 @@ fr_CH{
         pdc{"allemand de Pennsylvanie"}\r
         sdh{"kurde méridional"}\r
     }\r
-    Version{"2.1.32.48"}\r
+    Version{"2.1.27.96"}\r
 }\r
index 244d062..21f09a0 100644 (file)
@@ -299,7 +299,7 @@ fur{
         SOLBA{"dialet di Stolvize"}\r
         VALENCIA{"valenzian"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Lenghe: {0}"}\r
         script{"Scriture: {0}"}\r
index 4ff9554..0b02b1d 100644 (file)
@@ -886,7 +886,7 @@ fy{
         VALLADER{"Vallader"}\r
         WADEGILE{"Wade-Giles-romanisering"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.44"}\r
     codePatterns{\r
         language{"Taal: {0}"}\r
         script{"Skrift: {0}"}\r
index b119bb4..07b3c5d 100644 (file)
@@ -529,7 +529,7 @@ ga{
         VALENCIA{"Vaileinsis"}\r
         WADEGILE{"Rómhánú Wade-Giles"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Uile"}\r
         category-list{"{0}: {1}:"}\r
index 65e3c3c..8774695 100644 (file)
@@ -879,7 +879,7 @@ gd{
     Variants{\r
         SCOTLAND{"Beurla Bhun-Tomhasach na h-Alba"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Cànan: {0}"}\r
         script{"Litreadh: {0}"}\r
index 51e9030..c2c360d 100644 (file)
@@ -626,7 +626,7 @@ gl{
             vaii{"Díxitos Vai"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} (todo)"}\r
         category-list{"{0}: {1}"}\r
index ed97483..dfd17fc 100644 (file)
@@ -619,7 +619,7 @@ gsw{
         SOLBA{"Solbica-Mundart"}\r
         TARASK{"Taraskievica-Rächtschriibig"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Schpraach: {0}"}\r
         script{"Schrift: {0}"}\r
index 8f85f54..0d2a972 100644 (file)
@@ -843,7 +843,7 @@ gu{
         PINYIN{"પિનયિન રોમનાઇઝેશન"}\r
         WADEGILE{"વેડ-ગિલ્સ રોમનાઇઝેશન"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — તમામ"}\r
         category-list{"{0}: {1}"}\r
index b047423..34d677f 100644 (file)
@@ -48,5 +48,5 @@ guz{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 172a72d..0ae1a35 100644 (file)
@@ -4,5 +4,5 @@ gv{
     Languages{\r
         gv{"Gaelg"}\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e3f7ca6..509c4fd 100644 (file)
@@ -47,5 +47,5 @@ ha{
         zh{"Harshen Sin"}\r
         zu{"Harshen Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6fce2ae..4a48d6d 100644 (file)
@@ -40,5 +40,5 @@ haw{
         zh_Hans{"Pākē Hoʻomaʻalahi ʻia"}\r
         zh_Hant{"Pākē Kuʻuna"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 33766b8..651a811 100644 (file)
@@ -772,7 +772,7 @@ he{
         POSIX{"מחשב"}\r
         SCOTLAND{"אנגלית סקוטית סטנדרטית"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.27"}\r
     characterLabelPattern{\r
         all{"{0} - הכל"}\r
         category-list{"{0}: {1}"}\r
index 15a025d..3df7052 100644 (file)
@@ -828,7 +828,7 @@ hi{
         POSIX{"कम्प्यूटर"}\r
         REVISED{"संशोधित वर्तनी"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} - सभी"}\r
         category-list{"{0}: {1}"}\r
index ce47399..9817e18 100644 (file)
@@ -910,7 +910,7 @@ hr{
         VALENCIA{"valencijski"}\r
         WADEGILE{"Wade-Giles romanizacija"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Sve"}\r
         category-list{"{0}: {1}"}\r
index 8312b9f..32e9ae8 100644 (file)
@@ -378,7 +378,7 @@ hsb{
             tibt{"tibetske cyfry"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"rěč: {0}"}\r
         script{"pismo: {0}"}\r
index 55bd55f..a9dfbcb 100644 (file)
@@ -350,7 +350,7 @@ hu{
         nan{"min nan kínai"}\r
         nap{"nápolyi"}\r
         naq{"nama"}\r
-        nb{"norvég (bokmÃ¥l)"}\r
+        nb{"norvég (bokmál)"}\r
         nd{"északi ndebele"}\r
         nds{"alsónémet"}\r
         nds_NL{"alsószász"}\r
@@ -362,7 +362,7 @@ hu{
         nl{"holland"}\r
         nl_BE{"flamand"}\r
         nmg{"ngumba"}\r
-        nn{"norvég (nynorsk)"}\r
+        nn{"norvég (nynrosk)"}\r
         nnh{"ngiemboon"}\r
         no{"norvég"}\r
         nog{"nogaj"}\r
@@ -894,7 +894,7 @@ hu{
         VALLADER{"Vallader"}\r
         WADEGILE{"Wade-Giles átírás"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Összes"}\r
         category-list{"{0}: {1}"}\r
index 6707624..baf1da9 100644 (file)
@@ -613,7 +613,7 @@ hy{
         AREVELA{"արևելահայերեն"}\r
         AREVMDA{"արեւմտահայերէն"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — բոլորը"}\r
         category-list{"{0}՝ {1}"}\r
index d33c491..99ed20d 100644 (file)
@@ -959,7 +959,7 @@ id{
         VALLADER{"VALLADER"}\r
         WADEGILE{"Wade-Giles Latin"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Semua"}\r
         category-list{"{0}: {1}"}\r
index 103383f..84ee62c 100644 (file)
@@ -47,5 +47,5 @@ ig{
         zh{"Mandarịịnị"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 4545132..b34c22c 100644 (file)
@@ -33,7 +33,7 @@ ii{
             islamic{"ꑳꌦꇂꑍꉖ"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"ꅇꉙ: {0}"}\r
         script{"ꇇꁱ: {0}"}\r
index f164c31..bd87520 100644 (file)
@@ -732,7 +732,7 @@ is{
             vaii{"Vai-tölustafir"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.65"}\r
     characterLabelPattern{\r
         all{"{0} — allt"}\r
         category-list{"{0}: {1}"}\r
index 8e373d1..257694b 100644 (file)
@@ -1017,7 +1017,7 @@ it{
         VALENCIA{"valenziano"}\r
         WADEGILE{"romanizzazione Wade-Giles"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Tutto"}\r
         category-list{"{0}: {1}"}\r
index 9a6ed6a..6a7970d 100644 (file)
@@ -1044,7 +1044,7 @@ ja{
         VALLADER{"ヴァラダー"}\r
         WADEGILE{"ウェード式ローマ字表記法"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — すべて"}\r
         category-list{"{0}: {1}"}\r
index 0625f60..7f9fd85 100644 (file)
@@ -28,5 +28,5 @@ jgo{
             latn{"pɛnɔ́mba"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 42bdfae..34517c7 100644 (file)
@@ -48,5 +48,5 @@ jmc{
         zh{"Kyichina"}\r
         zu{"Kyizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5557e17..f882471 100644 (file)
@@ -734,7 +734,7 @@ ka{
             tibt{"ტიბეტური ციფრები"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     characterLabelPattern{\r
         all{"{0} — ყველა"}\r
         category-list{"{0}: {1}"}\r
index 590ec1b..2ea46e7 100644 (file)
@@ -48,5 +48,5 @@ kab{
         zh{"Tacinwat, Tamundarint"}\r
         zu{"Tazulut"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1d1833e..61b0674 100644 (file)
@@ -48,5 +48,5 @@ kam{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7792f5f..74a9350 100644 (file)
@@ -48,5 +48,5 @@ kde{
         zh{"Chichina"}\r
         zu{"Chizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e0186dc..cb2bbcd 100644 (file)
@@ -249,7 +249,7 @@ kea{
             latn{"Númerus Arábikus"}\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.46"}\r
     codePatterns{\r
         language{"Lingua: {0}"}\r
         script{"Skrita: {0}"}\r
index 1468248..3d0d45b 100644 (file)
@@ -48,5 +48,5 @@ khq{
         zh{"Sinuwa senni, Mandareŋ"}\r
         zu{"Julu senni"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c19c4b6..bee774f 100644 (file)
@@ -48,5 +48,5 @@ ki{
         zh{"Kĩcaina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dec7b90..b7b86f2 100644 (file)
@@ -532,7 +532,7 @@ kk{
             tibt{"Тибет сандары"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — барлығы"}\r
         category-list{"{0}: {1}"}\r
index 62e0927..32975b1 100644 (file)
@@ -6,5 +6,5 @@ kkj{
         fr{"numbu buy"}\r
         kkj{"kakɔ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 079eef8..e7ce2a0 100644 (file)
@@ -4,7 +4,7 @@ kl{
     Languages{\r
         kl{"kalaallisut"}\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
     localeDisplayPattern{\r
         keyTypePattern{"{0}: {1}"}\r
         pattern{"{0} ({1})"}\r
index 0d0bdff..f017055 100644 (file)
@@ -48,5 +48,5 @@ kln{
         zh{"kutitab China"}\r
         zu{"kutitab Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 586ff46..ce07b50 100644 (file)
@@ -534,7 +534,7 @@ km{
             tibt{"លេខទីបេ"}\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — ទាំងអស់"}\r
         category-list{"{0}: {1}"}\r
index 19c9f50..0219501 100644 (file)
@@ -827,7 +827,7 @@ kn{
             vaii{"ವಾಯ್ ಅಂಕೆಗಳು"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — ಎಲ್ಲ"}\r
         category-list{"{0}: {1}"}\r
index c1328cf..65476af 100644 (file)
@@ -913,7 +913,7 @@ ko{
         VAIDIKA{"바이디카"}\r
         VALLADER{"발라더"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.22"}\r
     characterLabelPattern{\r
         all{"{0} — 모두"}\r
         category-list{"{0}: {1}"}\r
index 945f2ba..e4cf3d0 100644 (file)
@@ -142,5 +142,5 @@ kok{
         zh{"चीनीस्"}\r
         zu{"जुलू"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ead282b..021b17c 100644 (file)
@@ -609,7 +609,7 @@ ks{
         SOLBA{"ثٹولوِزا/سولبِکا بوٗلۍ"}\r
         TARASK{"تاراسکیٖوِکا علمہ ہِجاِ"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     codePatterns{\r
         language{"زَبان: {0}"}\r
         script{"رَسم الخط: {0}"}\r
index 295eaae..96ca831 100644 (file)
@@ -48,5 +48,5 @@ ksb{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 738d38a..7efd77d 100644 (file)
@@ -48,5 +48,5 @@ ksf{
         zh{"ricinɔá"}\r
         zu{"rizúlu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eb49c1d..9c67ad3 100644 (file)
@@ -512,7 +512,7 @@ ksh{
         VALENCIA{"valenzijaanesche Dijaläk"}\r
         WADEGILE{"lateijnesche Ömschreff noh Wade-Giles"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"de Schprohch afjekööz met „{0}“"}\r
         script{"de Schreff afjekööz met „{0}“"}\r
index 591b24a..c2710bb 100644 (file)
@@ -4,5 +4,5 @@ kw{
     Languages{\r
         kw{"kernewek"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 42fb0ce..8a74bc6 100644 (file)
@@ -539,7 +539,7 @@ ky{
             tibt{"Тибет сандары"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Баары"}\r
         category-list{"{0}: {1}"}\r
index 46785ea..2cfd3ab 100644 (file)
@@ -48,5 +48,5 @@ lag{
         zh{"Kɨchíina"}\r
         zu{"Kɨzúulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6e5ce74..6a49580 100644 (file)
@@ -875,7 +875,7 @@ lb{
         VALENCIA{"Valencianesch"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Sprooch: {0}"}\r
         script{"Schrëft: {0}"}\r
index 8fcb47e..67ffffc 100644 (file)
@@ -48,5 +48,5 @@ lg{
         zh{"Lucayina"}\r
         zu{"Luzzulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4e8ca5c..f6a9db2 100644 (file)
@@ -152,5 +152,5 @@ lkt{
         zu{"Zulu Iyápi"}\r
         zza{"Zaza Iyápi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7540954..287829d 100644 (file)
@@ -48,5 +48,5 @@ ln{
         zh{"lisinwa"}\r
         zu{"zulu"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 3bc0a5c..30b23f8 100644 (file)
@@ -874,7 +874,7 @@ lo{
         VALLADER{"ວັລລາເດີ"}\r
         WADEGILE{"ການຖອດອັກສອນແບບເວດ-ໄຈລ໌"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — ທັງໝົດ"}\r
         category-list{"{0}: {1}"}\r
index 30d8527..969a1eb 100644 (file)
@@ -296,7 +296,7 @@ lrc{
             latn{"عأدأدیا لاتین"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index 269be67..a2970e7 100644 (file)
@@ -1020,7 +1020,7 @@ lt{
         VALENCIA{"Valenciečiai"}\r
         WADEGILE{"Wade-Giles Romanization"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} – visi"}\r
         category-list{"{0}: {1}"}\r
index 107a143..f538395 100644 (file)
@@ -46,5 +46,5 @@ lu{
         zh{"shinɛ"}\r
         zu{"Nzulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3119467..925eb57 100644 (file)
@@ -48,5 +48,5 @@ luo{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 137740f..d06f793 100644 (file)
@@ -48,5 +48,5 @@ luy{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b3c343e..6cb2347 100644 (file)
@@ -225,7 +225,7 @@ lv{
         ilo{"iloku"}\r
         inh{"ingušu"}\r
         io{"ido"}\r
-        is{"islandiešu"}\r
+        is{"īslandiešu"}\r
         it{"itāļu"}\r
         iu{"inuītu"}\r
         ja{"japāņu"}\r
@@ -803,7 +803,7 @@ lv{
         VALENCIA{"valensiešu"}\r
         WADEGILE{"Veida-Džailza romanizācija"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — visas"}\r
         category-list{"{0}: {1}"}\r
index 8273bb5..fb5774c 100644 (file)
@@ -48,5 +48,5 @@ mas{
         zh{"nkʉtʉ́k ɔ́ɔ̄ lchina"}\r
         zu{"nkʉtʉ́k ɔ́ɔ̄ lzulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b766409..dea26ee 100644 (file)
@@ -48,5 +48,5 @@ mer{
         zh{"Kĩchina"}\r
         zu{"Kĩzulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c8d1628..f76c1b9 100644 (file)
@@ -48,5 +48,5 @@ mfe{
         zh{"sinwa, mandarin"}\r
         zu{"zoulou"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4eed500..f8c2ac3 100644 (file)
@@ -48,5 +48,5 @@ mg{
         zh{"Sinoa, Mandarin"}\r
         zu{"Zolò"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a9fef2..72f26c0 100644 (file)
@@ -47,5 +47,5 @@ mgh{
         zh{"Ichina"}\r
         zu{"Izulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ca3c45..480de37 100644 (file)
@@ -18,7 +18,7 @@ mgo{
             latn{"inu"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"{0}"}\r
         script{"{0}"}\r
index cbe5779..b4eaaab 100644 (file)
@@ -889,7 +889,7 @@ mk{
         PINYIN{"Пинјин романизација"}\r
         WADEGILE{"Вејд-Џајлс романизација"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} - Сите"}\r
         category-list{"{0}: {1}"}\r
index b8bf0ad..4bde30f 100644 (file)
@@ -853,7 +853,7 @@ ml{
         POSIX{"കമ്പ്യൂട്ടർ"}\r
         REVISED{"പരിഷ്ക്കരിച്ച ലിപി"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — എല്ലാം"}\r
         category-list{"{0}: {1}"}\r
index c45b053..d3cb4fc 100644 (file)
@@ -542,7 +542,7 @@ mn{
             tibt{"төвд тоо"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} - Бүгд"}\r
         category-list{"{0}: {1}"}\r
index 281b22b..553ecba 100644 (file)
@@ -830,7 +830,7 @@ mr{
         PINYIN{"पिनयिन रोमनायझेशन"}\r
         WADEGILE{"वादे-गिलेस रोमनायझेशन"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — सर्व"}\r
         category-list{"{0}: {1}"}\r
index e1508c0..8550dec 100644 (file)
@@ -667,7 +667,7 @@ ms{
             vaii{"Digit Vai"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Semua"}\r
         category-list{"{0}: {1}"}\r
index 3af346c..56f42fa 100644 (file)
@@ -473,7 +473,7 @@ mt{
         uk{"Ukren"}\r
         umb{"Umbundu"}\r
         und{"Lingwa Mhix Magħrufa"}\r
-        ur{"Urdu"}\r
+        ur{"ur"}\r
         uz{"Uzbek"}\r
         vai{"Vai"}\r
         ve{"Venda"}\r
@@ -559,7 +559,7 @@ mt{
     Variants{\r
         REVISED{"Ortografija Irriveda"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Lingwa: {0}"}\r
         script{"Skript: {0}"}\r
index 7e422b9..8dbcd0f 100644 (file)
@@ -48,5 +48,5 @@ mua{
         zh{"zah Syiŋ"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 53073f6..3aa6329 100644 (file)
@@ -580,7 +580,7 @@ my{
         REVISED{"ပြန်လည်စီစစ်ထားသော ရေးထုံး"}\r
         SCOTLAND{"စကော့ စံ အင်္ဂလိပ်"}\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.30.50"}\r
     characterLabelPattern{\r
         all{"{0} — အားလုံး"}\r
         category-list{"{0} − {1}"}\r
index 9f96b2d..6f316ce 100644 (file)
@@ -265,7 +265,7 @@ mzn{
         Hans{"ساده‌بَیی هان"}\r
         Hant{"استاندارد ِسنتی هانت"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"زوون: {0}"}\r
         script{"اسکریپت: {0}"}\r
index cefef59..9b5ee6e 100644 (file)
@@ -48,5 +48,5 @@ naq{
         zh{"Chineesǁî gowab, Mandarinni"}\r
         zu{"Zulub"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b124d99..d3ad534 100644 (file)
@@ -1095,7 +1095,7 @@ nb{
         VALLADER{"vallader"}\r
         WADEGILE{"Wade-Giles-romanisering"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     characterLabelPattern{\r
         all{"{0} – alt"}\r
         category-list{"{0}: {1}"}\r
index f98a8e0..cbca4e5 100644 (file)
@@ -48,5 +48,5 @@ nd{
         zh{"isi-China"}\r
         zu{"isi-Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 7874b05..e395563 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index 2cd85e5..b58c9ac 100644 (file)
@@ -795,7 +795,7 @@ ne{
         AREVELA{"पूर्वी आर्मेनियाली"}\r
         POSIX{"कम्प्युटर"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     characterLabelPattern{\r
         all{"{0}-सबै"}\r
         category-list{"{0}: {1}"}\r
index 872aa8a..c15ba79 100644 (file)
@@ -1099,7 +1099,7 @@ nl{
         VALLADER{"Vallader"}\r
         WADEGILE{"Wade-Giles-romanisering"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — alle"}\r
         category-list{"{0}: {1}"}\r
index aa3ca89..6f89598 100644 (file)
@@ -47,5 +47,5 @@ nmg{
         zh{"Kiɛl bó chinois"}\r
         zu{"Zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1e5cde0..45fe4d6 100644 (file)
@@ -690,7 +690,7 @@ nn{
         TARASK{"taraskievica-ortografi"}\r
         VALENCIA{"valensisk dialekt"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Språk: {0}"}\r
         script{"Skrift: {0}"}\r
index 801d262..89368aa 100644 (file)
@@ -24,5 +24,5 @@ nnh{
         yav{"Shwóŋò pʉa shÿó Mbafìa"}\r
         ybb{"Shwóŋò Tsaŋ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3a38aba..850b8df 100644 (file)
@@ -48,5 +48,5 @@ nus{
         zh{"Thok cayna"}\r
         zu{"Thok dhuluni"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba7e0d0..29f3d82 100644 (file)
@@ -48,5 +48,5 @@ nyn{
         zh{"Oruchaina"}\r
         zu{"Oruzuru"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 151e920..5ae0565 100644 (file)
@@ -92,5 +92,5 @@ om{
     Scripts{\r
         Latn{"Latin"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index c9ec27b..14991e8 100644 (file)
@@ -574,5 +574,5 @@ or{
         Zyyy{"ସାଧାରଣ"}\r
         Zzzz{"ଅଞ୍ଜାତ କିମ୍ବା ଅବୈଧ ସ୍କ୍ରୀପ୍ଟ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
 }\r
index 1aba015..8bcef82 100644 (file)
@@ -96,7 +96,7 @@ os{
             latn{"Нырыккон цифрӕтӕ"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"Ӕвзаг: {0}"}\r
         script{"Скрипт: {0}"}\r
index 12184f1..5e1ea06 100644 (file)
@@ -552,7 +552,7 @@ pa{
             tibt{"ਤਿੱਬਤੀ ਅੰਕ"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — ਸਭ"}\r
         category-list{"{0}: {1}"}\r
index cd32e77..8815c28 100644 (file)
@@ -9,5 +9,5 @@ pa_Arab{
         Arab{"عربی"}\r
         Guru{"گُرمُکھی"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc1602d..dca680f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a1af58..bac53c8 100644 (file)
@@ -963,7 +963,7 @@ pl{
         VALENCIA{"walencki"}\r
         WADEGILE{"latynizacja Wade’a i Gilesa"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — wszystko"}\r
         category-list{"{0}: {1}"}\r
index 61fc525..bf8a5da 100644 (file)
Binary files a/source/data/lang/pool.res and b/source/data/lang/pool.res differ
index 8d664fa..d19a2df 100644 (file)
@@ -46,5 +46,5 @@ ps{
     Scripts{\r
         Arab{"عربي"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ce9feba..d13955f 100644 (file)
@@ -874,7 +874,7 @@ pt{
         VALENCIA{"valenciano"}\r
         WADEGILE{"romanização Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Tudo"}\r
         category-list{"{0}: {1}"}\r
index a385088..2e783ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ee7339..a4226b1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed8f313..829f400 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f6e235..fd432f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4cd124..75c5d9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b5a1669..b5eca2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d30b2ff..c47efaa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 060a5fc..9878c5a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5ac80c7..360cd5d 100644 (file)
@@ -217,7 +217,7 @@ pt_PT{
         MONOTON{"monotónico"}\r
         POLYTON{"politónico"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.54"}\r
     characterLabelPattern{\r
         all{"{0} – tudo"}\r
         compatibility{"{0} – compatibilidade"}\r
index e3f0965..fcc981b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8cb201..8bbbc3d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d2e5f44..7bbfcf7 100644 (file)
@@ -134,5 +134,5 @@ qu{
     Variants{\r
         VALENCIA{"Valenciano Simi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index dcb1e07..b725f4c 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-LANG_CLDR_VERSION = 31.0.1\r
+LANG_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'reslocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'reslocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,19 +26,19 @@ LANG_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-LANG_SYNTHETIC_ALIAS = ars.txt az_AZ.txt az_Latn_AZ.txt bs_BA.txt\\r
bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt he_IL.txt\\r
- id_ID.txt in.txt in_ID.txt iw.txt iw_IL.txt\\r
- ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt\\r
- no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt\\r
- pa_IN.txt pa_PK.txt sh.txt sh_BA.txt sh_CS.txt\\r
- sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt\\r
- sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt\\r
- sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
- th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
- uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
- zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt\\r
- zh_MO.txt zh_SG.txt zh_TW.txt\r
+LANG_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
+ in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
+ ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
+ no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
+ pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
+ shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\\r
+ sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt sr_Latn_YU.txt\\r
+ sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\\r
+ th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\\r
+ uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\\r
+ zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt zh_MO.txt\\r
+ zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,47 +76,47 @@ LANG_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TT.txt en_TV.txt en_TZ.txt en_UG.txt en_VC.txt\\r
  en_VG.txt en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt\\r
  en_ZW.txt eo.txt es.txt es_419.txt es_AR.txt\\r
- es_BO.txt es_BR.txt es_BZ.txt es_CL.txt es_CO.txt\\r
- es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GT.txt\\r
- es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\\r
- es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\\r
- es_VE.txt et.txt eu.txt ewo.txt fa.txt\\r
- fa_AF.txt ff.txt fi.txt fil.txt fo.txt\\r
- fr.txt fr_BE.txt fr_CA.txt fr_CH.txt fur.txt\\r
fy.txt ga.txt gd.txt gl.txt gsw.txt\\r
- gu.txt guz.txt gv.txt ha.txt haw.txt\\r
- he.txt hi.txt hr.txt hsb.txt hu.txt\\r
hy.txt id.txt ig.txt ii.txt is.txt\\r
it.txt ja.txt jgo.txt jmc.txt ka.txt\\r
- kab.txt kam.txt kde.txt kea.txt khq.txt\\r
- ki.txt kk.txt kkj.txt kl.txt kln.txt\\r
- km.txt kn.txt ko.txt kok.txt ks.txt\\r
- ksb.txt ksf.txt ksh.txt kw.txt ky.txt\\r
- lag.txt lb.txt lg.txt lkt.txt ln.txt\\r
- lo.txt lrc.txt lt.txt lu.txt luo.txt\\r
- luy.txt lv.txt mas.txt mer.txt mfe.txt\\r
- mg.txt mgh.txt mgo.txt mk.txt ml.txt\\r
- mn.txt mr.txt ms.txt mt.txt mua.txt\\r
- my.txt mzn.txt naq.txt nb.txt nd.txt\\r
- nds.txt ne.txt nl.txt nmg.txt nn.txt\\r
- nnh.txt nus.txt nyn.txt om.txt or.txt\\r
os.txt pa.txt pa_Arab.txt pa_Guru.txt pl.txt\\r
- ps.txt pt.txt pt_AO.txt pt_CH.txt pt_CV.txt\\r
- pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt\\r
- pt_PT.txt pt_ST.txt pt_TL.txt qu.txt rm.txt\\r
- rn.txt ro.txt ro_MD.txt rof.txt ru.txt\\r
- rw.txt rwk.txt sah.txt saq.txt sbp.txt\\r
- se.txt se_FI.txt seh.txt ses.txt sg.txt\\r
- shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\\r
- sl.txt smn.txt sn.txt so.txt sq.txt\\r
- sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt\\r
- sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt\\r
- sv_FI.txt sw.txt sw_CD.txt sw_KE.txt ta.txt\\r
- te.txt teo.txt th.txt ti.txt to.txt\\r
- tr.txt twq.txt tzm.txt ug.txt uk.txt\\r
- ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\\r
uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\\r
vun.txt wae.txt xog.txt yav.txt yi.txt\\r
- yo.txt yo_BJ.txt yue.txt zgh.txt zh.txt\\r
- zh_Hans.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_BO.txt es_BR.txt es_CL.txt es_CO.txt es_CR.txt\\r
+ es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\\r
+ es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\\r
+ es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\\r
+ et.txt eu.txt ewo.txt fa.txt fa_AF.txt\\r
+ ff.txt fi.txt fil.txt fo.txt fr.txt\\r
+ fr_BE.txt fr_CA.txt fr_CH.txt fur.txt fy.txt\\r
ga.txt gd.txt gl.txt gsw.txt gu.txt\\r
+ guz.txt gv.txt ha.txt haw.txt he.txt\\r
+ hi.txt hr.txt hsb.txt hu.txt hy.txt\\r
id.txt ig.txt ii.txt is.txt it.txt\\r
ja.txt jgo.txt jmc.txt ka.txt kab.txt\\r
+ kam.txt kde.txt kea.txt khq.txt ki.txt\\r
+ kk.txt kkj.txt kl.txt kln.txt km.txt\\r
+ kn.txt ko.txt kok.txt ks.txt ksb.txt\\r
+ ksf.txt ksh.txt kw.txt ky.txt lag.txt\\r
+ lb.txt lg.txt lkt.txt ln.txt lo.txt\\r
+ lrc.txt lt.txt lu.txt luo.txt luy.txt\\r
+ lv.txt mas.txt mer.txt mfe.txt mg.txt\\r
+ mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
+ mr.txt ms.txt mt.txt mua.txt my.txt\\r
+ mzn.txt naq.txt nb.txt nd.txt nds.txt\\r
+ ne.txt nl.txt nmg.txt nn.txt nnh.txt\\r
+ nus.txt nyn.txt om.txt or.txt os.txt\\r
pa.txt pa_Arab.txt pa_Guru.txt pl.txt ps.txt\\r
+ pt.txt pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt\\r
+ pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt\\r
+ pt_ST.txt pt_TL.txt qu.txt rm.txt rn.txt\\r
+ ro.txt ro_MD.txt rof.txt ru.txt rw.txt\\r
+ rwk.txt sah.txt saq.txt sbp.txt se.txt\\r
+ se_FI.txt seh.txt ses.txt sg.txt shi.txt\\r
+ shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\\r
+ smn.txt sn.txt so.txt sq.txt sr.txt\\r
+ sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt\\r
+ sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sv_FI.txt\\r
+ sw.txt sw_CD.txt sw_KE.txt ta.txt te.txt\\r
+ teo.txt th.txt ti.txt to.txt tr.txt\\r
+ twq.txt tzm.txt ug.txt uk.txt ur.txt\\r
+ ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\\r
vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\\r
wae.txt xog.txt yav.txt yi.txt yo.txt\\r
+ yo_BJ.txt yue.txt zgh.txt zh.txt zh_Hans.txt\\r
+ zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index d3a3428..a018349 100644 (file)
@@ -627,7 +627,7 @@ rm{
         TARASK{"ortografia taraskievica"}\r
         VALENCIA{"valencian"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"Lingua: {0}"}\r
         script{"Scrittira: {0}"}\r
index 413d73b..5ce6113 100644 (file)
@@ -48,5 +48,5 @@ rn{
         zh{"Igishinwa"}\r
         zu{"Ikizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e9a8340..f3cd645 100644 (file)
@@ -774,7 +774,7 @@ ro{
         SCOTLAND{"engleză standard scoțiană"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} – toate"}\r
         category-list{"{0}: {1}"}\r
index 795eace..1aef1a6 100644 (file)
@@ -5,5 +5,5 @@ ro_MD{
         sw_CD{"swahili (R. D. Congo)"}\r
         wal{"wolaytta"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 29ec3a7..0255b88 100644 (file)
@@ -48,5 +48,5 @@ rof{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a9de906..76a6ee2 100644 (file)
@@ -4,7 +4,7 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.58"}\r
     characterLabelPattern{\r
         all{"{0} — all"}\r
         category-list{"{0}: {1}"}\r
index c355b71..0ecb523 100644 (file)
@@ -912,7 +912,7 @@ ru{
         VALENCIA{"Валенсийский"}\r
         WADEGILE{"Система Уэйда – Джайлза"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     characterLabelPattern{\r
         all{"{0} – все"}\r
         category-list{"{0}: {1}"}\r
index 6e27571..797cbff 100644 (file)
@@ -108,5 +108,5 @@ rw{
         yi{"Inyeyidishi"}\r
         zu{"Inyezulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 0505ddf..252c6d7 100644 (file)
@@ -48,5 +48,5 @@ rwk{
         zh{"Kyichina"}\r
         zu{"Kyizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20b2231..67b7179 100644 (file)
@@ -91,7 +91,7 @@ sah{
             h24{"24 чаастаах тиһик (0–24)"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.87"}\r
     characterLabelPattern{\r
         strokes{\r
             other{"{0} Strokes"}\r
index d150a22..3e00cb9 100644 (file)
@@ -48,5 +48,5 @@ saq{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4eb33a0..af95dc2 100644 (file)
@@ -48,5 +48,5 @@ sbp{
         zh{"Ishishina"}\r
         zu{"Ishisulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6e0b641..d533cde 100644 (file)
@@ -154,7 +154,7 @@ se{
         PINYIN{"pinyin"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     codePatterns{\r
         language{"giella: {0}"}\r
         script{"chállin: {0}"}\r
index b661c06..a71f28d 100644 (file)
@@ -62,7 +62,7 @@ se_FI{
             fullwide{"fullwide"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
     codePatterns{\r
         script{"čállin: {0}"}\r
     }\r
index d097de1..c782064 100644 (file)
@@ -48,5 +48,5 @@ seh{
         zh{"chinês"}\r
         zu{"zulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7345578..bc6f8f9 100644 (file)
@@ -48,5 +48,5 @@ ses{
         zh{"Sinuwa senni, Mandareŋ"}\r
         zu{"Zulu senni"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ec1f1df..f889bb2 100644 (file)
@@ -48,5 +48,5 @@ sg{
         zh{"Shinuäa"}\r
         zu{"Zûlu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a1833a..9f9bc6c 100644 (file)
@@ -48,5 +48,5 @@ shi{
         zh{"ⵜⴰⵛⵉⵏⵡⵉⵜ"}\r
         zu{"ⵜⴰⵣⵓⵍⵓⵜ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c09b6c4..8b19fa1 100644 (file)
@@ -49,5 +49,5 @@ shi_Latn{
         zh{"Tacinwit"}\r
         zu{"Tazulut"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2db194b..22785f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 69b93b7..bdaa8b5 100644 (file)
@@ -547,7 +547,7 @@ si{
             tibt{"ටිබෙට ඉලක්කම්"}\r
         }\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — සියල්ල"}\r
         category-list{"{0}: {1}"}\r
index 4514d25..852a751 100644 (file)
@@ -755,7 +755,7 @@ sk{
     Variants{\r
         SCOTLAND{"škótska štandardná angličtina"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} – všetko"}\r
         category-list{"{0}: {1}"}\r
index 07aa44e..0ca8f3d 100644 (file)
@@ -831,7 +831,7 @@ sl{
         VALENCIA{"valencijski pravopis"}\r
         WADEGILE{"romanizacija Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} – vse"}\r
         category-list{"{0}: {1}"}\r
index 1941d46..0c866c5 100644 (file)
@@ -401,7 +401,7 @@ smn{
         en_GB{"eŋgâlâskielâ (OK)"}\r
         en_US{"eŋgâlâskielâ (USA)"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"kielâ: {0}"}\r
         script{"čäällimvuáhádâh: {0}"}\r
index a54d7a2..980dd96 100644 (file)
@@ -48,5 +48,5 @@ sn{
         zh{"chiChinese"}\r
         zu{"chiZulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 843754f..3d6a275 100644 (file)
@@ -52,5 +52,5 @@ so{
         Zxxx{"Aan la qorin"}\r
         Zzzz{"Far aan la aqoon amase aan saxnayn"}\r
     }\r
-    Version{"2.1.33.76"}\r
+    Version{"2.1.27.78"}\r
 }\r
index 867a2b6..030c703 100644 (file)
@@ -555,7 +555,7 @@ sq{
             tibt{"shifra tibetiane"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Të gjitha"}\r
         category-list{"{0}: {1}"}\r
index 2f9945d..372e39c 100644 (file)
@@ -842,7 +842,7 @@ sr{
         TARASK{"Тараскијевичка ортографија"}\r
         VALENCIA{"Валенцијска"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — све"}\r
         category-list{"{0}: {1}"}\r
index 2e18268..0b50a55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8435440..f481998 100644 (file)
@@ -18,5 +18,5 @@ sr_Cyrl_BA{
         zgh{"стандардни марокански тамашек"}\r
         zu{"исизулу"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 6506986..b8a3dd4 100644 (file)
@@ -17,5 +17,5 @@ sr_Cyrl_ME{
         zgh{"стандардни марокански тамашек"}\r
         zu{"исизулу"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 31c7433..76f27e4 100644 (file)
@@ -17,5 +17,5 @@ sr_Cyrl_XK{
         zgh{"стандардни марокански тамашек"}\r
         zu{"исизулу"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 948dfb0..806b5bf 100644 (file)
@@ -843,7 +843,7 @@ sr_Latn{
         TARASK{"Taraskijevička ortografija"}\r
         VALENCIA{"Valencijska"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.29.33"}\r
     characterLabelPattern{\r
         all{"{0} — sve"}\r
         category-list{"{0}: {1}"}\r
index 899695d..ea6b7e6 100644 (file)
@@ -18,5 +18,5 @@ sr_Latn_BA{
         zgh{"standardni marokanski tamašek"}\r
         zu{"isizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 02ecd98..0a3470f 100644 (file)
@@ -17,5 +17,5 @@ sr_Latn_ME{
         zgh{"standardni marokanski tamašek"}\r
         zu{"isizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 303bf09..4c376bb 100644 (file)
@@ -17,5 +17,5 @@ sr_Latn_XK{
         zgh{"standardni marokanski tamašek"}\r
         zu{"isizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 3c1f516..caa8f1f 100644 (file)
@@ -1081,7 +1081,7 @@ sv{
         VALLADER{"vallader-dialekt"}\r
         WADEGILE{"Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     characterLabelPattern{\r
         all{"{0} — alla"}\r
         category-list{"{0}: {1}"}\r
index 3017eb3..7679c9c 100644 (file)
@@ -10,5 +10,5 @@ sv_FI{
     Scripts%variant{\r
         Arab{"persisk-arabiska"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 8355cec..9a62cd5 100644 (file)
@@ -637,7 +637,7 @@ sw{
             vaii{"Dijiti za Vai"}\r
         }\r
     }\r
-    Version{"2.1.33.73"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Zote"}\r
         category-list{"{0}: {1}"}\r
index 64a14e7..c0afa6e 100644 (file)
@@ -40,5 +40,5 @@ sw_CD{
         wae{"Kiwalser"}\r
         yi{"Kiyidi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 4ff3f2a..593dcc7 100644 (file)
@@ -42,5 +42,5 @@ sw_KE{
         wae{"Kiwalser"}\r
         zgh{"Tamazight Sanifu ya Moroko"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2e4a476..85dadca 100644 (file)
@@ -836,7 +836,7 @@ ta{
         PINYIN{"பின்யின் ரோமானைசெஷன்"}\r
         WADEGILE{"வேட்-கைல்ஸ் ரோமனைஷேசன்"}\r
     }\r
-    Version{"2.1.32.4"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — அனைத்தும்"}\r
         category-list{"{0}: {1}"}\r
index 34b2b9e..060e7eb 100644 (file)
@@ -837,7 +837,7 @@ te{
         REVISED{"సవరించబడిన వర్ణక్రమం"}\r
         WADEGILE{"వేడ్-గైల్స్ రోమనైజేషన్"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — అన్ని"}\r
         category-list{"{0}: {1}"}\r
index 90f053d..e4ee535 100644 (file)
@@ -48,5 +48,5 @@ teo{
         zh{"Kichina"}\r
         zu{"Kizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8b36b0c..a52ce90 100644 (file)
@@ -1054,7 +1054,7 @@ th{
         VALLADER{"วัลลาเดอร์"}\r
         WADEGILE{"การถอดอักษรแบบเวด-ไจลส์"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — ทั้งหมด"}\r
         category-list{"{0}: {1}"}\r
index 7dcf11d..db392c1 100644 (file)
@@ -100,5 +100,5 @@ ti{
         Ethi{"ፊደል"}\r
         Latn{"ላቲን"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f0b45ff..36a1643 100644 (file)
@@ -882,7 +882,7 @@ to{
             tibt{"fika fakatipeti"}\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.98"}\r
     codePatterns{\r
         language{"Lea: {0}"}\r
         script{"Tohinima: {0}"}\r
index 74cfe8b..bdd22ff 100644 (file)
@@ -1011,7 +1011,7 @@ tr{
         VALENCIA{"Valensiyaca"}\r
         WADEGILE{"Wade-Giles (Latin Alfabesinde Yazımı)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Tümü"}\r
         category-list{"{0}: {1}"}\r
index a254b30..47955e0 100644 (file)
@@ -48,5 +48,5 @@ twq{
         zh{"Sinuwa senni, Mandareŋ"}\r
         zu{"Zulu senni"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7a364a3..c641e64 100644 (file)
@@ -48,5 +48,5 @@ tzm{
         zh{"Tacinwit,Mandarin"}\r
         zu{"tazulut"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index df8ecb2..f49c30c 100644 (file)
@@ -830,7 +830,7 @@ ug{
         VALENCIA{"ۋالېنسىيە"}\r
         WADEGILE{"ۋېي ئائىلىسى پىنيىن لاتىنلاشتۇرۇش"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     codePatterns{\r
         language{"تىل: {0}"}\r
         script{"يېزىق: {0}"}\r
index 1b31a0a..ab2a9dd 100644 (file)
@@ -878,7 +878,7 @@ uk{
         VALENCIA{"Валенсійська"}\r
         WADEGILE{"Романізація Вейда-Джайлза"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.38"}\r
     characterLabelPattern{\r
         all{"{0} — усі"}\r
         category-list{"{0}: {1}"}\r
index ac8543d..5ae5de2 100644 (file)
@@ -626,7 +626,7 @@ ur{
             vaii{"وائی ہندسے"}\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — تمام"}\r
         category-list{"{0}: {1}"}\r
index 4e267f1..ea2d1e3 100644 (file)
@@ -25,5 +25,5 @@ ur_IN{
             tibt{"تبتی ہندسے"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.79"}\r
 }\r
index 5342bb3..e003ca3 100644 (file)
@@ -521,7 +521,7 @@ uz{
             tibt{"tibet raqamlari"}\r
         }\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.44"}\r
     characterLabelPattern{\r
         all{"{0} — hammasi"}\r
         category-list{"{0}: {1}"}\r
index ffb4605..ba25329 100644 (file)
@@ -10,5 +10,5 @@ uz_Arab{
     Scripts{\r
         Arab{"عربی"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 839f327..6624f57 100644 (file)
@@ -407,7 +407,7 @@ uz_Cyrl{
             tibt{"Тибет рақамлари"}\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.27.98"}\r
     codePatterns{\r
         language{"Тил: {0}"}\r
         script{"{0}"}\r
index fdd810c..bdf99c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3b1a87d..7aa9ea4 100644 (file)
@@ -48,5 +48,5 @@ vai{
         zh{"ꕦꕇꔧ"}\r
         zu{"ꖮꖨ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d30b029..59a405d 100644 (file)
@@ -49,5 +49,5 @@ vai_Latn{
         zh{"Chaniĩ"}\r
         zu{"Zúlu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66f0f3..38872b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f75d1bb..0bc610c 100644 (file)
@@ -979,7 +979,7 @@ vi{
         VALLADER{"VALLADER"}\r
         WADEGILE{"La Mã hóa Wade-Giles"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — Tất cả"}\r
         category-list{"{0}: {1}"}\r
index c635e38..45ded0c 100644 (file)
@@ -48,5 +48,5 @@ vun{
         zh{"Kyichina"}\r
         zu{"Kyizulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ae0adae..e0d523b 100644 (file)
@@ -193,7 +193,7 @@ wae{
             latn{"Arabiši Zálä"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     codePatterns{\r
         language{"Sprač: {0}"}\r
         script{"Alfabét: {0}"}\r
index 5d8ac18..bc11dda 100644 (file)
@@ -48,5 +48,5 @@ xog{
         zh{"Olucayina"}\r
         zu{"Oluzzulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fbe417..f54be8f 100644 (file)
@@ -48,5 +48,5 @@ yav{
         zh{"sinúɛ"}\r
         zu{"nusulú"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b651045..b72a12f 100644 (file)
@@ -171,7 +171,7 @@ yi{
             gregorian{"גרעגארישער קאַלענדאַר"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.97"}\r
     codePatterns{\r
         language{"שפראַך: {0}"}\r
         script{"שריפֿט: {0}"}\r
index 2d72020..baaa8fd 100644 (file)
@@ -101,5 +101,5 @@ yo{
         zh{"Èdè Mandari"}\r
         zu{"Èdè Ṣulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d02b2e..cb4f20e 100644 (file)
@@ -11,5 +11,5 @@ yo_BJ{
         tr{"Èdè Tɔɔkisi"}\r
         zu{"Èdè Shulu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 698b96f..0caa6cd 100644 (file)
@@ -1024,7 +1024,7 @@ yue{
         VALLADER{"瑞士瓦勒德方言"}\r
         WADEGILE{"威妥瑪式拼音"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     characterLabelPattern{\r
         all{"{0} — 全部"}\r
         compatibility{"{0} — 相容性"}\r
index 0f0d840..cb5badf 100644 (file)
@@ -61,5 +61,5 @@ zgh{
             islamic{"ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⵏ ⵍⵉⵙⵍⴰⵎ"}\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6c33a95..59b7fcd 100644 (file)
@@ -954,7 +954,7 @@ zh{
         VALLADER{"瑞士瓦勒德方言"}\r
         WADEGILE{"WG 威氏拼音法"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.29.84"}\r
     characterLabelPattern{\r
         all{"{0} — 全部"}\r
         category-list{"{0}: {1}"}\r
index 1e311fc..c64cac5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1c30602..086c618 100644 (file)
@@ -1025,7 +1025,7 @@ zh_Hant{
         VALLADER{"瑞士瓦勒德方言"}\r
         WADEGILE{"威妥瑪式拼音"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.28.79"}\r
     characterLabelPattern{\r
         all{"{0} — 全部"}\r
         category-list{"{0}: {1}"}\r
index c219252..6d747f9 100644 (file)
@@ -127,7 +127,7 @@ zh_Hant_HK{
         REVISED{"已修訂拼字法"}\r
         SCOTLAND{"蘇格蘭標準英語"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     characterLabelPattern{\r
         enclosed{"{0} — 包含"}\r
         historic{"{0} — 舊式"}\r
index 9589854..9d2c5aa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f120f57..750dbf2 100644 (file)
@@ -629,7 +629,7 @@ zu{
             vaii{"Izinhlazu Zezinombolo ze-Vai"}\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.29.22"}\r
     characterLabelPattern{\r
         all{"{0} — All"}\r
         category-list{"{0}: {1}"}\r
index 3b8064c..79bee19 100644 (file)
@@ -200,19 +200,10 @@ af{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Neem die {0}e afdraai na regs."}\r
-            }\r
-            plural{\r
-                one{"{0} dag"}\r
-                other{"{0} dae"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 59ce215..c903a09 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af_NA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e15bf85..806e3ec 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af_ZA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4d87aac..79078f3 100644 (file)
@@ -22,7 +22,7 @@ agq{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b72facf..f8e2b25 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 agq_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9e58da3..d699fff 100644 (file)
@@ -15,7 +15,7 @@ ak{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4506ad6..d6145f5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ak_GH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4144e9..dc2490f 100644 (file)
@@ -205,20 +205,11 @@ am{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"በቀኝ በኩል ባለው በ{0}ኛው መታጠፊያ ግባ።"}\r
-            }\r
-            plural{\r
-                one{"{0} ቀን"}\r
-                other{"{0} ቀናት"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"ethi"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index e12ac7c..9617206 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 am_ET{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a2027b..f96a5c0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar{\r
-    AuxExemplarCharacters{"[\u0640 \u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی]"}\r
+    AuxExemplarCharacters{"[\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی]"}\r
     Ellipsis{\r
         final{"{0}…"}\r
         initial{"…{0}"}\r
@@ -15,7 +15,7 @@ ar{
         "آ ب ة ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ى ي]"\r
     }\r
     ExemplarCharactersIndex{"[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]"}\r
-    ExemplarCharactersPunctuation{"[\\- ‐ – — ، ؛ \\: ! ؟ . ' \u0022 ( ) \\[ \\] « » \u2026]"}\r
+    ExemplarCharactersPunctuation{"[\\- ‐ – — ، ؛ \\: ! ؟ . ' \u0022 ( ) \\[ \\]]"}\r
     MoreInformation{"؟"}\r
     NumberElements{\r
         arab{\r
@@ -366,23 +366,10 @@ ar{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"اتجه إلى المنعطف الـ {0} يمينًا."}\r
-            }\r
-            plural{\r
-                few{"{0} أولاد حضروا"}\r
-                many{"{0} ولدًا حضروا"}\r
-                one{"ولد واحد حضر"}\r
-                other{"{0} ولد حضروا"}\r
-                two{"ولدان حضرا"}\r
-                zero{"{0} كتاب"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"arab"}\r
     }\r
-    Version{"2.1.32.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index cdb4dd3..5409c75 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_001{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 770ccd4..58e3e9a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_AE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             eras{\r
index a44e4b5..f668f6c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_BH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8df511d..4718546 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_DJ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f1a67d7..acbf7fe 100644 (file)
@@ -10,7 +10,7 @@ ar_DZ{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index e1bef50..ca3350e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_EG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a4708e..102ffca 100644 (file)
@@ -4,5 +4,5 @@ ar_EH{
     NumberElements{\r
         default{"latn"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a4136a6..8b43fbb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_ER{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bad6566..b9ff797 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_IL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index af0f2df..50f3775 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_IQ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index ce77f75..794404c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_JO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 692edbd..defeac0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_KM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 0f9ac56..c71fa52 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_KW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1ed929f..e360cf8 100644 (file)
@@ -9,7 +9,7 @@ ar_LB{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 9274e89..3a692f4 100644 (file)
@@ -10,7 +10,7 @@ ar_LY{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 60ac0d2..218c0f5 100644 (file)
@@ -11,7 +11,7 @@ ar_MA{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 2c9a7b1..ad48ef3 100644 (file)
@@ -9,7 +9,7 @@ ar_MR{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 505f05d..75d7007 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_OM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6b28eab..b0e75c0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_PS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 279803a..926610d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_QA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed97a66..2b26b11 100644 (file)
@@ -8,7 +8,7 @@ ar_SA{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         default{"islamic-umalqura"}\r
         gregorian{\r
index 9dc2875..3286d50 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_SD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a5c179c..0d35163 100644 (file)
@@ -8,5 +8,5 @@ ar_SO{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20ad16a..eb02064 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_SS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7231a4a..edc70d5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_SY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index 8f291a8..eba3b6c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_TD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 29a3dbc..37a7cf6 100644 (file)
@@ -10,7 +10,7 @@ ar_TN{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index a8db505..5bcf27d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar_YE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/locales/ars.txt b/source/data/locales/ars.txt
deleted file mode 100644 (file)
index 9bb22b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar_SA"}\r
-}\r
index 73ee237..c1bb16d 100644 (file)
@@ -18,7 +18,7 @@ as{
         }\r
         native{"beng"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 0bebae7..a679ffb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2a9f108..e02a4a2 100644 (file)
@@ -11,7 +11,7 @@ asa{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3c9c8ab..a156c76 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 asa_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 98ec553..16d61db 100644 (file)
@@ -221,16 +221,10 @@ ast{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            plural{\r
-                one{"{0} día"}\r
-                other{"{0} díes"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 7357025..f175017 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ast_ES{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d3cda05..88230ad 100644 (file)
@@ -200,22 +200,10 @@ az{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"{0}-cü sağ döngəni seçin."}\r
-                many{"{0}-cı sağ döngəni seçin."}\r
-                one{"{0}-ci sağ döngəni seçin."}\r
-                other{"{0}-cu sağ döngəni seçin."}\r
-            }\r
-            plural{\r
-                one{"Alış-veriş katınızda {0} X var. Almaq istəyirsiniz?"}\r
-                other{"Alış-veriş kartınızda {0} X var. Almaq istəyirsiniz?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
@@ -254,7 +242,7 @@ az{
                 yyyyMEd{"GGGGG dd.MM.y, E"}\r
                 yyyyMMM{"G MMM y"}\r
                 yyyyMMMEd{"G d MMM y, E"}\r
-                yyyyMMMM{"G MMMM y"}\r
+                yyyyMMMM{"G y MMMM"}\r
                 yyyyMMMd{"G d MMM y"}\r
                 yyyyMd{"GGGGG dd.MM.y"}\r
                 yyyyQQQ{"G y QQQ"}\r
@@ -394,7 +382,7 @@ az{
                 yMEd{"dd.MM.y, E"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"d MMM y, E"}\r
-                yMMMM{"MMMM y"}\r
+                yMMMM{"y MMMM"}\r
                 yMMMd{"d MMM y"}\r
                 yMd{"dd.MM.y"}\r
                 yQQQ{"y QQQ"}\r
index a49dbd1..129cae9 100644 (file)
@@ -26,7 +26,7 @@ az_Cyrl{
             }\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ffc7620..bc3b755 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Cyrl_AZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c0b75a..4ce2adb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 51285e0..0bbd205 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn_AZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9407958..8fe93e2 100644 (file)
@@ -23,7 +23,7 @@ bas{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7996233..531f218 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bas_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d4691a..49a1216 100644 (file)
@@ -271,22 +271,10 @@ be{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"{0}-і дом злева"}\r
-                other{"{0}-ы дом злева"}\r
-            }\r
-            plural{\r
-                few{"з {0} кніг за {0} дні"}\r
-                many{"з {0} кніг за {0} дзён"}\r
-                one{"з {0} кнігі за {0} дзень"}\r
-                other{"з {0} кніги за {0} дні"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.66"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 232d7f5..5cdfd7a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 be_BY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 80e66b0..82f8049 100644 (file)
@@ -12,7 +12,7 @@ bem{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9418213..31330b7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bem_ZM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7779102..1a8dc4f 100644 (file)
@@ -11,7 +11,7 @@ bez{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6a24740..fc8993d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bez_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a8c65e7..02da35c 100644 (file)
@@ -22,8 +22,8 @@ bg{
                 range{"{0} – {1}"}\r
             }\r
             patterns{\r
-                accountingFormat{"0.00 ¤;(0.00 ¤)"}\r
-                currencyFormat{"0.00 ¤"}\r
+                accountingFormat{"#0.00 ¤;(#0.00 ¤)"}\r
+                currencyFormat{"#0.00 ¤"}\r
                 decimalFormat{"#,##0.###"}\r
                 percentFormat{"#,##0%"}\r
                 scientificFormat{"#E0"}\r
@@ -197,19 +197,10 @@ bg{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Завийте надясно по {0}-ата пресечка."}\r
-            }\r
-            plural{\r
-                one{"{0} ден"}\r
-                other{"{0} дена"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.33.75"}\r
+    Version{"2.1.30.6"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 08a3624..1363c5c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bg_BG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 660d64e..481cb7e 100644 (file)
@@ -12,7 +12,7 @@ bm{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f0e75ca..2e3638e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bm_ML{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 86f9bd4..03651d0 100644 (file)
@@ -219,23 +219,10 @@ bn{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"ডান দিকে {0}র্থ বাঁকটি নিন।"}\r
-                many{"ডান দিকে {0}ষ্ঠ বাঁকটি নিন।"}\r
-                one{"ডান দিকে {0}ম বাঁকটি নিন।"}\r
-                other{"ডান দিকে {0}তম বাঁকটি নিন।"}\r
-                two{"ডান দিকে {0}য় বাঁকটি নিন।"}\r
-            }\r
-            plural{\r
-                one{"সসে {0}টি আপেল খেল, সেটা ভাল"}\r
-                other{"সসে {0}টি আপেল খেল, সেগুলি ভাল"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"beng"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5c3efb3..01d1331 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn_BD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ac62d73..2625d6a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index ecb9a41..858b006 100644 (file)
@@ -32,7 +32,7 @@ bo{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d078c62..d14460a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo_CN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c910621..446d430 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 33f32d0..3eda0a7 100644 (file)
@@ -47,19 +47,10 @@ br{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            plural{\r
-                few{"{0} deiz"}\r
-                many{"{0} a zeizioù"}\r
-                one{"{0} deiz"}\r
-                other{"{0} deiz"}\r
-                two{"{0} zeiz"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f70dc3a..b579857 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 br_FR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5474437..5ca9c34 100644 (file)
@@ -35,7 +35,7 @@ brx{
         }\r
         native{"deva"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d25903d..fa00f98 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 brx_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c8c44a2..374db59 100644 (file)
@@ -230,21 +230,10 @@ bs{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Skrenite na {0}. križanju desno."}\r
-            }\r
-            plural{\r
-                few{"za {0} mjeseca"}\r
-                many{"za {0} mjeseci"}\r
-                one{"za {0} mjesec"}\r
-                other{"za {0} mjeseci"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d7220de..8105216 100644 (file)
@@ -159,7 +159,7 @@ bs_Cyrl{
             }\r
         }\r
     }\r
-    Version{"2.1.32.72"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 4335d9f..5db9081 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Cyrl_BA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 972dc01..20b4126 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b892c9e..d77e537 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn_BA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3bbd232..472a8ae 100644 (file)
@@ -200,22 +200,10 @@ ca{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"Agafa el {0}t a la dreta."}\r
-                one{"Agafa el {0}r a la dreta."}\r
-                other{"Agafa el {0}è a la dreta."}\r
-                two{"Agafa el {0}n a la dreta."}\r
-            }\r
-            plural{\r
-                one{"{0} dia"}\r
-                other{"{0} dies"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 8084f9d..eb8c0da 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_AD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 17b5d30..a05a155 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_ES{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d037446..2ca4ae8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_FR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2ad3e6c..5906109 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca_IT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8030b5d..c7f18c6 100644 (file)
@@ -192,7 +192,7 @@ ce{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 290d689..170e4b9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ce_RU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8185aed..7bf18b8 100644 (file)
@@ -10,7 +10,7 @@ cgg{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 37782c1..b14933f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cgg_UG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3bb5ecb..8018b09 100644 (file)
@@ -203,7 +203,7 @@ chr{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 82fc619..c244f04 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 chr_US{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2563157..02905d2 100644 (file)
@@ -54,7 +54,7 @@ ckb{
         minimumGroupingDigits{"1"}\r
         native{"arab"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c395e28..ddb1eda 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb_IQ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2a21718..089b81e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb_IR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         default{"persian"}\r
         gregorian{\r
index 09b1d4a..e6bccf8 100644 (file)
@@ -282,21 +282,10 @@ cs{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Na {0}. křižovatce odbočte vpravo."}\r
-            }\r
-            plural{\r
-                few{"{0} dny"}\r
-                many{"{0} dne"}\r
-                one{"{0} den"}\r
-                other{"{0} dní"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             availableFormats{\r
index 62dfe6d..d101286 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cs_CZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a4954fc..25d5402 100644 (file)
@@ -355,28 +355,10 @@ cy{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"{0}ydd ci"}\r
-                many{"{0}ed ci"}\r
-                one{"ci {0}af"}\r
-                other{"ci rhif {0}"}\r
-                two{"{0}il gi"}\r
-                zero{"{0}fed ci"}\r
-            }\r
-            plural{\r
-                few{"{0} chi, {0} cath"}\r
-                many{"{0} chi, {0} chath"}\r
-                one{"{0} ci, {0} gath"}\r
-                other{"{0} ci, {0} cath"}\r
-                two{"{0} gi, {0} gath"}\r
-                zero{"{0} cŵn, {0} cathod"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 547e137..db01da7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cy_GB{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index df0211f..59bcabb 100644 (file)
@@ -197,19 +197,10 @@ da{
                 timeSeparator{"."}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Tag den {0}. vej til højre."}\r
-            }\r
-            plural{\r
-                one{"{0} dag"}\r
-                other{"{0} dage"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 6383109..90468bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da_DK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 77a2fa8..0df430a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da_GL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 2b67547..a7be4b3 100644 (file)
@@ -12,7 +12,7 @@ dav{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 332362d..ad3c1e8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dav_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 97c6d1a..bb08c6c 100644 (file)
@@ -139,16 +139,16 @@ de{
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        one{"0"}\r
-                        other{"0"}\r
+                        one{"0 Tsd'.'"}\r
+                        other{"0 Tsd'.'"}\r
                     }\r
                     10000{\r
-                        one{"0"}\r
-                        other{"0"}\r
+                        one{"00 Tsd'.'"}\r
+                        other{"00 Tsd'.'"}\r
                     }\r
                     100000{\r
-                        one{"0"}\r
-                        other{"0"}\r
+                        one{"000 Tsd'.'"}\r
+                        other{"000 Tsd'.'"}\r
                     }\r
                     1000000{\r
                         one{"0 Mio'.'"}\r
@@ -203,19 +203,10 @@ de{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}. Abzweigung nach rechts nehmen"}\r
-            }\r
-            plural{\r
-                one{"{0} Tag"}\r
-                other{"{0} Tage"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 65c6b8c..546f0c6 100644 (file)
@@ -13,7 +13,7 @@ de_AT{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.73"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 4696925..276c25f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_BE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 314fdc3..3590d19 100644 (file)
@@ -14,9 +14,9 @@ de_CH{
             }\r
             symbols{\r
                 decimal{"."}\r
-                group{""}\r
+                group{"'"}\r
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 0457b99..2ffb568 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_DE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f736601..e6e8600 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_IT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.58"}\r
     calendar{\r
         gregorian{\r
             monthNames{\r
index ad1e6e3..ffc05c2 100644 (file)
@@ -9,11 +9,11 @@ de_LI{
             }\r
             symbols{\r
                 decimal{"."}\r
-                group{""}\r
+                group{"'"}\r
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index dbdfbfc..f26a275 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_LU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkersNarrow{\r
index 8aa7265..574e06a 100644 (file)
@@ -17,7 +17,7 @@ dje{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7fa4142..bc66792 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dje_NE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 682505c..66a4742 100644 (file)
@@ -195,7 +195,7 @@ dsb{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index dfd2e47..c5af5c2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dsb_DE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d890233..c5b4d59 100644 (file)
@@ -20,7 +20,7 @@ dua{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 35ac1cb..b25ec16 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0a3b87f..b0e566b 100644 (file)
@@ -17,7 +17,7 @@ dyo{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d820173..4f2f229 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dyo_SN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9475e9d..e2603fb 100644 (file)
@@ -84,11 +84,6 @@ dz{
                 plusSign{"+"}\r
             }\r
         }\r
-        minimalPairs{\r
-            plural{\r
-                other{"ཉིནམ་ {0} "}\r
-            }\r
-        }\r
         native{"tibt"}\r
         tibt{\r
             symbols{\r
@@ -105,7 +100,7 @@ dz{
             }\r
         }\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.29.61"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5ab1f9d..c5b0de3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dz_BT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b5778b2..c756392 100644 (file)
@@ -11,7 +11,7 @@ ebu{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7a1736f..8c3989b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ebu_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index effd219..c146c2a 100644 (file)
@@ -75,7 +75,7 @@ ee{
             }\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e1b3995..e2dcd81 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee_GH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b198936..b575799 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee_TG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 407c6b6..6d0d2dc 100644 (file)
@@ -200,20 +200,11 @@ el{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Στρίψτε στην {0}η γωνία δεξιά."}\r
-            }\r
-            plural{\r
-                one{"{0} ημέρα"}\r
-                other{"{0} ημέρες"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"grek"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 86a27e9..f2aafa0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el_CY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 97a35ea..473e1ad 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el_GR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8b83df3..e97c5a5 100644 (file)
@@ -191,20 +191,8 @@ en{
                 superscriptingExponent{"×"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"Take the {0}rd right."}\r
-                one{"Take the {0}st right."}\r
-                other{"Take the {0}th right."}\r
-                two{"Take the {0}nd right."}\r
-            }\r
-            plural{\r
-                one{"{0} day"}\r
-                other{"{0} days"}\r
-            }\r
-        }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.50"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -1244,26 +1232,13 @@ en{
                 }\r
             }\r
         }\r
-        dayOfYear{\r
-            dn{"day of year"}\r
-        }\r
-        dayOfYear-short{\r
-            dn{"day of yr."}\r
-        }\r
         dayperiod{\r
             dn{"AM/PM"}\r
             dn%variant{"am/pm"}\r
         }\r
-        dayperiod-short{\r
-            dn{"AM/PM"}\r
-            dn%variant{"am/pm"}\r
-        }\r
         era{\r
             dn{"era"}\r
         }\r
-        era-short{\r
-            dn{"era"}\r
-        }\r
         fri{\r
             relative{\r
                 "-1"{"last Friday"}\r
@@ -1820,24 +1795,9 @@ en{
                 }\r
             }\r
         }\r
-        weekOfMonth{\r
-            dn{"week of month"}\r
-        }\r
-        weekOfMonth-short{\r
-            dn{"wk. of mo."}\r
-        }\r
         weekday{\r
             dn{"day of the week"}\r
         }\r
-        weekday-short{\r
-            dn{"day of wk."}\r
-        }\r
-        weekdayOfMonth{\r
-            dn{"weekday of the month"}\r
-        }\r
-        weekdayOfMonth-short{\r
-            dn{"wkday. of mo."}\r
-        }\r
         year{\r
             dn{"year"}\r
             relative{\r
@@ -1877,9 +1837,6 @@ en{
         zone{\r
             dn{"time zone"}\r
         }\r
-        zone-short{\r
-            dn{"zone"}\r
-        }\r
     }\r
     listPattern{\r
         standard{\r
index 6102677..9d4dc78 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_001{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index 41e4600..29a67c0 100644 (file)
@@ -14,7 +14,7 @@ en_150{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 8a0d454..93d0c87 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6eaf0f6..f5a6411 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 7555155..e38d778 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a0c42ef..f032cd7 100644 (file)
@@ -14,5 +14,5 @@ en_AT{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f00017..c614d9a 100644 (file)
@@ -9,7 +9,7 @@ en_AU{
             }\r
         }\r
     }\r
-    Version{"2.1.32.62"}\r
+    Version{"2.1.30.50"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 84a0efd..7083244 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ae54a4e..3a54d74 100644 (file)
@@ -13,7 +13,7 @@ en_BE{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 33e77f4..2ac4c19 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a3b9186..17ad945 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 95e82b5..03e7849 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 677df7e..3747a3a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8289b54..464f60e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0ee0c15..22485c2 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index d85cc61..ca6ff9f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 3919c84..026eac8 100644 (file)
@@ -13,5 +13,5 @@ en_CH{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2501fc4..e9b97e1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 9fb27c4..d2e6cd2 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 4b9b79e..633829f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 46da087..81d8657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a21192..a90a2ee 100644 (file)
@@ -12,5 +12,5 @@ en_DE{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ddfd8fd..afd1f99 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 80fabca..783c665 100644 (file)
@@ -12,7 +12,7 @@ en_DK{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index b548583..4eaa7dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7fd2c9a..228a8a8 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 634a76e..56c27a6 100644 (file)
@@ -13,7 +13,7 @@ en_FI{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 86f8e9d..c439098 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba255c5..54410e8 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index eab91ca..78ffc47 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 244d540..bc93380 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.24"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 7921b24..ab0594c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 69c8058..6a6ab99 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index b66f585..33fc5d4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 667e366..bb8f5f4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 1a05f40..e0d4e60 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 256d083..4a3e72b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7397d6..dec9373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dab5987..297e5ac 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index df8a004..6dd04df 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 71034d7..995b671 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 3d7409a..2af01f6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 3011950..e191759 100644 (file)
@@ -11,7 +11,7 @@ en_IN{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b07f34d..04e3b38 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index f5a11ab..3c0ea36 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index d812c18..67edbc7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2bf986d..e192b33 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 899b1ea..3f8c7e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35fb03c..f755a2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bd356e9..e26f444 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bfd0689..7abb21b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3fc63c0..07b6a83 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b723857..b5123bd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1726249..16ff510 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 896123a..2fedbad 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f6dfb6a..0b1b6a5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 680d6fc..1acf871 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0e04e95..2550fd9 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 87588fd..54a384b 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3400c0e..449706a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 873b8e1..58ee57a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b36d9ba..064aa6e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5f0af42..26854fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e4dcad2..d709e94 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 745a114..5038494 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 38287ea..534294a 100644 (file)
@@ -10,5 +10,5 @@ en_NL{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1d2feef..d1b58a9 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 1ece2f6..bbcd1b6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 95d508d..5c9a4c6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6aa4d92..c1792a4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 080d0e6..0ca66f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 96e49db..e2c4699 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 08b159c..4e27c18 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 8ae7e2c..ec32f33 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30541dc..0af3d13 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d0918a8..17a50b1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index e2de69a..cb507b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d0761ab..bfa4714 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 87a33e2..6206b27 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d54b9e..c43fb9c 100644 (file)
@@ -13,7 +13,7 @@ en_SE{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 64467d4..0db2056 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 29ee033..064220d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 2d5acc9..14d2d24 100644 (file)
@@ -12,5 +12,5 @@ en_SI{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3e61485..4005802 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2b3a430..002988b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 38d5dc1..de1eebd 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index cc8b6f1..47c792d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 852eb0f..eaabbe1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d6622a5..81cd9f7 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index d27b6ec..f1697f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21b8b30..599a8fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d7868af..f2d4d59 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 51903ab..b8b18af 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index df87949..0b86f84 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index d466437..6d611a3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index aa8243b..a8c1419 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_US{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 278d6f8..ce508b1 100644 (file)
@@ -15,5 +15,5 @@ en_US_POSIX{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12317cf..de17869 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba6619b..e6a295b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2d5079..ba9e53c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12b8824..2cecbf4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c90fd7..a3f70e3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0e6d5c4..586724a 100644 (file)
@@ -14,7 +14,7 @@ en_ZA{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.64"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 19ed0d0..05bb346 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a8cbbc8..68e4dc4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3a59fdc..dc2d4de 100644 (file)
@@ -13,7 +13,7 @@ eo{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c767e3f..d914e6e 100644 (file)
@@ -200,19 +200,10 @@ es{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Toma la {0}.ª a la derecha."}\r
-            }\r
-            plural{\r
-                one{"{0} día"}\r
-                other{"{0} días"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.80"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -989,7 +980,7 @@ es{
         japanese_kana{"Kana japoneses"}\r
         kanbun{"Kanbun"}\r
         kanji{"Kanji"}\r
-        keycap{"tecla"}\r
+        keycap{"tecla 10"}\r
         leftwards_arrows{"Flechas hacia la izquierda"}\r
         leftwards_rightwards_arrows{"Flechas hacia la izquierda y la derecha"}\r
         letterlike_symbols{"Símbolos con letras"}\r
index 95c8a83..2c8380a 100644 (file)
@@ -42,7 +42,7 @@ es_419{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5eac1eb..330aa4a 100644 (file)
@@ -15,7 +15,7 @@ es_AR{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 985b956..a61fe1e 100644 (file)
@@ -10,7 +10,7 @@ es_BO{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index e68498b..2f5e37a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/locales/es_BZ.txt b/source/data/locales/es_BZ.txt
deleted file mode 100644 (file)
index aa10911..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-es_BZ{\r
-    %%Parent{"es_419"}\r
-    Version{"2.1.32.37"}\r
-}\r
index 06de2c9..61d6ba4 100644 (file)
@@ -14,7 +14,7 @@ es_CL{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 967cab6..c115a14 100644 (file)
@@ -15,7 +15,7 @@ es_CO{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 75486c8..3d1dd58 100644 (file)
@@ -10,7 +10,7 @@ es_CR{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 66f010e..791d7f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5b72ad0..aea3380 100644 (file)
@@ -11,7 +11,7 @@ es_DO{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 09bdd5d..6a21e1b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_EA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 427c233..dcfe892 100644 (file)
@@ -13,7 +13,7 @@ es_EC{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 79fe19a..740a9dc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_ES{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a314885..f0ec04f 100644 (file)
@@ -8,5 +8,5 @@ es_GQ{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ff2f6be..1361334 100644 (file)
@@ -59,7 +59,7 @@ es_GT{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8181e0b..2c1980a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_HN{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 416ff84..610d36d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_IC{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a4eb04c..54aa624 100644 (file)
@@ -10,7 +10,7 @@ es_MX{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bd73bfa..4861fb1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_NI{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 4f1159d..b54598e 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PA{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 45a4eef..398fecf 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 65eec7d..74e67f0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index ee48570..4597430 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index cd1c3a2..d08be5c 100644 (file)
@@ -13,7 +13,7 @@ es_PY{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 191c214..b67218e 100644 (file)
@@ -5,7 +5,7 @@ es_SV{
     NumberElements{\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 83ad851..d061196 100644 (file)
@@ -22,7 +22,7 @@ es_US{
             }\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 83c2c42..f7732aa 100644 (file)
@@ -14,7 +14,7 @@ es_UY{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index c73d2ec..1df68dd 100644 (file)
@@ -13,7 +13,7 @@ es_VE{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 84db98f..8e94250 100644 (file)
@@ -196,19 +196,10 @@ et{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Tehke {0}. parempööre."}\r
-            }\r
-            plural{\r
-                one{"{0} ööpäev"}\r
-                other{"{0} ööpäeva"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         chinese{\r
             cyclicNameSets{\r
index 5774de7..5801a58 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 et_EE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1d82d9b..10503de 100644 (file)
@@ -150,19 +150,10 @@ eu{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}. bira eskuinetara"}\r
-            }\r
-            plural{\r
-                one{"Nire {0} lagunarekin nago"}\r
-                other{"Nire {0} lagunekin nago"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -335,6 +326,10 @@ eu{
                 "AM",\r
                 "PM",\r
             }\r
+            AmPmMarkersNarrow{\r
+                "g",\r
+                "a",\r
+            }\r
             DateTimePatterns{\r
                 "HH:mm:ss (zzzz)",\r
                 "HH:mm:ss (z)",\r
@@ -485,34 +480,53 @@ eu{
             dayPeriod{\r
                 format{\r
                     abbreviated{\r
-                        afternoon1{"eguerd."}\r
-                        afternoon2{"arrats."}\r
-                        evening1{"iluntz."}\r
+                        afternoon1{"arratsaldeko"}\r
+                        afternoon2{"arratsaldea"}\r
+                        evening1{"arratsaldeko"}\r
                         midnight{"gauerdia"}\r
-                        morning1{"goiz."}\r
-                        morning2{"goizeko"}\r
-                        night1{"gau."}\r
+                        morning1{"goizeko"}\r
+                        morning2{"goiza"}\r
+                        night1{"gaueko"}\r
+                    }\r
+                    narrow{\r
+                        afternoon1{"arratsaldeko"}\r
+                        afternoon2{"arratsaldea"}\r
+                        evening1{"arratsaldeko"}\r
+                        midnight{"gauerdia"}\r
+                        morning1{"goizeko"}\r
+                        morning2{"goiza"}\r
+                        night1{"gauean"}\r
                     }\r
                     wide{\r
-                        afternoon1{"eguerdiko"}\r
-                        afternoon2{"arratsaldeko"}\r
-                        evening1{"iluntzeko"}\r
+                        afternoon1{"arratsaldeko"}\r
+                        afternoon2{"arratsaldea"}\r
+                        evening1{"arratsaldeko"}\r
                         midnight{"gauerdia"}\r
-                        morning1{"goizaldeko"}\r
-                        morning2{"goizeko"}\r
+                        morning1{"goizeko"}\r
+                        morning2{"goiza"}\r
                         night1{"gaueko"}\r
                     }\r
                 }\r
                 stand-alone{\r
                     abbreviated{\r
-                        afternoon1{"eguerd."}\r
-                        afternoon2{"arrats."}\r
+                        afternoon1{"eguerdia"}\r
+                        afternoon2{"arratsaldea"}\r
                         am{"AM"}\r
                         evening1{"iluntz."}\r
                         midnight{"gauerdia"}\r
-                        morning1{"goiz."}\r
+                        morning1{"goizaldea"}\r
                         morning2{"goiza"}\r
-                        night1{"gaua"}\r
+                        night1{"gau."}\r
+                        pm{"PM"}\r
+                    }\r
+                    narrow{\r
+                        afternoon1{"eguerdia"}\r
+                        afternoon2{"arratsaldea"}\r
+                        am{"AM"}\r
+                        evening1{"iluntz."}\r
+                        morning1{"goizaldea"}\r
+                        morning2{"goiza"}\r
+                        night1{"gau."}\r
                         pm{"PM"}\r
                     }\r
                     wide{\r
index 4435291..8d47614 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eu_ES{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0af1b35..c22965b 100644 (file)
@@ -22,7 +22,7 @@ ewo{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ee87b16..9a491df 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ewo_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e26e7d5..a2a34b2 100644 (file)
@@ -15,7 +15,7 @@ fa{
         "ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ة ی]"\r
     }\r
     ExemplarCharactersIndex{"[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]"}\r
-    ExemplarCharactersPunctuation{"[\u0640 \\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"}\r
+    ExemplarCharactersPunctuation{"[\\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"}\r
     MoreInformation{"؟"}\r
     NumberElements{\r
         arab{\r
@@ -238,19 +238,10 @@ fa{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"در پیچ {0}ام سمت راست بپیچید."}\r
-            }\r
-            plural{\r
-                one{"او {0} فیلم در هفته می‌بیند که کمدی است."}\r
-                other{"او {0} فیلم در هفته می‌بیند که کمدی هستند."}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     calendar{\r
         chinese{\r
             cyclicNameSets{\r
@@ -1167,34 +1158,6 @@ fa{
             }\r
         }\r
         persian{\r
-            DateTimePatterns{\r
-                "H:mm:ss (zzzz)",\r
-                "H:mm:ss (z)",\r
-                "H:mm:ss",\r
-                "H:mm",\r
-                "y MMMM d, EEEE",\r
-                "d MMMM y",\r
-                "d MMM y",\r
-                "y/M/d",\r
-                "{1}،‏ {0}",\r
-                "{1}، ساعت {0}",\r
-                "{1}، ساعت {0}",\r
-                "{1}،‏ {0}",\r
-                "{1}،‏ {0}",\r
-            }\r
-            availableFormats{\r
-                y{"y"}\r
-                yyyy{"y"}\r
-                yyyyM{"y/M"}\r
-                yyyyMEd{"E y/M/d"}\r
-                yyyyMMM{"MMM y"}\r
-                yyyyMMMEd{"E d MMM y"}\r
-                yyyyMMMM{"y MMMM"}\r
-                yyyyMMMd{"d MMM y"}\r
-                yyyyMd{"y/M/d"}\r
-                yyyyQQQ{"QQQQ y"}\r
-                yyyyQQQQ{"QQQQ y"}\r
-            }\r
             eras{\r
                 abbreviated{\r
                     "ه‍.ش.",\r
@@ -1203,43 +1166,6 @@ fa{
                     "هجری شمسی",\r
                 }\r
             }\r
-            intervalFormats{\r
-                y{\r
-                    y{"y تا y"}\r
-                }\r
-                yM{\r
-                    M{"y/M تا y/M"}\r
-                    y{"y/M تا y/M"}\r
-                }\r
-                yMEd{\r
-                    M{"E y/M/d تا E y/M/d"}\r
-                    d{"E y/M/d تا E y/M/d"}\r
-                    y{"E y/M/d تا E y/M/d"}\r
-                }\r
-                yMMM{\r
-                    M{"LLL تا MMM y"}\r
-                    y{"MMM y تا MMM y"}\r
-                }\r
-                yMMMEd{\r
-                    M{"E d LLL تا E d MMM y"}\r
-                    d{"E d LLL تا E d MMM y"}\r
-                    y{"E d MMM y تا E d MMM y"}\r
-                }\r
-                yMMMM{\r
-                    M{"LLLL تا MMMM y"}\r
-                    y{"MMMM y تا MMMM y"}\r
-                }\r
-                yMMMd{\r
-                    M{"d LLL تا d MMM y"}\r
-                    d{"d تا d MMM y"}\r
-                    y{"d MMM y تا d MMM y"}\r
-                }\r
-                yMd{\r
-                    M{"y/M/d تا y/M/d"}\r
-                    d{"y/M/d تا y/M/d"}\r
-                    y{"y/M/d تا y/M/d"}\r
-                }\r
-            }\r
             monthNames{\r
                 format{\r
                     abbreviated{\r
index faff2c7..c85cc67 100644 (file)
@@ -18,7 +18,7 @@ fa_AF{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.44"}\r
     calendar{\r
         gregorian{\r
             appendItems{\r
index 5e88314..d4976bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fa_IR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e7b03e6..653cb8b 100644 (file)
@@ -15,7 +15,7 @@ ff{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b0a5ac3..520a40e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 619454e..90d9877 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_GN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7749d83..0ef2770 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_MR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 45198cf..c752e40 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff_SN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a7198b3..7c2d78c 100644 (file)
@@ -16,7 +16,7 @@ fi{
     }\r
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s š t u v w x y z ž å ä ö]"}\r
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö]"}\r
-    ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ’ ” » ( ) \\[ \\] § @ * / \\\\ \\& #]"}\r
+    ExemplarCharactersPunctuation{"[‐ – , ; \\: ! ? . … ’ ” » ( ) \\[ \\] § @ * / \\\\ \\& #]"}\r
     MoreInformation{"?"}\r
     NumberElements{\r
         default{"latn"}\r
@@ -201,19 +201,10 @@ fi{
                 timeSeparator{"."}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Käänny {0}. risteyksestä oikealle."}\r
-            }\r
-            plural{\r
-                one{"{0} päivä"}\r
-                other{"{0} päivää"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.88"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index d41272f..883ef7e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fi_FI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4b78beb..01a0cdb 100644 (file)
@@ -197,20 +197,10 @@ fil{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Lumiko sa unang kanan."}\r
-                other{"Lumiko sa ika-{0} kanan."}\r
-            }\r
-            plural{\r
-                one{"{0} mansanas"}\r
-                other{"{0} na mansanas"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 464d643..194e3f5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fil_PH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cc08db2..9bd55e9 100644 (file)
@@ -200,7 +200,7 @@ fo{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e84f93a..07b157f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo_DK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a028b1e..e015ef1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo_FO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 90e340b..f6af06c 100644 (file)
@@ -200,20 +200,10 @@ fr{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Prenez la {0}re à droite."}\r
-                other{"Prenez la {0}e à droite."}\r
-            }\r
-            plural{\r
-                one{"{0} jour"}\r
-                other{"{0} jours"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 3c05883..cc1807d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b3e4267..27ec52d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9c128eb..b3ec7b1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2d26a4e..f41267e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BJ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7fa8eac..4d91c13 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_BL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 96835d6..a41a61b 100644 (file)
@@ -99,7 +99,7 @@ fr_CA{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3017847..cb9a7d4 100644 (file)
@@ -8,7 +8,7 @@ fr_CD{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index c975a94..52ce28d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8b8b429..a54c193 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 67f74f6..31b48f9 100644 (file)
@@ -4,14 +4,15 @@ fr_CH{
     NumberElements{\r
         latn{\r
             patterns{\r
+                currencyFormat{"¤ #,##0.00;¤-#,##0.00"}\r
                 percentFormat{"#,##0%"}\r
             }\r
             symbols{\r
-                currencyDecimal{"."}\r
+                decimal{"."}\r
             }\r
         }\r
     }\r
-    Version{"2.1.32.48"}\r
+    Version{"2.1.27.96"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a7b2a89..89c6e01 100644 (file)
@@ -8,5 +8,5 @@ fr_CI{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4e0f60f..209986d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index d5da59e..c32164d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_DJ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 39d4f9b..5c5bcf6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_DZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 729f59e..1d9ac09 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_FR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3ea2c27..ecd5ff1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87c23c5..a4cf15d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21a9ae9..0cd9de1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f1b2f94..9fb849a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21aa066..5442983 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GQ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5c7da26..f7d8806 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_HT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.63"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 755f149..1d59da2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_KM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f4f04d..ae651f0 100644 (file)
@@ -8,5 +8,5 @@ fr_LU{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 8b2d675..4f1ab8f 100644 (file)
@@ -8,7 +8,7 @@ fr_MA{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 59fa216..ad6838e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MC{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9f256b4..8c61e58 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e830691..2fc051f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1454742..b8284ad 100644 (file)
@@ -8,7 +8,7 @@ fr_ML{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.63"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index e8488e0..44ece16 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MQ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c015b4b..1884c3e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 12aa4a3..1e4ec19 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_MU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index aa1c620..92bc86e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_NC{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1283f0c..46dbcda 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_NE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2284ac..f05ba59 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_PF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8f05344..0a5bccb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_PM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3459130..4cab3df 100644 (file)
@@ -8,7 +8,7 @@ fr_RE{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index c520c4d..7d2ea10 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_RW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9e2524c..2ffbdde 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_SC{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a18a173..556025a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_SN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.63"}\r
     calendar{\r
         gregorian{\r
             dayPeriod{\r
index 56afc7e..629f9ca 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_SY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 27f147d..2d6a519 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_TD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index d0cb211..b1361e8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_TG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 703a322..ef7ecdf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_TN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 217c71a..8dc0816 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_VU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index cb51349..d9ee33c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_WF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b6cf074..28b9f3d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_YT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0b66cb..159a677 100644 (file)
@@ -26,7 +26,7 @@ fur{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 3f23aea..89c0349 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fur_IT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b0b6b2e..4af7527 100644 (file)
@@ -154,7 +154,7 @@ fy{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.44"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 4960d0f..67b303b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fy_NL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7e575f3..017b7d3 100644 (file)
@@ -302,23 +302,10 @@ ga{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Glac an {0}ú chasadh ar dheis."}\r
-                other{"Glac an {0}ú casadh ar dheis."}\r
-            }\r
-            plural{\r
-                few{"{0} chi, {0} cath"}\r
-                many{"{0} chi, {0} chath"}\r
-                one{"{0} ci, {0} gath"}\r
-                other{"{0} ci, {0} cath"}\r
-                two{"{0} gi, {0} gath"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index df7d38b..7db6398 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ga_IE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a223df0..4a6f79b 100644 (file)
@@ -900,7 +900,7 @@ gd{
             }\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             intervalFormats{\r
index 6776e7a..6e622ed 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gd_GB{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a2426c..b983484 100644 (file)
@@ -200,19 +200,10 @@ gl{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Colle a {0}.ª curva á dereita."}\r
-            }\r
-            plural{\r
-                one{"{0} día"}\r
-                other{"{0} días"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a4c005c..21cd552 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gl_ES{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1640aa4..6b1a8e6 100644 (file)
@@ -11,160 +11,6 @@ gsw{
                 percentFormat{"#,##0 %"}\r
                 scientificFormat{"#E0"}\r
             }\r
-            patternsLong{\r
-                decimalFormat{\r
-                    1000{\r
-                        one{"0 Tuusig"}\r
-                        other{"0 Tuusig"}\r
-                    }\r
-                    10000{\r
-                        one{"00 Tuusig"}\r
-                        other{"00 Tuusig"}\r
-                    }\r
-                    100000{\r
-                        one{"000 Tuusig"}\r
-                        other{"000 Tuusig"}\r
-                    }\r
-                    1000000{\r
-                        one{"0 Millioon"}\r
-                        other{"0 Millioone"}\r
-                    }\r
-                    10000000{\r
-                        one{"00 Millioon"}\r
-                        other{"00 Millioone"}\r
-                    }\r
-                    100000000{\r
-                        one{"000 Millioon"}\r
-                        other{"000 Millioone"}\r
-                    }\r
-                    1000000000{\r
-                        one{"0 Milliarde"}\r
-                        other{"0 Milliarde"}\r
-                    }\r
-                    10000000000{\r
-                        one{"00 Milliarde"}\r
-                        other{"00 Milliarde"}\r
-                    }\r
-                    100000000000{\r
-                        one{"000 Milliarde"}\r
-                        other{"000 Milliarde"}\r
-                    }\r
-                    1000000000000{\r
-                        one{"0 Billioon"}\r
-                        other{"0 Billioone"}\r
-                    }\r
-                    10000000000000{\r
-                        one{"00 Billioon"}\r
-                        other{"00 Billioone"}\r
-                    }\r
-                    100000000000000{\r
-                        one{"000 Billioon"}\r
-                        other{"000 Billioone"}\r
-                    }\r
-                }\r
-            }\r
-            patternsShort{\r
-                currencyFormat{\r
-                    1000{\r
-                        one{"0 Tsg'.' ¤"}\r
-                        other{"0 Tsg'.' ¤"}\r
-                    }\r
-                    10000{\r
-                        one{"00 Tsg'.' ¤"}\r
-                        other{"00 Tsg'.' ¤"}\r
-                    }\r
-                    100000{\r
-                        one{"000 Tsg'.' ¤"}\r
-                        other{"000 Tsg'.' ¤"}\r
-                    }\r
-                    1000000{\r
-                        one{"0 Mio'.' ¤"}\r
-                        other{"0 Mio'.' ¤"}\r
-                    }\r
-                    10000000{\r
-                        one{"00 Mio'.' ¤"}\r
-                        other{"00 Mio'.' ¤"}\r
-                    }\r
-                    100000000{\r
-                        one{"000 Mio'.' ¤"}\r
-                        other{"000 Mio'.' ¤"}\r
-                    }\r
-                    1000000000{\r
-                        one{"0 Mrd'.' ¤"}\r
-                        other{"0 Mrd'.' ¤"}\r
-                    }\r
-                    10000000000{\r
-                        one{"00 Mrd'.' ¤"}\r
-                        other{"00 Mrd'.' ¤"}\r
-                    }\r
-                    100000000000{\r
-                        one{"000 Mrd'.' ¤"}\r
-                        other{"000 Mrd'.' ¤"}\r
-                    }\r
-                    1000000000000{\r
-                        one{"0 Bio'.' ¤"}\r
-                        other{"0 Bio'.' ¤"}\r
-                    }\r
-                    10000000000000{\r
-                        one{"00 Bio'.' ¤"}\r
-                        other{"00 Bio'.' ¤"}\r
-                    }\r
-                    100000000000000{\r
-                        one{"000 Bio'.' ¤"}\r
-                        other{"000 Bio'.' ¤"}\r
-                    }\r
-                }\r
-                decimalFormat{\r
-                    1000{\r
-                        one{"0 Tsg'.'"}\r
-                        other{"0 Tsg'.'"}\r
-                    }\r
-                    10000{\r
-                        one{"00 Tsg'.'"}\r
-                        other{"00 Tsg'.'"}\r
-                    }\r
-                    100000{\r
-                        one{"000 Tsg'.'"}\r
-                        other{"000 Tsg'.'"}\r
-                    }\r
-                    1000000{\r
-                        one{"0 Mio'.'"}\r
-                        other{"0 Mio'.'"}\r
-                    }\r
-                    10000000{\r
-                        one{"00 Mio'.'"}\r
-                        other{"00 Mio'.'"}\r
-                    }\r
-                    100000000{\r
-                        one{"000 Mio'.'"}\r
-                        other{"000 Mio'.'"}\r
-                    }\r
-                    1000000000{\r
-                        one{"0 Mrd'.'"}\r
-                        other{"0 Mrd'.'"}\r
-                    }\r
-                    10000000000{\r
-                        one{"00 Mrd'.'"}\r
-                        other{"00 Mrd'.'"}\r
-                    }\r
-                    100000000000{\r
-                        one{"000 Mrd'.'"}\r
-                        other{"000 Mrd'.'"}\r
-                    }\r
-                    1000000000000{\r
-                        one{"0 Bio'.'"}\r
-                        other{"0 Bio'.'"}\r
-                    }\r
-                    10000000000000{\r
-                        one{"00 Bio'.'"}\r
-                        other{"00 Bio'.'"}\r
-                    }\r
-                    100000000000000{\r
-                        one{"000 Bio'.'"}\r
-                        other{"000 Bio'.'"}\r
-                    }\r
-                }\r
-            }\r
             symbols{\r
                 decimal{"."}\r
                 exponential{"E"}\r
@@ -179,7 +25,7 @@ gsw{
             }\r
         }\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
@@ -344,13 +190,13 @@ gsw{
         }\r
         gregorian{\r
             AmPmMarkers{\r
-                "am Vormittag",\r
-                "am Namittag",\r
-            }\r
-            AmPmMarkersAbbr{\r
                 "vorm.",\r
                 "nam.",\r
             }\r
+            AmPmMarkersAbbr{\r
+                "v.m.",\r
+                "n.m.",\r
+            }\r
             DateTimePatterns{\r
                 "HH:mm:ss zzzz",\r
                 "HH:mm:ss z",\r
@@ -428,38 +274,6 @@ gsw{
                     }\r
                 }\r
             }\r
-            dayPeriod{\r
-                format{\r
-                    abbreviated{\r
-                        afternoon1{"zmittag"}\r
-                        afternoon2{"am Namittag"}\r
-                        evening1{"zaabig"}\r
-                        midnight{"Mitternacht"}\r
-                        morning1{"am Morge"}\r
-                        night1{"znacht"}\r
-                    }\r
-                    wide{\r
-                        afternoon1{"zmittag"}\r
-                        afternoon2{"am Namittag"}\r
-                        evening1{"zaabig"}\r
-                        midnight{"Mitternacht"}\r
-                        morning1{"am Morge"}\r
-                        night1{"znacht"}\r
-                    }\r
-                }\r
-                stand-alone{\r
-                    wide{\r
-                        afternoon1{"Mittag"}\r
-                        afternoon2{"Namittag"}\r
-                        am{"Vormittag"}\r
-                        evening1{"Aabig"}\r
-                        midnight{"Mitternacht"}\r
-                        morning1{"Morge"}\r
-                        night1{"Nacht"}\r
-                        pm{"Namittag"}\r
-                    }\r
-                }\r
-            }\r
             eras{\r
                 abbreviated{\r
                     "v. Chr.",\r
index c6b65d5..0874f44 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw_CH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 71a250a..40553f1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw_FR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 420e0a4..43e6137 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw_LI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f27284f..41fe21f 100644 (file)
@@ -232,23 +232,10 @@ gu{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"જમણી બાજુએ {0}થો વળાંક લો."}\r
-                many{"જમણી બાજુએ {0}ઠો વળાંક લો."}\r
-                one{"જમણી બાજુએ {0}લો વળાંક લો."}\r
-                other{"જમણી બાજુએ {0}મો વળાંક લો."}\r
-                two{"જમણી બાજુએ {0}જો વળાંક લો."}\r
-            }\r
-            plural{\r
-                one{"{0} કિલોગ્રામ"}\r
-                other{"{0} કિલોગ્રામ્સ"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"gujr"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0b3a7b6..cd1de72 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gu_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e06f68c..9c59c81 100644 (file)
@@ -12,7 +12,7 @@ guz{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fd9d618..8335def 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 guz_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e965afe..e42a051 100644 (file)
@@ -8,17 +8,8 @@ gv{
                 currencyFormat{"¤#,##0.00"}\r
             }\r
         }\r
-        minimalPairs{\r
-            plural{\r
-                few{"{0} thunnag/muc/ooyl"}\r
-                many{"{0} dy hunnagyn/dy vucyn/dy ooylyn"}\r
-                one{"{0} thunnag/vuc/ooyl"}\r
-                other{"{0} thunnagyn/mucyn/ooylyn"}\r
-                two{"{0} hunnag/vuc/ooyl"}\r
-            }\r
-        }\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index a84d272..912b088 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv_IM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c64107e..e65af2c 100644 (file)
@@ -172,7 +172,7 @@ ha{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9aa8cff..50185ab 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha_GH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d0c0fe0..0aeef36 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha_NE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index df6cf24..5f4a716 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha_NG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 41828ad..46df8b4 100644 (file)
@@ -31,7 +31,7 @@ haw{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1880315..e72f2a1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 haw_US{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 015988d..240da92 100644 (file)
@@ -272,22 +272,11 @@ he{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"פנה ימינה בפנייה ה-{0}"}\r
-            }\r
-            plural{\r
-                many{"{0} שנה"}\r
-                one{"שנה"}\r
-                other{"{0} שנים"}\r
-                two{"שנתיים"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"hebr"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.27"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 33cad82..5b4b444 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 he_IL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7a6f1ed..92cca0b 100644 (file)
@@ -219,23 +219,10 @@ hi{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"{0}था दाहिना मोड़ लें."}\r
-                many{"{0}ठा दाहिना मोड़ लें."}\r
-                one{"{0}ला दाहिना मोड़ लें."}\r
-                other{"{0}वां दाहिना मोड़ लें."}\r
-                two{"{0}रा दाहिना मोड़ लें."}\r
-            }\r
-            plural{\r
-                one{"{0} घंटा"}\r
-                other{"{0} घंटे"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"deva"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         ethiopic{\r
             monthNames{\r
index 3febf3a..e466d92 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hi_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 240aba1..9e2d575 100644 (file)
@@ -236,21 +236,10 @@ hr{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Skrenite na {0}. križanju desno."}\r
-            }\r
-            plural{\r
-                few{"za {0} mjeseca"}\r
-                many{"za {0} mjeseci"}\r
-                one{"za {0} mjesec"}\r
-                other{"za {0} mjeseci"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 73e934b..e1e9aaa 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr_BA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 10191f7..799f7b8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr_HR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index be73c93..71db26c 100644 (file)
@@ -195,7 +195,7 @@ hsb{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 385b64f..e122a0c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hsb_DE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 00f9b53..e969497 100644 (file)
@@ -207,20 +207,10 @@ hu{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Az {0}. lehetőségnél forduljon jobbra."}\r
-                other{"A {0}. lehetőségnél forduljon jobbra."}\r
-            }\r
-            plural{\r
-                one{"A kosár tartalma: {0} X. Megveszi?"}\r
-                other{"A kosár tartalma: {0} X. Megveszi őket?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 0ab8597..cac981c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hu_HU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 665f3db..9964db9 100644 (file)
@@ -199,21 +199,11 @@ hy{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Թեքվեք աջ {0}-ին խաչմերուկից:"}\r
-                other{"Թեքվեք աջ {0}-րդ խաչմերուկից:"}\r
-            }\r
-            plural{\r
-                one{"այդ {0} ժամը"}\r
-                other{"այդ {0} ժամերը"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"armn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6b4422b..fd8373f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hy_AM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fc54a18..7d6665b 100644 (file)
@@ -12,7 +12,7 @@ id{
     }\r
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}\r
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}\r
-    ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"}\r
+    ExemplarCharactersPunctuation{"[‐ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"}\r
     MoreInformation{"?"}\r
     NumberElements{\r
         default{"latn"}\r
@@ -161,18 +161,10 @@ id{
                 timeSeparator{"."}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Ambil belokan kanan ke-{0}."}\r
-            }\r
-            plural{\r
-                other{"{0} hari"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 8cd4655..47a6c79 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 id_ID{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c58c21e..7f61395 100644 (file)
@@ -86,7 +86,7 @@ ig{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7eff6a9..65f842f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ig_NG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 67160a1..30e6fc9 100644 (file)
@@ -19,7 +19,7 @@ ii{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 405f3a5..2807bdc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ii_CN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c49ff82..9d1e8d5 100644 (file)
@@ -188,19 +188,10 @@ is{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Taktu {0}. beygju til hægri."}\r
-            }\r
-            plural{\r
-                one{"{0} dagur"}\r
-                other{"{0} dagar"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.65"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f906424..dafbfa1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 is_IS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index da418b7..a4165f7 100644 (file)
@@ -31,7 +31,7 @@ it{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        one{"0 mille"}\r
+                        one{"0 mila"}\r
                         other{"0 mila"}\r
                     }\r
                     10000{\r
@@ -67,7 +67,7 @@ it{
                         other{"000 miliardi"}\r
                     }\r
                     1000000000000{\r
-                        one{"0 mille miliardi"}\r
+                        one{"0 mila miliardi"}\r
                         other{"0 mila miliardi"}\r
                     }\r
                     10000000000000{\r
@@ -197,20 +197,10 @@ it{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                many{"Prendi l’{0}° a destra."}\r
-                other{"Prendi la {0}° a destra."}\r
-            }\r
-            plural{\r
-                one{"{0} giorno"}\r
-                other{"{0} giorni"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 886d56e..4fbfb3e 100644 (file)
@@ -8,11 +8,11 @@ it_CH{
             }\r
             symbols{\r
                 decimal{"."}\r
-                group{""}\r
+                group{"'"}\r
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 58298b8..66f7477 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it_IT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9b06c39..5112b13 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it_SM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/locales/it_VA.txt b/source/data/locales/it_VA.txt
deleted file mode 100644 (file)
index f555501..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-it_VA{\r
-    Version{"2.1.32.51"}\r
-}\r
index bc31d77..763c323 100644 (file)
@@ -64,7 +64,7 @@ ja{
         "鑑 長 門 閉 開 閏 閑 間 関 閣 閥 閲 闘 阪 防 阻 附 降 限 陛 院-陥 陪 陰 陳 陵 陶 陸 険 陽 隅 隆 隊 階 随 隔 際 障 "\r
         "隠 隣 隷 隻 雄-雇 雉 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 非 面 革 靴 韓 音 韻 響 頂 頃 項 順 "\r
         "預-頒 領 頭 頻 頼 題 額 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼-飾 養 餓 館 首 香 馬 駄-駆 駐 騎 騒 験 騰 驚 骨 髄 高 "\r
-        "髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼠 鼻 齢 叱 剥 填 頬]"\r
+        "髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼠 鼻 齢]"\r
     }\r
     ExemplarCharactersIndex{"[あ か さ た な は ま や ら わ]"}\r
     ExemplarCharactersPunctuation{\r
@@ -221,19 +221,11 @@ ja{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0} 番目の角を右折します。"}\r
-            }\r
-            plural{\r
-                other{"{0}日"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
         traditional{"jpan"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 3baabb8..81a27bb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ja_JP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6d48c2d..b349083 100644 (file)
@@ -38,7 +38,7 @@ jgo{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index eca904e..52fd192 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jgo_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09ec87d..f057868 100644 (file)
@@ -11,7 +11,7 @@ jmc{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 06eadaa..c64d442 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jmc_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ae0a1f..a6c20e2 100644 (file)
@@ -203,22 +203,11 @@ ka{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                many{"მე-{0}"}\r
-                one{"{0}-ლი"}\r
-                other{"{0}-ე"}\r
-            }\r
-            plural{\r
-                one{"კალათში {0} X-ია. შეიძენთ მას?"}\r
-                other{"კალათში {0} X-ია. შეიძენთ მათ?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
         traditional{"geor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b4e467a..b476e4f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ka_GE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 210f8c0..63ef4e5 100644 (file)
@@ -15,7 +15,7 @@ kab{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9efcf0e..ae7ff07 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kab_DZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 99635b5..a643dda 100644 (file)
@@ -11,7 +11,7 @@ kam{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a8d7400..5bea75f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kam_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7deeb95..02a1deb 100644 (file)
@@ -11,7 +11,7 @@ kde{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6c6d2c9..330ed64 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kde_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 54acdc0..11f1ec1 100644 (file)
@@ -128,7 +128,7 @@ kea{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.46"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b98fab1..6147ac3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kea_CV{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 80f19c5..1b04190 100644 (file)
@@ -14,7 +14,7 @@ khq{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0a9f663..fb0cacd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 khq_ML{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 82e7732..2c15a44 100644 (file)
@@ -12,7 +12,7 @@ ki{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f6a0df7..ede703b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ki_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 517f309..f806196 100644 (file)
@@ -205,20 +205,10 @@ kk{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                many{"{0}-ші бұрылыстан оңға бұрылыңыз."}\r
-                other{"{0}-шы бұрылыстан оңға бұрылыңыз."}\r
-            }\r
-            plural{\r
-                one{"Cебетте {0} Х бар. Ол сіздікі ме?"}\r
-                other{"Себетте {0} Х бар. Олар сіздікі ме?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5500950..dbae802 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kk_KZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7b35650..9eaa9d4 100644 (file)
@@ -23,7 +23,7 @@ kkj{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0816d67..0edf994 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kkj_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7946893..7392a1b 100644 (file)
@@ -17,14 +17,8 @@ kl{
                 group{"."}\r
             }\r
         }\r
-        minimalPairs{\r
-            plural{\r
-                one{"{0} Ulloq"}\r
-                other{"{0} Ullut"}\r
-            }\r
-        }\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index c7b1c74..b9228e2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kl_GL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6c260ad..2baeb57 100644 (file)
@@ -12,7 +12,7 @@ kln{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8dcf16e..27640a0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kln_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 647fceb..44a22f1 100644 (file)
@@ -164,18 +164,10 @@ km{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"បត់​ស្តាំ​លើក​ទី​ {0}"}\r
-            }\r
-            plural{\r
-                other{"{0} ថ្ងៃ"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"khmr"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e16ae14..b87f9bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 km_KH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c69ac9f..b6ae1ac 100644 (file)
@@ -220,19 +220,10 @@ kn{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}ನೇ ಬಲತಿರುವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ."}\r
-            }\r
-            plural{\r
-                one{"{0} ದಿನ"}\r
-                other{"{0} ದಿನಗಳು"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"knda"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index baabc4f..d2f7dcc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kn_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fd3136e..42f7b79 100644 (file)
@@ -187,18 +187,10 @@ ko{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}번째 길목에서 우회전하세요."}\r
-            }\r
-            plural{\r
-                other{"{0}일"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.22"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 27e3e2c..993a892 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko_KP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 18f6899..d6efd4e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko_KR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index feea75d..f338598 100644 (file)
@@ -19,7 +19,7 @@ kok{
         }\r
         native{"deva"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index ac19051..4383a6f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7d83b1a..6c6a2a4 100644 (file)
@@ -31,7 +31,7 @@ ks{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c6f74c6..155ebc6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ks_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e13e0b2..f37f572 100644 (file)
@@ -11,7 +11,7 @@ ksb{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 5f42d59..f6d91d2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksb_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 03e37aa..b660bf3 100644 (file)
@@ -19,7 +19,7 @@ ksf{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c5a4ba4..2fe4939 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksf_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6c54e61..465bf75 100644 (file)
@@ -160,7 +160,7 @@ ksh{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index b734281..beacb68 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksh_DE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3fc4090..def1751 100644 (file)
@@ -9,7 +9,7 @@ kw{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index ae45c12..41e1e42 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw_GB{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cda5cd5..8ede76f 100644 (file)
@@ -199,19 +199,10 @@ ky{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}-бурулуштан оңго бурулуңуз."}\r
-            }\r
-            plural{\r
-                one{"Себетте {0} Х бар. Аны аласызбы?"}\r
-                other{"Себетте {0} Х бар. Аларды аласызбы?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 224cbdb..fce9a0b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ky_KG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 34b3539..82f276a 100644 (file)
@@ -3,7 +3,7 @@
 lag{\r
     ExemplarCharacters{"[a á b c d e é f g h i í ɨ j k l m n o ó p q r s t u ú ʉ v w x y z]"}\r
     ExemplarCharactersIndex{"[A B C D E F G H I Ɨ J K L M N O P Q R S T U Ʉ V W X Y Z]"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1b25b3e..79840de 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lag_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b2784e8..d883ca5 100644 (file)
@@ -155,7 +155,7 @@ lb{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 7a42806..fc0e01c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lb_LU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f0a0b5f..8347ead 100644 (file)
@@ -11,7 +11,7 @@ lg{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d88ad66..4aac8e4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lg_UG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2edcfae..de6dee6 100644 (file)
@@ -8,7 +8,7 @@ lkt{
     }\r
     ExemplarCharactersIndex{"[A B Č E G Ǧ H Ȟ I K L M N Ŋ O P S Š T U W Y Z Ž]"}\r
     ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . \u0022 “ ” ( ) \\[ \\] @ * / \\& #]"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index ec0bf2e..a360552 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lkt_US{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 71aa960..b7382f7 100644 (file)
@@ -23,7 +23,7 @@ ln{
             }\r
         }\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b22b145..4efa054 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_AO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 56898f8..620a515 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_CD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 89a7f7f..bb95d5b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_CF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 247e15e..94c4e65 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln_CG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b9b2a4c..81b9756 100644 (file)
@@ -249,19 +249,10 @@ lo{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"ລ້ຽວຂວາທຳອິດ."}\r
-                other{"ລ້ຽວຂວາທີ {0}."}\r
-            }\r
-            plural{\r
-                other{"{0} ມື້"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"laoo"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
@@ -714,7 +705,7 @@ lo{
                 yyyyMEd{"E, G d/M/y"}\r
                 yyyyMMM{"G MMM y"}\r
                 yyyyMMMEd{"E, G d MMM y"}\r
-                yyyyMMMM{"G MMMM y"}\r
+                yyyyMMMM{"G y MMMM"}\r
                 yyyyMMMd{"G d MMM y"}\r
                 yyyyMd{"G d/M/y"}\r
                 yyyyQQQ{"G QQQ y"}\r
@@ -885,7 +876,7 @@ lo{
                 yMEd{"E, d/M/y"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"E, d MMM y"}\r
-                yMMMM{"MMMM y"}\r
+                yMMMM{"y MMMM"}\r
                 yMMMd{"d MMM y"}\r
                 yMd{"d/M/y"}\r
                 yQQQ{"QQQ y"}\r
index b27b901..a1ca49c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lo_LA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0bcc2e4..70bc398 100644 (file)
@@ -30,7 +30,7 @@ lrc{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         default{"persian"}\r
         generic{\r
index d48cc09..3760941 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc_IQ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         default{"gregorian"}\r
         gregorian{\r
index 8339c5a..e331276 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc_IR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c750e62..1f7a8cd 100644 (file)
@@ -275,21 +275,10 @@ lt{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}-ame posūkyje sukite į dešinę."}\r
-            }\r
-            plural{\r
-                few{"{0} obuoliai"}\r
-                many{"{0} obuolio"}\r
-                one{"{0} obuolys"}\r
-                other{"{0} obuolių"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 54830de..89c8e27 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lt_LT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e7c6c8c..b7b47da 100644 (file)
@@ -19,7 +19,7 @@ lu{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 36480ae..271f9c5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lu_CD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ead4a98..20accf7 100644 (file)
@@ -11,7 +11,7 @@ luo{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bd544bc..31dae0d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luo_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 549c9ba..3d2937d 100644 (file)
@@ -10,7 +10,7 @@ luy{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4c060f4..a8f0715 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luy_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8ccab8..1e30eb0 100644 (file)
@@ -236,20 +236,10 @@ lv{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Dodieties {0}. pagriezienā pa labi."}\r
-            }\r
-            plural{\r
-                one{"{0} diennakts"}\r
-                other{"{0} diennaktis"}\r
-                zero{"{0} diennakšu"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 06933d4..387a45e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lv_LV{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ef70d09..92596e0 100644 (file)
@@ -15,7 +15,7 @@ mas{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 948c554..f13e433 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 17a1ab1..ae66e94 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cae44a9..466d551 100644 (file)
@@ -11,7 +11,7 @@ mer{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7b48e1e..f765013 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mer_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 13f991d..536cd97 100644 (file)
@@ -10,7 +10,7 @@ mfe{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7c9fed6..25371d6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mfe_MU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1fbd324..31caa8b 100644 (file)
@@ -32,7 +32,7 @@ mg{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index eb57bf6..1f8fd99 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mg_MG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e847621..3475fe6 100644 (file)
@@ -12,7 +12,7 @@ mgh{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index db5642d..cd36910 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgh_MZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cd5fa28..72d3647 100644 (file)
@@ -38,7 +38,7 @@ mgo{
         }\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index eb0366b..a42491d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgo_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a97cdd..4fc31a0 100644 (file)
@@ -197,22 +197,10 @@ mk{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                many{"Сврти на {0}-мата улица десно."}\r
-                one{"Сврти на {0}-вата улица десно."}\r
-                other{"Сврти на {0}-тата улица десно."}\r
-                two{"Сврти на {0}-рата улица десно."}\r
-            }\r
-            plural{\r
-                one{"{0} ден"}\r
-                other{"{0} дена"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c76a54e..ee7770d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mk_MK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4457f5b..1728a71 100644 (file)
@@ -204,15 +204,6 @@ ml{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}-ാമത്തെ വലത്തേക്ക് തിരിയുക."}\r
-            }\r
-            plural{\r
-                one{"{0} വ്യക്തി"}\r
-                other{"{0} വ്യക്തികൾ"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         mlym{\r
             patterns{\r
@@ -238,7 +229,7 @@ ml{
         }\r
         native{"mlym"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ddf9180..e51e403 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ml_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a7bbd4d..a5d6e23 100644 (file)
@@ -199,19 +199,10 @@ mn{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}-р баруун эргэлтээр орно уу"}\r
-            }\r
-            plural{\r
-                one{"Картанд {0} Х байна. Үүнийг авах уу?"}\r
-                other{"Картанд {0} Х байна. Тэднийг авах уу?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c294231..1c445ee 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mn_MN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7c771d7..db2c027 100644 (file)
@@ -11,9 +11,9 @@ mr{
         word-medial{"{0} … {1}"}\r
     }\r
     ExemplarCharacters{\r
-        "[{\u0931} \u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ"\r
-        " ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ा ि ी \u0941 \u0942"\r
-        " \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D]"\r
+        "[\u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट "\r
+        "ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ा ि ी \u0941 \u0942 \u0943 "\r
+        "\u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D]"\r
     }\r
     ExemplarCharactersIndex{\r
         "[\u200D ॐ \u0902 ः अ आ इ ई उ ऊ ऋ ऌ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त"\r
@@ -225,22 +225,10 @@ mr{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"{0}थे उजवे वळण घ्या."}\r
-                one{"{0}ले उजवे वळण घ्या."}\r
-                other{"{0}वे उजवे वळण घ्या."}\r
-                two{"{0}रे उजवे वळण घ्या."}\r
-            }\r
-            plural{\r
-                one{"{0} घर"}\r
-                other{"{0} घरे"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"deva"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 71e6a42..a9fcd66 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mr_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7b9331..a5306b5 100644 (file)
@@ -167,19 +167,10 @@ ms{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Ambil belokan kanan yang pertama."}\r
-                other{"Ambil belokan kanan yang ke-{0}."}\r
-            }\r
-            plural{\r
-                other{"{0} hari"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 49412ae..82f8c76 100644 (file)
@@ -12,7 +12,7 @@ ms_BN{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9ffb9df..a25d5e5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms_MY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3ba4291..653ef9c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms_SG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4192928..7bf0c46 100644 (file)
@@ -44,7 +44,7 @@ mt{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4ae4520..d62e9cb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mt_MT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 378f507..7d575e1 100644 (file)
@@ -18,7 +18,7 @@ mua{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8c043d4..fbc81b0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mua_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d30a5e..c14ca9f 100644 (file)
@@ -11,9 +11,9 @@ my{
         word-medial{"{0} … {1}"}\r
     }\r
     ExemplarCharacters{\r
-        "[{\u104F} က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ "\r
-        "အ ဣ ဤ ဥ ဦ ဧ ဩ ဪ ာ ါ \u102D \u102E \u102F \u1030 ေ \u1032 \u1036 ဿ ျ ြ \u103D"\r
-        " \u103E \u1039 \u103A \u1037 း]"\r
+        "[က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ ဣ ဤ ဥ ဦ"\r
+        " ဧ ဩ ဪ ာ ါ \u102D \u102E \u102F \u1030 ေ \u1032 \u1036 ဿ ျ ြ \u103D \u103E "\r
+        "\u1039 \u103A \u1037 း]"\r
     }\r
     ExemplarCharactersIndex{"[က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ]"}\r
     ExemplarCharactersPunctuation{"[၊ ။ ‘ ’ “ ”]"}\r
@@ -165,14 +165,6 @@ my{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0} အုပ်မြောက်"}\r
-            }\r
-            plural{\r
-                other{"{0}ရက်"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         mymr{\r
             patterns{\r
@@ -192,7 +184,7 @@ my{
         }\r
         native{"mymr"}\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.30.50"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4b22c00..fb0a830 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 my_MM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8b149e0..809f247 100644 (file)
@@ -21,7 +21,7 @@ mzn{
         default{"arabext"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         default{"persian"}\r
         gregorian{\r
index 0814d6d..61854f7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mzn_IR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3e8f55d..506a286 100644 (file)
@@ -11,7 +11,7 @@ naq{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 914f50a..4e7b049 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 naq_NA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index db3f94f..e836733 100644 (file)
@@ -233,19 +233,10 @@ nb{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Ta {0}. svingen til høyre."}\r
-            }\r
-            plural{\r
-                one{"{0} dag"}\r
-                other{"{0} dager"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     calendar{\r
         buddhist{\r
             availableFormats{\r
index 5e00af2..22fabcb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb_NO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9041be5..28806ef 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb_SJ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index db430e9..7217780 100644 (file)
@@ -12,7 +12,7 @@ nd{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8720335..50e9618 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nd_ZW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 455c8f6..0126abf 100644 (file)
@@ -3,5 +3,5 @@
 nds{\r
     AuxExemplarCharacters{"[á à ă â ā æ ç é è ĕ ê ë ę ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ]"}\r
     ExemplarCharacters{"[a å ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index 6989592..c35c1ad 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds_DE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index d33dd45..a47b8a2 100644 (file)
@@ -8,5 +8,5 @@ nds_NL{
         "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ "\r
         "″]"\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index af6b7cc..ffc4b09 100644 (file)
@@ -220,20 +220,10 @@ ne{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"{0} ओ दायाँ घुम्ति लिनुहोस्"}\r
-                other{"{0} औं दायाँ घुम्ति लिनुहोस्"}\r
-            }\r
-            plural{\r
-                one{"तपाईँसँग {0} निम्तो छ"}\r
-                other{"तपाईँसँग {0} निम्ता छन््"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"deva"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c116a8c..bb91048 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index f748284..83ebd0b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne_NP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b871363..90e616a 100644 (file)
@@ -236,19 +236,10 @@ nl{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Neem de {0}e afslag rechts."}\r
-            }\r
-            plural{\r
-                one{"{0} dag"}\r
-                other{"{0} dagen"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index bdeca2d..0919d83 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_AW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 899cb4f..f603df8 100644 (file)
@@ -8,7 +8,7 @@ nl_BE{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a5b7af3..7dd19c6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_BQ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 893b69f..8dbfbbd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_CW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 53f1f9f..c7b379f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_NL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7603e3e..25d26a6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_SR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a89d35f..78cec98 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_SX{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 94378e9..5240cfd 100644 (file)
@@ -21,7 +21,7 @@ nmg{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index fc69a67..7f3be5e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nmg_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b0e8f54..cb76158 100644 (file)
@@ -36,7 +36,7 @@ nn{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 73baa40..6df86ea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nn_NO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 296124f..035e56b 100644 (file)
@@ -27,7 +27,7 @@ nnh{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index ffda18e..a529594 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nnh_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9dac7c1..2f8a8e2 100644 (file)
@@ -21,7 +21,7 @@ nus{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c2e7960..32ede21 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nus_SS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index acb8e9e..e237322 100644 (file)
@@ -10,7 +10,7 @@ nyn{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 316c23e..0f9ef2d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nyn_UG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 215f18f..8c6a53a 100644 (file)
@@ -34,7 +34,7 @@ om{
         native{"latn"}\r
         traditional{"ethi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bf0cbaf..a2d2fa3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om_ET{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 38968cb..a74fc24 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index c0482db..109efa4 100644 (file)
@@ -26,7 +26,7 @@ or{
         }\r
         native{"orya"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b34ec0f..6bb2596 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 or_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 00c21e4..bf1f23c 100644 (file)
@@ -43,7 +43,7 @@ os{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f43cbb5..4b523c1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os_GE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 001710c..f500bb6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os_RU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index de8cb53..0de6e34 100644 (file)
@@ -240,19 +240,10 @@ pa{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"ਸਜੇ ਪਾਸੇ {0} ਮੋੜ ਲਵੋ"}\r
-            }\r
-            plural{\r
-                one{"{0} ਘੰਟਾ"}\r
-                other{"{0} ਘੰਟੇ"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"guru"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
@@ -295,7 +286,7 @@ pa{
                 yyyyMEd{"E, d/M/y GGGGG"}\r
                 yyyyMMM{"MMM y G"}\r
                 yyyyMMMEd{"E, d MMM y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMM{"G y MMMM"}\r
                 yyyyMMMd{"d MMM y G"}\r
                 yyyyMd{"d/M/y GGGGG"}\r
                 yyyyQQQ{"QQQ y G"}\r
@@ -436,7 +427,7 @@ pa{
                 yMEd{"E, d/M/y"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"E, d MMM y"}\r
-                yMMMM{"MMMM y"}\r
+                yMMMM{"y MMMM"}\r
                 yMMMd{"d MMM y"}\r
                 yMd{"d/M/y"}\r
                 yQQQ{"QQQ y"}\r
index 22e1d02..193392c 100644 (file)
@@ -17,7 +17,7 @@ pa_Arab{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b75ed4d..ad09c90 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Arab_PK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc1602d..dca680f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0b35aa7..26d6e29 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d2d5944..7396e44 100644 (file)
@@ -272,21 +272,10 @@ pl{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Skręć w {0} w prawo."}\r
-            }\r
-            plural{\r
-                few{"{0} miesiące"}\r
-                many{"{0} miesięcy"}\r
-                one{"{0} miesiąc"}\r
-                other{"{0} miesiąca"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"2"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 05a9748..e4e959c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pl_PL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4e500b9..99ef76c 100644 (file)
Binary files a/source/data/locales/pool.res and b/source/data/locales/pool.res differ
index bbea3b4..e106dc8 100644 (file)
@@ -57,7 +57,7 @@ ps{
         minimumGroupingDigits{"1"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         default{"persian"}\r
         generic{\r
index 5741f9c..c7b1b2c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ps_AF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 96ddf74..60bd7f3 100644 (file)
@@ -203,19 +203,10 @@ pt{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}º livro"}\r
-            }\r
-            plural{\r
-                one{"{0} ponto"}\r
-                other{"{0} pontos"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 3d5fbf3..149733f 100644 (file)
@@ -5,5 +5,5 @@ pt_AO{
     NumberElements{\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3aab755..de0bcf3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_BR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ee7339..a4226b1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed8f313..829f400 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f6e235..fd432f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4cd124..75c5d9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b5a1669..b5eca2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ca01c7f..534f5ba 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 060a5fc..9878c5a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fd57bd8..97fe460 100644 (file)
@@ -141,7 +141,7 @@ pt_PT{
         }\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.54"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index e3f0965..fcc981b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8cb201..8bbbc3d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7e4416c..1e313bd 100644 (file)
@@ -34,7 +34,7 @@ qu{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 8b959e3..0dbd93c 100644 (file)
@@ -9,5 +9,5 @@ qu_BO{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0da49d8..69b8ba0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_EC{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 803056f..2163c2a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_PE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fa01950..ae413c9 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-GENRB_CLDR_VERSION = 31.0.1\r
+GENRB_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'reslocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'reslocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,15 +26,15 @@ GENRB_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-GENRB_SYNTHETIC_ALIAS = ars.txt az_AZ.txt bs_BA.txt en_NH.txt\\r
en_RH.txt in.txt in_ID.txt iw.txt iw_IL.txt\\r
ja_JP_TRADITIONAL.txt mo.txt no.txt no_NO.txt no_NO_NY.txt\\r
- pa_IN.txt pa_PK.txt sh.txt sh_BA.txt sh_CS.txt\\r
- sh_YU.txt shi_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\\r
- sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt\\r
- sr_XK.txt sr_YU.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt\\r
- uz_AF.txt uz_UZ.txt vai_LR.txt zh_CN.txt zh_HK.txt\\r
- zh_MO.txt zh_SG.txt zh_TW.txt\r
+GENRB_SYNTHETIC_ALIAS = az_AZ.txt bs_BA.txt en_NH.txt en_RH.txt\\r
in.txt in_ID.txt iw.txt iw_IL.txt ja_JP_TRADITIONAL.txt\\r
mo.txt no.txt no_NO.txt no_NO_NY.txt pa_IN.txt\\r
+ pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
+ shi_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt sr_Cyrl_YU.txt\\r
+ sr_Latn_CS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt\\r
+ sr_YU.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
+ uz_UZ.txt vai_LR.txt zh_CN.txt zh_HK.txt zh_MO.txt\\r
+ zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -89,100 +89,99 @@ GENRB_SOURCE = af.txt af_NA.txt af_ZA.txt agq.txt\
  en_UG.txt en_UM.txt en_US.txt en_US_POSIX.txt en_VC.txt\\r
  en_VG.txt en_VI.txt en_VU.txt en_WS.txt en_ZA.txt\\r
  en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\\r
- es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\\r
- es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EA.txt\\r
- es_EC.txt es_ES.txt es_GQ.txt es_GT.txt es_HN.txt\\r
- es_IC.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\\r
- es_PH.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\\r
- es_UY.txt es_VE.txt et.txt et_EE.txt eu.txt\\r
- eu_ES.txt ewo.txt ewo_CM.txt fa.txt fa_AF.txt\\r
- fa_IR.txt ff.txt ff_CM.txt ff_GN.txt ff_MR.txt\\r
- ff_SN.txt fi.txt fi_FI.txt fil.txt fil_PH.txt\\r
- fo.txt fo_DK.txt fo_FO.txt fr.txt fr_BE.txt\\r
- fr_BF.txt fr_BI.txt fr_BJ.txt fr_BL.txt fr_CA.txt\\r
- fr_CD.txt fr_CF.txt fr_CG.txt fr_CH.txt fr_CI.txt\\r
- fr_CM.txt fr_DJ.txt fr_DZ.txt fr_FR.txt fr_GA.txt\\r
- fr_GF.txt fr_GN.txt fr_GP.txt fr_GQ.txt fr_HT.txt\\r
- fr_KM.txt fr_LU.txt fr_MA.txt fr_MC.txt fr_MF.txt\\r
- fr_MG.txt fr_ML.txt fr_MQ.txt fr_MR.txt fr_MU.txt\\r
- fr_NC.txt fr_NE.txt fr_PF.txt fr_PM.txt fr_RE.txt\\r
- fr_RW.txt fr_SC.txt fr_SN.txt fr_SY.txt fr_TD.txt\\r
- fr_TG.txt fr_TN.txt fr_VU.txt fr_WF.txt fr_YT.txt\\r
- fur.txt fur_IT.txt fy.txt fy_NL.txt ga.txt\\r
- ga_IE.txt gd.txt gd_GB.txt gl.txt gl_ES.txt\\r
- gsw.txt gsw_CH.txt gsw_FR.txt gsw_LI.txt gu.txt\\r
- gu_IN.txt guz.txt guz_KE.txt gv.txt gv_IM.txt\\r
- ha.txt ha_GH.txt ha_NE.txt ha_NG.txt haw.txt\\r
- haw_US.txt he.txt he_IL.txt hi.txt hi_IN.txt\\r
- hr.txt hr_BA.txt hr_HR.txt hsb.txt hsb_DE.txt\\r
- hu.txt hu_HU.txt hy.txt hy_AM.txt id.txt\\r
- id_ID.txt ig.txt ig_NG.txt ii.txt ii_CN.txt\\r
- is.txt is_IS.txt it.txt it_CH.txt it_IT.txt\\r
- it_SM.txt it_VA.txt ja.txt ja_JP.txt jgo.txt\\r
- jgo_CM.txt jmc.txt jmc_TZ.txt ka.txt ka_GE.txt\\r
- kab.txt kab_DZ.txt kam.txt kam_KE.txt kde.txt\\r
- kde_TZ.txt kea.txt kea_CV.txt khq.txt khq_ML.txt\\r
- ki.txt ki_KE.txt kk.txt kk_KZ.txt kkj.txt\\r
- kkj_CM.txt kl.txt kl_GL.txt kln.txt kln_KE.txt\\r
- km.txt km_KH.txt kn.txt kn_IN.txt ko.txt\\r
- ko_KP.txt ko_KR.txt kok.txt kok_IN.txt ks.txt\\r
- ks_IN.txt ksb.txt ksb_TZ.txt ksf.txt ksf_CM.txt\\r
- ksh.txt ksh_DE.txt kw.txt kw_GB.txt ky.txt\\r
- ky_KG.txt lag.txt lag_TZ.txt lb.txt lb_LU.txt\\r
- lg.txt lg_UG.txt lkt.txt lkt_US.txt ln.txt\\r
- ln_AO.txt ln_CD.txt ln_CF.txt ln_CG.txt lo.txt\\r
- lo_LA.txt lrc.txt lrc_IQ.txt lrc_IR.txt lt.txt\\r
- lt_LT.txt lu.txt lu_CD.txt luo.txt luo_KE.txt\\r
- luy.txt luy_KE.txt lv.txt lv_LV.txt mas.txt\\r
- mas_KE.txt mas_TZ.txt mer.txt mer_KE.txt mfe.txt\\r
- mfe_MU.txt mg.txt mg_MG.txt mgh.txt mgh_MZ.txt\\r
- mgo.txt mgo_CM.txt mk.txt mk_MK.txt ml.txt\\r
- ml_IN.txt mn.txt mn_MN.txt mr.txt mr_IN.txt\\r
- ms.txt ms_BN.txt ms_MY.txt ms_SG.txt mt.txt\\r
- mt_MT.txt mua.txt mua_CM.txt my.txt my_MM.txt\\r
- mzn.txt mzn_IR.txt naq.txt naq_NA.txt nb.txt\\r
- nb_NO.txt nb_SJ.txt nd.txt nd_ZW.txt nds.txt\\r
- nds_DE.txt nds_NL.txt ne.txt ne_IN.txt ne_NP.txt\\r
- nl.txt nl_AW.txt nl_BE.txt nl_BQ.txt nl_CW.txt\\r
- nl_NL.txt nl_SR.txt nl_SX.txt nmg.txt nmg_CM.txt\\r
- nn.txt nn_NO.txt nnh.txt nnh_CM.txt nus.txt\\r
- nus_SS.txt nyn.txt nyn_UG.txt om.txt om_ET.txt\\r
- om_KE.txt or.txt or_IN.txt os.txt os_GE.txt\\r
- os_RU.txt pa.txt pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt\\r
- pa_Guru_IN.txt pl.txt pl_PL.txt ps.txt ps_AF.txt\\r
- pt.txt pt_AO.txt pt_BR.txt pt_CH.txt pt_CV.txt\\r
- pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt\\r
- pt_PT.txt pt_ST.txt pt_TL.txt qu.txt qu_BO.txt\\r
- qu_EC.txt qu_PE.txt rm.txt rm_CH.txt rn.txt\\r
- rn_BI.txt ro.txt ro_MD.txt ro_RO.txt rof.txt\\r
- rof_TZ.txt ru.txt ru_BY.txt ru_KG.txt ru_KZ.txt\\r
- ru_MD.txt ru_RU.txt ru_UA.txt rw.txt rw_RW.txt\\r
- rwk.txt rwk_TZ.txt sah.txt sah_RU.txt saq.txt\\r
- saq_KE.txt sbp.txt sbp_TZ.txt se.txt se_FI.txt\\r
- se_NO.txt se_SE.txt seh.txt seh_MZ.txt ses.txt\\r
- ses_ML.txt sg.txt sg_CF.txt shi.txt shi_Latn.txt\\r
- shi_Latn_MA.txt shi_Tfng.txt shi_Tfng_MA.txt si.txt si_LK.txt\\r
- sk.txt sk_SK.txt sl.txt sl_SI.txt smn.txt\\r
- smn_FI.txt sn.txt sn_ZW.txt so.txt so_DJ.txt\\r
- so_ET.txt so_KE.txt so_SO.txt sq.txt sq_AL.txt\\r
- sq_MK.txt sq_XK.txt sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt\\r
- sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt\\r
- sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_XK.txt sv.txt sv_AX.txt\\r
- sv_FI.txt sv_SE.txt sw.txt sw_CD.txt sw_KE.txt\\r
- sw_TZ.txt sw_UG.txt ta.txt ta_IN.txt ta_LK.txt\\r
- ta_MY.txt ta_SG.txt te.txt te_IN.txt teo.txt\\r
- teo_KE.txt teo_UG.txt th.txt th_TH.txt ti.txt\\r
- ti_ER.txt ti_ET.txt to.txt to_TO.txt tr.txt\\r
- tr_CY.txt tr_TR.txt twq.txt twq_NE.txt tzm.txt\\r
- tzm_MA.txt ug.txt ug_CN.txt uk.txt uk_UA.txt\\r
- ur.txt ur_IN.txt ur_PK.txt uz.txt uz_Arab.txt\\r
- uz_Arab_AF.txt uz_Cyrl.txt uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt\\r
- vai.txt vai_Latn.txt vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt\\r
- vi.txt vi_VN.txt vun.txt vun_TZ.txt wae.txt\\r
- wae_CH.txt xog.txt xog_UG.txt yav.txt yav_CM.txt\\r
- yi.txt yi_001.txt yo.txt yo_BJ.txt yo_NG.txt\\r
- yue.txt yue_HK.txt zgh.txt zgh_MA.txt zh.txt\\r
- zh_Hans.txt zh_Hans_CN.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\\r
- zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zh_Hant_TW.txt zu.txt\\r
- zu_ZA.txt\r
+ es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\\r
+ es_CR.txt es_CU.txt es_DO.txt es_EA.txt es_EC.txt\\r
+ es_ES.txt es_GQ.txt es_GT.txt es_HN.txt es_IC.txt\\r
+ es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PH.txt\\r
+ es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\\r
+ es_VE.txt et.txt et_EE.txt eu.txt eu_ES.txt\\r
+ ewo.txt ewo_CM.txt fa.txt fa_AF.txt fa_IR.txt\\r
+ ff.txt ff_CM.txt ff_GN.txt ff_MR.txt ff_SN.txt\\r
+ fi.txt fi_FI.txt fil.txt fil_PH.txt fo.txt\\r
+ fo_DK.txt fo_FO.txt fr.txt fr_BE.txt fr_BF.txt\\r
+ fr_BI.txt fr_BJ.txt fr_BL.txt fr_CA.txt fr_CD.txt\\r
+ fr_CF.txt fr_CG.txt fr_CH.txt fr_CI.txt fr_CM.txt\\r
+ fr_DJ.txt fr_DZ.txt fr_FR.txt fr_GA.txt fr_GF.txt\\r
+ fr_GN.txt fr_GP.txt fr_GQ.txt fr_HT.txt fr_KM.txt\\r
+ fr_LU.txt fr_MA.txt fr_MC.txt fr_MF.txt fr_MG.txt\\r
+ fr_ML.txt fr_MQ.txt fr_MR.txt fr_MU.txt fr_NC.txt\\r
+ fr_NE.txt fr_PF.txt fr_PM.txt fr_RE.txt fr_RW.txt\\r
+ fr_SC.txt fr_SN.txt fr_SY.txt fr_TD.txt fr_TG.txt\\r
+ fr_TN.txt fr_VU.txt fr_WF.txt fr_YT.txt fur.txt\\r
+ fur_IT.txt fy.txt fy_NL.txt ga.txt ga_IE.txt\\r
+ gd.txt gd_GB.txt gl.txt gl_ES.txt gsw.txt\\r
+ gsw_CH.txt gsw_FR.txt gsw_LI.txt gu.txt gu_IN.txt\\r
+ guz.txt guz_KE.txt gv.txt gv_IM.txt ha.txt\\r
+ ha_GH.txt ha_NE.txt ha_NG.txt haw.txt haw_US.txt\\r
+ he.txt he_IL.txt hi.txt hi_IN.txt hr.txt\\r
+ hr_BA.txt hr_HR.txt hsb.txt hsb_DE.txt hu.txt\\r
+ hu_HU.txt hy.txt hy_AM.txt id.txt id_ID.txt\\r
+ ig.txt ig_NG.txt ii.txt ii_CN.txt is.txt\\r
+ is_IS.txt it.txt it_CH.txt it_IT.txt it_SM.txt\\r
+ ja.txt ja_JP.txt jgo.txt jgo_CM.txt jmc.txt\\r
+ jmc_TZ.txt ka.txt ka_GE.txt kab.txt kab_DZ.txt\\r
+ kam.txt kam_KE.txt kde.txt kde_TZ.txt kea.txt\\r
+ kea_CV.txt khq.txt khq_ML.txt ki.txt ki_KE.txt\\r
+ kk.txt kk_KZ.txt kkj.txt kkj_CM.txt kl.txt\\r
+ kl_GL.txt kln.txt kln_KE.txt km.txt km_KH.txt\\r
+ kn.txt kn_IN.txt ko.txt ko_KP.txt ko_KR.txt\\r
+ kok.txt kok_IN.txt ks.txt ks_IN.txt ksb.txt\\r
+ ksb_TZ.txt ksf.txt ksf_CM.txt ksh.txt ksh_DE.txt\\r
+ kw.txt kw_GB.txt ky.txt ky_KG.txt lag.txt\\r
+ lag_TZ.txt lb.txt lb_LU.txt lg.txt lg_UG.txt\\r
+ lkt.txt lkt_US.txt ln.txt ln_AO.txt ln_CD.txt\\r
+ ln_CF.txt ln_CG.txt lo.txt lo_LA.txt lrc.txt\\r
+ lrc_IQ.txt lrc_IR.txt lt.txt lt_LT.txt lu.txt\\r
+ lu_CD.txt luo.txt luo_KE.txt luy.txt luy_KE.txt\\r
+ lv.txt lv_LV.txt mas.txt mas_KE.txt mas_TZ.txt\\r
+ mer.txt mer_KE.txt mfe.txt mfe_MU.txt mg.txt\\r
+ mg_MG.txt mgh.txt mgh_MZ.txt mgo.txt mgo_CM.txt\\r
+ mk.txt mk_MK.txt ml.txt ml_IN.txt mn.txt\\r
+ mn_MN.txt mr.txt mr_IN.txt ms.txt ms_BN.txt\\r
+ ms_MY.txt ms_SG.txt mt.txt mt_MT.txt mua.txt\\r
+ mua_CM.txt my.txt my_MM.txt mzn.txt mzn_IR.txt\\r
+ naq.txt naq_NA.txt nb.txt nb_NO.txt nb_SJ.txt\\r
+ nd.txt nd_ZW.txt nds.txt nds_DE.txt nds_NL.txt\\r
+ ne.txt ne_IN.txt ne_NP.txt nl.txt nl_AW.txt\\r
+ nl_BE.txt nl_BQ.txt nl_CW.txt nl_NL.txt nl_SR.txt\\r
+ nl_SX.txt nmg.txt nmg_CM.txt nn.txt nn_NO.txt\\r
+ nnh.txt nnh_CM.txt nus.txt nus_SS.txt nyn.txt\\r
+ nyn_UG.txt om.txt om_ET.txt om_KE.txt or.txt\\r
+ or_IN.txt os.txt os_GE.txt os_RU.txt pa.txt\\r
+ pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt pa_Guru_IN.txt pl.txt\\r
+ pl_PL.txt ps.txt ps_AF.txt pt.txt pt_AO.txt\\r
+ pt_BR.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\\r
+ pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\\r
+ pt_TL.txt qu.txt qu_BO.txt qu_EC.txt qu_PE.txt\\r
+ rm.txt rm_CH.txt rn.txt rn_BI.txt ro.txt\\r
+ ro_MD.txt ro_RO.txt rof.txt rof_TZ.txt ru.txt\\r
+ ru_BY.txt ru_KG.txt ru_KZ.txt ru_MD.txt ru_RU.txt\\r
+ ru_UA.txt rw.txt rw_RW.txt rwk.txt rwk_TZ.txt\\r
+ sah.txt sah_RU.txt saq.txt saq_KE.txt sbp.txt\\r
+ sbp_TZ.txt se.txt se_FI.txt se_NO.txt se_SE.txt\\r
+ seh.txt seh_MZ.txt ses.txt ses_ML.txt sg.txt\\r
+ sg_CF.txt shi.txt shi_Latn.txt shi_Latn_MA.txt shi_Tfng.txt\\r
+ shi_Tfng_MA.txt si.txt si_LK.txt sk.txt sk_SK.txt\\r
+ sl.txt sl_SI.txt smn.txt smn_FI.txt sn.txt\\r
+ sn_ZW.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\\r
+ so_SO.txt sq.txt sq_AL.txt sq_MK.txt sq_XK.txt\\r
+ sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt\\r
+ sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_RS.txt\\r
+ sr_Latn_XK.txt sv.txt sv_AX.txt sv_FI.txt sv_SE.txt\\r
+ sw.txt sw_CD.txt sw_KE.txt sw_TZ.txt sw_UG.txt\\r
+ ta.txt ta_IN.txt ta_LK.txt ta_MY.txt ta_SG.txt\\r
+ te.txt te_IN.txt teo.txt teo_KE.txt teo_UG.txt\\r
+ th.txt th_TH.txt ti.txt ti_ER.txt ti_ET.txt\\r
+ to.txt to_TO.txt tr.txt tr_CY.txt tr_TR.txt\\r
+ twq.txt twq_NE.txt tzm.txt tzm_MA.txt ug.txt\\r
+ ug_CN.txt uk.txt uk_UA.txt ur.txt ur_IN.txt\\r
+ ur_PK.txt uz.txt uz_Arab.txt uz_Arab_AF.txt uz_Cyrl.txt\\r
+ uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt vai.txt vai_Latn.txt\\r
+ vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt vi.txt vi_VN.txt\\r
+ vun.txt vun_TZ.txt wae.txt wae_CH.txt xog.txt\\r
+ xog_UG.txt yav.txt yav_CM.txt yi.txt yi_001.txt\\r
+ yo.txt yo_BJ.txt yo_NG.txt yue.txt yue_HK.txt\\r
+ zgh.txt zgh_MA.txt zh.txt zh_Hans.txt zh_Hans_CN.txt\\r
+ zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt\\r
+ zh_Hant_MO.txt zh_Hant_TW.txt zu.txt zu_ZA.txt\r
 \r
index ffef807..48efd86 100644 (file)
@@ -34,7 +34,7 @@ rm{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9139d92..8b9f156 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rm_CH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 94d4199..c2d7cbd 100644 (file)
@@ -16,7 +16,7 @@ rn{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e0a6706..e64be13 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rn_BI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b084701..e53b940 100644 (file)
@@ -233,21 +233,10 @@ ro{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Faceți virajul nr. {0} la dreapta."}\r
-                other{"Faceți virajul al {0}-lea la dreapta."}\r
-            }\r
-            plural{\r
-                few{"{0} zile"}\r
-                one{"{0} zi"}\r
-                other{"{0} de zile"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index f76f446..f10298a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro_MD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index d04ff69..c62372c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro_RO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c1ff90c..c6aa38e 100644 (file)
@@ -11,7 +11,7 @@ rof{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8ad4782..014d99d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rof_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7108137..100c07b 100644 (file)
@@ -160,18 +160,10 @@ root{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}?"}\r
-            }\r
-            plural{\r
-                other{"{0}?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.58"}\r
     calendar{\r
         buddhist{\r
             AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}\r
@@ -2134,21 +2126,12 @@ root{
         }\r
         day-narrow:alias{"/LOCALE/fields/day-short"}\r
         day-short:alias{"/LOCALE/fields/day"}\r
-        dayOfYear{\r
-            dn{"Day Of Year"}\r
-        }\r
-        dayOfYear-narrow:alias{"/LOCALE/fields/dayOfYear-short"}\r
-        dayOfYear-short:alias{"/LOCALE/fields/dayOfYear"}\r
         dayperiod{\r
             dn{"Dayperiod"}\r
         }\r
-        dayperiod-narrow:alias{"/LOCALE/fields/dayperiod-short"}\r
-        dayperiod-short:alias{"/LOCALE/fields/dayperiod"}\r
         era{\r
             dn{"Era"}\r
         }\r
-        era-narrow:alias{"/LOCALE/fields/era-short"}\r
-        era-short:alias{"/LOCALE/fields/era"}\r
         fri{\r
             relative{\r
                 "-1"{"last Friday"}\r
@@ -2371,21 +2354,9 @@ root{
         }\r
         week-narrow:alias{"/LOCALE/fields/week-short"}\r
         week-short:alias{"/LOCALE/fields/week"}\r
-        weekOfMonth{\r
-            dn{"Week Of Month"}\r
-        }\r
-        weekOfMonth-narrow:alias{"/LOCALE/fields/weekOfMonth-short"}\r
-        weekOfMonth-short:alias{"/LOCALE/fields/weekOfMonth"}\r
         weekday{\r
             dn{"Day of the Week"}\r
         }\r
-        weekday-narrow:alias{"/LOCALE/fields/weekday-short"}\r
-        weekday-short:alias{"/LOCALE/fields/weekday"}\r
-        weekdayOfMonth{\r
-            dn{"Weekday Of Month"}\r
-        }\r
-        weekdayOfMonth-narrow:alias{"/LOCALE/fields/weekdayOfMonth-short"}\r
-        weekdayOfMonth-short:alias{"/LOCALE/fields/weekdayOfMonth"}\r
         year{\r
             dn{"Year"}\r
             relative{\r
@@ -2407,8 +2378,6 @@ root{
         zone{\r
             dn{"Zone"}\r
         }\r
-        zone-narrow:alias{"/LOCALE/fields/zone-short"}\r
-        zone-short:alias{"/LOCALE/fields/zone"}\r
     }\r
     layout{\r
         characters{"left-to-right"}\r
@@ -2451,31 +2420,4 @@ root{
         US{"US"}\r
         metric{"Metric"}\r
     }\r
-    parse{\r
-        date{\r
-            lenient{\r
-                "[\\-./]",\r
-                "[\\:∶]",\r
-            }\r
-        }\r
-        general{\r
-            lenient{\r
-                "[..․﹒ 。︒。]",\r
-                "[$﹩$$]",\r
-                "[£₤]",\r
-                "[₨₹{Rs}{Rp}]",\r
-            }\r
-        }\r
-        number{\r
-            lenient{\r
-                "[\\--﹣ −⁻₋ ➖‒]",\r
-                "[,,﹐︐ ، ٫ 、﹑︑、]",\r
-                "[++﬩﹢⁺₊ ➕]",\r
-            }\r
-            stricter{\r
-                "[,,﹐︐ ٫]",\r
-                "[..․﹒ 。]",\r
-            }\r
-        }\r
-    }\r
 }\r
index 9fedd8c..dcd151a 100644 (file)
@@ -275,21 +275,10 @@ ru{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Сверните направо на {0}-м перекрестке."}\r
-            }\r
-            plural{\r
-                few{"из {0} книг за {0} дня"}\r
-                many{"из {0} книг за {0} дней"}\r
-                one{"из {0} книги за {0} день"}\r
-                other{"из {0} книги за {0} дня"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 7f8050c..47177cf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_BY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.30.5"}\r
 }\r
index 28d8764..998d040 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_KG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d66d72..85c52fb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_KZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d674bbc..688c61c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_MD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d023d79..5c2a23c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru_RU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed6e77d..a8e6a15 100644 (file)
@@ -4,7 +4,7 @@ ru_UA{
     NumberElements{\r
         minimumGroupingDigits{"2"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 56a8a8f..7507ee0 100644 (file)
@@ -31,7 +31,7 @@ rw{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 4420ad9..56f8864 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rw_RW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cb33ef8..b658eef 100644 (file)
@@ -11,7 +11,7 @@ rwk{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1ef6afe..a9dcefd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rwk_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 15d137d..4b0059b 100644 (file)
@@ -163,7 +163,7 @@ sah{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.87"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 83f1bde..7db1283 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sah_RU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0287914..6243ec2 100644 (file)
@@ -12,7 +12,7 @@ saq{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c2085bf..2097b13 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 saq_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 411b547..c9551b8 100644 (file)
@@ -17,7 +17,7 @@ sbp{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index bc9f302..0fa45c3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sbp_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bfea3a9..e6e81f4 100644 (file)
@@ -165,7 +165,7 @@ se{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index 5303abb..38d5bd1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se_FI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index 0ab7c02..dccd6de 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se_NO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8cd1231..8ed5b42 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se_SE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4e4330e..2bcee9e 100644 (file)
@@ -17,7 +17,7 @@ seh{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 9836fd7..3e1a5df 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 seh_MZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b59a4f4..23688e8 100644 (file)
@@ -14,7 +14,7 @@ ses{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 6ee0aec..135f5bd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ses_ML{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 316b1d6..5dd1137 100644 (file)
@@ -15,7 +15,7 @@ sg{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e1a1f71..de3e492 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sg_CF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 52c3d54..193133c 100644 (file)
@@ -14,7 +14,7 @@ shi{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 54d9c52..a2edf44 100644 (file)
@@ -16,7 +16,7 @@ shi_Latn{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b77a991..05d7980 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Latn_MA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2db194b..22785f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b7a021d..591ddc7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng_MA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 49f9872..a35ff51 100644 (file)
@@ -206,19 +206,10 @@ si{
                 timeSeparator{"."}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0} වන හැරවුම දකුණට"}\r
-            }\r
-            plural{\r
-                one{"{0} පොතක් ඇත. එය කියවීමි."}\r
-                other{"පොත් {0}ක් ඇත. ඒවා කියවීමි."}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b716329..1135591 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 si_LK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fed40b..c46dbfe 100644 (file)
@@ -272,21 +272,10 @@ sk{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Na {0}. križovatke odbočte doprava."}\r
-            }\r
-            plural{\r
-                few{"{0} dni"}\r
-                many{"{0} dňa"}\r
-                one{"{0} deň"}\r
-                other{"{0} dní"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e8c63e1..eaefd1a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sk_SK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e4f3763..deb64b8 100644 (file)
@@ -262,7 +262,7 @@ sl{
                 group{"."}\r
                 infinity{"∞"}\r
                 list{";"}\r
-                minusSign{"â\88\92"}\r
+                minusSign{"â\80\93"}\r
                 nan{"NaN"}\r
                 perMille{"‰"}\r
                 percentSign{"%"}\r
@@ -271,21 +271,10 @@ sl{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"V {0}. križišču zavijte desno."}\r
-            }\r
-            plural{\r
-                few{"{0} ure"}\r
-                one{"{0} ura"}\r
-                other{"{0} ur"}\r
-                two{"{0} uri"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8d5f82a..5d0f70c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sl_SI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 84960f6..ba9b302 100644 (file)
@@ -97,7 +97,7 @@ smn{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8f651d8..f9e1440 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 smn_FI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3c55cbc..53b0245 100644 (file)
@@ -32,7 +32,7 @@ sn{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8b6a348..6480fa5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sn_ZW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 90e1219..2110401 100644 (file)
@@ -10,7 +10,7 @@ so{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        one{"0K"}\r
+                        one{"Kun"}\r
                         other{"0K"}\r
                     }\r
                     10000{\r
@@ -29,7 +29,7 @@ so{
             }\r
         }\r
     }\r
-    Version{"2.1.33.76"}\r
+    Version{"2.1.27.78"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 8436049..0327421 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_DJ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20a9611..1727964 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_ET{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e0775cb..10f66a1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 02860c7..fc6b24f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so_SO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1e10b43..e40c039 100644 (file)
@@ -205,21 +205,10 @@ sq{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                many{"Merrni kthesën e {0}-t në të djathtë."}\r
-                one{"Merrni kthesën e {0}-rë në të djathtë."}\r
-                other{"Merrni kthesën e {0}-të në të djathtë."}\r
-            }\r
-            plural{\r
-                one{"{0} libër"}\r
-                other{"{0} libra"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 61b9457..7062565 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq_AL{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f32aa8..fdc96bb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq_MK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index c0d40dd..cc4e136 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq_XK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index e3c54e6..b502010 100644 (file)
@@ -230,24 +230,13 @@ sr{
                 percentSign{"%"}\r
                 plusSign{"+"}\r
                 superscriptingExponent{"×"}\r
-                timeSeparator{":"}\r
-            }\r
-        }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Скрените у {0}. десно."}\r
-            }\r
-            plural{\r
-                few{"{0} сата"}\r
-                many{"{0} сати"}\r
-                one{"{0} сат"}\r
-                other{"{0} сати"}\r
+                timeSeparator{"."}\r
             }\r
         }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -322,8 +311,8 @@ sr{
                 GyMMMEd{"E, d. MMM y. G"}\r
                 GyMMMd{"d. MMM y. G"}\r
                 H{"HH"}\r
-                Hm{"HH:mm"}\r
-                Hms{"HH:mm:ss"}\r
+                Hm{"HH.mm"}\r
+                Hms{"HH.mm.ss"}\r
                 M{"L"}\r
                 MEd{"E, d.M."}\r
                 MMM{"LLL"}\r
@@ -336,9 +325,9 @@ sr{
                 Md{"d.M."}\r
                 d{"d"}\r
                 h{"hh a"}\r
-                hm{"hh:mm a"}\r
-                hms{"hh:mm:ss a"}\r
-                ms{"mm:ss"}\r
+                hm{"hh.mm a"}\r
+                hms{"hh.mm.ss a"}\r
+                ms{"mm.ss"}\r
                 y{"y. G"}\r
                 yyyy{"y. G"}\r
                 yyyyM{"M.y. GGGGG"}\r
@@ -358,12 +347,12 @@ sr{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH:mm–HH:mm"}\r
-                    m{"HH:mm–HH:mm"}\r
+                    H{"HH.mm–HH.mm"}\r
+                    m{"HH.mm–HH.mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH:mm–HH:mm v"}\r
-                    m{"HH:mm–HH:mm v"}\r
+                    H{"HH.mm–HH.mm v"}\r
+                    m{"HH.mm–HH.mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -399,14 +388,14 @@ sr{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h:mm a – h:mm a"}\r
-                    h{"h:mm–h:mm a"}\r
-                    m{"h:mm–h:mm a"}\r
+                    a{"h.mm a – h.mm a"}\r
+                    h{"h.mm–h.mm a"}\r
+                    m{"h.mm–h.mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h:mm a – h:mm a v"}\r
-                    h{"h:mm–h:mm a v"}\r
-                    m{"h:mm–h:mm a v"}\r
+                    a{"h.mm a – h.mm a v"}\r
+                    h{"h.mm–h.mm a v"}\r
+                    m{"h.mm–h.mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
@@ -693,12 +682,12 @@ sr{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH:mm–HH:mm"}\r
-                    m{"HH:mm–HH:mm"}\r
+                    H{"HH.mm–HH.mm"}\r
+                    m{"HH.mm–HH.mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH:mm–HH:mm v"}\r
-                    m{"HH:mm–HH:mm v"}\r
+                    H{"HH.mm–HH.mm v"}\r
+                    m{"HH.mm–HH.mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -734,14 +723,14 @@ sr{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h:mm a – h:mm a"}\r
-                    h{"h:mm–h:mm a"}\r
-                    m{"h:mm–h:mm a"}\r
+                    a{"h.mm a – h.mm a"}\r
+                    h{"h.mm–h.mm a"}\r
+                    m{"h.mm–h.mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h:mm a – h:mm a v"}\r
-                    h{"h:mm–h:mm a v"}\r
-                    m{"h:mm–h:mm a v"}\r
+                    a{"h.mm a – h.mm a v"}\r
+                    h{"h.mm–h.mm a v"}\r
+                    m{"h.mm–h.mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
index 2e18268..0b50a55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5ee4a5b..d23cd7d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_BA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 381e9b8..c1b8d72 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_ME{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index 7d0223f..676c665 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_RS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 820fcc7..a70717c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl_XK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index cddcd6e..24111d6 100644 (file)
@@ -231,24 +231,13 @@ sr_Latn{
                 percentSign{"%"}\r
                 plusSign{"+"}\r
                 superscriptingExponent{"×"}\r
-                timeSeparator{":"}\r
-            }\r
-        }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Skrenite u {0}. desno."}\r
-            }\r
-            plural{\r
-                few{"{0} sata"}\r
-                many{"{0} sati"}\r
-                one{"{0} sat"}\r
-                other{"{0} sati"}\r
+                timeSeparator{"."}\r
             }\r
         }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.29.33"}\r
     calendar{\r
         buddhist{\r
             eras{\r
@@ -323,8 +312,8 @@ sr_Latn{
                 GyMMMEd{"E, d. MMM y. G"}\r
                 GyMMMd{"d. MMM y. G"}\r
                 H{"HH"}\r
-                Hm{"HH:mm"}\r
-                Hms{"HH:mm:ss"}\r
+                Hm{"HH.mm"}\r
+                Hms{"HH.mm.ss"}\r
                 M{"L"}\r
                 MEd{"E, d.M."}\r
                 MMM{"LLL"}\r
@@ -337,9 +326,9 @@ sr_Latn{
                 Md{"d.M."}\r
                 d{"d"}\r
                 h{"hh a"}\r
-                hm{"hh:mm a"}\r
-                hms{"hh:mm:ss a"}\r
-                ms{"mm:ss"}\r
+                hm{"hh.mm a"}\r
+                hms{"hh.mm.ss a"}\r
+                ms{"mm.ss"}\r
                 y{"y. G"}\r
                 yyyy{"y. G"}\r
                 yyyyM{"M.y. GGGGG"}\r
@@ -359,12 +348,12 @@ sr_Latn{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH:mm–HH:mm"}\r
-                    m{"HH:mm–HH:mm"}\r
+                    H{"HH.mm–HH.mm"}\r
+                    m{"HH.mm–HH.mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH:mm–HH:mm v"}\r
-                    m{"HH:mm–HH:mm v"}\r
+                    H{"HH.mm–HH.mm v"}\r
+                    m{"HH.mm–HH.mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -400,14 +389,14 @@ sr_Latn{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h:mm a – h:mm a"}\r
-                    h{"h:mm–h:mm a"}\r
-                    m{"h:mm–h:mm a"}\r
+                    a{"h.mm a – h.mm a"}\r
+                    h{"h.mm–h.mm a"}\r
+                    m{"h.mm–h.mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h:mm a – h:mm a v"}\r
-                    h{"h:mm–h:mm a v"}\r
-                    m{"h:mm–h:mm a v"}\r
+                    a{"h.mm a – h.mm a v"}\r
+                    h{"h.mm–h.mm a v"}\r
+                    m{"h.mm–h.mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
@@ -694,12 +683,12 @@ sr_Latn{
                     H{"HH–HH"}\r
                 }\r
                 Hm{\r
-                    H{"HH:mm–HH:mm"}\r
-                    m{"HH:mm–HH:mm"}\r
+                    H{"HH.mm–HH.mm"}\r
+                    m{"HH.mm–HH.mm"}\r
                 }\r
                 Hmv{\r
-                    H{"HH:mm–HH:mm v"}\r
-                    m{"HH:mm–HH:mm v"}\r
+                    H{"HH.mm–HH.mm v"}\r
+                    m{"HH.mm–HH.mm v"}\r
                 }\r
                 Hv{\r
                     H{"HH–HH v"}\r
@@ -735,14 +724,14 @@ sr_Latn{
                     h{"h–h a"}\r
                 }\r
                 hm{\r
-                    a{"h:mm a – h:mm a"}\r
-                    h{"h:mm–h:mm a"}\r
-                    m{"h:mm–h:mm a"}\r
+                    a{"h.mm a – h.mm a"}\r
+                    h{"h.mm–h.mm a"}\r
+                    m{"h.mm–h.mm a"}\r
                 }\r
                 hmv{\r
-                    a{"h:mm a – h:mm a v"}\r
-                    h{"h:mm–h:mm a v"}\r
-                    m{"h:mm–h:mm a v"}\r
+                    a{"h.mm a – h.mm a v"}\r
+                    h{"h.mm–h.mm a v"}\r
+                    m{"h.mm–h.mm a v"}\r
                 }\r
                 hv{\r
                     a{"h a – h a v"}\r
index fe24051..1f7e08d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_BA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index ca00cb2..6e41b02 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_ME{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index dbfd1b6..62df0de 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_RS{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35aca46..72dfda9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn_XK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
     calendar{\r
         generic{\r
             intervalFormats{\r
index a8e0518..1efb155 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv{\r
-    AuxExemplarCharacters{"[á Ã¢ Ã£ Ä\81 Ã§ Ã¨ Ã« Ã­ Ã® Ã¯ Ä« Ã± Ã³ Ãº Ã¿ Ã¼ Ã¦ Ã¸]"}\r
+    AuxExemplarCharacters{"[á â ã ā ç ë í î ï ī ñ ó ú ÿ ü æ ø]"}\r
     Ellipsis{\r
         final{"{0}…"}\r
         initial{"…{0}"}\r
@@ -216,20 +216,10 @@ sv{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Ta {0}:a svängen till höger"}\r
-                other{"Ta {0}:e svängen till höger"}\r
-            }\r
-            plural{\r
-                one{"om {0} dag"}\r
-                other{"om {0} dagar"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index f71e3c6..b693a9d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_AX{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f6765b4..ce9be45 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_FI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 365ee3d..8d04d74 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_SE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ea09319..9a97202 100644 (file)
@@ -29,154 +29,154 @@ sw{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        one{"Elfu 0;Elfu -0"}\r
-                        other{"Elfu 0;Elfu -0"}\r
+                        one{"Elfu 0"}\r
+                        other{"Elfu 0"}\r
                     }\r
                     10000{\r
-                        one{"Elfu 00;Elfu -00"}\r
-                        other{"Elfu 00;Elfu -00"}\r
+                        one{"Elfu 00"}\r
+                        other{"Elfu 00"}\r
                     }\r
                     100000{\r
-                        one{"Elfu 000;Elfu -000"}\r
-                        other{"Elfu 000;Elfu -000"}\r
+                        one{"Elfu 000"}\r
+                        other{"Elfu 000"}\r
                     }\r
                     1000000{\r
-                        one{"Milioni 0;Milioni -0"}\r
-                        other{"Milioni 0;Milioni -0"}\r
+                        one{"Milioni 0"}\r
+                        other{"Milioni 0"}\r
                     }\r
                     10000000{\r
-                        one{"Milioni 00;Milioni -00"}\r
-                        other{"Milioni 00;Milioni -00"}\r
+                        one{"Milioni 00"}\r
+                        other{"Milioni 00"}\r
                     }\r
                     100000000{\r
-                        one{"Milioni 000;Milioni -000"}\r
-                        other{"Milioni 000;Milioni -000"}\r
+                        one{"Milioni 000"}\r
+                        other{"Milioni 000"}\r
                     }\r
                     1000000000{\r
-                        one{"Bilioni 0;Bilioni -0"}\r
-                        other{"Bilioni 0;Bilioni -0"}\r
+                        one{"Bilioni 0"}\r
+                        other{"Bilioni 0"}\r
                     }\r
                     10000000000{\r
-                        one{"Bilioni 00;Bilioni -00"}\r
-                        other{"Bilioni 00;Bilioni -00"}\r
+                        one{"Bilioni 00"}\r
+                        other{"Bilioni 00"}\r
                     }\r
                     100000000000{\r
-                        one{"Bilioni 000;Bilioni -000"}\r
-                        other{"Bilioni 000;Bilioni -000"}\r
+                        one{"Bilioni 000"}\r
+                        other{"Bilioni 000"}\r
                     }\r
                     1000000000000{\r
-                        one{"Trilioni 0;Trilioni -0"}\r
-                        other{"Trilioni 0;Trilioni -0"}\r
+                        one{"Trilioni 0"}\r
+                        other{"Trilioni 0"}\r
                     }\r
                     10000000000000{\r
-                        one{"Trilioni 00;Trilioni -00"}\r
-                        other{"Trilioni 00;Trilioni -00"}\r
+                        one{"Trilioni 00"}\r
+                        other{"Trilioni 00"}\r
                     }\r
                     100000000000000{\r
-                        one{"Trilioni 000;Trilioni -000"}\r
-                        other{"Trilioni 000;Trilioni -000"}\r
+                        one{"Trilioni 000"}\r
+                        other{"Trilioni 000"}\r
                     }\r
                 }\r
             }\r
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        one{"¤elfu 0;¤elfu -0"}\r
-                        other{"¤elfu 0;¤elfu -0"}\r
+                        one{"¤elfu 0"}\r
+                        other{"¤elfu 0"}\r
                     }\r
                     10000{\r
-                        one{"¤elfu 00;¤elfu -00"}\r
-                        other{"¤elfu 00;¤elfu -00"}\r
+                        one{"¤elfu 00"}\r
+                        other{"¤elfu 00"}\r
                     }\r
                     100000{\r
-                        one{"¤laki 000;¤laki -000"}\r
-                        other{"¤laki 000;¤laki -000"}\r
+                        one{"¤laki 000"}\r
+                        other{"¤laki 000"}\r
                     }\r
                     1000000{\r
-                        one{"¤M0;¤M-0"}\r
-                        other{"¤M0;¤M-0"}\r
+                        one{"¤M0"}\r
+                        other{"¤M0"}\r
                     }\r
                     10000000{\r
-                        one{"¤M00;¤M-00"}\r
-                        other{"¤M00;¤M-00"}\r
+                        one{"¤M00"}\r
+                        other{"¤M00"}\r
                     }\r
                     100000000{\r
-                        one{"¤M000;¤M-000"}\r
-                        other{"¤M000;¤M-000"}\r
+                        one{"¤M000"}\r
+                        other{"¤M000"}\r
                     }\r
                     1000000000{\r
-                        one{"¤B0;¤B-0"}\r
-                        other{"¤B0;¤B-0"}\r
+                        one{"¤B0"}\r
+                        other{"¤B0"}\r
                     }\r
                     10000000000{\r
-                        one{"¤B00;¤B-00"}\r
-                        other{"¤B00;¤B-00"}\r
+                        one{"¤B00"}\r
+                        other{"¤B00"}\r
                     }\r
                     100000000000{\r
-                        one{"¤B000;¤B-000"}\r
-                        other{"¤B000;¤B-000"}\r
+                        one{"¤B000"}\r
+                        other{"¤B000"}\r
                     }\r
                     1000000000000{\r
-                        one{"¤T0;¤T-0"}\r
-                        other{"¤T0;¤T-0"}\r
+                        one{"¤T0"}\r
+                        other{"¤T0"}\r
                     }\r
                     10000000000000{\r
-                        one{"¤T00;¤T-00"}\r
-                        other{"¤T00;¤T-00"}\r
+                        one{"¤T00"}\r
+                        other{"¤T00"}\r
                     }\r
                     100000000000000{\r
-                        one{"¤T000;¤T-000"}\r
-                        other{"¤T000;¤T-000"}\r
+                        one{"¤T000"}\r
+                        other{"¤T000"}\r
                     }\r
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        one{"elfu 0;elfu -0"}\r
-                        other{"elfu 0;elfu -0"}\r
+                        one{"elfu 0"}\r
+                        other{"elfu 0"}\r
                     }\r
                     10000{\r
-                        one{"elfu 00;elfu -00"}\r
-                        other{"elfu 00;elfu -00"}\r
+                        one{"elfu 00"}\r
+                        other{"elfu 00"}\r
                     }\r
                     100000{\r
-                        one{"elfu 000;elfu -000"}\r
-                        other{"elfu 000;elfu -000"}\r
+                        one{"elfu 000"}\r
+                        other{"elfu 000"}\r
                     }\r
                     1000000{\r
-                        one{"M0;M-0"}\r
-                        other{"M0;M-0"}\r
+                        one{"M0"}\r
+                        other{"M0"}\r
                     }\r
                     10000000{\r
-                        one{"M00;M-00"}\r
-                        other{"M00;M-00"}\r
+                        one{"M00"}\r
+                        other{"M00"}\r
                     }\r
                     100000000{\r
-                        one{"M000;M-000"}\r
-                        other{"M000;M-000"}\r
+                        one{"M000"}\r
+                        other{"M000"}\r
                     }\r
                     1000000000{\r
-                        one{"B0;B-0"}\r
-                        other{"B0;B-0"}\r
+                        one{"B0"}\r
+                        other{"B0"}\r
                     }\r
                     10000000000{\r
-                        one{"B00;B-00"}\r
-                        other{"B00;B-00"}\r
+                        one{"B00"}\r
+                        other{"B00"}\r
                     }\r
                     100000000000{\r
-                        one{"B000;B-000"}\r
-                        other{"B000;B-000"}\r
+                        one{"B000"}\r
+                        other{"B000"}\r
                     }\r
                     1000000000000{\r
-                        one{"T0;T-0"}\r
-                        other{"T0;T-0"}\r
+                        one{"T0"}\r
+                        other{"T0"}\r
                     }\r
                     10000000000000{\r
-                        one{"T00;T-00"}\r
-                        other{"T00;T-00"}\r
+                        one{"T00"}\r
+                        other{"T00"}\r
                     }\r
                     100000000000000{\r
-                        one{"T000;T-000"}\r
-                        other{"T000;T-000"}\r
+                        one{"T000"}\r
+                        other{"T000"}\r
                     }\r
                 }\r
             }\r
@@ -195,19 +195,10 @@ sw{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Chukua mpinduko wa {0} kulia."}\r
-            }\r
-            plural{\r
-                one{"siku {0} iliyopita"}\r
-                other{"siku {0} zilizopita"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.33.73"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 92bab87..074975d 100644 (file)
@@ -11,7 +11,7 @@ sw_CD{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             availableFormats{\r
index 0464c35..3ba7866 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c9c96ae..e3dd777 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 341bdf9..b18eaf1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw_UG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9a9927e..cbcdd9e 100644 (file)
@@ -202,15 +202,6 @@ ta{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}வது வலது திருப்பத்தை எடு."}\r
-            }\r
-            plural{\r
-                one{"{0} நாள்"}\r
-                other{"{0} நாட்கள்"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"tamldec"}\r
         tamldec{\r
@@ -234,7 +225,7 @@ ta{
         }\r
         traditional{"taml"}\r
     }\r
-    Version{"2.1.32.4"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index bb765c8..bf8d3d4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6704eb0..c4854d4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_LK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index 4f84bf9..6d54270 100644 (file)
@@ -10,5 +10,5 @@ ta_MY{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index def1605..d8f2715 100644 (file)
@@ -10,5 +10,5 @@ ta_SG{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 421a0f6..690b603 100644 (file)
@@ -204,15 +204,6 @@ te{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}వ కుడి మలుపు తీసుకోండి."}\r
-            }\r
-            plural{\r
-                one{"{0} రోజు"}\r
-                other{"{0} రోజులు"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"telu"}\r
         telu{\r
@@ -237,7 +228,7 @@ te{
             }\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0ec2d2a..38e26ee 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 te_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d44e8bf..e67ce3d 100644 (file)
@@ -12,7 +12,7 @@ teo{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index eff4185..6bb77cb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo_KE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b987f93..1852ad9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo_UG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d31c5b6..0126369 100644 (file)
@@ -78,78 +78,78 @@ th{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        other{"¤0K"}\r
+                        other{"¤0 พ'.'"}\r
                     }\r
                     10000{\r
-                        other{"¤00K"}\r
+                        other{"¤0 ม'.'"}\r
                     }\r
                     100000{\r
-                        other{"¤000K"}\r
+                        other{"¤0 ส'.'"}\r
                     }\r
                     1000000{\r
-                        other{"¤0M"}\r
+                        other{"¤0 ล'.'"}\r
                     }\r
                     10000000{\r
-                        other{"¤00M"}\r
+                        other{"¤00 ล'.'"}\r
                     }\r
                     100000000{\r
-                        other{"¤000M"}\r
+                        other{"¤000 ล'.'"}\r
                     }\r
                     1000000000{\r
-                        other{"¤0B"}\r
+                        other{"¤0 พ'.'ล'.'"}\r
                     }\r
                     10000000000{\r
-                        other{"¤00B"}\r
+                        other{"¤0 ม'.'ล'.'"}\r
                     }\r
                     100000000000{\r
-                        other{"¤000B"}\r
+                        other{"¤0 ส'.'ล'.'"}\r
                     }\r
                     1000000000000{\r
-                        other{"¤0T"}\r
+                        other{"¤0 ล'.'ล'.'"}\r
                     }\r
                     10000000000000{\r
-                        other{"¤00T"}\r
+                        other{"¤00 ล'.'ล'.'"}\r
                     }\r
                     100000000000000{\r
-                        other{"¤000T"}\r
+                        other{"¤000 ล'.'ล'.'"}\r
                     }\r
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0K"}\r
+                        other{"0 พ'.'"}\r
                     }\r
                     10000{\r
-                        other{"00K"}\r
+                        other{"0 ม'.'"}\r
                     }\r
                     100000{\r
-                        other{"000K"}\r
+                        other{"0 ส'.'"}\r
                     }\r
                     1000000{\r
-                        other{"0M"}\r
+                        other{"0 ล'.'"}\r
                     }\r
                     10000000{\r
-                        other{"00M"}\r
+                        other{"00 ล'.'"}\r
                     }\r
                     100000000{\r
-                        other{"000M"}\r
+                        other{"000 ล'.'"}\r
                     }\r
                     1000000000{\r
-                        other{"0B"}\r
+                        other{"0 พ'.'ล'.'"}\r
                     }\r
                     10000000000{\r
-                        other{"00B"}\r
+                        other{"0 ม'.'ล'.'"}\r
                     }\r
                     100000000000{\r
-                        other{"000B"}\r
+                        other{"0 ส'.'ล'.'"}\r
                     }\r
                     1000000000000{\r
-                        other{"0T"}\r
+                        other{"0 ล'.'ล'.'"}\r
                     }\r
                     10000000000000{\r
-                        other{"00T"}\r
+                        other{"00 ล'.'ล'.'"}\r
                     }\r
                     100000000000000{\r
-                        other{"000T"}\r
+                        other{"000 ล'.'ล'.'"}\r
                     }\r
                 }\r
             }\r
@@ -168,18 +168,10 @@ th{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"เลี้ยวขวาที่ทางเลี้ยวที่ {0}"}\r
-            }\r
-            plural{\r
-                other{"{0} วัน"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"thai"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index b06acb6..8f6a7a3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 th_TH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7072d82..66df2f4 100644 (file)
@@ -47,7 +47,7 @@ ti{
         native{"latn"}\r
         traditional{"ethi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index eb10f4b..37ca4bb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti_ER{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index f4af622..2d82c18 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti_ET{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8488b49..1aa7abc 100644 (file)
@@ -131,7 +131,7 @@ to{
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e8f96ad..4d62e69 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 to_TO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5cda648..07eeeb7 100644 (file)
@@ -203,19 +203,10 @@ tr{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}. sağdan dönün."}\r
-            }\r
-            plural{\r
-                one{"Sepetinizde {0} X var. Bunu almak istiyor musunuz?"}\r
-                other{"Sepetinizde {0} X var. Bunları almak istiyor musunuz?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index fbe5e60..44b519d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr_CY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             DateTimePatterns{\r
index a805a98..bda5281 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr_TR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 513701f..26c67c4 100644 (file)
@@ -16,7 +16,7 @@ twq{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index e506ace..4a7d4d8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 twq_NE{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 43b0812..319351c 100644 (file)
@@ -15,7 +15,7 @@ tzm{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index a23008a..2c250c2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tzm_MA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b7807e2..8a6748c 100644 (file)
@@ -133,15 +133,9 @@ ug{
                 superscriptingExponent{"×"}\r
             }\r
         }\r
-        minimalPairs{\r
-            plural{\r
-                one{"{0}  كىتاب"}\r
-                other{"{0} بېلىق كۆردۈم ۋە ئۇنى يەۋەتتىم."}\r
-            }\r
-        }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             eras{\r
index 6860a05..98a87ab 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ug_CN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index abc8d07..05c6e84 100644 (file)
@@ -15,7 +15,7 @@ uk{
     }\r
     ExemplarCharacters{"[а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я ʼ]"}\r
     ExemplarCharactersIndex{"[А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я]"}\r
-    ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . ' ’ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\\\ №]"}\r
+    ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . ' \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\\\ №]"}\r
     MoreInformation{"?"}\r
     NumberElements{\r
         default{"latn"}\r
@@ -272,22 +272,10 @@ uk{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                few{"{0}-я дивізія, {0}-є коло"}\r
-                other{"{0}-а дивізія, {0}-е коло"}\r
-            }\r
-            plural{\r
-                few{"{0} дні"}\r
-                many{"{0} днів"}\r
-                one{"{0} день"}\r
-                other{"{0} дня"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.38"}\r
     calendar{\r
         coptic{\r
             monthNames{\r
index 4e294e0..df32bfa 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uk_UA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3080480..6217fe2 100644 (file)
@@ -227,19 +227,10 @@ ur{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"دایاں موڑ نمبر {0} مڑیں۔"}\r
-            }\r
-            plural{\r
-                one{"{0} گھنٹہ"}\r
-                other{"{0} گھنٹے"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
@@ -285,7 +276,7 @@ ur{
                 yyyyMEd{"E، d/M/y G"}\r
                 yyyyMMM{"MMM y G"}\r
                 yyyyMMMEd{"E، d MMM، y G"}\r
-                yyyyMMMM{"MMMM y G"}\r
+                yyyyMMMM{"G y MMMM"}\r
                 yyyyMMMd{"d MMM، y G"}\r
                 yyyyMd{"d/M/y G"}\r
                 yyyyQQQ{"QQQ y G"}\r
@@ -457,7 +448,7 @@ ur{
                 yMEd{"E، d/M/y"}\r
                 yMMM{"MMM y"}\r
                 yMMMEd{"E، d MMM، y"}\r
-                yMMMM{"MMMM y"}\r
+                yMMMM{"y MMMM"}\r
                 yMMMd{"d MMM، y"}\r
                 yMd{"d/M/y"}\r
                 yQQQ{"QQQ y"}\r
index 0b2f6c9..93a6e25 100644 (file)
@@ -14,7 +14,7 @@ ur_IN{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.79"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index 03a7aba..593eb43 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur_PK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba37a60..849da90 100644 (file)
@@ -220,19 +220,10 @@ uz{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"{0}chi chorraxada oʼngga buriling."}\r
-            }\r
-            plural{\r
-                one{"Savatingizda {0}X bor. Uni sotib olasizmi?"}\r
-                other{"Savatingizda {0}X bor. Ularni sotib olasizmi?"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.44"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index aced47d..3fe1bed 100644 (file)
@@ -27,7 +27,7 @@ uz_Arab{
         }\r
         native{"arabext"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         gregorian{\r
             dayNames{\r
index e4b7967..98aee99 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Arab_AF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         default{"persian"}\r
     }\r
index 976a5c1..38eb8eb 100644 (file)
@@ -164,7 +164,7 @@ uz_Cyrl{
             }\r
         }\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.27.98"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 0debf66..6d2c9f6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Cyrl_UZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fdd810c..bdf99c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0069ccc..10499fb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn_UZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c5384ff..c63aad5 100644 (file)
@@ -27,7 +27,7 @@ vai{
         }\r
         native{"vaii"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index be6e735..414657f 100644 (file)
@@ -22,7 +22,7 @@ vai_Latn{
         }\r
         native{"vaii"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 59e39ea..a356564 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Latn_LR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66f0f3..38872b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9aefce3..30c9f78 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii_LR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8fa9369..a08cdb3 100644 (file)
@@ -168,20 +168,10 @@ vi{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                one{"Rẽ vào lối rẽ thứ nhất bên phải."}\r
-                other{"Rẽ vào lối rẽ thứ {0} bên phải."}\r
-            }\r
-            plural{\r
-                one{"Rẽ vào lối rẽ thứ nhất bên phải."}\r
-                other{"Rẽ vào lối rẽ thứ {0} bên phải."}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 43b4da3..6bb46b4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vi_VN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 42c4678..3740856 100644 (file)
@@ -11,7 +11,7 @@ vun{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index b6e01ac..5d8d275 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vun_TZ{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ec4482..86e51fa 100644 (file)
@@ -15,7 +15,7 @@ wae{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 67f3676..184e62c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 wae_CH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 841dc76..3dcce2e 100644 (file)
@@ -10,7 +10,7 @@ xog{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 21ab0f7..43c14c2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 xog_UG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3be826c..b05b478 100644 (file)
@@ -21,7 +21,7 @@ yav{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 7a57c8e..0f8eb26 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yav_CM{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3c1aa2a..fc0257c 100644 (file)
@@ -28,7 +28,7 @@ yi{
         native{"latn"}\r
         traditional{"hebr"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.97"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index c45325b..1e7c6ca 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yi_001{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bbb7206..6c5ff64 100644 (file)
@@ -35,7 +35,7 @@ yo{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index d06ce38..12c771e 100644 (file)
@@ -5,7 +5,7 @@ yo_BJ{
         "[a á à b d e é è ɛ {ɛ\u0301} {ɛ\u0300} f g {gb} h i í ì j k l m n o ó ò ɔ {ɔ"\r
         "\u0301} {ɔ\u0300} p r s {sh} t u ú ù w y]"\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     calendar{\r
         gregorian{\r
             AmPmMarkers{\r
index ef97b8c..5e1f0d5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yo_NG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index abc5a1c..2d116c6 100644 (file)
@@ -247,19 +247,11 @@ yue{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"第 {0} 本書"}\r
-            }\r
-            plural{\r
-                other{"{0} 本書"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"hanidec"}\r
         traditional{"hant"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 2ad7ca8..246d841 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yue_HK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6cb32f6..25b5197 100644 (file)
@@ -31,7 +31,7 @@ zgh{
         }\r
         minimumGroupingDigits{"1"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1d9ed9d..32ec1c0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zgh_MA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1cc5a21..13136bc 100644 (file)
@@ -1,13 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh{\r
-    AuxExemplarCharacters{\r
-        "[仂 侣 傈 傣 僳 卑 卞 厘 吕 坝 堤 奎 屿 巽 撤 楔 楠 滕 瑚 甫 盲 碑 禄 粟 脚 艮 谬 钯 铂 锑 镑 魁 乒 乓 仓 伞 冥 凉"\r
-        " 刨 匕 厦 厨 呣 唇 啤 啮 喱 嗅 噘 噢 墟 妆 婴 媚 宅 寺 尬 尴 屑 巾 弓 彗 惊 戟 扔 扰 扳 抛 挂 捂 摇 撅 杆 杖 柜 柱"\r
-        " 栗 栽 桶 棍 棕 棺 榈 槟 橙 洒 浆 涌 淇 滚 滩 灾 烛 烟 焰 煎 犬 猫 瓢 皱 盆 盔 眨 眯 瞌 矿 祈 祭 祷 稻 竿 笼 筒 篷"\r
-        " 粮 纠 纬 缆 缎 耸 舔 舵 艇 芽 苜 苞 菇 菱 葫 葵 蒸 蓿 蔽 薯 蘑 蚂 蛛 蜗 蜘 蜡 蝎 蝴 螃 裹 谍 豚 账 跤 踪 躬 轴 辐"\r
-        " 迹 郁 鄙 酢 钉 钥 钮 铅 铛 锄 锚 锤 闺 阱 隧 雕 霾 靴 靶 鞠 颠 馏 驼 骆 髦 鲤 鲸 鳄 鸽]"\r
-    }\r
+    AuxExemplarCharacters{"[仂 侣 傈 傣 僳 卑 卞 厘 吕 坝 堤 奎 屿 巽 撤 楔 楠 滕 瑚 甫 盲 碑 禄 粟 脚 艮 谬 钯 铂 锑 镑 魁]"}\r
     Ellipsis{\r
         final{"{0}…"}\r
         initial{"…{0}"}\r
@@ -152,7 +146,7 @@ zh{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0万"}\r
@@ -192,7 +186,7 @@ zh{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"¤0千"}\r
                     }\r
                     10000{\r
                         other{"¤0万"}\r
@@ -230,7 +224,7 @@ zh{
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0万"}\r
@@ -282,19 +276,11 @@ zh{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"在第 {0} 个路口右转。"}\r
-            }\r
-            plural{\r
-                other{"{0} 天"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"hanidec"}\r
         traditional{"hans"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.29.84"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 1e311fc..c64cac5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9990427..14ddc17 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_CN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bf3dfaf..d8f8229 100644 (file)
@@ -31,7 +31,7 @@ zh_Hans_HK{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 0ab64e6..5ea1f54 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_MO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         chinese{\r
             DateTimePatterns{\r
index a5db5fb..1058b3d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_SG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index 135b84f..1b8ec8c 100644 (file)
@@ -4,9 +4,7 @@ zh_Hant{
     %%Parent{"root"}\r
     AuxExemplarCharacters{\r
         "[乍 仂 伏 佐 侶 僳 兆 兌 兹 别 券 勳 卑 卞 占 叶 堤 墎 壤 奥 孜 峇 嶼 巽 栗 楔 涅 渾 澎 燦 狄 琳 瑚 甫 碑 礁 芒 苗"\r
-        " 茨 蓬 蚩 蜀 裘 謬 酋 隴 乳 划 匕 匙 匣 叉 吻 嘟 噘 妖 巾 帆 廁 廚 弋 弓 懸 戟 扳 捂 摔 暈 框 桶 桿 櫃 煎 燭 牡 皺"\r
-        " 盒 眨 眩 筒 簍 糰 紋 紗 纏 纜 羯 聳 肖 艇 虹 蛛 蜘 蝴 蝸 蠟 裙 豚 躬 釘 鈔 鈕 鉛 鎚 鎬 鐺 鑰 鑽 霄 鞠 骰 骷 髏 鯉"\r
-        " 鳶]"\r
+        " 茨 蓬 蚩 蜀 裘 謬 酋 隴]"\r
     }\r
     Ellipsis{\r
         final{"{0}…"}\r
@@ -121,7 +119,7 @@ zh_Hant{
             patternsLong{\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0萬"}\r
@@ -161,7 +159,7 @@ zh_Hant{
             patternsShort{\r
                 currencyFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"¤0千"}\r
                     }\r
                     10000{\r
                         other{"¤0萬"}\r
@@ -199,7 +197,7 @@ zh_Hant{
                 }\r
                 decimalFormat{\r
                     1000{\r
-                        other{"0"}\r
+                        other{"0"}\r
                     }\r
                     10000{\r
                         other{"0萬"}\r
@@ -251,18 +249,10 @@ zh_Hant{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"在第 {0} 個路口右轉。"}\r
-            }\r
-            plural{\r
-                other{"{0} 日"}\r
-            }\r
-        }\r
         native{"hanidec"}\r
         traditional{"hant"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.28.79"}\r
     calendar{\r
         buddhist{\r
             DateTimePatterns{\r
index d0ddf5d..a46edbb 100644 (file)
@@ -91,7 +91,7 @@ zh_Hant_HK{
             }\r
         }\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     calendar{\r
         buddhist{\r
             availableFormats{\r
index 9589854..9d2c5aa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 365603b..48c2dc5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_TW{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0d35eb..065e71d 100644 (file)
@@ -203,19 +203,10 @@ zu{
                 timeSeparator{":"}\r
             }\r
         }\r
-        minimalPairs{\r
-            ordinal{\r
-                other{"Thatha indlela ejikela kwesokudla engu-{0}"}\r
-            }\r
-            plural{\r
-                one{"{0} usuku"}\r
-                other{"{0} izinsuku"}\r
-            }\r
-        }\r
         minimumGroupingDigits{"1"}\r
         native{"latn"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.29.22"}\r
     calendar{\r
         generic{\r
             DateTimePatterns{\r
index 1db9f3a..daab6cb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zu_ZA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 37efb00..83a2e8d 100644 (file)
 \r
 ##############################################################################\r
 # Keep the following in sync with the version - see common/unicode/uvernum.h\r
-U_ICUDATA_NAME=icudt59\r
+U_ICUDATA_NAME=icudt58\r
 ##############################################################################\r
-!IF "$(UWP)" == "UWP"\r
-U_ICUDATA_NAME=icudt\r
-!ENDIF\r
 U_ICUDATA_ENDIAN_SUFFIX=l\r
 UNICODE_VERSION=9.0\r
 ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll\r
@@ -122,14 +119,10 @@ ICUDATA=$(ICUP)\source\data
 #      This is the same place that all of the other ICU DLLs go (the code-containing DLLs)\r
 #      The lib file for the data DLL goes in $(DLL_OUTPUT)/../lib/\r
 #\r
-!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"\r
-DLL_OUTPUT=$(ICUP)\binARM$(UWP)\r
-!ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"\r
-DLL_OUTPUT=$(ICUP)\bin64$(UWP)\r
-!ELSE IF "$(UWP)" == "UWP"\r
-DLL_OUTPUT=$(ICUP)\bin32$(UWP)\r
+!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"\r
+DLL_OUTPUT=$(ICUP)\bin64\r
 !ELSE\r
-DLL_OUTPUT=$(ICUP)\bin$(UWP)\r
+DLL_OUTPUT=$(ICUP)\bin\r
 !ENDIF\r
 \r
 #\r
@@ -154,28 +147,14 @@ TESTDATABLD=$(ICUP)\source\test\testdata\out\build
 #       Directory under which all of the ICU data building tools live.\r
 #\r
 ICUTOOLS=$(ICUP)\source\tools\r
-!MESSAGE ICU tools path is $(ICUTOOLS)\r
-\r
-#\r
-#  TOOLS CFG PATH\r
-#      ARM needs to use one of the other tools, so make sure to get an usable cfg path\r
-#      Since tools, particularly pkggen, have architecture built-in, we made x64 on\r
-#      Windows be machine-independent and use those tools.\r
-#\r
-CFGTOOLS=$(CFG)\r
-!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"\r
-CFGTOOLS=x64\Release\r
-!ENDIF\r
-!MESSAGE ICU tools CFG subpath is $(CFGTOOLS)\r
 \r
 # The current ICU tools need to be in the path first.\r
-# x86 uses x86, x64 and arm use x64\r
-!IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug"\r
-PATH = $(ICUP)\bin;$(PATH)\r
-ICUPBIN=$(ICUP)\bin\r
-!ELSE\r
+!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"\r
 PATH = $(ICUP)\bin64;$(PATH)\r
 ICUPBIN=$(ICUP)\bin64\r
+!ELSE\r
+PATH = $(ICUP)\bin;$(PATH)\r
+ICUPBIN=$(ICUP)\bin\r
 !ENDIF\r
 \r
 \r
@@ -513,12 +492,6 @@ SPREP_FILES = $(SPREP_SOURCE:.txt=.spp)
 # Common defines for both ways of building ICU's data library.\r
 COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt"\r
 COMMON_ICUDATA_ARGUMENTS=-f -e $(U_ICUDATA_NAME) -v $(ICU_PACKAGE_MODE) -c -p $(ICUPKG) -T "$(ICUTMP)" -L $(U_ICUDATA_NAME) -d "$(ICUBLD_PKG)" -s .\r
-!IF "$(UWP)" == "UWP"\r
-COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u\r
-!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"\r
-COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a\r
-!ENDIF\r
-!ENDIF\r
 \r
 #############################################################################\r
 #\r
@@ -532,11 +505,6 @@ COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a
 ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat"\r
        @echo All targets are up to date\r
 \r
-!IF "$(UWP)" == "UWP"\r
-       @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\"\r
-    copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\"\r
-!ENDIF\r
-\r
 # The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu)\r
 # are hardcoded in the common DLL and therefore not included in the data package any more.\r
 # They are not built by default but need to be built for ICU4J data and for getting the .c source files\r
@@ -588,9 +556,9 @@ DEBUGUTILITIESDATA_DIR=main\tests\core\src\com\ibm\icu\dev\test\util
 DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java\r
 \r
 # Build DebugUtilitiesData.java\r
-"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe\r
+"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFG)"}gentest.exe\r
        if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"\r
-       "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"\r
+       "$(ICUTOOLS)\gentest\$(CFG)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"\r
 \r
 ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar"  "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"\r
 \r
@@ -634,10 +602,10 @@ icu4j-data-install :
 #\r
 # testdata - nmake will invoke pkgdata, which will create testdata.dat\r
 #\r
-"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe\r
+"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFG)"}genrb.exe\r
        @cd "$(TESTDATA)"\r
        @echo building testdata...\r
-       nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFGTOOLS) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"\r
+       nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFG) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"\r
 \r
 #invoke pkgdata for ICU common data\r
 #  pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory.\r
@@ -701,7 +669,6 @@ $(SPREP_FILES:.spp=.spp
 )\r
 <<KEEP\r
        -@erase "$(ICU_LIB_TARGET)"\r
-    @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"\r
        copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"\r
        -@erase "$(U_ICUDATA_NAME).dll"\r
        copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"\r
@@ -790,40 +757,40 @@ CLEAN : GODATA
 # RBBI .brk file generation.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\rules}.txt.brk:\r
        @echo Creating $@\r
-       @"$(ICUTOOLS)\genbrk\$(CFGTOOLS)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"\r
+       @"$(ICUTOOLS)\genbrk\$(CFG)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"\r
 \r
 #RBBI .dict file generation.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries}.txt.dict:\r
     @echo Creating $@\r
-    @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --uchars $<  "$(ICUBLD_PKG)\$@"\r
+    @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --uchars $<  "$(ICUBLD_PKG)\$@"\r
 \r
 $(ICUBRK)\thaidict.dict:\r
        @echo Creating $(ICUBRK)\thaidict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"\r
 \r
 $(ICUBRK)\laodict.dict:\r
        @echo Creating $(ICUBRK)\laodict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"\r
 \r
 $(ICUBRK)\burmesedict.dict:\r
        @echo Creating $(ICUBRK)\burmesedict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"\r
 \r
 $(ICUBRK)\khmerdict.dict:\r
        @echo Creating $(ICUBRK)\khmerdict.dict\r
-       @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"\r
+       @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"\r
 \r
 !IFNDEF ICUDATA_SOURCE_ARCHIVE\r
 # Rule for creating converters\r
 $(CNV_FILES): $(UCM_SOURCE)\r
        @echo Building Charset Conversion table $(@B)\r
-       @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
+       @"$(ICUTOOLS)\makeconv\$(CFG)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
 !ENDIF\r
 \r
 !IFDEF BUILD_SPECIAL_CNV_FILES\r
 $(CNV_FILES_SPECIAL): $(UCM_SOURCE_SPECIAL)\r
        @echo Building Special Charset Conversion table $(@B)\r
-       @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
+       @"$(ICUTOOLS)\makeconv\$(CFG)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm\r
 !ENDIF\r
 \r
 # Batch inference rule for creating miscellaneous resource files\r
@@ -833,12 +800,12 @@ $(CNV_FILES_SPECIAL): $(UCM_SOURCE_SPECIAL)
 #       way, remove the -q.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUMISC2)}.txt.res::\r
        @echo Making Miscellaneous Resource Bundle files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -q -d"$(ICUBLD_PKG)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -q -d"$(ICUBLD_PKG)" $<\r
 \r
 # Inference rule for creating resource bundle files\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC)}.txt.res::\r
        @echo Making Locale Resource Bundle files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<\r
 \r
 # copy the locales/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -855,12 +822,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt\r
        \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\curr}.txt{curr}.res::\r
        @echo Making currency display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<\r
 \r
 # copy the curr/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -877,12 +844,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\lang}.txt{lang}.res::\r
        @echo Making language/script display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<\r
 \r
 # copy the lang/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -899,12 +866,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\region}.txt{region}.res::\r
        @echo Making region display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<\r
 \r
 # copy the region/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -921,12 +888,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\zone}.txt{zone}.res::\r
        @echo Making time zone display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<\r
 \r
 # copy the zone/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -943,12 +910,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\unit}.txt{unit}.res::\r
        @echo Making unit display name files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<\r
 \r
 # copy the unit/pool.res file from the source folder to the build output folder\r
 # and swap it to native endianness\r
@@ -965,12 +932,12 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt\r
 \r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUCOL)}.txt{$(ICUCOL)}.res::\r
        @echo Making Collation files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<\r
 \r
 $(ICUCOL)\res_index.res:\r
        @echo Generating <<$(ICUCOL)\res_index.txt\r
@@ -982,11 +949,11 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt\r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICURBNF)}.txt{$(ICURBNF)}.res::\r
        @echo Making RBNF files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<\r
 \r
 $(ICURBNF)\res_index.res:\r
        @echo Generating <<$(ICURBNF)\res_index.txt\r
@@ -998,7 +965,7 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt\r
 \r
 $(ICUBRK)\res_index.res:\r
        @echo Generating <<$(ICUBRK)\res_index.txt\r
@@ -1010,15 +977,15 @@ res_index:table(nofallback) {
     }\r
 }\r
 <<KEEP\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt\r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)}.txt{$(ICUBRK)}.res::\r
        @echo Making Break Iterator Resource files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<\r
 \r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUTRNS)}.txt{$(ICUTRNS)}.res::\r
        @echo Making Transliterator files\r
-       @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<\r
+       @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<\r
 \r
 \r
 # DLL version information\r
@@ -1028,9 +995,9 @@ res_index:table(nofallback) {
        @rc.exe /i "..\..\..\..\common" /r /fo $@ $**\r
 \r
 # Targets for converters\r
-"$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval.exe"\r
+"$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFG)\gencnval.exe"\r
        @echo Creating data file for Converter Aliases\r
-       @"$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"\r
+       @"$(ICUTOOLS)\gencnval\$(CFG)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"\r
 \r
 # Targets for prebuilt Unicode data\r
 "$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu\r
@@ -1066,32 +1033,32 @@ res_index:table(nofallback) {
 # Stringprep .spp file generation.\r
 {$(ICUSRCDATA_RELATIVE_PATH)\$(ICUSPREP)}.txt.spp:\r
        @echo Creating $@\r
-       @"$(ICUTOOLS)\gensprep\$(CFGTOOLS)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)\r
+       @"$(ICUTOOLS)\gensprep\$(CFG)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)\r
 \r
 # Confusables .cfu file generation\r
 #     Can't use an inference rule because two .txt source files combine to produce a single .cfu output file\r
-"$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu.exe"\r
+"$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFG)\gencfu.exe"\r
        @echo Creating $@\r
-       @"$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"\r
+       @"$(ICUTOOLS)\gencfu\$(CFG)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"\r
 \r
 !IFDEF ICUDATA_ARCHIVE\r
-"$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg.exe"\r
-       "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"\r
+"$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFG)\icupkg.exe"\r
+       "$(ICUTOOLS)\icupkg\$(CFG)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"\r
 !ENDIF\r
 \r
 # Dependencies on the tools for the batch inference rules\r
 \r
 !IFNDEF ICUDATA_SOURCE_ARCHIVE\r
-$(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe\r
+$(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFG)"}makeconv.exe\r
 \r
 !IFDEF BUILD_SPECIAL_CNV_FILES\r
-$(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe\r
+$(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFG)"}makeconv.exe\r
 !ENDIF\r
 \r
 # This used to depend on "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"\r
 # This data is now hard coded as a part of the library.\r
 # See Jitterbug 4497 for details.\r
-$(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"\r
+$(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFG)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"\r
 \r
 # This used to depend on "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"\r
 # These are now hardcoded in ICU4C and only loaded in ICU4J.\r
index 6ec1045..607f4b3 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</ProjectGuid>\r
-    <Keyword>MakeFileProj</Keyword>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-    <ConfigurationType>Makefile</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\tmp\x86\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\build\</IntDir>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean</NMakeCleanCommandLine>\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\tmp\x86\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\build\</IntDir>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean</NMakeCleanCommandLine>\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\tmp\x64\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\build\</IntDir>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean</NMakeCleanCommandLine>\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\tmp\x64\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\build\</IntDir>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean</NMakeCleanCommandLine>\r
-    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
-    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r
-    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r
-    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r
-    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r
-    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x86\ReleaseBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x86\DebugBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x64\ReleaseBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x64\DebugBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <None Include="brkitr\brkfiles.mk" />\r
-    <None Include="coll\colfiles.mk" />\r
-    <None Include="makedata.mak" />\r
-    <None Include="misc\miscfiles.mk" />\r
-    <None Include="rbnf\rbnffiles.mk" />\r
-    <None Include="locales\resfiles.mk" />\r
-    <None Include="..\test\testdata\testdata.mak" />\r
-    <None Include="translit\trnsfiles.mk" />\r
-    <None Include="..\test\testdata\tstfiles.mk" />\r
-    <None Include="mappings\ucmcore.mk" />\r
-    <None Include="mappings\ucmebcdic.mk" />\r
-    <None Include="mappings\ucmfiles.mk" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\common\common.vcxproj">\r
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\extra\uconv\uconv.vcxproj">\r
-      <Project>{dba4088d-f6f9-4f8f-8820-082a4765c16c}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\i18n\i18n.vcxproj">\r
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\io\io.vcxproj">\r
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\stubdata\stubdata.vcxproj">\r
-      <Project>{203ec78a-0531-43f0-a636-285439bde025}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\test\cintltst\cintltst.vcxproj">\r
-      <Project>{3d1246ae-1b32-479b-beca-aefa97be2321}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\test\intltest\intltest.vcxproj">\r
-      <Project>{73632960-b3a6-464d-83a3-4b43365f19b8}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\test\iotest\iotest.vcxproj">\r
-      <Project>{e4993e82-d68a-46ca-bae0-9d35e172e46f}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\ctestfw\ctestfw.vcxproj">\r
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\genbrk\genbrk.vcxproj">\r
-      <Project>{c2be5000-7501-4e87-9724-b8d82494fae6}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\genccode\genccode.vcxproj">\r
-      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gencfu\gencfu.vcxproj">\r
-      <Project>{691ee0c0-dc57-4a48-8aee-8ed75eb3a057}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gencmn\gencmn.vcxproj">\r
-      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gencnval\gencnval.vcxproj">\r
-      <Project>{8b41752b-5a52-41e4-b7e0-07921c0cc6bf}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gendict\gendict.vcxproj">\r
-      <Project>{9d4211f7-2c77-439c-82f0-30a4e43ba569}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gennorm2\gennorm2.vcxproj">\r
-      <Project>{c7891a65-80ab-4245-912e-5f1e17b0e6c4}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\genrb\derb.vcxproj">\r
-      <Project>{d3065adb-8820-4cc7-9b6c-9510833961a3}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\genrb\genrb.vcxproj">\r
-      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gensprep\gensprep.vcxproj">\r
-      <Project>{631c23ce-6c1d-4875-88f0-85e0a42b36ea}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\gentest\gentest.vcxproj">\r
-      <Project>{77c78066-746f-4ea6-b3fe-b8c8a4a97891}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\icupkg\icupkg.vcxproj">\r
-      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\makeconv\makeconv.vcxproj">\r
-      <Project>{f5ad9738-1a3d-4906-b9c4-a7d9ce33dc2c}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\pkgdata\pkgdata.vcxproj">\r
-      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\tools\toolutil\toolutil.vcxproj">\r
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>\r\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r\r
+  <ItemGroup Label="ProjectConfigurations">\r\r
+    <ProjectConfiguration Include="Debug|Win32">\r\r
+      <Configuration>Debug</Configuration>\r\r
+      <Platform>Win32</Platform>\r\r
+    </ProjectConfiguration>\r\r
+    <ProjectConfiguration Include="Debug|x64">\r\r
+      <Configuration>Debug</Configuration>\r\r
+      <Platform>x64</Platform>\r\r
+    </ProjectConfiguration>\r\r
+    <ProjectConfiguration Include="Release|Win32">\r\r
+      <Configuration>Release</Configuration>\r\r
+      <Platform>Win32</Platform>\r\r
+    </ProjectConfiguration>\r\r
+    <ProjectConfiguration Include="Release|x64">\r\r
+      <Configuration>Release</Configuration>\r\r
+      <Platform>x64</Platform>\r\r
+    </ProjectConfiguration>\r\r
+  </ItemGroup>\r\r
+  <PropertyGroup Label="Globals">\r\r
+    <ProjectGuid>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</ProjectGuid>\r\r
+    <Keyword>MakeFileProj</Keyword>\r\r
+    <PlatformToolset>v140</PlatformToolset>\r\r
+    <ConfigurationType>Makefile</ConfigurationType>\r\r
+    <UseOfMfc>false</UseOfMfc>\r\r
+  </PropertyGroup>\r\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r\r
+  <ImportGroup Label="ExtensionSettings">\r\r
+  </ImportGroup>\r\r
+  <ImportGroup Label="PropertySheets">\r\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r\r
+  </ImportGroup>\r\r
+  <PropertyGroup Label="UserMacros" />\r\r
+  <PropertyGroup>\r\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release</NMakeBuildCommandLine>\r\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean all</NMakeReBuildCommandLine>\r\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean</NMakeCleanCommandLine>\r\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug</NMakeBuildCommandLine>\r\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean all</NMakeReBuildCommandLine>\r\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean</NMakeCleanCommandLine>\r\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release</NMakeBuildCommandLine>\r\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean all</NMakeReBuildCommandLine>\r\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean</NMakeCleanCommandLine>\r\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r\r
+    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug</NMakeBuildCommandLine>\r\r
+    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean all</NMakeReBuildCommandLine>\r\r
+    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean</NMakeCleanCommandLine>\r\r
+    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r\r
+    <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>\r\r
+    <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>\r\r
+    <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>\r\r
+    <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>\r\r
+    <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>\r\r
+  </PropertyGroup>\r\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r\r
+    <BuildLog>\r\r
+      <Path>.\out\tmp\x86\ReleaseBuildLog.html</Path>\r\r
+    </BuildLog>\r\r
+  </ItemDefinitionGroup>\r\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r\r
+    <BuildLog>\r\r
+      <Path>.\out\tmp\x86\DebugBuildLog.html</Path>\r\r
+    </BuildLog>\r\r
+  </ItemDefinitionGroup>\r\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r\r
+    <BuildLog>\r\r
+      <Path>.\out\tmp\x64\ReleaseBuildLog.html</Path>\r\r
+    </BuildLog>\r\r
+  </ItemDefinitionGroup>\r\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r\r
+    <BuildLog>\r\r
+      <Path>.\out\tmp\x64\DebugBuildLog.html</Path>\r\r
+    </BuildLog>\r\r
+  </ItemDefinitionGroup>\r\r
+  <ItemGroup>\r\r
+    <None Include="brkitr\brkfiles.mk" />\r\r
+    <None Include="coll\colfiles.mk" />\r\r
+    <None Include="makedata.mak" />\r\r
+    <None Include="misc\miscfiles.mk" />\r\r
+    <None Include="rbnf\rbnffiles.mk" />\r\r
+    <None Include="locales\resfiles.mk" />\r\r
+    <None Include="..\test\testdata\testdata.mak" />\r\r
+    <None Include="translit\trnsfiles.mk" />\r\r
+    <None Include="..\test\testdata\tstfiles.mk" />\r\r
+    <None Include="mappings\ucmcore.mk" />\r\r
+    <None Include="mappings\ucmebcdic.mk" />\r\r
+    <None Include="mappings\ucmfiles.mk" />\r\r
+  </ItemGroup>\r\r
+  <ItemGroup>\r\r
+    <ProjectReference Include="..\common\common.vcxproj">\r\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\extra\uconv\uconv.vcxproj">\r\r
+      <Project>{dba4088d-f6f9-4f8f-8820-082a4765c16c}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\i18n\i18n.vcxproj">\r\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\io\io.vcxproj">\r\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\stubdata\stubdata.vcxproj">\r\r
+      <Project>{203ec78a-0531-43f0-a636-285439bde025}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\test\cintltst\cintltst.vcxproj">\r\r
+      <Project>{3d1246ae-1b32-479b-beca-aefa97be2321}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\test\intltest\intltest.vcxproj">\r\r
+      <Project>{73632960-b3a6-464d-83a3-4b43365f19b8}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\test\iotest\iotest.vcxproj">\r\r
+      <Project>{e4993e82-d68a-46ca-bae0-9d35e172e46f}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\ctestfw\ctestfw.vcxproj">\r\r
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\genbrk\genbrk.vcxproj">\r\r
+      <Project>{c2be5000-7501-4e87-9724-b8d82494fae6}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\genccode\genccode.vcxproj">\r\r
+      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gencfu\gencfu.vcxproj">\r\r
+      <Project>{691ee0c0-dc57-4a48-8aee-8ed75eb3a057}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gencmn\gencmn.vcxproj">\r\r
+      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gencnval\gencnval.vcxproj">\r\r
+      <Project>{8b41752b-5a52-41e4-b7e0-07921c0cc6bf}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gendict\gendict.vcxproj">\r\r
+      <Project>{9d4211f7-2c77-439c-82f0-30a4e43ba569}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gennorm2\gennorm2.vcxproj">\r\r
+      <Project>{c7891a65-80ab-4245-912e-5f1e17b0e6c4}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\genrb\derb.vcxproj">\r\r
+      <Project>{d3065adb-8820-4cc7-9b6c-9510833961a3}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\genrb\genrb.vcxproj">\r\r
+      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gensprep\gensprep.vcxproj">\r\r
+      <Project>{631c23ce-6c1d-4875-88f0-85e0a42b36ea}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\gentest\gentest.vcxproj">\r\r
+      <Project>{77c78066-746f-4ea6-b3fe-b8c8a4a97891}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\icupkg\icupkg.vcxproj">\r\r
+      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\makeconv\makeconv.vcxproj">\r\r
+      <Project>{f5ad9738-1a3d-4906-b9c4-a7d9ce33dc2c}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\pkgdata\pkgdata.vcxproj">\r\r
+      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+    <ProjectReference Include="..\tools\toolutil\toolutil.vcxproj">\r\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r\r
+    </ProjectReference>\r\r
+  </ItemGroup>\r\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r\r
+  <ImportGroup Label="ExtensionTargets">\r\r
+  </ImportGroup>\r\r
+</Project>\r\r
diff --git a/source/data/makedata_uwp.vcxproj b/source/data/makedata_uwp.vcxproj
deleted file mode 100644 (file)
index 7d78872..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|ARM">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>ARM</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Arm">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>ARM</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{B1D53358-37BD-48BC-B27C-68BAF1E78508}</ProjectGuid>\r
-    <Keyword>MakeFileProj</Keyword>\r
-    <DefaultLanguage>en-US</DefaultLanguage>\r
-    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
-    <AppContainerApplication>true</AppContainerApplication>\r
-    <ApplicationType>Windows Store</ApplicationType>\r
-    <WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>\r
-    <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>\r
-    <ApplicationTypeRevision>10.0</ApplicationTypeRevision>\r
-    <ConfigurationType>Makefile</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\tmp\x86\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\tmp\x86\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\tmp\x64\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\tmp\x64\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\data\tmp\arm\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\data\tmp\arm\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\build\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\build\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\build\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\build\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\data\build\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\data\build\</IntDir>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean</NMakeCleanCommandLine>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean</NMakeCleanCommandLine>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean</NMakeCleanCommandLine>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean</NMakeCleanCommandLine>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean</NMakeCleanCommandLine>\r
-    <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP</NMakeBuildCommandLine>\r
-    <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean all</NMakeReBuildCommandLine>\r
-    <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean</NMakeCleanCommandLine>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x86\ReleaseUWPBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x86\DebugUWPBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x64\ReleaseUWPBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\x64\DebugUWPBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\arm\ReleaseUWPBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">\r
-    <BuildLog>\r
-      <Path>.\out\tmp\arm\DebugUWPBuildLog.html</Path>\r
-    </BuildLog>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <None Include="brkitr\brkfiles.mk" />\r
-    <None Include="coll\colfiles.mk" />\r
-    <None Include="makedata.mak" />\r
-    <None Include="misc\miscfiles.mk" />\r
-    <None Include="rbnf\rbnffiles.mk" />\r
-    <None Include="locales\resfiles.mk" />\r
-    <None Include="..\test\testdata\testdata.mak" />\r
-    <None Include="translit\trnsfiles.mk" />\r
-    <None Include="..\test\testdata\tstfiles.mk" />\r
-    <None Include="mappings\ucmcore.mk" />\r
-    <None Include="mappings\ucmebcdic.mk" />\r
-    <None Include="mappings\ucmfiles.mk" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include=".\makedata.vcxproj">\r
-      <Project>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
index 8453585..b98e106 100644 (file)
@@ -938,8 +938,6 @@ ibm-1129_P100-1997 { UTR22* }   ibm-1129 { IBM* }
 ibm-1131_P100-1997 { UTR22* }   ibm-1131 { IBM* } cp1131                                # Cyrillic Belarus PC\r
 ibm-1133_P100-1997 { UTR22* }   ibm-1133 { IBM* }                                       # ISO Lao\r
 \r
-# GSM 03.38\r
-gsm-03.38-2009 { UTR22* }   GSM0338 # GSM0338 alias is from Perl\r
 \r
 # Partially algorithmic converters\r
 \r
@@ -1152,6 +1150,7 @@ ebcdic-xml-us
 # These are not installed by default. They are rarely used.\r
 # Many of them can be added through the online ICU Data Library Customization tool\r
 \r
+gsm-03.38-2000 { UTR22* }   GSM0338 # GSM0338 alias is from Perl\r
 ibm-1004_P100-1995 { UTR22* }   ibm-1004 { IBM* }\r
 ibm-1008_P100-1995 { UTR22* }   ibm-1008 { IBM* } # cp1008, 8-bit Arabic (w/o euro update)\r
 ibm-1009_P100-1995 { UTR22* }   ibm-1009 { IBM* }\r
diff --git a/source/data/mappings/gsm-03.38-2009.ucm b/source/data/mappings/gsm-03.38-2009.ucm
deleted file mode 100644 (file)
index 5a172f7..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-# Copyright (C) 2017 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html\r
-#\r
-# Name:             GSM 03.38 to Unicode\r
-# Unicode version:  3.0\r
-# Table version:    2.0\r
-# Date:             2009 Nov 10\r
-# Authors:          Ken Whistler\r
-#                   Kent Karlsson\r
-#                   Markus Kuhn\r
-#\r
-# Source:           http://www.unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT\r
-# See there for the license and for a description of the charset.\r
-# Formatted into ICU .ucm format by Markus Scherer on 2006-nov-02.\r
-# Updated to table version 2.0 by Fredrik Roubert on 2017-feb-08.\r
-# Commented-out mappings are turned into fallbacks (|1), all others are turned\r
-# into round-trips (|0).\r
-# Multi-byte mappings are preserved as multi-single-byte character mappings,\r
-# using ICU's m:n conversion capability.\r
-#\r
-# The substitution character is not documented in the Unicode file.\r
-# \x3F is chosen here because \x1A is a graphic character.\r
-#\r
-# Other deviations from the Unicode file:\r
-# a)\r
-# The GSM standard specifies that one or two ESC bytes (\x1B), if not followed\r
-# by a recognized final byte, be mapped to spaces (that is, reverse fallbacks\r
-# to U+0020).\r
-# The Unicode file round-trips a single \x1B to U+00A0 (NBSP) and has no mapping\r
-# for \x1B\x1B.\r
-# (Reverse fallbacks to U+00A0 would result in Unicode text that cannot be\r
-# converted back to GSM 03.38. A roundtrip for U+00A0 adds a character that is\r
-# not mappable in the standard.)\r
-#\r
-# See the ietf-charsets list email "Re: GSM 03.38 substitution character?"\r
-# at http://mail.apps.ietf.org/ietf/charsets/msg01696.html\r
-#\r
-# b)\r
-# The GSM standard maps U+00C7 capital C-cedilla to \x09 but the Unicode file\r
-# contains and documents a "fix" to map U+00E7 small c-cedilla instead, based on\r
-# an interpretation of the intent of the standard. Prevailing implementations\r
-# in mobile phones follow the standard.\r
-#\r
-# This file follows the GSM standard.\r
-#\r
-# See the GSM standard at\r
-# http://www.3gpp.org/ftp/Specs/archive/03_series/03.38/0338-720.zip\r
-#\r
-# For problems with the table format please submit a bug\r
-# at http://www.icu-project.org/ .\r
-# For issues with the mappings please contact Unicode\r
-# at http://www.unicode.org/reporting.html\r
-\r
-<code_set_name>     "gsm-03.38-2009"\r
-<char_name_mask>    "AXXXX"\r
-<mb_cur_max>        1\r
-<mb_cur_min>        1\r
-<uconv_class>       "SBCS"\r
-<icu:state>         0-7f\r
-<subchar>           \x3F\r
-<icu:charsetFamily> "ASCII"\r
-\r
-CHARMAP\r
-<U0000> \x00 |1\r
-<U000A> \x0A |0\r
-<U000C> \x1B\x0A |0\r
-<U000D> \x0D |0\r
-<U0020> \x20 |0\r
-<U0020> \x1B |3\r
-<U0020> \x1B\x1B |3\r
-<U0021> \x21 |0\r
-<U0022> \x22 |0\r
-<U0023> \x23 |0\r
-<U0024> \x02 |0\r
-<U0025> \x25 |0\r
-<U0026> \x26 |0\r
-<U0027> \x27 |0\r
-<U0028> \x28 |0\r
-<U0029> \x29 |0\r
-<U002A> \x2A |0\r
-<U002B> \x2B |0\r
-<U002C> \x2C |0\r
-<U002D> \x2D |0\r
-<U002E> \x2E |0\r
-<U002F> \x2F |0\r
-<U0030> \x30 |0\r
-<U0031> \x31 |0\r
-<U0032> \x32 |0\r
-<U0033> \x33 |0\r
-<U0034> \x34 |0\r
-<U0035> \x35 |0\r
-<U0036> \x36 |0\r
-<U0037> \x37 |0\r
-<U0038> \x38 |0\r
-<U0039> \x39 |0\r
-<U003A> \x3A |0\r
-<U003B> \x3B |0\r
-<U003C> \x3C |0\r
-<U003D> \x3D |0\r
-<U003E> \x3E |0\r
-<U003F> \x3F |0\r
-<U0040> \x00 |0\r
-<U0041> \x41 |0\r
-<U0042> \x42 |0\r
-<U0043> \x43 |0\r
-<U0044> \x44 |0\r
-<U0045> \x45 |0\r
-<U0046> \x46 |0\r
-<U0047> \x47 |0\r
-<U0048> \x48 |0\r
-<U0049> \x49 |0\r
-<U004A> \x4A |0\r
-<U004B> \x4B |0\r
-<U004C> \x4C |0\r
-<U004D> \x4D |0\r
-<U004E> \x4E |0\r
-<U004F> \x4F |0\r
-<U0050> \x50 |0\r
-<U0051> \x51 |0\r
-<U0052> \x52 |0\r
-<U0053> \x53 |0\r
-<U0054> \x54 |0\r
-<U0055> \x55 |0\r
-<U0056> \x56 |0\r
-<U0057> \x57 |0\r
-<U0058> \x58 |0\r
-<U0059> \x59 |0\r
-<U005A> \x5A |0\r
-<U005B> \x1B\x3C |0\r
-<U005C> \x1B\x2F |0\r
-<U005D> \x1B\x3E |0\r
-<U005E> \x1B\x14 |0\r
-<U005F> \x11 |0\r
-<U0061> \x61 |0\r
-<U0062> \x62 |0\r
-<U0063> \x63 |0\r
-<U0064> \x64 |0\r
-<U0065> \x65 |0\r
-<U0066> \x66 |0\r
-<U0067> \x67 |0\r
-<U0068> \x68 |0\r
-<U0069> \x69 |0\r
-<U006A> \x6A |0\r
-<U006B> \x6B |0\r
-<U006C> \x6C |0\r
-<U006D> \x6D |0\r
-<U006E> \x6E |0\r
-<U006F> \x6F |0\r
-<U0070> \x70 |0\r
-<U0071> \x71 |0\r
-<U0072> \x72 |0\r
-<U0073> \x73 |0\r
-<U0074> \x74 |0\r
-<U0075> \x75 |0\r
-<U0076> \x76 |0\r
-<U0077> \x77 |0\r
-<U0078> \x78 |0\r
-<U0079> \x79 |0\r
-<U007A> \x7A |0\r
-<U007B> \x1B\x28 |0\r
-<U007C> \x1B\x40 |0\r
-<U007D> \x1B\x29 |0\r
-<U007E> \x1B\x3D |0\r
-<U00A1> \x40 |0\r
-<U00A3> \x01 |0\r
-<U00A4> \x24 |0\r
-<U00A5> \x03 |0\r
-<U00A7> \x5F |0\r
-<U00BF> \x60 |0\r
-<U00C4> \x5B |0\r
-<U00C5> \x0E |0\r
-<U00C6> \x1C |0\r
-<U00C7> \x09 |0\r
-<U00C9> \x1F |0\r
-<U00D1> \x5D |0\r
-<U00D6> \x5C |0\r
-<U00D8> \x0B |0\r
-<U00DC> \x5E |0\r
-<U00DF> \x1E |0\r
-<U00E0> \x7F |0\r
-<U00E4> \x7B |0\r
-<U00E5> \x0F |0\r
-<U00E6> \x1D |0\r
-<U00E8> \x04 |0\r
-<U00E9> \x05 |0\r
-<U00EC> \x07 |0\r
-<U00F1> \x7D |0\r
-<U00F2> \x08 |0\r
-<U00F6> \x7C |0\r
-<U00F8> \x0C |0\r
-<U00F9> \x06 |0\r
-<U00FC> \x7E |0\r
-<U0391> \x41 |1\r
-<U0392> \x42 |1\r
-<U0393> \x13 |0\r
-<U0394> \x10 |0\r
-<U0395> \x45 |1\r
-<U0396> \x5A |1\r
-<U0397> \x48 |1\r
-<U0398> \x19 |0\r
-<U0399> \x49 |1\r
-<U039A> \x4B |1\r
-<U039B> \x14 |0\r
-<U039C> \x4D |1\r
-<U039D> \x4E |1\r
-<U039E> \x1A |0\r
-<U039F> \x4F |1\r
-<U03A0> \x16 |0\r
-<U03A1> \x50 |1\r
-<U03A3> \x18 |0\r
-<U03A4> \x54 |1\r
-<U03A5> \x59 |1\r
-<U03A6> \x12 |0\r
-<U03A7> \x58 |1\r
-<U03A8> \x17 |0\r
-<U03A9> \x15 |0\r
-<U20AC> \x1B\x65 |0\r
-END CHARMAP\r
index 82acfae..d61b7a4 100644 (file)
@@ -120,5 +120,5 @@ icu-internal-compound-d1.ucm icu-internal-compound-d2.ucm icu-internal-compound-
 icu-internal-compound-d5.ucm icu-internal-compound-d6.ucm icu-internal-compound-d7.ucm \\r
 icu-internal-compound-s1.ucm icu-internal-compound-s2.ucm icu-internal-compound-s3.ucm icu-internal-compound-t.ucm \\r
 euc-jp-2007.ucm\\r
-euc-tw-2014.ucm\\r
-gsm-03.38-2009.ucm\r
+euc-tw-2014.ucm\r
+\r
index bc0d58d..94d511a 100644 (file)
 dayPeriods:table(nofallback){\r
     locales{\r
         af{"set3"}\r
-        am{"set68"}\r
-        ar{"set66"}\r
-        az{"set62"}\r
-        bg{"set21"}\r
-        bn{"set34"}\r
-        bs{"set25"}\r
-        ca{"set15"}\r
-        chr{"set76"}\r
-        cs{"set27"}\r
-        da{"set7"}\r
-        de{"set6"}\r
-        ee{"set77"}\r
-        el{"set40"}\r
+        am{"set67"}\r
+        ar{"set65"}\r
+        az{"set61"}\r
+        bg{"set20"}\r
+        bn{"set33"}\r
+        bs{"set24"}\r
+        ca{"set14"}\r
+        chr{"set75"}\r
+        cs{"set26"}\r
+        da{"set6"}\r
+        de{"set5"}\r
+        ee{"set76"}\r
+        el{"set39"}\r
         en{"set2"}\r
-        es{"set13"}\r
-        es_CO{"set14"}\r
-        et{"set49"}\r
-        eu{"set74"}\r
-        fa{"set43"}\r
-        fi{"set48"}\r
-        fil{"set60"}\r
-        fr{"set18"}\r
-        gl{"set12"}\r
-        gsw{"set5"}\r
-        gu{"set35"}\r
-        he{"set67"}\r
-        hi{"set33"}\r
-        hr{"set24"}\r
-        hu{"set50"}\r
-        hy{"set42"}\r
-        id{"set58"}\r
-        is{"set10"}\r
-        it{"set16"}\r
-        ja{"set53"}\r
-        ka{"set73"}\r
-        kk{"set63"}\r
-        km{"set70"}\r
-        kn{"set47"}\r
-        ko{"set54"}\r
-        ky{"set64"}\r
-        lo{"set57"}\r
-        lt{"set30"}\r
-        lv{"set31"}\r
-        mk{"set22"}\r
-        ml{"set46"}\r
-        mn{"set75"}\r
-        mr{"set36"}\r
-        ms{"set59"}\r
-        my{"set55"}\r
-        nb{"set8"}\r
-        ne{"set37"}\r
+        es{"set12"}\r
+        es_CO{"set13"}\r
+        et{"set48"}\r
+        eu{"set73"}\r
+        fa{"set42"}\r
+        fi{"set47"}\r
+        fil{"set59"}\r
+        fr{"set17"}\r
+        gl{"set11"}\r
+        gu{"set34"}\r
+        he{"set66"}\r
+        hi{"set32"}\r
+        hr{"set23"}\r
+        hu{"set49"}\r
+        hy{"set41"}\r
+        id{"set57"}\r
+        is{"set9"}\r
+        it{"set15"}\r
+        ja{"set52"}\r
+        ka{"set72"}\r
+        kk{"set62"}\r
+        km{"set69"}\r
+        kn{"set46"}\r
+        ko{"set53"}\r
+        ky{"set63"}\r
+        lo{"set56"}\r
+        lt{"set29"}\r
+        lv{"set30"}\r
+        mk{"set21"}\r
+        ml{"set45"}\r
+        mn{"set74"}\r
+        mr{"set35"}\r
+        ms{"set58"}\r
+        my{"set54"}\r
+        nb{"set7"}\r
+        ne{"set36"}\r
         nl{"set4"}\r
-        pa{"set38"}\r
-        pl{"set29"}\r
-        pt{"set11"}\r
-        ro{"set17"}\r
+        pa{"set37"}\r
+        pl{"set28"}\r
+        pt{"set10"}\r
+        ro{"set16"}\r
         root{"set1"}\r
-        ru{"set19"}\r
-        si{"set39"}\r
-        sk{"set28"}\r
-        sl{"set26"}\r
-        sq{"set41"}\r
-        sr{"set23"}\r
-        sv{"set9"}\r
-        sw{"set71"}\r
-        ta{"set44"}\r
-        te{"set45"}\r
-        th{"set56"}\r
-        tr{"set61"}\r
-        uk{"set20"}\r
-        ur{"set32"}\r
-        uz{"set65"}\r
-        vi{"set69"}\r
-        yue{"set52"}\r
-        zh{"set51"}\r
-        zu{"set72"}\r
+        ru{"set18"}\r
+        si{"set38"}\r
+        sk{"set27"}\r
+        sl{"set25"}\r
+        sq{"set40"}\r
+        sr{"set22"}\r
+        sv{"set8"}\r
+        sw{"set70"}\r
+        ta{"set43"}\r
+        te{"set44"}\r
+        th{"set55"}\r
+        tr{"set60"}\r
+        uk{"set19"}\r
+        ur{"set31"}\r
+        uz{"set64"}\r
+        vi{"set68"}\r
+        yue{"set51"}\r
+        zh{"set50"}\r
+        zu{"set71"}\r
     }\r
     locales_selection{\r
-        af{"set80"}\r
-        am{"set149"}\r
-        ar{"set140"}\r
-        az{"set131"}\r
-        bg{"set103"}\r
-        bn{"set116"}\r
-        bs{"set97"}\r
-        ca{"set92"}\r
-        chr{"set153"}\r
-        cs{"set100"}\r
-        da{"set84"}\r
-        de{"set83"}\r
-        ee{"set154"}\r
-        el{"set109"}\r
-        en{"set79"}\r
-        es{"set90"}\r
-        es_CO{"set91"}\r
-        et{"set135"}\r
-        eu{"set150"}\r
-        fa{"set110"}\r
-        fi{"set136"}\r
-        fil{"set144"}\r
-        fr{"set95"}\r
-        gl{"set89"}\r
-        gsw{"set82"}\r
-        gu{"set117"}\r
-        he{"set141"}\r
-        hi{"set115"}\r
-        hr{"set96"}\r
-        hu{"set137"}\r
-        hy{"set111"}\r
-        id{"set142"}\r
-        is{"set87"}\r
-        it{"set93"}\r
-        ja{"set128"}\r
-        ka{"set112"}\r
-        kk{"set132"}\r
-        km{"set146"}\r
-        kn{"set125"}\r
-        ko{"set129"}\r
-        ky{"set133"}\r
-        lo{"set139"}\r
-        lt{"set107"}\r
-        lv{"set108"}\r
-        mk{"set104"}\r
-        ml{"set124"}\r
-        mn{"set151"}\r
-        mr{"set118"}\r
-        ms{"set143"}\r
-        my{"set152"}\r
-        nb{"set85"}\r
-        ne{"set119"}\r
-        nl{"set81"}\r
-        pa{"set120"}\r
-        pl{"set102"}\r
-        pt{"set88"}\r
-        ro{"set94"}\r
-        root{"set78"}\r
-        ru{"set105"}\r
-        si{"set121"}\r
-        sk{"set101"}\r
-        sl{"set99"}\r
-        sq{"set113"}\r
-        sr{"set98"}\r
-        sv{"set86"}\r
-        sw{"set147"}\r
-        ta{"set122"}\r
-        te{"set123"}\r
-        th{"set138"}\r
-        tr{"set130"}\r
-        uk{"set106"}\r
-        ur{"set114"}\r
-        uz{"set134"}\r
-        vi{"set145"}\r
-        yue{"set127"}\r
-        zh{"set126"}\r
-        zu{"set148"}\r
+        af{"set79"}\r
+        am{"set147"}\r
+        ar{"set138"}\r
+        az{"set129"}\r
+        bg{"set101"}\r
+        bn{"set114"}\r
+        bs{"set95"}\r
+        ca{"set90"}\r
+        chr{"set151"}\r
+        cs{"set98"}\r
+        da{"set82"}\r
+        de{"set81"}\r
+        ee{"set152"}\r
+        el{"set107"}\r
+        en{"set78"}\r
+        es{"set88"}\r
+        es_CO{"set89"}\r
+        et{"set133"}\r
+        eu{"set148"}\r
+        fa{"set108"}\r
+        fi{"set134"}\r
+        fil{"set142"}\r
+        fr{"set93"}\r
+        gl{"set87"}\r
+        gu{"set115"}\r
+        he{"set139"}\r
+        hi{"set113"}\r
+        hr{"set94"}\r
+        hu{"set135"}\r
+        hy{"set109"}\r
+        id{"set140"}\r
+        is{"set85"}\r
+        it{"set91"}\r
+        ja{"set126"}\r
+        ka{"set110"}\r
+        kk{"set130"}\r
+        km{"set144"}\r
+        kn{"set123"}\r
+        ko{"set127"}\r
+        ky{"set131"}\r
+        lo{"set137"}\r
+        lt{"set105"}\r
+        lv{"set106"}\r
+        mk{"set102"}\r
+        ml{"set122"}\r
+        mn{"set149"}\r
+        mr{"set116"}\r
+        ms{"set141"}\r
+        my{"set150"}\r
+        nb{"set83"}\r
+        ne{"set117"}\r
+        nl{"set80"}\r
+        pa{"set118"}\r
+        pl{"set100"}\r
+        pt{"set86"}\r
+        ro{"set92"}\r
+        root{"set77"}\r
+        ru{"set103"}\r
+        si{"set119"}\r
+        sk{"set99"}\r
+        sl{"set97"}\r
+        sq{"set111"}\r
+        sr{"set96"}\r
+        sv{"set84"}\r
+        sw{"set145"}\r
+        ta{"set120"}\r
+        te{"set121"}\r
+        th{"set136"}\r
+        tr{"set128"}\r
+        uk{"set104"}\r
+        ur{"set112"}\r
+        uz{"set132"}\r
+        vi{"set143"}\r
+        yue{"set125"}\r
+        zh{"set124"}\r
+        zu{"set146"}\r
     }\r
     rules{\r
         set1{\r
@@ -172,12 +170,12 @@ dayPeriods:table(nofallback){
         }\r
         set10{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"19:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
                 before{"24:00"}\r
-                from{"18:00"}\r
+                from{"19:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
@@ -200,50 +198,6 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"22:00"}\r
-                from{"18:00"}\r
-            }\r
-            morning1{\r
-                before{"09:00"}\r
-                from{"04:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"09:00"}\r
-            }\r
-            night1{\r
-                before{"04:00"}\r
-                from{"22:00"}\r
-            }\r
-        }\r
-        set101{\r
-            afternoon1{\r
-                before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"22:00"}\r
-                from{"18:00"}\r
-            }\r
-            morning1{\r
-                before{"09:00"}\r
-                from{"04:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"09:00"}\r
-            }\r
-            night1{\r
-                before{"04:00"}\r
-                from{"22:00"}\r
-            }\r
-        }\r
-        set102{\r
-            afternoon1{\r
-                before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
                 before{"21:00"}\r
                 from{"18:00"}\r
             }\r
@@ -260,7 +214,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set103{\r
+        set101{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"14:00"}\r
@@ -282,7 +236,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set104{\r
+        set102{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -304,7 +258,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set105{\r
+        set103{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -322,7 +276,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set106{\r
+        set104{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -340,7 +294,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set107{\r
+        set105{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -358,7 +312,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set108{\r
+        set106{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -376,7 +330,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set109{\r
+        set107{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -394,31 +348,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set11{\r
-            afternoon1{\r
-                before{"19:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"24:00"}\r
-                from{"19:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"12:00"}\r
-                from{"06:00"}\r
-            }\r
-            night1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set110{\r
+        set108{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -436,7 +366,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set111{\r
+        set109{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -454,7 +384,32 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set112{\r
+        set11{\r
+            afternoon1{\r
+                before{"13:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"21:00"}\r
+                from{"13:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"06:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"21:00"}\r
+            }\r
+        }\r
+        set110{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -472,7 +427,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set113{\r
+        set111{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -494,7 +449,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set114{\r
+        set112{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -516,7 +471,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set115{\r
+        set113{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -534,7 +489,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set116{\r
+        set114{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -560,7 +515,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set117{\r
+        set115{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -578,7 +533,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set118{\r
+        set116{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -604,7 +559,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set119{\r
+        set117{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -626,32 +581,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set12{\r
-            afternoon1{\r
-                before{"13:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"21:00"}\r
-                from{"13:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"06:00"}\r
-            }\r
-            night1{\r
-                before{"24:00"}\r
-                from{"21:00"}\r
-            }\r
-        }\r
-        set120{\r
+        set118{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -669,7 +599,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set121{\r
+        set119{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -695,7 +625,28 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set122{\r
+        set12{\r
+            evening1{\r
+                before{"20:00"}\r
+                from{"12:00"}\r
+            }\r
+            morning1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"06:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"20:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
+        }\r
+        set120{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -725,7 +676,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set123{\r
+        set121{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -743,7 +694,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set124{\r
+        set122{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -773,7 +724,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set125{\r
+        set123{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -791,7 +742,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set126{\r
+        set124{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -817,7 +768,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set127{\r
+        set125{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -843,7 +794,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set128{\r
+        set126{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -865,7 +816,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set129{\r
+        set127{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -887,28 +838,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set13{\r
-            evening1{\r
-                before{"20:00"}\r
-                from{"12:00"}\r
-            }\r
-            morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"06:00"}\r
-            }\r
-            night1{\r
-                before{"24:00"}\r
-                from{"20:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set130{\r
+        set128{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -934,7 +864,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set131{\r
+        set129{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -960,7 +890,24 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set132{\r
+        set13{\r
+            evening1{\r
+                before{"20:00"}\r
+                from{"12:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"00:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"20:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
+        }\r
+        set130{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -978,7 +925,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set133{\r
+        set131{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -996,7 +943,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set134{\r
+        set132{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"11:00"}\r
@@ -1014,7 +961,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set135{\r
+        set133{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1032,7 +979,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set136{\r
+        set134{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1054,7 +1001,7 @@ dayPeriods:table(nofallback){
                 from{"23:00"}\r
             }\r
         }\r
-        set137{\r
+        set135{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1080,7 +1027,7 @@ dayPeriods:table(nofallback){
                 from{"04:00"}\r
             }\r
         }\r
-        set138{\r
+        set136{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -1106,7 +1053,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set139{\r
+        set137{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1124,24 +1071,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set14{\r
-            evening1{\r
-                before{"20:00"}\r
-                from{"12:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"00:00"}\r
-            }\r
-            night1{\r
-                before{"24:00"}\r
-                from{"20:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set140{\r
+        set138{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -1171,7 +1101,7 @@ dayPeriods:table(nofallback){
                 from{"01:00"}\r
             }\r
         }\r
-        set141{\r
+        set139{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1197,7 +1127,36 @@ dayPeriods:table(nofallback){
                 from{"03:00"}\r
             }\r
         }\r
-        set142{\r
+        set14{\r
+            afternoon1{\r
+                before{"13:00"}\r
+                from{"12:00"}\r
+            }\r
+            afternoon2{\r
+                before{"19:00"}\r
+                from{"13:00"}\r
+            }\r
+            evening1{\r
+                before{"21:00"}\r
+                from{"19:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"06:00"}\r
+            }\r
+            night1{\r
+                before{"24:00"}\r
+                from{"21:00"}\r
+            }\r
+        }\r
+        set140{\r
             afternoon1{\r
                 before{"15:00"}\r
                 from{"10:00"}\r
@@ -1215,7 +1174,7 @@ dayPeriods:table(nofallback){
                 from{"18:00"}\r
             }\r
         }\r
-        set143{\r
+        set141{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -1237,7 +1196,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set144{\r
+        set142{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1259,7 +1218,7 @@ dayPeriods:table(nofallback){
                 from{"18:00"}\r
             }\r
         }\r
-        set145{\r
+        set143{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1277,7 +1236,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set146{\r
+        set144{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1295,7 +1254,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set147{\r
+        set145{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1317,7 +1276,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set148{\r
+        set146{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"10:00"}\r
@@ -1339,7 +1298,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set149{\r
+        set147{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1357,22 +1316,19 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set15{\r
+        set148{\r
             afternoon1{\r
-                before{"13:00"}\r
+                before{"14:00"}\r
                 from{"12:00"}\r
             }\r
             afternoon2{\r
                 before{"19:00"}\r
-                from{"13:00"}\r
+                from{"14:00"}\r
             }\r
             evening1{\r
                 before{"21:00"}\r
                 from{"19:00"}\r
             }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
             morning1{\r
                 before{"06:00"}\r
                 from{"00:00"}\r
@@ -1386,51 +1342,49 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set150{\r
+        set149{\r
             afternoon1{\r
-                before{"14:00"}\r
+                before{"18:00"}\r
                 from{"12:00"}\r
             }\r
-            afternoon2{\r
-                before{"19:00"}\r
-                from{"14:00"}\r
-            }\r
             evening1{\r
                 before{"21:00"}\r
-                from{"19:00"}\r
+                from{"18:00"}\r
             }\r
             morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
                 from{"06:00"}\r
             }\r
             night1{\r
-                before{"24:00"}\r
+                before{"06:00"}\r
                 from{"21:00"}\r
             }\r
         }\r
-        set151{\r
+        set15{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"21:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
             morning1{\r
                 before{"12:00"}\r
                 from{"06:00"}\r
             }\r
             night1{\r
                 before{"06:00"}\r
-                from{"21:00"}\r
+                from{"00:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set152{\r
+        set150{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1448,7 +1402,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set153{\r
+        set151{\r
             afternoon1{\r
                 before{"24:00"}\r
                 from{"12:00"}\r
@@ -1458,7 +1412,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set154{\r
+        set152{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -1490,7 +1444,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"22:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
@@ -1498,11 +1452,11 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
+                before{"05:00"}\r
+                from{"22:00"}\r
             }\r
             noon{\r
                 at{"12:00"}\r
@@ -1514,7 +1468,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"22:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
@@ -1522,11 +1476,11 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"05:00"}\r
+                from{"04:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"22:00"}\r
+                before{"04:00"}\r
+                from{"00:00"}\r
             }\r
             noon{\r
                 at{"12:00"}\r
@@ -1607,30 +1561,6 @@ dayPeriods:table(nofallback){
         set20{\r
             afternoon1{\r
                 before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"12:00"}\r
-                from{"04:00"}\r
-            }\r
-            night1{\r
-                before{"04:00"}\r
-                from{"00:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
-        }\r
-        set21{\r
-            afternoon1{\r
-                before{"18:00"}\r
                 from{"14:00"}\r
             }\r
             evening1{\r
@@ -1653,7 +1583,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set22{\r
+        set21{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1681,7 +1611,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set23{\r
+        set22{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1705,7 +1635,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set24{\r
+        set23{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1729,7 +1659,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set25{\r
+        set24{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1753,7 +1683,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set26{\r
+        set25{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1781,7 +1711,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set27{\r
+        set26{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1809,7 +1739,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set28{\r
+        set27{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1837,7 +1767,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set29{\r
+        set28{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1865,7 +1795,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set3{\r
+        set29{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1879,14 +1809,17 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"05:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
+                before{"06:00"}\r
                 from{"00:00"}\r
             }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
         }\r
-        set30{\r
+        set3{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1900,17 +1833,14 @@ dayPeriods:table(nofallback){
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
+                before{"05:00"}\r
                 from{"00:00"}\r
             }\r
-            noon{\r
-                at{"12:00"}\r
-            }\r
         }\r
-        set31{\r
+        set30{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -1934,7 +1864,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set32{\r
+        set31{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1959,7 +1889,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set33{\r
+        set32{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -1980,7 +1910,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set34{\r
+        set33{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2006,7 +1936,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set35{\r
+        set34{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2027,7 +1957,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set36{\r
+        set35{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2059,7 +1989,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set37{\r
+        set36{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2087,7 +2017,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set38{\r
+        set37{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2108,7 +2038,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set39{\r
+        set38{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2140,46 +2070,46 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set4{\r
+        set39{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"17:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
+                before{"20:00"}\r
+                from{"17:00"}\r
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"04:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
+                before{"04:00"}\r
+                from{"20:00"}\r
             }\r
         }\r
-        set40{\r
+        set4{\r
             afternoon1{\r
-                before{"17:00"}\r
+                before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"20:00"}\r
-                from{"17:00"}\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
             }\r
             morning1{\r
                 before{"12:00"}\r
-                from{"04:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"04:00"}\r
-                from{"20:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set41{\r
+        set40{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2207,7 +2137,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set42{\r
+        set41{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2231,7 +2161,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set43{\r
+        set42{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -2255,7 +2185,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set44{\r
+        set43{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2291,7 +2221,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set45{\r
+        set44{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2312,7 +2242,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set46{\r
+        set45{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2348,7 +2278,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set47{\r
+        set46{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2369,7 +2299,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set48{\r
+        set47{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2397,7 +2327,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set49{\r
+        set48{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2421,64 +2351,68 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set5{\r
+        set49{\r
             afternoon1{\r
-                before{"14:00"}\r
-                from{"12:00"}\r
-            }\r
-            afternoon2{\r
                 before{"18:00"}\r
-                from{"14:00"}\r
+                from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"21:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
+                before{"09:00"}\r
+                from{"06:00"}\r
+            }\r
+            morning2{\r
                 before{"12:00"}\r
-                from{"05:00"}\r
+                from{"09:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
+                before{"04:00"}\r
+                from{"21:00"}\r
+            }\r
+            night2{\r
+                before{"06:00"}\r
+                from{"04:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set50{\r
+        set5{\r
             afternoon1{\r
-                before{"18:00"}\r
+                before{"13:00"}\r
                 from{"12:00"}\r
             }\r
+            afternoon2{\r
+                before{"18:00"}\r
+                from{"13:00"}\r
+            }\r
             evening1{\r
-                before{"21:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"09:00"}\r
-                from{"06:00"}\r
+                before{"10:00"}\r
+                from{"05:00"}\r
             }\r
             morning2{\r
                 before{"12:00"}\r
-                from{"09:00"}\r
+                from{"10:00"}\r
             }\r
             night1{\r
-                before{"04:00"}\r
-                from{"21:00"}\r
-            }\r
-            night2{\r
-                before{"06:00"}\r
-                from{"04:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                before{"05:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set51{\r
+        set50{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2507,7 +2441,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set52{\r
+        set51{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2536,7 +2470,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set53{\r
+        set52{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2564,7 +2498,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set54{\r
+        set53{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2592,7 +2526,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set55{\r
+        set54{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2616,7 +2550,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set56{\r
+        set55{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2648,7 +2582,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set57{\r
+        set56{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2672,7 +2606,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set58{\r
+        set57{\r
             afternoon1{\r
                 before{"15:00"}\r
                 from{"10:00"}\r
@@ -2696,7 +2630,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set59{\r
+        set58{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -2718,64 +2652,60 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set6{\r
+        set59{\r
             afternoon1{\r
-                before{"13:00"}\r
+                before{"16:00"}\r
                 from{"12:00"}\r
             }\r
-            afternoon2{\r
-                before{"18:00"}\r
-                from{"13:00"}\r
-            }\r
             evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
+                before{"18:00"}\r
+                from{"16:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"05:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
             }\r
             morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"06:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set60{\r
+        set6{\r
             afternoon1{\r
-                before{"16:00"}\r
+                before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"18:00"}\r
-                from{"16:00"}\r
+                before{"24:00"}\r
+                from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"06:00"}\r
-                from{"00:00"}\r
+                before{"10:00"}\r
+                from{"05:00"}\r
             }\r
             morning2{\r
                 before{"12:00"}\r
-                from{"06:00"}\r
+                from{"10:00"}\r
             }\r
             night1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                before{"05:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set61{\r
+        set60{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2807,7 +2737,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set62{\r
+        set61{\r
             afternoon1{\r
                 before{"17:00"}\r
                 from{"12:00"}\r
@@ -2839,7 +2769,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set63{\r
+        set62{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2863,7 +2793,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set64{\r
+        set63{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2887,7 +2817,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set65{\r
+        set64{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"11:00"}\r
@@ -2911,7 +2841,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set66{\r
+        set65{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -2941,7 +2871,7 @@ dayPeriods:table(nofallback){
                 from{"01:00"}\r
             }\r
         }\r
-        set67{\r
+        set66{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -2970,7 +2900,7 @@ dayPeriods:table(nofallback){
                 from{"03:00"}\r
             }\r
         }\r
-        set68{\r
+        set67{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -2994,7 +2924,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set69{\r
+        set68{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3018,56 +2948,56 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set7{\r
+        set69{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"24:00"}\r
+                before{"21:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"05:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"00:00"}\r
             }\r
             night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
+                before{"24:00"}\r
+                from{"21:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
             }\r
         }\r
-        set70{\r
+        set7{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
             }\r
             evening1{\r
-                before{"21:00"}\r
+                before{"24:00"}\r
                 from{"18:00"}\r
             }\r
             midnight{\r
                 at{"00:00"}\r
             }\r
             morning1{\r
+                before{"10:00"}\r
+                from{"06:00"}\r
+            }\r
+            morning2{\r
                 before{"12:00"}\r
-                from{"00:00"}\r
+                from{"10:00"}\r
             }\r
             night1{\r
-                before{"24:00"}\r
-                from{"21:00"}\r
-            }\r
-            noon{\r
-                at{"12:00"}\r
+                before{"06:00"}\r
+                from{"00:00"}\r
             }\r
         }\r
-        set71{\r
+        set70{\r
             afternoon1{\r
                 before{"16:00"}\r
                 from{"12:00"}\r
@@ -3095,7 +3025,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set72{\r
+        set71{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"10:00"}\r
@@ -3117,7 +3047,7 @@ dayPeriods:table(nofallback){
                 from{"19:00"}\r
             }\r
         }\r
-        set73{\r
+        set72{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3141,7 +3071,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set74{\r
+        set73{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -3170,7 +3100,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set75{\r
+        set74{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3194,7 +3124,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set76{\r
+        set75{\r
             afternoon1{\r
                 before{"24:00"}\r
                 from{"12:00"}\r
@@ -3207,7 +3137,7 @@ dayPeriods:table(nofallback){
                 at{"12:00"}\r
             }\r
         }\r
-        set77{\r
+        set76{\r
             afternoon1{\r
                 before{"14:00"}\r
                 from{"12:00"}\r
@@ -3233,7 +3163,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set78{\r
+        set77{\r
             am{\r
                 before{"12:00"}\r
                 from{"00:00"}\r
@@ -3243,7 +3173,7 @@ dayPeriods:table(nofallback){
                 from{"12:00"}\r
             }\r
         }\r
-        set79{\r
+        set78{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3261,7 +3191,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set8{\r
+        set79{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3270,23 +3200,16 @@ dayPeriods:table(nofallback){
                 before{"24:00"}\r
                 from{"18:00"}\r
             }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
             morning1{\r
-                before{"10:00"}\r
-                from{"06:00"}\r
-            }\r
-            morning2{\r
                 before{"12:00"}\r
-                from{"10:00"}\r
+                from{"05:00"}\r
             }\r
             night1{\r
-                before{"06:00"}\r
+                before{"05:00"}\r
                 from{"00:00"}\r
             }\r
         }\r
-        set80{\r
+        set8{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3295,16 +3218,23 @@ dayPeriods:table(nofallback){
                 before{"24:00"}\r
                 from{"18:00"}\r
             }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
             morning1{\r
-                before{"12:00"}\r
+                before{"10:00"}\r
                 from{"05:00"}\r
             }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"10:00"}\r
+            }\r
             night1{\r
                 before{"05:00"}\r
                 from{"00:00"}\r
             }\r
         }\r
-        set81{\r
+        set80{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3322,32 +3252,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set82{\r
-            afternoon1{\r
-                before{"14:00"}\r
-                from{"12:00"}\r
-            }\r
-            afternoon2{\r
-                before{"18:00"}\r
-                from{"14:00"}\r
-            }\r
-            evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"12:00"}\r
-                from{"05:00"}\r
-            }\r
-            night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
-            }\r
-        }\r
-        set83{\r
+        set81{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -3373,7 +3278,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set84{\r
+        set82{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3395,7 +3300,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set85{\r
+        set83{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3417,7 +3322,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set86{\r
+        set84{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3439,7 +3344,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set87{\r
+        set85{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3457,7 +3362,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set88{\r
+        set86{\r
             afternoon1{\r
                 before{"19:00"}\r
                 from{"12:00"}\r
@@ -3475,7 +3380,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set89{\r
+        set87{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -3497,32 +3402,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set9{\r
-            afternoon1{\r
-                before{"18:00"}\r
-                from{"12:00"}\r
-            }\r
-            evening1{\r
-                before{"24:00"}\r
-                from{"18:00"}\r
-            }\r
-            midnight{\r
-                at{"00:00"}\r
-            }\r
-            morning1{\r
-                before{"10:00"}\r
-                from{"05:00"}\r
-            }\r
-            morning2{\r
-                before{"12:00"}\r
-                from{"10:00"}\r
-            }\r
-            night1{\r
-                before{"05:00"}\r
-                from{"00:00"}\r
-            }\r
-        }\r
-        set90{\r
+        set88{\r
             evening1{\r
                 before{"20:00"}\r
                 from{"12:00"}\r
@@ -3540,7 +3420,7 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set91{\r
+        set89{\r
             evening1{\r
                 before{"20:00"}\r
                 from{"12:00"}\r
@@ -3554,7 +3434,31 @@ dayPeriods:table(nofallback){
                 from{"20:00"}\r
             }\r
         }\r
-        set92{\r
+        set9{\r
+            afternoon1{\r
+                before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"24:00"}\r
+                from{"18:00"}\r
+            }\r
+            midnight{\r
+                at{"00:00"}\r
+            }\r
+            morning1{\r
+                before{"12:00"}\r
+                from{"06:00"}\r
+            }\r
+            night1{\r
+                before{"06:00"}\r
+                from{"00:00"}\r
+            }\r
+            noon{\r
+                at{"12:00"}\r
+            }\r
+        }\r
+        set90{\r
             afternoon1{\r
                 before{"13:00"}\r
                 from{"12:00"}\r
@@ -3580,7 +3484,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set93{\r
+        set91{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3598,7 +3502,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set94{\r
+        set92{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3616,7 +3520,7 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
-        set95{\r
+        set93{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3634,7 +3538,7 @@ dayPeriods:table(nofallback){
                 from{"00:00"}\r
             }\r
         }\r
-        set96{\r
+        set94{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3652,7 +3556,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set97{\r
+        set95{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3670,7 +3574,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set98{\r
+        set96{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3688,7 +3592,7 @@ dayPeriods:table(nofallback){
                 from{"21:00"}\r
             }\r
         }\r
-        set99{\r
+        set97{\r
             afternoon1{\r
                 before{"18:00"}\r
                 from{"12:00"}\r
@@ -3710,5 +3614,49 @@ dayPeriods:table(nofallback){
                 from{"22:00"}\r
             }\r
         }\r
+        set98{\r
+            afternoon1{\r
+                before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"22:00"}\r
+                from{"18:00"}\r
+            }\r
+            morning1{\r
+                before{"09:00"}\r
+                from{"04:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"09:00"}\r
+            }\r
+            night1{\r
+                before{"04:00"}\r
+                from{"22:00"}\r
+            }\r
+        }\r
+        set99{\r
+            afternoon1{\r
+                before{"18:00"}\r
+                from{"12:00"}\r
+            }\r
+            evening1{\r
+                before{"22:00"}\r
+                from{"18:00"}\r
+            }\r
+            morning1{\r
+                before{"09:00"}\r
+                from{"04:00"}\r
+            }\r
+            morning2{\r
+                before{"12:00"}\r
+                from{"09:00"}\r
+            }\r
+            night1{\r
+                before{"04:00"}\r
+                from{"22:00"}\r
+            }\r
+        }\r
     }\r
 }\r
index d4c9ece..cb7704f 100644 (file)
@@ -8,6 +8,6 @@
 // ***************************************************************************\r
 \r
 icuver:table(nofallback){ \r
-    DataVersion { "59.1.0.0" }\r
-    ICUVersion  { "59.1.0.0" }\r
+    DataVersion { "58.2.0.0" }\r
+    ICUVersion  { "58.2.0.0" }\r
 }\r
index 643ede2..0318b4f 100644 (file)
@@ -14,7 +14,6 @@ keyTypeData:table(nofallback){
         }\r
         valueType{\r
             ca{"incremental"}\r
-            h0{"single"}\r
             kr{"multiple"}\r
             vt{"multiple"}\r
             x0{"any"}\r
@@ -37,7 +36,6 @@ keyTypeData:table(nofallback){
         d0{""}\r
         em{""}\r
         fw{""}\r
-        h0{""}\r
         hours{"hc"}\r
         i0{""}\r
         k0{""}\r
@@ -218,7 +216,6 @@ keyTypeData:table(nofallback){
             buk{""}\r
             bwp{""}\r
             byb{""}\r
-            byn{""}\r
             byr{""}\r
             bzd{""}\r
             cad{""}\r
@@ -500,9 +497,6 @@ keyTypeData:table(nofallback){
             tue{""}\r
             wed{""}\r
         }\r
-        h0{\r
-            hybrid{""}\r
-        }\r
         hours{\r
             h11{""}\r
             h12{""}\r
index 03d878c..9fd9505 100644 (file)
@@ -7,7 +7,6 @@ likelySubtags:table(nofallback){
     aau{"aau_Latn_ZZ"}\r
     ab{"ab_Cyrl_GE"}\r
     abi{"abi_Latn_ZZ"}\r
-    abq{"abq_Cyrl_ZZ"}\r
     abr{"abr_Latn_GH"}\r
     abt{"abt_Latn_ZZ"}\r
     aby{"aby_Latn_ZZ"}\r
@@ -155,7 +154,6 @@ likelySubtags:table(nofallback){
     bjn{"bjn_Latn_ID"}\r
     bjo{"bjo_Latn_ZZ"}\r
     bjr{"bjr_Latn_ZZ"}\r
-    bjt{"bjt_Latn_SN"}\r
     bjz{"bjz_Latn_ZZ"}\r
     bkc{"bkc_Latn_ZZ"}\r
     bkm{"bkm_Latn_CM"}\r
@@ -222,7 +220,8 @@ likelySubtags:table(nofallback){
     can{"can_Latn_ZZ"}\r
     cbj{"cbj_Latn_ZZ"}\r
     cch{"cch_Latn_NG"}\r
-    ccp{"ccp_Cakm_BD"}\r
+    ccp{"ccp_Beng_IN"}\r
+    ccp_Cakm{"ccp_Cakm_BD"}\r
     ce{"ce_Cyrl_RU"}\r
     ceb{"ceb_Latn_PH"}\r
     cfa{"cfa_Latn_ZZ"}\r
@@ -246,7 +245,6 @@ likelySubtags:table(nofallback){
     cop{"cop_Copt_EG"}\r
     cps{"cps_Latn_PH"}\r
     cr{"cr_Cans_CA"}\r
-    crh{"crh_Cyrl_UA"}\r
     crj{"crj_Cans_CA"}\r
     crk{"crk_Cans_CA"}\r
     crl{"crl_Cans_CA"}\r
@@ -311,7 +309,6 @@ likelySubtags:table(nofallback){
     efi{"efi_Latn_NG"}\r
     egl{"egl_Latn_IT"}\r
     egy{"egy_Egyp_EG"}\r
-    eka{"eka_Latn_ZZ"}\r
     eky{"eky_Kali_MM"}\r
     el{"el_Grek_GR"}\r
     ema{"ema_Latn_ZZ"}\r
@@ -419,7 +416,6 @@ likelySubtags:table(nofallback){
     gor{"gor_Latn_ID"}\r
     gos{"gos_Latn_NL"}\r
     got{"got_Goth_UA"}\r
-    grb{"grb_Latn_ZZ"}\r
     grc{"grc_Cprt_CY"}\r
     grc_Linb{"grc_Linb_GR"}\r
     grt{"grt_Beng_IN"}\r
@@ -492,7 +488,6 @@ likelySubtags:table(nofallback){
     idd{"idd_Latn_ZZ"}\r
     idi{"idi_Latn_ZZ"}\r
     idu{"idu_Latn_ZZ"}\r
-    ife{"ife_Latn_TG"}\r
     ig{"ig_Latn_NG"}\r
     igb{"igb_Latn_ZZ"}\r
     ige{"ige_Latn_ZZ"}\r
@@ -603,7 +598,6 @@ likelySubtags:table(nofallback){
     kmu{"kmu_Latn_ZZ"}\r
     kmw{"kmw_Latn_ZZ"}\r
     kn{"kn_Knda_IN"}\r
-    knf{"knf_Latn_SN"}\r
     knp{"knp_Latn_ZZ"}\r
     ko{"ko_Kore_KR"}\r
     koi{"koi_Cyrl_RU"}\r
@@ -1027,7 +1021,6 @@ likelySubtags:table(nofallback){
     saq{"saq_Latn_KE"}\r
     sas{"sas_Latn_ID"}\r
     sat{"sat_Latn_IN"}\r
-    sav{"sav_Latn_SN"}\r
     saz{"saz_Saur_IN"}\r
     sba{"sba_Latn_ZZ"}\r
     sbe{"sbe_Latn_ZZ"}\r
@@ -1351,6 +1344,7 @@ likelySubtags:table(nofallback){
     und_Cyrl_GE{"ab_Cyrl_GE"}\r
     und_Cyrl_GR{"mk_Cyrl_GR"}\r
     und_Cyrl_MD{"uk_Cyrl_MD"}\r
+    und_Cyrl_PL{"be_Cyrl_PL"}\r
     und_Cyrl_RO{"bg_Cyrl_RO"}\r
     und_Cyrl_SK{"uk_Cyrl_SK"}\r
     und_Cyrl_TR{"kbd_Cyrl_TR"}\r
index 1a6e771..3438968 100644 (file)
@@ -212,6 +212,7 @@ metaZones:table(nofallback){
         }\r
         Chile{\r
             001{"America/Santiago"}\r
+            AQ{"Antarctica/Palmer"}\r
         }\r
         China{\r
             001{"Asia/Shanghai"}\r
@@ -2244,13 +2245,6 @@ metaZones:table(nofallback){
                 "Atlantic",\r
             }\r
         }\r
-        "America:Punta_Arenas"{\r
-            {\r
-                "Chile",\r
-                "1970-01-01 00:00",\r
-                "2016-12-03 23:00",\r
-            }\r
-        }\r
         "America:Rainy_River"{\r
             {\r
                 "America_Central",\r
@@ -2582,7 +2576,7 @@ metaZones:table(nofallback){
             {\r
                 "Chile",\r
                 "1982-05-01 03:00",\r
-                "2016-12-03 23:00",\r
+                "9999-12-31 23:59",\r
             }\r
         }\r
         "Antarctica:Rothera"{\r
@@ -3460,11 +3454,6 @@ metaZones:table(nofallback){
                 "America_Eastern",\r
             }\r
         }\r
-        "Etc:GMT"{\r
-            {\r
-                "GMT",\r
-            }\r
-        }\r
         "Europe:Amsterdam"{\r
             {\r
                 "Europe_Central",\r
index 86c5f38..8d02b8e 100644 (file)
@@ -1279,14 +1279,6 @@ metadata:table(nofallback){
                 reason{"overlong"}\r
                 replacement{"yo"}\r
             }\r
-            yue_CN{\r
-                reason{"legacy"}\r
-                replacement{"yue_Hans_CN"}\r
-            }\r
-            yue_HK{\r
-                reason{"legacy"}\r
-                replacement{"yue_Hant_HK"}\r
-            }\r
             zai{\r
                 reason{"macrolanguage"}\r
                 replacement{"zap"}\r
@@ -1355,311 +1347,163 @@ metadata:table(nofallback){
             }\r
         }\r
         subdivision{\r
-            cn71{\r
+            CN-71{\r
                 reason{"overlong"}\r
                 replacement{"TW"}\r
             }\r
-            cn91{\r
+            CN-91{\r
                 reason{"overlong"}\r
                 replacement{"HK"}\r
             }\r
-            cn92{\r
+            CN-92{\r
                 reason{"overlong"}\r
                 replacement{"MO"}\r
             }\r
-            czjc{\r
-                reason{"deprecated"}\r
-                replacement{"cz31"}\r
-            }\r
-            czka{\r
-                reason{"deprecated"}\r
-                replacement{"cz41"}\r
-            }\r
-            czkr{\r
-                reason{"deprecated"}\r
-                replacement{"cz52"}\r
-            }\r
-            czli{\r
-                reason{"deprecated"}\r
-                replacement{"cz51"}\r
-            }\r
-            czmo{\r
-                reason{"deprecated"}\r
-                replacement{"cz80"}\r
-            }\r
-            czol{\r
-                reason{"deprecated"}\r
-                replacement{"cz71"}\r
-            }\r
-            czpa{\r
-                reason{"deprecated"}\r
-                replacement{"cz53"}\r
-            }\r
-            czpl{\r
-                reason{"deprecated"}\r
-                replacement{"cz32"}\r
-            }\r
-            czst{\r
-                reason{"deprecated"}\r
-                replacement{"cz20"}\r
-            }\r
-            czus{\r
-                reason{"deprecated"}\r
-                replacement{"cz42"}\r
-            }\r
-            czzl{\r
-                reason{"deprecated"}\r
-                replacement{"cz72"}\r
-            }\r
-            escn{\r
-                reason{"overlong"}\r
-                replacement{"IC"}\r
-            }\r
-            fi01{\r
-                reason{"overlong"}\r
-                replacement{"AX"}\r
-            }\r
-            fra{\r
-                reason{"deprecated"}\r
-                replacement{"frges"}\r
-            }\r
-            frb{\r
-                reason{"deprecated"}\r
-                replacement{"frnaq"}\r
-            }\r
-            frbl{\r
+            FR-BL{\r
                 reason{"overlong"}\r
                 replacement{"BL"}\r
             }\r
-            frc{\r
-                reason{"deprecated"}\r
-                replacement{"frara"}\r
-            }\r
-            frcp{\r
-                reason{"overlong"}\r
-                replacement{"CP"}\r
-            }\r
-            frd{\r
-                reason{"deprecated"}\r
-                replacement{"frbfc"}\r
-            }\r
-            fre{\r
-                reason{"deprecated"}\r
-                replacement{"frbre"}\r
-            }\r
-            frf{\r
-                reason{"deprecated"}\r
-                replacement{"frcvl"}\r
-            }\r
-            frg{\r
-                reason{"deprecated"}\r
-                replacement{"frges"}\r
-            }\r
-            frgf{\r
+            FR-GF{\r
                 reason{"overlong"}\r
                 replacement{"GF"}\r
             }\r
-            frgp{\r
+            FR-GP{\r
                 reason{"overlong"}\r
                 replacement{"GP"}\r
             }\r
-            frh{\r
-                reason{"deprecated"}\r
-                replacement{"frcor"}\r
-            }\r
-            fri{\r
-                reason{"deprecated"}\r
-                replacement{"frbfc"}\r
-            }\r
-            frj{\r
-                reason{"deprecated"}\r
-                replacement{"fridf"}\r
-            }\r
-            frk{\r
-                reason{"deprecated"}\r
-                replacement{"frocc"}\r
-            }\r
-            frl{\r
-                reason{"deprecated"}\r
-                replacement{"frnaq"}\r
-            }\r
-            frm{\r
-                reason{"deprecated"}\r
-                replacement{"frges"}\r
-            }\r
-            frmf{\r
+            FR-MF{\r
                 reason{"overlong"}\r
                 replacement{"MF"}\r
             }\r
-            frmq{\r
+            FR-MQ{\r
                 reason{"overlong"}\r
                 replacement{"MQ"}\r
             }\r
-            frn{\r
-                reason{"deprecated"}\r
-                replacement{"frocc"}\r
-            }\r
-            frnc{\r
+            FR-NC{\r
                 reason{"overlong"}\r
                 replacement{"NC"}\r
             }\r
-            fro{\r
-                reason{"deprecated"}\r
-                replacement{"frhdf"}\r
-            }\r
-            frp{\r
-                reason{"deprecated"}\r
-                replacement{"frnor"}\r
-            }\r
-            frpf{\r
+            FR-PF{\r
                 reason{"overlong"}\r
                 replacement{"PF"}\r
             }\r
-            frpm{\r
+            FR-PM{\r
                 reason{"overlong"}\r
                 replacement{"PM"}\r
             }\r
-            frq{\r
-                reason{"deprecated"}\r
-                replacement{"frnor"}\r
-            }\r
-            frr{\r
-                reason{"deprecated"}\r
-                replacement{"frpdl"}\r
-            }\r
-            frre{\r
+            FR-RE{\r
                 reason{"overlong"}\r
                 replacement{"RE"}\r
             }\r
-            frs{\r
-                reason{"deprecated"}\r
-                replacement{"frhdf"}\r
-            }\r
-            frt{\r
-                reason{"deprecated"}\r
-                replacement{"frnaq"}\r
-            }\r
-            frtf{\r
+            FR-TF{\r
                 reason{"overlong"}\r
                 replacement{"TF"}\r
             }\r
-            fru{\r
-                reason{"deprecated"}\r
-                replacement{"frpac"}\r
-            }\r
-            frv{\r
-                reason{"deprecated"}\r
-                replacement{"frara"}\r
-            }\r
-            frwf{\r
+            FR-WF{\r
                 reason{"overlong"}\r
                 replacement{"WF"}\r
             }\r
-            fryt{\r
+            FR-YT{\r
                 reason{"overlong"}\r
                 replacement{"YT"}\r
             }\r
-            laxn{\r
+            LA-XN{\r
                 reason{"deprecated"}\r
-                replacement{"laxs"}\r
+                replacement{"LA-XS"}\r
             }\r
-            lud{\r
+            LU-D{\r
                 reason{"deprecated"}\r
-                replacement{"lucl ludi lurd luvd luwi"}\r
+                replacement{"LU-CL LU-DI LU-RD LU-VD LU-WI"}\r
             }\r
-            lug{\r
+            LU-G{\r
                 reason{"deprecated"}\r
-                replacement{"luec lugr lurm"}\r
+                replacement{"LU-EC LU-GR LU-RM"}\r
             }\r
-            lul{\r
+            LU-L{\r
                 reason{"deprecated"}\r
-                replacement{"luca lues lulu lume"}\r
+                replacement{"LU-CA LU-ES LU-LU LU-ME"}\r
             }\r
-            mrnkc{\r
+            MR-NKC{\r
                 reason{"deprecated"}\r
-                replacement{"mr13 mr14 mr15"}\r
+                replacement{"MR-13 MR-14 MR-15"}\r
             }\r
-            nlaw{\r
+            NL-AW{\r
                 reason{"overlong"}\r
                 replacement{"AW"}\r
             }\r
-            nlcw{\r
+            NL-CW{\r
                 reason{"overlong"}\r
                 replacement{"CW"}\r
             }\r
-            nlsx{\r
+            NL-SX{\r
                 reason{"overlong"}\r
                 replacement{"SX"}\r
             }\r
-            nzn{\r
+            NZ-N{\r
                 reason{"deprecated"}\r
-                replacement{"nzauk nzbop nzgis nzhkb nzmwt nzntl nztki nzwgn nzwko"}\r
+                replacement{"NZ-AUK NZ-BOP NZ-GIS NZ-HKB NZ-MWT NZ-NTL NZ-TKI NZ-WGN NZ-WKO"}\r
             }\r
-            nzs{\r
+            NZ-S{\r
                 reason{"deprecated"}\r
-                replacement{"nzcan nzmbh nznsn nzota nzstl nztas nzwtc"}\r
+                replacement{"NZ-CAN NZ-MBH NZ-NSN NZ-OTA NZ-STL NZ-TAS NZ-WTC"}\r
             }\r
-            omba{\r
+            OM-BA{\r
                 reason{"deprecated"}\r
-                replacement{"ombj ombs"}\r
+                replacement{"OM-BJ OM-BS"}\r
             }\r
-            omsh{\r
+            OM-SH{\r
                 reason{"deprecated"}\r
-                replacement{"omsj omss"}\r
-            }\r
-            shta{\r
-                reason{"overlong"}\r
-                replacement{"TA"}\r
+                replacement{"OM-SJ OM-SS"}\r
             }\r
-            tteto{\r
+            TT-ETO{\r
                 reason{"deprecated"}\r
-                replacement{"tttob"}\r
+                replacement{"TT-TOB"}\r
             }\r
-            ttrcm{\r
+            TT-RCM{\r
                 reason{"deprecated"}\r
-                replacement{"ttmrc"}\r
+                replacement{"TT-MRC"}\r
             }\r
-            ttwto{\r
+            TT-WTO{\r
                 reason{"deprecated"}\r
-                replacement{"tttob"}\r
+                replacement{"TT-TOB"}\r
             }\r
-            twkhq{\r
+            TW-KHQ{\r
                 reason{"deprecated"}\r
-                replacement{"twkhh"}\r
+                replacement{"TW-KHH"}\r
             }\r
-            twtnq{\r
+            TW-TNQ{\r
                 reason{"deprecated"}\r
-                replacement{"twtnn"}\r
+                replacement{"TW-TNN"}\r
             }\r
-            twtpq{\r
+            TW-TPQ{\r
                 reason{"deprecated"}\r
-                replacement{"twnwt"}\r
+                replacement{"TW-NWT"}\r
             }\r
-            twtxq{\r
+            TW-TXQ{\r
                 reason{"deprecated"}\r
-                replacement{"twtxg"}\r
+                replacement{"TW-TXG"}\r
             }\r
-            usas{\r
+            US-AS{\r
                 reason{"overlong"}\r
                 replacement{"AS"}\r
             }\r
-            usgu{\r
+            US-GU{\r
                 reason{"overlong"}\r
                 replacement{"GU"}\r
             }\r
-            usmp{\r
+            US-MP{\r
                 reason{"overlong"}\r
                 replacement{"MP"}\r
             }\r
-            uspr{\r
+            US-PR{\r
                 reason{"overlong"}\r
                 replacement{"PR"}\r
             }\r
-            usum{\r
+            US-UM{\r
                 reason{"overlong"}\r
                 replacement{"UM"}\r
             }\r
-            usvi{\r
+            US-VI{\r
                 reason{"overlong"}\r
                 replacement{"VI"}\r
             }\r
@@ -4263,7 +4107,6 @@ metadata:table(nofallback){
         "bez_TZ",\r
         "bg_BG",\r
         "bgn_PK",\r
-        "blt_Tavt_VN",\r
         "bm_ML",\r
         "bm_Nkoo_ML",\r
         "bn_BD",\r
@@ -4277,7 +4120,6 @@ metadata:table(nofallback){
         "byn_ER",\r
         "ca_ES",\r
         "cch_NG",\r
-        "ccp_BD",\r
         "ce_RU",\r
         "cgg_UG",\r
         "chr_US",\r
index 007a56d..031595a 100644 (file)
@@ -3,79 +3,79 @@
 plurals:table(nofallback){\r
     locales{\r
         af{"set8"}\r
-        ak{"set6"}\r
+        ak{"set5"}\r
         am{"set1"}\r
-        ar{"set33"}\r
-        ars{"set33"}\r
+        ar{"set34"}\r
+        ars{"set34"}\r
         as{"set1"}\r
         asa{"set8"}\r
-        ast{"set4"}\r
+        ast{"set3"}\r
         az{"set8"}\r
-        be{"set26"}\r
+        be{"set27"}\r
         bem{"set8"}\r
         bez{"set8"}\r
         bg{"set8"}\r
-        bh{"set6"}\r
+        bh{"set5"}\r
         bm{"set0"}\r
         bn{"set1"}\r
         bo{"set0"}\r
-        br{"set30"}\r
+        br{"set31"}\r
         brx{"set8"}\r
-        bs{"set19"}\r
-        ca{"set4"}\r
+        bs{"set20"}\r
+        ca{"set3"}\r
         ce{"set8"}\r
         cgg{"set8"}\r
         chr{"set8"}\r
         ckb{"set8"}\r
-        cs{"set24"}\r
-        cy{"set34"}\r
-        da{"set9"}\r
-        de{"set4"}\r
-        dsb{"set22"}\r
+        cs{"set25"}\r
+        cy{"set35"}\r
+        da{"set10"}\r
+        de{"set3"}\r
+        dsb{"set23"}\r
         dv{"set8"}\r
         dz{"set0"}\r
         ee{"set8"}\r
         el{"set8"}\r
-        en{"set4"}\r
+        en{"set3"}\r
         eo{"set8"}\r
         es{"set8"}\r
-        et{"set4"}\r
+        et{"set3"}\r
         eu{"set8"}\r
         fa{"set1"}\r
         ff{"set2"}\r
-        fi{"set4"}\r
-        fil{"set12"}\r
+        fi{"set3"}\r
+        fil{"set13"}\r
         fo{"set8"}\r
         fr{"set2"}\r
         fur{"set8"}\r
-        fy{"set4"}\r
-        ga{"set31"}\r
-        gd{"set20"}\r
-        gl{"set4"}\r
+        fy{"set3"}\r
+        ga{"set32"}\r
+        gd{"set21"}\r
+        gl{"set3"}\r
         gsw{"set8"}\r
         gu{"set1"}\r
-        guw{"set6"}\r
-        gv{"set32"}\r
+        guw{"set5"}\r
+        gv{"set33"}\r
         ha{"set8"}\r
         haw{"set8"}\r
-        he{"set23"}\r
+        he{"set24"}\r
         hi{"set1"}\r
-        hr{"set19"}\r
-        hsb{"set22"}\r
+        hr{"set20"}\r
+        hsb{"set23"}\r
         hu{"set8"}\r
         hy{"set2"}\r
         id{"set0"}\r
         ig{"set0"}\r
         ii{"set0"}\r
         in{"set0"}\r
-        is{"set10"}\r
-        it{"set4"}\r
-        iu{"set16"}\r
-        iw{"set23"}\r
+        is{"set11"}\r
+        it{"set3"}\r
+        iu{"set17"}\r
+        iw{"set24"}\r
         ja{"set0"}\r
         jbo{"set0"}\r
         jgo{"set8"}\r
-        ji{"set4"}\r
+        ji{"set3"}\r
         jmc{"set8"}\r
         jv{"set0"}\r
         jw{"set0"}\r
@@ -93,206 +93,206 @@ plurals:table(nofallback){
         ko{"set0"}\r
         ks{"set8"}\r
         ksb{"set8"}\r
-        ksh{"set15"}\r
+        ksh{"set16"}\r
         ku{"set8"}\r
-        kw{"set16"}\r
+        kw{"set17"}\r
         ky{"set8"}\r
-        lag{"set14"}\r
+        lag{"set15"}\r
         lb{"set8"}\r
         lg{"set8"}\r
         lkt{"set0"}\r
-        ln{"set6"}\r
+        ln{"set5"}\r
         lo{"set0"}\r
-        lt{"set27"}\r
-        lv{"set13"}\r
+        lt{"set28"}\r
+        lv{"set14"}\r
         mas{"set8"}\r
-        mg{"set6"}\r
+        mg{"set5"}\r
         mgo{"set8"}\r
-        mk{"set11"}\r
+        mk{"set12"}\r
         ml{"set8"}\r
         mn{"set8"}\r
-        mo{"set18"}\r
+        mo{"set19"}\r
         mr{"set1"}\r
         ms{"set0"}\r
-        mt{"set28"}\r
+        mt{"set29"}\r
         my{"set0"}\r
         nah{"set8"}\r
-        naq{"set16"}\r
+        naq{"set17"}\r
         nb{"set8"}\r
         nd{"set8"}\r
         ne{"set8"}\r
-        nl{"set4"}\r
+        nl{"set3"}\r
         nn{"set8"}\r
         nnh{"set8"}\r
         no{"set8"}\r
         nqo{"set0"}\r
         nr{"set8"}\r
-        nso{"set6"}\r
+        nso{"set5"}\r
         ny{"set8"}\r
         nyn{"set8"}\r
         om{"set8"}\r
         or{"set8"}\r
         os{"set8"}\r
-        pa{"set6"}\r
+        pa{"set5"}\r
         pap{"set8"}\r
-        pl{"set25"}\r
-        prg{"set13"}\r
+        pl{"set26"}\r
+        prg{"set14"}\r
         ps{"set8"}\r
-        pt{"set3"}\r
+        pt{"set7"}\r
+        pt_PT{"set9"}\r
         rm{"set8"}\r
-        ro{"set18"}\r
+        ro{"set19"}\r
         rof{"set8"}\r
         root{"set0"}\r
-        ru{"set29"}\r
+        ru{"set30"}\r
         rwk{"set8"}\r
         sah{"set0"}\r
         saq{"set8"}\r
         sdh{"set8"}\r
-        se{"set16"}\r
+        se{"set17"}\r
         seh{"set8"}\r
         ses{"set0"}\r
         sg{"set0"}\r
-        sh{"set19"}\r
-        shi{"set17"}\r
-        si{"set5"}\r
-        sk{"set24"}\r
-        sl{"set21"}\r
-        sma{"set16"}\r
-        smi{"set16"}\r
-        smj{"set16"}\r
-        smn{"set16"}\r
-        sms{"set16"}\r
+        sh{"set20"}\r
+        shi{"set18"}\r
+        si{"set4"}\r
+        sk{"set25"}\r
+        sl{"set22"}\r
+        sma{"set17"}\r
+        smi{"set17"}\r
+        smj{"set17"}\r
+        smn{"set17"}\r
+        sms{"set17"}\r
         sn{"set8"}\r
         so{"set8"}\r
         sq{"set8"}\r
-        sr{"set19"}\r
+        sr{"set20"}\r
         ss{"set8"}\r
         ssy{"set8"}\r
         st{"set8"}\r
-        sv{"set4"}\r
-        sw{"set4"}\r
+        sv{"set3"}\r
+        sw{"set3"}\r
         syr{"set8"}\r
         ta{"set8"}\r
         te{"set8"}\r
         teo{"set8"}\r
         th{"set0"}\r
-        ti{"set6"}\r
+        ti{"set5"}\r
         tig{"set8"}\r
         tk{"set8"}\r
-        tl{"set12"}\r
+        tl{"set13"}\r
         tn{"set8"}\r
         to{"set0"}\r
         tr{"set8"}\r
         ts{"set8"}\r
-        tzm{"set7"}\r
+        tzm{"set6"}\r
         ug{"set8"}\r
-        uk{"set29"}\r
-        ur{"set4"}\r
+        uk{"set30"}\r
+        ur{"set3"}\r
         uz{"set8"}\r
         ve{"set8"}\r
         vi{"set0"}\r
         vo{"set8"}\r
         vun{"set8"}\r
-        wa{"set6"}\r
+        wa{"set5"}\r
         wae{"set8"}\r
         wo{"set0"}\r
         xh{"set8"}\r
         xog{"set8"}\r
-        yi{"set4"}\r
+        yi{"set3"}\r
         yo{"set0"}\r
         yue{"set0"}\r
         zh{"set0"}\r
         zu{"set1"}\r
     }\r
     locales_ordinals{\r
-        af{"set35"}\r
-        am{"set35"}\r
-        ar{"set35"}\r
-        as{"set52"}\r
-        az{"set50"}\r
-        be{"set40"}\r
-        bg{"set35"}\r
-        bn{"set52"}\r
-        bs{"set35"}\r
-        ca{"set48"}\r
-        ce{"set35"}\r
-        cs{"set35"}\r
-        cy{"set53"}\r
-        da{"set35"}\r
-        de{"set35"}\r
-        dsb{"set35"}\r
-        el{"set35"}\r
-        en{"set46"}\r
-        es{"set35"}\r
-        et{"set35"}\r
-        eu{"set35"}\r
-        fa{"set35"}\r
-        fi{"set35"}\r
-        fil{"set37"}\r
-        fr{"set37"}\r
-        fy{"set35"}\r
-        ga{"set37"}\r
-        gl{"set35"}\r
-        gsw{"set35"}\r
-        gu{"set51"}\r
-        he{"set35"}\r
-        hi{"set51"}\r
-        hr{"set35"}\r
-        hsb{"set35"}\r
-        hu{"set38"}\r
-        hy{"set37"}\r
-        id{"set35"}\r
-        in{"set35"}\r
-        is{"set35"}\r
-        it{"set43"}\r
-        iw{"set35"}\r
-        ja{"set35"}\r
-        ka{"set44"}\r
-        kk{"set42"}\r
-        km{"set35"}\r
-        kn{"set35"}\r
-        ko{"set35"}\r
-        ky{"set35"}\r
-        lo{"set37"}\r
-        lt{"set35"}\r
-        lv{"set35"}\r
-        mk{"set49"}\r
-        ml{"set35"}\r
-        mn{"set35"}\r
-        mo{"set37"}\r
-        mr{"set47"}\r
-        ms{"set37"}\r
-        my{"set35"}\r
-        nb{"set35"}\r
-        ne{"set39"}\r
-        nl{"set35"}\r
-        pa{"set35"}\r
-        pl{"set35"}\r
-        prg{"set35"}\r
-        pt{"set35"}\r
-        ro{"set37"}\r
-        root{"set35"}\r
-        ru{"set35"}\r
-        sh{"set35"}\r
-        si{"set35"}\r
-        sk{"set35"}\r
-        sl{"set35"}\r
-        sq{"set45"}\r
-        sr{"set35"}\r
-        sv{"set36"}\r
-        sw{"set35"}\r
-        ta{"set35"}\r
-        te{"set35"}\r
-        th{"set35"}\r
-        tl{"set37"}\r
-        tr{"set35"}\r
-        uk{"set41"}\r
-        ur{"set35"}\r
-        uz{"set35"}\r
-        vi{"set37"}\r
-        yue{"set35"}\r
-        zh{"set35"}\r
-        zu{"set35"}\r
+        af{"set36"}\r
+        am{"set36"}\r
+        ar{"set36"}\r
+        as{"set53"}\r
+        az{"set51"}\r
+        be{"set41"}\r
+        bg{"set36"}\r
+        bn{"set53"}\r
+        bs{"set36"}\r
+        ca{"set49"}\r
+        ce{"set36"}\r
+        cs{"set36"}\r
+        cy{"set54"}\r
+        da{"set36"}\r
+        de{"set36"}\r
+        dsb{"set36"}\r
+        el{"set36"}\r
+        en{"set47"}\r
+        es{"set36"}\r
+        et{"set36"}\r
+        eu{"set36"}\r
+        fa{"set36"}\r
+        fi{"set36"}\r
+        fil{"set38"}\r
+        fr{"set38"}\r
+        fy{"set36"}\r
+        ga{"set38"}\r
+        gl{"set36"}\r
+        gu{"set52"}\r
+        he{"set36"}\r
+        hi{"set52"}\r
+        hr{"set36"}\r
+        hsb{"set36"}\r
+        hu{"set39"}\r
+        hy{"set38"}\r
+        id{"set36"}\r
+        in{"set36"}\r
+        is{"set36"}\r
+        it{"set44"}\r
+        iw{"set36"}\r
+        ja{"set36"}\r
+        ka{"set45"}\r
+        kk{"set43"}\r
+        km{"set36"}\r
+        kn{"set36"}\r
+        ko{"set36"}\r
+        ky{"set36"}\r
+        lo{"set38"}\r
+        lt{"set36"}\r
+        lv{"set36"}\r
+        mk{"set50"}\r
+        ml{"set36"}\r
+        mn{"set36"}\r
+        mo{"set38"}\r
+        mr{"set48"}\r
+        ms{"set38"}\r
+        my{"set36"}\r
+        nb{"set36"}\r
+        ne{"set40"}\r
+        nl{"set36"}\r
+        pa{"set36"}\r
+        pl{"set36"}\r
+        prg{"set36"}\r
+        pt{"set36"}\r
+        ro{"set38"}\r
+        root{"set36"}\r
+        ru{"set36"}\r
+        sh{"set36"}\r
+        si{"set36"}\r
+        sk{"set36"}\r
+        sl{"set36"}\r
+        sq{"set46"}\r
+        sr{"set36"}\r
+        sv{"set37"}\r
+        sw{"set36"}\r
+        ta{"set36"}\r
+        te{"set36"}\r
+        th{"set36"}\r
+        tl{"set38"}\r
+        tr{"set36"}\r
+        uk{"set42"}\r
+        ur{"set36"}\r
+        uz{"set36"}\r
+        vi{"set38"}\r
+        yue{"set36"}\r
+        zh{"set36"}\r
+        zu{"set36"}\r
     }\r
     rules{\r
         set0{\r
@@ -309,6 +309,13 @@ plurals:table(nofallback){
             }\r
         }\r
         set10{\r
+            one{"n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6"}\r
+            other{\r
+                " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
+                ", 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set11{\r
             one{\r
                 "t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31,"\r
                 " 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 100"\r
@@ -320,7 +327,7 @@ plurals:table(nofallback){
                 "00000.0, 1000000.0, …"\r
             }\r
         }\r
-        set11{\r
+        set12{\r
             one{\r
                 "v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 6"\r
                 "1, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1,"\r
@@ -332,7 +339,7 @@ plurals:table(nofallback){
                 "000000.0, …"\r
             }\r
         }\r
-        set12{\r
+        set13{\r
             one{\r
                 "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 1"\r
                 "0 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 10"\r
@@ -345,7 +352,7 @@ plurals:table(nofallback){
                 "6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, …"\r
             }\r
         }\r
-        set13{\r
+        set14{\r
             one{\r
                 "n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != "\r
                 "11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, "\r
@@ -363,7 +370,7 @@ plurals:table(nofallback){
                 "10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set14{\r
+        set15{\r
             one{"i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6"}\r
             other{\r
                 " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
@@ -371,7 +378,7 @@ plurals:table(nofallback){
             }\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set15{\r
+        set16{\r
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}\r
             other{\r
                 " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
@@ -379,7 +386,7 @@ plurals:table(nofallback){
             }\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set16{\r
+        set17{\r
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}\r
             other{\r
                 " @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
@@ -387,7 +394,7 @@ plurals:table(nofallback){
             }\r
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
         }\r
-        set17{\r
+        set18{\r
             few{\r
                 "n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, "\r
                 "9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00"\r
@@ -398,7 +405,7 @@ plurals:table(nofallback){
                 ".9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set18{\r
+        set19{\r
             few{\r
                 "v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101,"\r
                 " 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1"\r
@@ -407,7 +414,14 @@ plurals:table(nofallback){
             one{"i = 1 and v = 0 @integer 1"}\r
             other{" @integer 20~35, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set19{\r
+        set2{\r
+            one{"i = 0,1 @integer 0, 1 @decimal 0.0~1.5"}\r
+            other{\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
+                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set20{\r
             few{\r
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f"\r
                 " % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, "\r
@@ -425,14 +439,7 @@ plurals:table(nofallback){
                 " 1000000.0, …"\r
             }\r
         }\r
-        set2{\r
-            one{"i = 0,1 @integer 0, 1 @decimal 0.0~1.5"}\r
-            other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
-                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set20{\r
+        set21{\r
             few{\r
                 "n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7"\r
                 ".0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00"\r
@@ -450,7 +457,7 @@ plurals:table(nofallback){
                 "00, 2.0000"\r
             }\r
         }\r
-        set21{\r
+        set22{\r
             few{\r
                 "v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204"\r
                 ", 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal"\r
@@ -466,7 +473,7 @@ plurals:table(nofallback){
                 " 1002, …"\r
             }\r
         }\r
-        set22{\r
+        set23{\r
             few{\r
                 "v = 0 and i % 100 = 3..4 or f % 100 = 3..4 @integer 3, 4, 103, 104, "\r
                 "203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … "\r
@@ -489,7 +496,7 @@ plurals:table(nofallback){
                 "7.2, 10.2, 100.2, 1000.2, …"\r
             }\r
         }\r
-        set23{\r
+        set24{\r
             many{\r
                 "v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70,"\r
                 " 80, 90, 100, 1000, 10000, 100000, 1000000, …"\r
@@ -501,7 +508,7 @@ plurals:table(nofallback){
             }\r
             two{"i = 2 and v = 0 @integer 2"}\r
         }\r
-        set24{\r
+        set25{\r
             few{"i = 2..4 and v = 0 @integer 2~4"}\r
             many{\r
                 "v != 0   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1"\r
@@ -510,7 +517,7 @@ plurals:table(nofallback){
             one{"i = 1 and v = 0 @integer 1"}\r
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set25{\r
+        set26{\r
             few{\r
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 3"\r
                 "2~34, 42~44, 52~54, 62, 102, 1002, …"\r
@@ -526,7 +533,7 @@ plurals:table(nofallback){
                 ".0, …"\r
             }\r
         }\r
-        set26{\r
+        set27{\r
             few{\r
                 "n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~4"\r
                 "4, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0,"\r
@@ -544,7 +551,7 @@ plurals:table(nofallback){
             }\r
             other{"   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …"}\r
         }\r
-        set27{\r
+        set28{\r
             few{\r
                 "n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, "\r
                 "… @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002"\r
@@ -562,7 +569,7 @@ plurals:table(nofallback){
                 "1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set28{\r
+        set29{\r
             few{\r
                 "n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal"\r
                 " 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …"\r
@@ -577,7 +584,14 @@ plurals:table(nofallback){
                 ".9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
-        set29{\r
+        set3{\r
+            one{"i = 1 and v = 0 @integer 1"}\r
+            other{\r
+                " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
+                "~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set30{\r
             few{\r
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 3"\r
                 "2~34, 42~44, 52~54, 62, 102, 1002, …"\r
@@ -595,14 +609,7 @@ plurals:table(nofallback){
                 ".0, …"\r
             }\r
         }\r
-        set3{\r
-            one{"i = 0..1 @integer 0, 1 @decimal 0.0~1.5"}\r
-            other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."\r
-                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set30{\r
+        set31{\r
             few{\r
                 "n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9"\r
                 ", 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0"\r
@@ -627,7 +634,7 @@ plurals:table(nofallback){
                 "2.0, 1002.0, …"\r
             }\r
         }\r
-        set31{\r
+        set32{\r
             few{\r
                 "n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00,"\r
                 " 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000"\r
@@ -644,7 +651,7 @@ plurals:table(nofallback){
             }\r
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
         }\r
-        set32{\r
+        set33{\r
             few{\r
                 "v = 0 and i % 100 = 0,20,40,60,80 @integer 0, 20, 40, 60, 80, 100, 1"\r
                 "20, 140, 1000, 10000, 100000, 1000000, …"\r
@@ -663,7 +670,7 @@ plurals:table(nofallback){
                 "02, …"\r
             }\r
         }\r
-        set33{\r
+        set34{\r
             few{\r
                 "n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5"\r
                 ".0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …"\r
@@ -681,7 +688,7 @@ plurals:table(nofallback){
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set34{\r
+        set35{\r
             few{"n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000"}\r
             many{"n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000"}\r
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}\r
@@ -693,50 +700,53 @@ plurals:table(nofallback){
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}\r
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}\r
         }\r
-        set35{\r
+        set36{\r
             other{" @integer 0~15, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set36{\r
+        set37{\r
             one{\r
                 "n % 10 = 1,2 and n % 100 != 11,12 @integer 1, 2, 21, 22, 31, 32, 41,"\r
                 " 42, 51, 52, 61, 62, 71, 72, 81, 82, 101, 1001, …"\r
             }\r
             other{" @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set37{\r
+        set38{\r
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set38{\r
+        set39{\r
             one{"n = 1,5 @integer 1, 5"}\r
             other{" @integer 0, 2~4, 6~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set39{\r
-            one{"n = 1..4 @integer 1~4"}\r
-            other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
-        }\r
         set4{\r
-            one{"i = 1 and v = 0 @integer 1"}\r
+            one{\r
+                "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.0"\r
+                "0, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000"\r
+            }\r
             other{\r
-                " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
-                "~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0."\r
+                "9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
         set40{\r
+            one{"n = 1..4 @integer 1~4"}\r
+            other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
+        }\r
+        set41{\r
             few{\r
                 "n % 10 = 2,3 and n % 100 != 12,13 @integer 2, 3, 22, 23, 32, 33, 42,"\r
                 " 43, 52, 53, 62, 63, 72, 73, 82, 83, 102, 1002, …"\r
             }\r
             other{" @integer 0, 1, 4~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set41{\r
+        set42{\r
             few{\r
                 "n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83,"\r
                 " 103, 1003, …"\r
             }\r
             other{" @integer 0~2, 4~16, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set42{\r
+        set43{\r
             many{\r
                 "n % 10 = 6 or n % 10 = 9 or n % 10 = 0 and n != 0 @integer 6, 9, 10,"\r
                 " 16, 19, 20, 26, 29, 30, 36, 39, 40, 100, 1000, 10000, 100000, 10000"\r
@@ -744,16 +754,16 @@ plurals:table(nofallback){
             }\r
             other{" @integer 0~5, 7, 8, 11~15, 17, 18, 21, 101, 1001, …"}\r
         }\r
-        set43{\r
+        set44{\r
             many{"n = 11,8,80,800 @integer 8, 11, 80, 800"}\r
             other{" @integer 0~7, 9, 10, 12~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set44{\r
+        set45{\r
             many{"i = 0 or i % 100 = 2..20,40,60,80 @integer 0, 2~16, 102, 1002, …"}\r
             one{"i = 1 @integer 1"}\r
             other{" @integer 21~36, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set45{\r
+        set46{\r
             many{\r
                 "n % 10 = 4 and n % 100 != 14 @integer 4, 24, 34, 44, 54, 64, 74, 84,"\r
                 " 104, 1004, …"\r
@@ -761,7 +771,7 @@ plurals:table(nofallback){
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 2, 3, 5~17, 100, 1000, 10000, 100000, 1000000, …"}\r
         }\r
-        set46{\r
+        set47{\r
             few{\r
                 "n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83,"\r
                 " 103, 1003, …"\r
@@ -776,19 +786,29 @@ plurals:table(nofallback){
                 " 102, 1002, …"\r
             }\r
         }\r
-        set47{\r
+        set48{\r
             few{"n = 4 @integer 4"}\r
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2,3 @integer 2, 3"}\r
         }\r
-        set48{\r
+        set49{\r
             few{"n = 4 @integer 4"}\r
             one{"n = 1,3 @integer 1, 3"}\r
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2 @integer 2"}\r
         }\r
-        set49{\r
+        set5{\r
+            one{\r
+                "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, "\r
+                "0.0000, 1.0000"\r
+            }\r
+            other{\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
+                "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+            }\r
+        }\r
+        set50{\r
             many{\r
                 "i % 10 = 7,8 and i % 100 != 17,18 @integer 7, 8, 27, 28, 37, 38, 47,"\r
                 " 48, 57, 58, 67, 68, 77, 78, 87, 88, 107, 1007, …"\r
@@ -803,17 +823,7 @@ plurals:table(nofallback){
                 " 102, 1002, …"\r
             }\r
         }\r
-        set5{\r
-            one{\r
-                "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.0"\r
-                "0, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000"\r
-            }\r
-            other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0."\r
-                "9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
-            }\r
-        }\r
-        set50{\r
+        set51{\r
             few{\r
                 "i % 10 = 3,4 or i % 1000 = 100,200,300,400,500,600,700,800,900 @inte"\r
                 "ger 3, 4, 13, 14, 23, 24, 33, 34, 43, 44, 53, 54, 63, 64, 73, 74, 10"\r
@@ -832,21 +842,21 @@ plurals:table(nofallback){
                 "00000, 1000000, …"\r
             }\r
         }\r
-        set51{\r
+        set52{\r
             few{"n = 4 @integer 4"}\r
             many{"n = 6 @integer 6"}\r
             one{"n = 1 @integer 1"}\r
             other{" @integer 0, 5, 7~20, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2,3 @integer 2, 3"}\r
         }\r
-        set52{\r
+        set53{\r
             few{"n = 4 @integer 4"}\r
             many{"n = 6 @integer 6"}\r
             one{"n = 1,5,7,8,9,10 @integer 1, 5, 7~10"}\r
             other{" @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, …"}\r
             two{"n = 2,3 @integer 2, 3"}\r
         }\r
-        set53{\r
+        set54{\r
             few{"n = 3,4 @integer 3, 4"}\r
             many{"n = 5,6 @integer 5, 6"}\r
             one{"n = 1 @integer 1"}\r
@@ -856,23 +866,23 @@ plurals:table(nofallback){
         }\r
         set6{\r
             one{\r
-                "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, "\r
-                "0.0000, 1.0000"\r
+                "n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0,"\r
+                " 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 2"\r
+                "3.0, 24.0"\r
             }\r
             other{\r
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
-                "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                " @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0."\r
+                "1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
         set7{\r
             one{\r
-                "n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0,"\r
-                " 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 2"\r
-                "3.0, 24.0"\r
+                "n = 0..2 and n != 2 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.0"\r
+                "00, 1.000, 0.0000, 1.0000"\r
             }\r
             other{\r
-                " @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0."\r
-                "1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0."\r
+                "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
         set8{\r
@@ -883,10 +893,10 @@ plurals:table(nofallback){
             }\r
         }\r
         set9{\r
-            one{"n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6"}\r
+            one{"n = 1 and v = 0 @integer 1"}\r
             other{\r
                 " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0"\r
-                ", 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
+                "~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"\r
             }\r
         }\r
     }\r
index 1cc21d7..86f8039 100644 (file)
@@ -1841,7 +1841,7 @@ supplementalData:table(nofallback){
             "islamic-tbla",\r
         }\r
     }\r
-    cldrVersion{"31.0.1"}\r
+    cldrVersion{"30.0.3"}\r
     codeMappings{\r
         {\r
             "AA",\r
@@ -4100,7 +4100,6 @@ supplementalData:table(nofallback){
                 "BRZ",\r
                 "BUK",\r
                 "BYB",\r
-                "BYR",\r
                 "CHE",\r
                 "CHW",\r
                 "CLE~F",\r
@@ -4230,6 +4229,7 @@ supplementalData:table(nofallback){
                 "BTN",\r
                 "BWP",\r
                 "BYN",\r
+                "BYR",\r
                 "BZD",\r
                 "CAD",\r
                 "CDF",\r
@@ -7355,53 +7355,20 @@ supplementalData:table(nofallback){
                 "ba01~9",\r
                 "ba10",\r
                 "bh16",\r
-                "cdbn",\r
-                "cdka",\r
-                "cdkw",\r
-                "cdor",\r
                 "ci01~9",\r
                 "ci10~9",\r
                 "cn71",\r
                 "cn91~2",\r
-                "cz10a~f",\r
-                "cz611~5",\r
-                "cz621~7",\r
-                "czjc",\r
-                "czjm",\r
-                "czka",\r
-                "czkr",\r
-                "czli",\r
-                "czmo",\r
-                "czol",\r
-                "czpa",\r
-                "czpl",\r
-                "czpr",\r
-                "czst",\r
-                "czus",\r
-                "czvy",\r
-                "czzl",\r
-                "escn",\r
-                "fi01",\r
-                "fra~b",\r
                 "frbl",\r
-                "frc",\r
-                "frcp",\r
-                "frd~g",\r
                 "frgf",\r
                 "frgp",\r
-                "frh~m",\r
                 "frmf",\r
                 "frmq",\r
-                "frn",\r
                 "frnc",\r
-                "fro~p",\r
                 "frpf",\r
                 "frpm",\r
-                "frq~r",\r
                 "frre",\r
-                "frs~t",\r
                 "frtf",\r
-                "fru~v",\r
                 "frwf",\r
                 "fryt",\r
                 "gbant",\r
@@ -7429,18 +7396,6 @@ supplementalData:table(nofallback){
                 "gbnym",\r
                 "gbomh",\r
                 "gbstb",\r
-                "gr01",\r
-                "gr03~7",\r
-                "gr11~7",\r
-                "gr21~4",\r
-                "gr31~4",\r
-                "gr41~4",\r
-                "gr51~9",\r
-                "gr61~4",\r
-                "gr71~3",\r
-                "gr81~5",\r
-                "gr91~4",\r
-                "gra1",\r
                 "is0",\r
                 "laxn",\r
                 "lud",\r
@@ -7459,7 +7414,6 @@ supplementalData:table(nofallback){
                 "mk79",\r
                 "mk84",\r
                 "mrnkc",\r
-                "mxdif",\r
                 "nlaw",\r
                 "nlcw",\r
                 "nlsx",\r
@@ -7467,7 +7421,6 @@ supplementalData:table(nofallback){
                 "nzs",\r
                 "omba",\r
                 "omsh",\r
-                "shta",\r
                 "tteto",\r
                 "ttrcm",\r
                 "ttwto",\r
@@ -7475,7 +7428,6 @@ supplementalData:table(nofallback){
                 "twtnq",\r
                 "twtpq",\r
                 "twtxq",\r
-                "ug331",\r
                 "usas",\r
                 "usgu",\r
                 "usmp",\r
@@ -7657,7 +7609,7 @@ supplementalData:table(nofallback){
                 "bd40~9",\r
                 "bd50~9",\r
                 "bd60~4",\r
-                "bda~h",\r
+                "bda~g",\r
                 "bebru",\r
                 "bevan",\r
                 "bevbr",\r
@@ -7859,29 +7811,16 @@ supplementalData:table(nofallback){
                 "cask",\r
                 "cayt",\r
                 "cdbc",\r
-                "cdbu",\r
+                "cdbn",\r
                 "cdeq",\r
-                "cdhk~l",\r
-                "cdhu",\r
-                "cdit",\r
-                "cdkc",\r
+                "cdka",\r
                 "cdke",\r
-                "cdkg",\r
-                "cdkl",\r
                 "cdkn",\r
-                "cdks",\r
-                "cdlo",\r
-                "cdlu",\r
+                "cdkw",\r
                 "cdma",\r
-                "cdmn~o",\r
                 "cdnk",\r
-                "cdnu",\r
-                "cdsa",\r
+                "cdor",\r
                 "cdsk",\r
-                "cdsu",\r
-                "cdta",\r
-                "cdto",\r
-                "cdtu",\r
                 "cfac",\r
                 "cfbb",\r
                 "cfbgf",\r
@@ -8040,37 +7979,36 @@ supplementalData:table(nofallback){
                 "cvta",\r
                 "cvts",\r
                 "cy01~6",\r
-                "cz10",\r
                 "cz101~9",\r
-                "cz110~9",\r
-                "cz120~2",\r
-                "cz20",\r
+                "cz10a~f",\r
                 "cz201~9",\r
                 "cz20a~c",\r
-                "cz31",\r
                 "cz311~7",\r
-                "cz32",\r
                 "cz321~7",\r
-                "cz41",\r
                 "cz411~3",\r
-                "cz42",\r
                 "cz421~7",\r
-                "cz51",\r
                 "cz511~4",\r
-                "cz52",\r
                 "cz521~5",\r
-                "cz53",\r
                 "cz531~4",\r
-                "cz63",\r
-                "cz631~5",\r
-                "cz64",\r
-                "cz641~7",\r
-                "cz71",\r
+                "cz611~5",\r
+                "cz621~7",\r
                 "cz711~5",\r
-                "cz72",\r
                 "cz721~4",\r
-                "cz80",\r
                 "cz801~6",\r
+                "czjc",\r
+                "czjm",\r
+                "czka",\r
+                "czkr",\r
+                "czli",\r
+                "czmo",\r
+                "czol",\r
+                "czpa",\r
+                "czpl",\r
+                "czpr",\r
+                "czst",\r
+                "czus",\r
+                "czvy",\r
+                "czzl",\r
                 "debb",\r
                 "debe",\r
                 "debw",\r
@@ -8171,8 +8109,7 @@ supplementalData:table(nofallback){
                 "esc",\r
                 "esca~c",\r
                 "esce",\r
-                "escl~m",\r
-                "esco",\r
+                "escl~o",\r
                 "escr~u",\r
                 "esex",\r
                 "esga",\r
@@ -8227,7 +8164,7 @@ supplementalData:table(nofallback){
                 "etor",\r
                 "etsn~o",\r
                 "etti",\r
-                "fi02~9",\r
+                "fi01~9",\r
                 "fi10~9",\r
                 "fj01~9",\r
                 "fj10~4",\r
@@ -8251,22 +8188,9 @@ supplementalData:table(nofallback){
                 "fr70~9",\r
                 "fr80~9",\r
                 "fr90~5",\r
-                "frara",\r
-                "frbfc",\r
-                "frbre",\r
-                "frcor",\r
-                "frcvl",\r
-                "frges",\r
-                "frgua",\r
-                "frhdf",\r
-                "fridf",\r
-                "frlre",\r
-                "frmay",\r
-                "frnaq",\r
-                "frnor",\r
-                "frocc",\r
-                "frpac",\r
-                "frpdl",\r
+                "fra~c",\r
+                "frcp",\r
+                "frd~v",\r
                 "ga1~9",\r
                 "gbabc~e",\r
                 "gbagb",\r
@@ -8556,8 +8480,21 @@ supplementalData:table(nofallback){
                 "gqkn",\r
                 "gqli",\r
                 "gqwn",\r
+                "gr01",\r
+                "gr03~7",\r
+                "gr11~7",\r
+                "gr21~4",\r
+                "gr31~4",\r
+                "gr41~4",\r
+                "gr51~9",\r
+                "gr61~4",\r
                 "gr69",\r
-                "gra~m",\r
+                "gr71~3",\r
+                "gr81~5",\r
+                "gr91~4",\r
+                "gra",\r
+                "gra1",\r
+                "grb~m",\r
                 "gtav",\r
                 "gtbv",\r
                 "gtcm",\r
@@ -8951,7 +8888,6 @@ supplementalData:table(nofallback){
                 "kzalm",\r
                 "kzast",\r
                 "kzaty",\r
-                "kzbay",\r
                 "kzkar",\r
                 "kzkus",\r
                 "kzkzy",\r
@@ -9354,9 +9290,9 @@ supplementalData:table(nofallback){
                 "mxcam",\r
                 "mxchh",\r
                 "mxchp",\r
-                "mxcmx",\r
                 "mxcoa",\r
                 "mxcol",\r
+                "mxdif",\r
                 "mxdur",\r
                 "mxgro",\r
                 "mxgua",\r
@@ -9888,6 +9824,7 @@ supplementalData:table(nofallback){
                 "sg01~5",\r
                 "shac",\r
                 "shhl",\r
+                "shta",\r
                 "si001~9",\r
                 "si010~9",\r
                 "si020~9",\r
@@ -9910,7 +9847,7 @@ supplementalData:table(nofallback){
                 "si180~9",\r
                 "si190~9",\r
                 "si200~9",\r
-                "si210~3",\r
+                "si210~2",\r
                 "skbc",\r
                 "skbl",\r
                 "skki",\r
@@ -10049,7 +9986,6 @@ supplementalData:table(nofallback){
                 "tjdu",\r
                 "tjgb",\r
                 "tjkt",\r
-                "tjra",\r
                 "tjsu",\r
                 "tlal",\r
                 "tlan",\r
@@ -10172,10 +10108,10 @@ supplementalData:table(nofallback){
                 "ug301~9",\r
                 "ug310~9",\r
                 "ug320~9",\r
-                "ug330",\r
+                "ug330~1",\r
                 "ug401~9",\r
                 "ug410~9",\r
-                "ug420~6",\r
+                "ug420~5",\r
                 "ugc",\r
                 "uge",\r
                 "ugn",\r
@@ -10806,7 +10742,6 @@ supplementalData:table(nofallback){
                 "nulik",\r
                 "osojs",\r
                 "oxendict",\r
-                "pahawh2~4",\r
                 "pamaka",\r
                 "petr1708",\r
                 "pinyin",\r
@@ -11630,10 +11565,10 @@ supplementalData:table(nofallback){
         }\r
         ccp{\r
             primary{\r
-                scripts{\r
-                    "Beng",\r
-                    "Cakm",\r
-                }\r
+                scripts{"Beng"}\r
+            }\r
+            secondary{\r
+                scripts{"Cakm"}\r
             }\r
         }\r
         ce{\r
@@ -11896,6 +11831,7 @@ supplementalData:table(nofallback){
                     "BE",\r
                     "CH",\r
                     "DE",\r
+                    "IT",\r
                     "LI",\r
                     "LU",\r
                 }\r
@@ -13061,11 +12997,6 @@ supplementalData:table(nofallback){
                 scripts{"Arab"}\r
             }\r
         }\r
-        ife{\r
-            primary{\r
-                scripts{"Latn"}\r
-            }\r
-        }\r
         ig{\r
             primary{\r
                 scripts{"Latn"}\r
@@ -13129,7 +13060,6 @@ supplementalData:table(nofallback){
                     "CH",\r
                     "IT",\r
                     "SM",\r
-                    "VA",\r
                 }\r
             }\r
             secondary{\r
@@ -13139,6 +13069,7 @@ supplementalData:table(nofallback){
                     "HR",\r
                     "MT",\r
                     "US",\r
+                    "VA",\r
                 }\r
             }\r
         }\r
@@ -13186,6 +13117,9 @@ supplementalData:table(nofallback){
             primary{\r
                 scripts{"Deva"}\r
             }\r
+            secondary{\r
+                territories{"NP"}\r
+            }\r
         }\r
         jpr{\r
             primary{\r
@@ -14418,6 +14352,9 @@ supplementalData:table(nofallback){
             primary{\r
                 scripts{"Deva"}\r
             }\r
+            secondary{\r
+                territories{"NP"}\r
+            }\r
         }\r
         ng{\r
             primary{\r
@@ -16538,66 +16475,6 @@ supplementalData:table(nofallback){
     languageMatching{\r
         written{\r
             {\r
-                "no",\r
-                "nb",\r
-                "99",\r
-                "0",\r
-            }\r
-            {\r
-                "hr",\r
-                "bs",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "sh",\r
-                "bs",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "sh",\r
-                "hr",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "sh",\r
-                "sr",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "ssy",\r
-                "aa",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "gsw",\r
-                "de",\r
-                "96",\r
-                "1",\r
-            }\r
-            {\r
-                "lb",\r
-                "de",\r
-                "96",\r
-                "1",\r
-            }\r
-            {\r
-                "da",\r
-                "no",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "da",\r
-                "nb",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
                 "ab",\r
                 "ru",\r
                 "90",\r
@@ -16634,19 +16511,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "az",\r
-                "ru",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "az_Latn",\r
                 "ru_Cyrl",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "be",\r
+                "az",\r
                 "ru",\r
                 "90",\r
                 "1",\r
@@ -16658,14 +16529,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "bho",\r
-                "hi",\r
+                "be",\r
+                "ru",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "bn",\r
-                "en",\r
+                "bh",\r
+                "hi",\r
                 "90",\r
                 "1",\r
             }\r
@@ -16676,6 +16547,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "bn",\r
+                "en",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "br",\r
                 "fr",\r
                 "90",\r
@@ -16700,6 +16577,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "ckb",\r
+                "ku",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
                 "co",\r
                 "fr",\r
                 "90",\r
@@ -16718,18 +16601,72 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "da",\r
+                "nb",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
+                "da",\r
+                "no",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
                 "ee",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
+                "en_*_001",\r
+                "en_*_*",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "en_*_GB",\r
+                "en_*_*",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "en_*_US",\r
+                "en_*_*",\r
+                "94",\r
+                "0",\r
+            }\r
+            {\r
+                "en_*_*",\r
+                "en_*_*",\r
+                "95",\r
+                "0",\r
+            }\r
+            {\r
                 "eo",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
+                "es_*_419",\r
+                "es_*_*",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "es_*_ES",\r
+                "es_*_*",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
+                "es_*_*",\r
+                "es_*_*",\r
+                "95",\r
+                "0",\r
+            }\r
+            {\r
                 "et",\r
                 "fi",\r
                 "90",\r
@@ -16754,13 +16691,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ga",\r
+                "gaa",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "gaa",\r
+                "ga",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -16784,6 +16721,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "gsw",\r
+                "de",\r
+                "96",\r
+                "1",\r
+            }\r
+            {\r
                 "gu",\r
                 "hi",\r
                 "90",\r
@@ -16802,14 +16745,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ht",\r
-                "fr",\r
-                "90",\r
-                "1",\r
+                "hr",\r
+                "bs",\r
+                "96",\r
+                "0",\r
             }\r
             {\r
-                "hy",\r
-                "ru",\r
+                "ht",\r
+                "fr",\r
                 "90",\r
                 "1",\r
             }\r
@@ -16820,6 +16763,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "hy",\r
+                "ru",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "ia",\r
                 "en",\r
                 "90",\r
@@ -16868,19 +16817,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "km",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "km_Khmr",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "kn",\r
+                "km",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -16892,6 +16835,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "kn",\r
+                "en",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "kri",\r
                 "en",\r
                 "90",\r
@@ -16899,6 +16848,12 @@ supplementalData:table(nofallback){
             }\r
             {\r
                 "ku",\r
+                "ckb",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "ku",\r
                 "tr",\r
                 "90",\r
                 "1",\r
@@ -16916,6 +16871,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "lb",\r
+                "de",\r
+                "96",\r
+                "1",\r
+            }\r
+            {\r
                 "lg",\r
                 "en",\r
                 "90",\r
@@ -16928,14 +16889,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "lo",\r
-                "en",\r
+                "lo_Laoo",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "lo_Laoo",\r
-                "en_Latn",\r
+                "lo",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
@@ -16976,14 +16937,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ml",\r
-                "en",\r
+                "ml_Mlym",\r
+                "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ml_Mlym",\r
-                "en_Latn",\r
+                "ml",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17012,19 +16973,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "my",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "my_Mymr",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ne",\r
+                "my",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -17036,6 +16991,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "ne",\r
+                "en",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "nn",\r
                 "nb",\r
                 "90",\r
@@ -17048,6 +17009,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "no",\r
+                "nb",\r
+                "99",\r
+                "0",\r
+            }\r
+            {\r
                 "nso",\r
                 "en",\r
                 "90",\r
@@ -17078,19 +17045,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "or",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "or_Orya",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "pa",\r
+                "or",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -17102,13 +17063,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "pcm",\r
+                "pa",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ps",\r
+                "pcm",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -17120,6 +17081,36 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "ps",\r
+                "en",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
+                "pt_*_BR",\r
+                "pt_*_US",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_BR",\r
+                "pt_*_*",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_US",\r
+                "pt_*_*",\r
+                "92",\r
+                "0",\r
+            }\r
+            {\r
+                "pt_*_*",\r
+                "pt_*_*",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
                 "qu",\r
                 "es",\r
                 "90",\r
@@ -17150,30 +17141,48 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "sd",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "sd_Arab",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "si",\r
+                "sd",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
+                "sh",\r
+                "bs",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "sh",\r
+                "hr",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "sh",\r
+                "sr",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
                 "si_Sinh",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
+                "si",\r
+                "en",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "sn",\r
                 "en",\r
                 "90",\r
@@ -17192,6 +17201,30 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "sr_Latn",\r
+                "sr_Cyrl",\r
+                "95",\r
+                "0",\r
+            }\r
+            {\r
+                "sr",\r
+                "bs",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "sr",\r
+                "hr",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
+                "ssy",\r
+                "aa",\r
+                "96",\r
+                "0",\r
+            }\r
+            {\r
                 "st",\r
                 "en",\r
                 "90",\r
@@ -17210,19 +17243,13 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ta",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "ta_Taml",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "te",\r
+                "ta",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -17234,14 +17261,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "tg",\r
-                "ru",\r
+                "te",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "ti",\r
-                "en",\r
+                "tg",\r
+                "ru",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17252,8 +17279,8 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "tk",\r
-                "ru",\r
+                "ti",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17264,6 +17291,12 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
+                "tk",\r
+                "ru",\r
+                "90",\r
+                "1",\r
+            }\r
+            {\r
                 "tlh",\r
                 "en",\r
                 "90",\r
@@ -17300,20 +17333,14 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "ur",\r
-                "en",\r
-                "90",\r
-                "1",\r
-            }\r
-            {\r
                 "ur_Arab",\r
                 "en_Latn",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "uz",\r
-                "ru",\r
+                "ur",\r
+                "en",\r
                 "90",\r
                 "1",\r
             }\r
@@ -17324,19 +17351,19 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "wo",\r
-                "fr",\r
+                "uz",\r
+                "ru",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "xh",\r
-                "en",\r
+                "wo",\r
+                "fr",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "yi",\r
+                "xh",\r
                 "en",\r
                 "90",\r
                 "1",\r
@@ -17348,7108 +17375,6140 @@ supplementalData:table(nofallback){
                 "1",\r
             }\r
             {\r
-                "yo",\r
+                "yi",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "zu",\r
+                "yo",\r
                 "en",\r
                 "90",\r
                 "1",\r
             }\r
             {\r
-                "sr_Latn",\r
-                "sr_Cyrl",\r
-                "95",\r
+                "zh_Hant_HK",\r
+                "zh_Hant_MO",\r
+                "97",\r
                 "0",\r
             }\r
             {\r
-                "zh_Hans",\r
-                "zh_Hant",\r
-                "85",\r
+                "zu",\r
+                "en",\r
+                "90",\r
                 "1",\r
             }\r
             {\r
-                "zh_Hant",\r
-                "zh_Hans",\r
-                "81",\r
+                "*_Hans",\r
+                "*_Hant",\r
+                "85",\r
                 "1",\r
             }\r
             {\r
-                "zh_Hant_HK",\r
-                "zh_Hant_MO",\r
-                "97",\r
-                "0",\r
+                "*_Hant",\r
+                "*_Hans",\r
+                "81",\r
+                "1",\r
             }\r
             {\r
-                "pt_*_BR",\r
-                "pt_*_US",\r
+                "*_*_*",\r
+                "*_*_*",\r
                 "96",\r
                 "0",\r
             }\r
             {\r
-                "pt_*_US",\r
-                "pt_*_*",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_BR",\r
-                "pt_*_*",\r
-                "92",\r
+                "*_*",\r
+                "*_*",\r
+                "60",\r
                 "0",\r
             }\r
             {\r
-                "pt_*_*",\r
-                "pt_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_US",\r
-                "en_*_*",\r
-                "94",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_GB",\r
-                "en_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_001",\r
-                "en_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_*",\r
-                "en_*_*",\r
-                "95",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_ES",\r
-                "es_*_*",\r
-                "92",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_419",\r
-                "es_*_*",\r
-                "96",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_*",\r
-                "es_*_*",\r
-                "95",\r
-                "0",\r
-            }\r
-            {\r
-                "*",\r
-                "*",\r
-                "20",\r
-                "0",\r
-            }\r
-            {\r
-                "*_*",\r
-                "*_*",\r
-                "60",\r
-                "0",\r
-            }\r
-            {\r
-                "*_*_*",\r
-                "*_*_*",\r
-                "96",\r
+                "*",\r
+                "*",\r
+                "20",\r
                 "0",\r
             }\r
         }\r
     }\r
-    languageMatchingInfo{\r
-        written{\r
-            matchVariable{\r
-                americas{"019"}\r
-                cnsar{"HK+MO"}\r
-                enUS{"AS+GU+MH+MP+PR+UM+US+VI"}\r
-                maghreb{"MA+DZ+TN+LY+MR+EH"}\r
-            }\r
-            paradigmLocales{\r
-                "en",\r
-                "en-GB",\r
-                "es",\r
-                "es-419",\r
-                "pt-BR",\r
-                "pt-PT",\r
+    measurementData{\r
+        001{\r
+            MeasurementSystem:int{0}\r
+            PaperSize:intvector{\r
+                297,\r
+                210,\r
             }\r
         }\r
-    }\r
-    languageMatchingNew{\r
-        written{\r
-            {\r
-                "no",\r
-                "nb",\r
-                "1",\r
-                "0",\r
+        BS{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
             }\r
-            {\r
-                "hr",\r
-                "bs",\r
-                "4",\r
-                "0",\r
+        }\r
+        BZ{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
             }\r
-            {\r
-                "sh",\r
-                "bs",\r
-                "4",\r
-                "0",\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "sh",\r
-                "hr",\r
-                "4",\r
-                "0",\r
+        }\r
+        CA{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "sh",\r
-                "sr",\r
-                "4",\r
-                "0",\r
+        }\r
+        CL{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "ssy",\r
-                "aa",\r
-                "4",\r
-                "0",\r
+        }\r
+        CO{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "gsw",\r
-                "de",\r
-                "4",\r
-                "1",\r
+        }\r
+        CR{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "lb",\r
-                "de",\r
-                "4",\r
-                "1",\r
+        }\r
+        GB{\r
+            MeasurementSystem:int{2}\r
+        }\r
+        GT{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "da",\r
-                "no",\r
-                "8",\r
-                "0",\r
+        }\r
+        KY{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
             }\r
-            {\r
-                "da",\r
-                "nb",\r
-                "8",\r
-                "0",\r
+        }\r
+        LR{\r
+            MeasurementSystem:int{1}\r
+            MeasurementSystemCategory{\r
+                temperature:int{0}\r
             }\r
-            {\r
-                "ab",\r
-                "ru",\r
-                "10",\r
-                "1",\r
+        }\r
+        MM{\r
+            MeasurementSystem:int{1}\r
+            MeasurementSystemCategory{\r
+                temperature:int{0}\r
             }\r
-            {\r
-                "ach",\r
-                "en",\r
-                "10",\r
-                "1",\r
+        }\r
+        MX{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "af",\r
-                "nl",\r
-                "10",\r
-                "1",\r
+        }\r
+        NI{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "ak",\r
-                "en",\r
-                "10",\r
-                "1",\r
+        }\r
+        PA{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "ay",\r
-                "es",\r
-                "10",\r
-                "1",\r
+        }\r
+        PH{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "az",\r
-                "ru",\r
-                "10",\r
-                "1",\r
+        }\r
+        PR{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
             }\r
-            {\r
-                "be",\r
-                "ru",\r
-                "10",\r
-                "1",\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "bem",\r
-                "en",\r
-                "10",\r
-                "1",\r
+        }\r
+        PW{\r
+            MeasurementSystemCategory{\r
+                temperature:int{1}\r
             }\r
-            {\r
-                "bh",\r
-                "hi",\r
-                "10",\r
-                "1",\r
+        }\r
+        SV{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "bn",\r
-                "en",\r
-                "10",\r
-                "1",\r
+        }\r
+        US{\r
+            MeasurementSystem:int{1}\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
-            {\r
-                "br",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ceb",\r
-                "fil",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "chr",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ckb",\r
-                "ar",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "co",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "crs",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "cy",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ee",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "eo",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "et",\r
-                "fi",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "eu",\r
-                "es",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "fo",\r
-                "da",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "fy",\r
-                "nl",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ga",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "gaa",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "gd",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "gl",\r
-                "es",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "gn",\r
-                "es",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "gu",\r
-                "hi",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ha",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "haw",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ht",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "hy",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ia",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ig",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "is",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "jv",\r
-                "id",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ka",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "kg",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "kk",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "km",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "kn",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "kri",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ku",\r
-                "tr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ky",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "la",\r
-                "it",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "lg",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ln",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "lo",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "loz",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "lua",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mfe",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mg",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mi",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mk",\r
-                "bg",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ml",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mn",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mr",\r
-                "hi",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ms",\r
-                "id",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "mt",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "my",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ne",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "nn",\r
-                "nb",\r
-                "10",\r
-                "0",\r
-            }\r
-            {\r
-                "nn",\r
-                "no",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "nso",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ny",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "nyn",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "oc",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "om",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "or",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "pa",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "pcm",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ps",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "qu",\r
-                "es",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "rm",\r
-                "de",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "rn",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "rw",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sa",\r
-                "hi",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sd",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "si",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sn",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "so",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sq",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "st",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "su",\r
-                "id",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sw",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ta",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "te",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tg",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ti",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tk",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tlh",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tn",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "to",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tt",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tum",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ug",\r
-                "zh",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ur",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "uz",\r
-                "ru",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "wo",\r
-                "fr",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "xh",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "yi",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "yo",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "zu",\r
-                "en",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "*",\r
-                "*",\r
-                "80",\r
-                "0",\r
-            }\r
-            {\r
-                "az_Latn",\r
-                "ru_Cyrl",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "bn_Beng",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "hy_Armn",\r
-                "ru_Cyrl",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ka_Geor",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "km_Khmr",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "kn_Knda",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "lo_Laoo",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ml_Mlym",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "my_Mymr",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ne_Deva",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "or_Orya",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "pa_Guru",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ps_Arab",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sd_Arab",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "si_Sinh",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ta_Taml",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "te_Telu",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ti_Ethi",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "tk_Latn",\r
-                "ru_Cyrl",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "ur_Arab",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "uz_Latn",\r
-                "ru_Cyrl",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "yi_Hebr",\r
-                "en_Latn",\r
-                "10",\r
-                "1",\r
-            }\r
-            {\r
-                "sr_Latn",\r
-                "sr_Cyrl",\r
-                "5",\r
-                "0",\r
-            }\r
-            {\r
-                "zh_Hans",\r
-                "zh_Hant",\r
-                "15",\r
-                "1",\r
-            }\r
-            {\r
-                "zh_Hant",\r
-                "zh_Hans",\r
-                "19",\r
-                "1",\r
-            }\r
-            {\r
-                "*_*",\r
-                "*_*",\r
-                "50",\r
-                "0",\r
-            }\r
-            {\r
-                "ar_*_$maghreb",\r
-                "ar_*_$maghreb",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "ar_*_$!maghreb",\r
-                "ar_*_$!maghreb",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "ar_*_*",\r
-                "ar_*_*",\r
-                "5",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_$enUS",\r
-                "en_*_$enUS",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_$!enUS",\r
-                "en_*_$!enUS",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "en_*_*",\r
-                "en_*_*",\r
-                "5",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_$americas",\r
-                "es_*_$americas",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_$!americas",\r
-                "es_*_$!americas",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "es_*_*",\r
-                "es_*_*",\r
-                "5",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_$americas",\r
-                "pt_*_$americas",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_$!americas",\r
-                "pt_*_$!americas",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "pt_*_*",\r
-                "pt_*_*",\r
-                "5",\r
-                "0",\r
-            }\r
-            {\r
-                "zh_Hant_$cnsar",\r
-                "zh_Hant_$cnsar",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "zh_Hant_$!cnsar",\r
-                "zh_Hant_$!cnsar",\r
-                "4",\r
-                "0",\r
-            }\r
-            {\r
-                "zh_Hant_*",\r
-                "zh_Hant_*",\r
-                "5",\r
-                "0",\r
-            }\r
-            {\r
-                "*_*_*",\r
-                "*_*_*",\r
-                "4",\r
-                "0",\r
+        }\r
+        VE{\r
+            PaperSize:intvector{\r
+                279,\r
+                216,\r
             }\r
         }\r
     }\r
-    measurementData{\r
-        001{\r
-            MeasurementSystem:int{0}\r
-            PaperSize:intvector{\r
-                297,\r
-                210,\r
-            }\r
+    parentLocales{\r
+        en_001{\r
+            "en_150",\r
+            "en_AG",\r
+            "en_AI",\r
+            "en_AU",\r
+            "en_BB",\r
+            "en_BE",\r
+            "en_BM",\r
+            "en_BS",\r
+            "en_BW",\r
+            "en_BZ",\r
+            "en_CA",\r
+            "en_CC",\r
+            "en_CK",\r
+            "en_CM",\r
+            "en_CX",\r
+            "en_CY",\r
+            "en_DG",\r
+            "en_DM",\r
+            "en_ER",\r
+            "en_FJ",\r
+            "en_FK",\r
+            "en_FM",\r
+            "en_GB",\r
+            "en_GD",\r
+            "en_GG",\r
+            "en_GH",\r
+            "en_GI",\r
+            "en_GM",\r
+            "en_GY",\r
+            "en_HK",\r
+            "en_IE",\r
+            "en_IL",\r
+            "en_IM",\r
+            "en_IN",\r
+            "en_IO",\r
+            "en_JE",\r
+            "en_JM",\r
+            "en_KE",\r
+            "en_KI",\r
+            "en_KN",\r
+            "en_KY",\r
+            "en_LC",\r
+            "en_LR",\r
+            "en_LS",\r
+            "en_MG",\r
+            "en_MO",\r
+            "en_MS",\r
+            "en_MT",\r
+            "en_MU",\r
+            "en_MW",\r
+            "en_MY",\r
+            "en_NA",\r
+            "en_NF",\r
+            "en_NG",\r
+            "en_NR",\r
+            "en_NU",\r
+            "en_NZ",\r
+            "en_PG",\r
+            "en_PH",\r
+            "en_PK",\r
+            "en_PN",\r
+            "en_PW",\r
+            "en_RW",\r
+            "en_SB",\r
+            "en_SC",\r
+            "en_SD",\r
+            "en_SG",\r
+            "en_SH",\r
+            "en_SL",\r
+            "en_SS",\r
+            "en_SX",\r
+            "en_SZ",\r
+            "en_TC",\r
+            "en_TK",\r
+            "en_TO",\r
+            "en_TT",\r
+            "en_TV",\r
+            "en_TZ",\r
+            "en_UG",\r
+            "en_VC",\r
+            "en_VG",\r
+            "en_VU",\r
+            "en_WS",\r
+            "en_ZA",\r
+            "en_ZM",\r
+            "en_ZW",\r
+        }\r
+        en_150{\r
+            "en_AT",\r
+            "en_CH",\r
+            "en_DE",\r
+            "en_DK",\r
+            "en_FI",\r
+            "en_NL",\r
+            "en_SE",\r
+            "en_SI",\r
+        }\r
+        es_419{\r
+            "es_AR",\r
+            "es_BO",\r
+            "es_BR",\r
+            "es_CL",\r
+            "es_CO",\r
+            "es_CR",\r
+            "es_CU",\r
+            "es_DO",\r
+            "es_EC",\r
+            "es_GT",\r
+            "es_HN",\r
+            "es_MX",\r
+            "es_NI",\r
+            "es_PA",\r
+            "es_PE",\r
+            "es_PR",\r
+            "es_PY",\r
+            "es_SV",\r
+            "es_US",\r
+            "es_UY",\r
+            "es_VE",\r
+        }\r
+        pt_PT{\r
+            "pt_AO",\r
+            "pt_CH",\r
+            "pt_CV",\r
+            "pt_GQ",\r
+            "pt_GW",\r
+            "pt_LU",\r
+            "pt_MO",\r
+            "pt_MZ",\r
+            "pt_ST",\r
+            "pt_TL",\r
+        }\r
+        root{\r
+            "az_Arab",\r
+            "az_Cyrl",\r
+            "bm_Nkoo",\r
+            "bs_Cyrl",\r
+            "en_Dsrt",\r
+            "en_Shaw",\r
+            "ha_Arab",\r
+            "iu_Latn",\r
+            "mn_Mong",\r
+            "ms_Arab",\r
+            "pa_Arab",\r
+            "shi_Latn",\r
+            "sr_Latn",\r
+            "uz_Arab",\r
+            "uz_Cyrl",\r
+            "vai_Latn",\r
+            "zh_Hant",\r
+            "yue_Hans",\r
+        }\r
+        zh_Hant_HK{"zh_Hant_MO"}\r
+    }\r
+    subdivisionContainment{\r
+        AD{\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+        }\r
+        AE{\r
+            "AJ",\r
+            "AZ",\r
+            "DU",\r
+            "FU",\r
+            "RK",\r
+            "SH",\r
+            "UQ",\r
+        }\r
+        AF{\r
+            "BAL",\r
+            "BAM",\r
+            "BDG",\r
+            "BDS",\r
+            "BGL",\r
+            "DAY",\r
+            "FRA",\r
+            "FYB",\r
+            "GHA",\r
+            "GHO",\r
+            "HEL",\r
+            "HER",\r
+            "JOW",\r
+            "KAB",\r
+            "KAN",\r
+            "KAP",\r
+            "KDZ",\r
+            "KHO",\r
+            "KNR",\r
+            "LAG",\r
+            "LOG",\r
+            "NAN",\r
+            "NIM",\r
+            "NUR",\r
+            "PAN",\r
+            "PAR",\r
+            "PIA",\r
+            "PKA",\r
+            "SAM",\r
+            "SAR",\r
+            "TAK",\r
+            "URU",\r
+            "WAR",\r
+            "ZAB",\r
+        }\r
+        AG{\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "10",\r
+            "11",\r
+        }\r
+        AL{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+        }\r
+        AM{\r
+            "AG",\r
+            "AR",\r
+            "AV",\r
+            "ER",\r
+            "GR",\r
+            "KT",\r
+            "LO",\r
+            "SH",\r
+            "SU",\r
+            "TV",\r
+            "VD",\r
+        }\r
+        AO{\r
+            "BGO",\r
+            "BGU",\r
+            "BIE",\r
+            "CAB",\r
+            "CCU",\r
+            "CNN",\r
+            "CNO",\r
+            "CUS",\r
+            "HUA",\r
+            "HUI",\r
+            "LNO",\r
+            "LSU",\r
+            "LUA",\r
+            "MAL",\r
+            "MOX",\r
+            "NAM",\r
+            "UIG",\r
+            "ZAI",\r
+        }\r
+        AR{\r
+            "A",\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "H",\r
+            "J",\r
+            "K",\r
+            "L",\r
+            "M",\r
+            "N",\r
+            "P",\r
+            "Q",\r
+            "R",\r
+            "S",\r
+            "T",\r
+            "U",\r
+            "V",\r
+            "W",\r
+            "X",\r
+            "Y",\r
+            "Z",\r
+        }\r
+        AT{\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "9",\r
+        }\r
+        AU{\r
+            "ACT",\r
+            "NSW",\r
+            "NT",\r
+            "QLD",\r
+            "SA",\r
+            "TAS",\r
+            "VIC",\r
+            "WA",\r
+        }\r
+        AZ{\r
+            "ABS",\r
+            "AGA",\r
+            "AGC",\r
+            "AGM",\r
+            "AGS",\r
+            "AGU",\r
+            "AST",\r
+            "BA",\r
+            "BAL",\r
+            "BAR",\r
+            "BEY",\r
+            "BIL",\r
+            "CAB",\r
+            "CAL",\r
+            "DAS",\r
+            "FUZ",\r
+            "GA",\r
+            "GAD",\r
+            "GOR",\r
+            "GOY",\r
+            "GYG",\r
+            "HAC",\r
+            "IMI",\r
+            "ISM",\r
+            "KAL",\r
+            "KUR",\r
+            "LA",\r
+            "LAC",\r
+            "LAN",\r
+            "LER",\r
+            "MAS",\r
+            "MI",\r
+            "NA",\r
+            "NEF",\r
+            "NX",\r
+            "OGU",\r
+            "QAB",\r
+            "QAX",\r
+            "QAZ",\r
+            "QBA",\r
+            "QBI",\r
+            "QOB",\r
+            "QUS",\r
+            "SA",\r
+            "SAB",\r
+            "SAK",\r
+            "SAL",\r
+            "SAT",\r
+            "SBN",\r
+            "SIY",\r
+            "SKR",\r
+            "SM",\r
+            "SMI",\r
+            "SMX",\r
+            "SR",\r
+            "SUS",\r
+            "TAR",\r
+            "TOV",\r
+            "UCA",\r
+            "XA",\r
+            "XAC",\r
+            "XCI",\r
+            "XIZ",\r
+            "XVD",\r
+            "YAR",\r
+            "YE",\r
+            "YEV",\r
+            "ZAN",\r
+            "ZAQ",\r
+            "ZAR",\r
+        }\r
+        AZ-NX{\r
+            "BAB",\r
+            "CUL",\r
+            "KAN",\r
+            "NV",\r
+            "ORD",\r
+            "SAD",\r
+            "SAH",\r
+            "SAR",\r
+        }\r
+        BA{\r
+            "BIH",\r
+            "BRC",\r
+            "SRP",\r
+        }\r
+        BB{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+        }\r
+        BD{\r
+            "A",\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+        }\r
+        BD-A{\r
+            "02",\r
+            "06",\r
+            "07",\r
+            "25",\r
+            "50",\r
+            "51",\r
+        }\r
+        BD-B{\r
+            "01",\r
+            "04",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "16",\r
+            "29",\r
+            "31",\r
+            "47",\r
+            "56",\r
+        }\r
+        BD-C{\r
+            "13",\r
+            "15",\r
+            "17",\r
+            "18",\r
+            "21",\r
+            "26",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "53",\r
+            "57",\r
+            "62",\r
+            "63",\r
+        }\r
+        BD-D{\r
+            "05",\r
+            "12",\r
+            "22",\r
+            "23",\r
+            "27",\r
+            "30",\r
+            "37",\r
+            "39",\r
+            "43",\r
+            "58",\r
+        }\r
+        BD-E{\r
+            "03",\r
+            "24",\r
+            "44",\r
+            "45",\r
+            "48",\r
+            "49",\r
+            "54",\r
+            "55",\r
+            "59",\r
+        }\r
+        BD-F{\r
+            "14",\r
+            "19",\r
+            "28",\r
+            "32",\r
+            "46",\r
+            "52",\r
+            "64",\r
+        }\r
+        BD-G{\r
+            "20",\r
+            "38",\r
+            "60",\r
+            "61",\r
+        }\r
+        BE{\r
+            "BRU",\r
+            "VLG",\r
+            "WAL",\r
+        }\r
+        BE-VLG{\r
+            "VAN",\r
+            "VBR",\r
+            "VLI",\r
+            "VOV",\r
+            "VWV",\r
+        }\r
+        BE-WAL{\r
+            "WBR",\r
+            "WHT",\r
+            "WLG",\r
+            "WLX",\r
+            "WNA",\r
+        }\r
+        BF{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+        }\r
+        BF-01{\r
+            "BAL",\r
+            "BAN",\r
+            "KOS",\r
+            "MOU",\r
+            "NAY",\r
+            "SOR",\r
+        }\r
+        BF-02{\r
+            "COM",\r
+            "LER",\r
+        }\r
+        BF-03{"KAD"}\r
+        BF-04{\r
+            "BLG",\r
+            "KOP",\r
+            "KOT",\r
+        }\r
+        BF-05{\r
+            "BAM",\r
+            "NAM",\r
+            "SMT",\r
+        }\r
+        BF-06{\r
+            "BLK",\r
+            "SIS",\r
+            "SNG",\r
+            "ZIR",\r
+        }\r
+        BF-07{\r
+            "BAZ",\r
+            "NAO",\r
+            "ZOU",\r
+        }\r
+        BF-08{\r
+            "GNA",\r
+            "GOU",\r
+            "KMD",\r
+            "KMP",\r
+            "TAP",\r
+        }\r
+        BF-09{\r
+            "HOU",\r
+            "KEN",\r
+            "TUI",\r
+        }\r
+        BF-10{\r
+            "LOR",\r
+            "PAS",\r
+            "YAT",\r
+            "ZON",\r
+        }\r
+        BF-11{\r
+            "GAN",\r
+            "KOW",\r
+            "OUB",\r
+        }\r
+        BF-12{\r
+            "OUD",\r
+            "SEN",\r
+            "SOM",\r
+            "YAG",\r
+        }\r
+        BF-13{\r
+            "BGR",\r
+            "IOB",\r
+            "NOU",\r
+            "PON",\r
+        }\r
+        BG{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+        }\r
+        BH{\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "17",\r
+        }\r
+        BI{\r
+            "BB",\r
+            "BL",\r
+            "BM",\r
+            "BR",\r
+            "CA",\r
+            "CI",\r
+            "GI",\r
+            "KI",\r
+            "KR",\r
+            "KY",\r
+            "MA",\r
+            "MU",\r
+            "MW",\r
+            "MY",\r
+            "NG",\r
+            "RM",\r
+            "RT",\r
+            "RY",\r
+        }\r
+        BJ{\r
+            "AK",\r
+            "AL",\r
+            "AQ",\r
+            "BO",\r
+            "CO",\r
+            "DO",\r
+            "KO",\r
+            "LI",\r
+            "MO",\r
+            "OU",\r
+            "PL",\r
+            "ZO",\r
+        }\r
+        BN{\r
+            "BE",\r
+            "BM",\r
+            "TE",\r
+            "TU",\r
+        }\r
+        BO{\r
+            "B",\r
+            "C",\r
+            "H",\r
+            "L",\r
+            "N",\r
+            "O",\r
+            "P",\r
+            "S",\r
+            "T",\r
+        }\r
+        BQ{\r
+            "BO",\r
+            "SA",\r
+            "SE",\r
+        }\r
+        BR{\r
+            "AC",\r
+            "AL",\r
+            "AM",\r
+            "AP",\r
+            "BA",\r
+            "CE",\r
+            "DF",\r
+            "ES",\r
+            "GO",\r
+            "MA",\r
+            "MG",\r
+            "MS",\r
+            "MT",\r
+            "PA",\r
+            "PB",\r
+            "PE",\r
+            "PI",\r
+            "PR",\r
+            "RJ",\r
+            "RN",\r
+            "RO",\r
+            "RR",\r
+            "RS",\r
+            "SC",\r
+            "SE",\r
+            "SP",\r
+            "TO",\r
         }\r
         BS{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
-            }\r
+            "AK",\r
+            "BI",\r
+            "BP",\r
+            "BY",\r
+            "CE",\r
+            "CI",\r
+            "CK",\r
+            "CO",\r
+            "CS",\r
+            "EG",\r
+            "EX",\r
+            "FP",\r
+            "GC",\r
+            "HI",\r
+            "HT",\r
+            "IN",\r
+            "LI",\r
+            "MC",\r
+            "MG",\r
+            "MI",\r
+            "NE",\r
+            "NO",\r
+            "NS",\r
+            "RC",\r
+            "RI",\r
+            "SA",\r
+            "SE",\r
+            "SO",\r
+            "SS",\r
+            "SW",\r
+            "WG",\r
+        }\r
+        BT{\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "GA",\r
+            "TY",\r
+        }\r
+        BW{\r
+            "CE",\r
+            "CH",\r
+            "FR",\r
+            "GA",\r
+            "GH",\r
+            "JW",\r
+            "KG",\r
+            "KL",\r
+            "KW",\r
+            "LO",\r
+            "NE",\r
+            "NW",\r
+            "SE",\r
+            "SO",\r
+            "SP",\r
+            "ST",\r
+        }\r
+        BY{\r
+            "BR",\r
+            "HM",\r
+            "HO",\r
+            "HR",\r
+            "MA",\r
+            "MI",\r
+            "VI",\r
+        }\r
+        BZ{\r
+            "BZ",\r
+            "CY",\r
+            "CZL",\r
+            "OW",\r
+            "SC",\r
+            "TOL",\r
+        }\r
+        CA{\r
+            "AB",\r
+            "BC",\r
+            "MB",\r
+            "NB",\r
+            "NL",\r
+            "NS",\r
+            "NT",\r
+            "NU",\r
+            "ON",\r
+            "PE",\r
+            "QC",\r
+            "SK",\r
+            "YT",\r
+        }\r
+        CD{\r
+            "BC",\r
+            "BN",\r
+            "EQ",\r
+            "KA",\r
+            "KE",\r
+            "KN",\r
+            "KW",\r
+            "MA",\r
+            "NK",\r
+            "OR",\r
+            "SK",\r
+        }\r
+        CF{\r
+            "AC",\r
+            "BB",\r
+            "BGF",\r
+            "BK",\r
+            "HK",\r
+            "HM",\r
+            "HS",\r
+            "KB",\r
+            "KG",\r
+            "LB",\r
+            "MB",\r
+            "MP",\r
+            "NM",\r
+            "OP",\r
+            "SE",\r
+            "UK",\r
+            "VK",\r
         }\r
-        BZ{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
-            }\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        CG{\r
+            "2",\r
+            "5",\r
+            "7",\r
+            "8",\r
+            "9",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "BZV",\r
         }\r
-        CA{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        CH{\r
+            "AG",\r
+            "AI",\r
+            "AR",\r
+            "BE",\r
+            "BL",\r
+            "BS",\r
+            "FR",\r
+            "GE",\r
+            "GL",\r
+            "GR",\r
+            "JU",\r
+            "LU",\r
+            "NE",\r
+            "NW",\r
+            "OW",\r
+            "SG",\r
+            "SH",\r
+            "SO",\r
+            "SZ",\r
+            "TG",\r
+            "TI",\r
+            "UR",\r
+            "VD",\r
+            "VS",\r
+            "ZG",\r
+            "ZH",\r
+        }\r
+        CI{\r
+            "AB",\r
+            "BS",\r
+            "CM",\r
+            "DN",\r
+            "GD",\r
+            "LC",\r
+            "LG",\r
+            "MG",\r
+            "SM",\r
+            "SV",\r
+            "VB",\r
+            "WR",\r
+            "YM",\r
+            "ZZ",\r
         }\r
         CL{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+            "AI",\r
+            "AN",\r
+            "AP",\r
+            "AR",\r
+            "AT",\r
+            "BI",\r
+            "CO",\r
+            "LI",\r
+            "LL",\r
+            "LR",\r
+            "MA",\r
+            "ML",\r
+            "RM",\r
+            "TA",\r
+            "VS",\r
+        }\r
+        CM{\r
+            "AD",\r
+            "CE",\r
+            "EN",\r
+            "ES",\r
+            "LT",\r
+            "NO",\r
+            "NW",\r
+            "OU",\r
+            "SU",\r
+            "SW",\r
+        }\r
+        CN{\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "61",\r
+            "62",\r
+            "63",\r
+            "64",\r
+            "65",\r
+            "71",\r
+            "91",\r
+            "92",\r
         }\r
         CO{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+            "AMA",\r
+            "ANT",\r
+            "ARA",\r
+            "ATL",\r
+            "BOL",\r
+            "BOY",\r
+            "CAL",\r
+            "CAQ",\r
+            "CAS",\r
+            "CAU",\r
+            "CES",\r
+            "CHO",\r
+            "COR",\r
+            "CUN",\r
+            "DC",\r
+            "GUA",\r
+            "GUV",\r
+            "HUI",\r
+            "LAG",\r
+            "MAG",\r
+            "MET",\r
+            "NAR",\r
+            "NSA",\r
+            "PUT",\r
+            "QUI",\r
+            "RIS",\r
+            "SAN",\r
+            "SAP",\r
+            "SUC",\r
+            "TOL",\r
+            "VAC",\r
+            "VAU",\r
+            "VID",\r
         }\r
         CR{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+            "A",\r
+            "C",\r
+            "G",\r
+            "H",\r
+            "L",\r
+            "P",\r
+            "SJ",\r
         }\r
-        GB{\r
-            MeasurementSystem:int{2}\r
+        CU{\r
+            "01",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "99",\r
         }\r
-        GT{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        CV{\r
+            "B",\r
+            "S",\r
         }\r
-        KY{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
-            }\r
+        CV-B{\r
+            "BV",\r
+            "PA",\r
+            "PN",\r
+            "RB",\r
+            "RG",\r
+            "SL",\r
+            "SV",\r
+            "TS",\r
         }\r
-        LR{\r
-            MeasurementSystem:int{1}\r
-            MeasurementSystemCategory{\r
-                temperature:int{0}\r
-            }\r
+        CV-S{\r
+            "BR",\r
+            "CA",\r
+            "CF",\r
+            "CR",\r
+            "MA",\r
+            "MO",\r
+            "PR",\r
+            "RS",\r
+            "SD",\r
+            "SF",\r
+            "SM",\r
+            "SO",\r
+            "SS",\r
+            "TA",\r
         }\r
-        MM{\r
-            MeasurementSystem:int{1}\r
-            MeasurementSystemCategory{\r
-                temperature:int{0}\r
-            }\r
+        CY{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+        }\r
+        CZ{\r
+            "JC",\r
+            "JM",\r
+            "KA",\r
+            "KR",\r
+            "LI",\r
+            "MO",\r
+            "OL",\r
+            "PA",\r
+            "PL",\r
+            "PR",\r
+            "ST",\r
+            "US",\r
+            "VY",\r
+            "ZL",\r
+        }\r
+        CZ-JC{\r
+            "311",\r
+            "312",\r
+            "313",\r
+            "314",\r
+            "315",\r
+            "316",\r
+            "317",\r
+        }\r
+        CZ-JM{\r
+            "621",\r
+            "622",\r
+            "623",\r
+            "624",\r
+            "625",\r
+            "626",\r
+            "627",\r
+        }\r
+        CZ-KA{\r
+            "411",\r
+            "412",\r
+            "413",\r
+        }\r
+        CZ-KR{\r
+            "521",\r
+            "522",\r
+            "523",\r
+            "524",\r
+            "525",\r
+        }\r
+        CZ-LI{\r
+            "511",\r
+            "512",\r
+            "513",\r
+            "514",\r
+        }\r
+        CZ-MO{\r
+            "801",\r
+            "802",\r
+            "803",\r
+            "804",\r
+            "805",\r
+            "806",\r
+        }\r
+        CZ-OL{\r
+            "711",\r
+            "712",\r
+            "713",\r
+            "714",\r
+            "715",\r
+        }\r
+        CZ-PA{\r
+            "531",\r
+            "532",\r
+            "533",\r
+            "534",\r
+        }\r
+        CZ-PL{\r
+            "321",\r
+            "322",\r
+            "323",\r
+            "324",\r
+            "325",\r
+            "326",\r
+            "327",\r
+        }\r
+        CZ-PR{\r
+            "10A",\r
+            "10B",\r
+            "10C",\r
+            "10D",\r
+            "10E",\r
+            "10F",\r
+            "101",\r
+            "102",\r
+            "103",\r
+            "104",\r
+            "105",\r
+            "106",\r
+            "107",\r
+            "108",\r
+            "109",\r
+        }\r
+        CZ-ST{\r
+            "20A",\r
+            "20B",\r
+            "20C",\r
+            "201",\r
+            "202",\r
+            "203",\r
+            "204",\r
+            "205",\r
+            "206",\r
+            "207",\r
+            "208",\r
+            "209",\r
+        }\r
+        CZ-US{\r
+            "421",\r
+            "422",\r
+            "423",\r
+            "424",\r
+            "425",\r
+            "426",\r
+            "427",\r
+        }\r
+        CZ-VY{\r
+            "611",\r
+            "612",\r
+            "613",\r
+            "614",\r
+            "615",\r
+        }\r
+        CZ-ZL{\r
+            "721",\r
+            "722",\r
+            "723",\r
+            "724",\r
+        }\r
+        DE{\r
+            "BB",\r
+            "BE",\r
+            "BW",\r
+            "BY",\r
+            "HB",\r
+            "HE",\r
+            "HH",\r
+            "MV",\r
+            "NI",\r
+            "NW",\r
+            "RP",\r
+            "SH",\r
+            "SL",\r
+            "SN",\r
+            "ST",\r
+            "TH",\r
+        }\r
+        DJ{\r
+            "AR",\r
+            "AS",\r
+            "DI",\r
+            "DJ",\r
+            "OB",\r
+            "TA",\r
+        }\r
+        DK{\r
+            "81",\r
+            "82",\r
+            "83",\r
+            "84",\r
+            "85",\r
+        }\r
+        DM{\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+        }\r
+        DO{\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+        }\r
+        DO-33{\r
+            "06",\r
+            "14",\r
+            "19",\r
+            "20",\r
+        }\r
+        DO-34{\r
+            "05",\r
+            "15",\r
+            "26",\r
+            "27",\r
+        }\r
+        DO-35{\r
+            "09",\r
+            "18",\r
+            "25",\r
+        }\r
+        DO-36{\r
+            "13",\r
+            "24",\r
+            "28",\r
+        }\r
+        DO-37{\r
+            "07",\r
+            "22",\r
+        }\r
+        DO-38{\r
+            "03",\r
+            "04",\r
+            "10",\r
+            "16",\r
+        }\r
+        DO-39{\r
+            "23",\r
+            "29",\r
+            "30",\r
+        }\r
+        DO-40{\r
+            "01",\r
+            "32",\r
+        }\r
+        DO-41{\r
+            "02",\r
+            "17",\r
+            "21",\r
+            "31",\r
+        }\r
+        DO-42{\r
+            "08",\r
+            "11",\r
+            "12",\r
+        }\r
+        DZ{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+        }\r
+        EC{\r
+            "A",\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "H",\r
+            "I",\r
+            "L",\r
+            "M",\r
+            "N",\r
+            "O",\r
+            "P",\r
+            "R",\r
+            "S",\r
+            "SD",\r
+            "SE",\r
+            "T",\r
+            "U",\r
+            "W",\r
+            "X",\r
+            "Y",\r
+            "Z",\r
+        }\r
+        EE{\r
+            "37",\r
+            "39",\r
+            "44",\r
+            "49",\r
+            "51",\r
+            "57",\r
+            "59",\r
+            "65",\r
+            "67",\r
+            "70",\r
+            "74",\r
+            "78",\r
+            "82",\r
+            "84",\r
+            "86",\r
+        }\r
+        EG{\r
+            "ALX",\r
+            "ASN",\r
+            "AST",\r
+            "BA",\r
+            "BH",\r
+            "BNS",\r
+            "C",\r
+            "DK",\r
+            "DT",\r
+            "FYM",\r
+            "GH",\r
+            "GZ",\r
+            "IS",\r
+            "JS",\r
+            "KB",\r
+            "KFS",\r
+            "KN",\r
+            "LX",\r
+            "MN",\r
+            "MNF",\r
+            "MT",\r
+            "PTS",\r
+            "SHG",\r
+            "SHR",\r
+            "SIN",\r
+            "SUZ",\r
+            "WAD",\r
+        }\r
+        ER{\r
+            "AN",\r
+            "DK",\r
+            "DU",\r
+            "GB",\r
+            "MA",\r
+            "SK",\r
+        }\r
+        ES{\r
+            "AN",\r
+            "AR",\r
+            "AS",\r
+            "CB",\r
+            "CE",\r
+            "CL",\r
+            "CM",\r
+            "CN",\r
+            "CT",\r
+            "EX",\r
+            "GA",\r
+            "IB",\r
+            "MC",\r
+            "MD",\r
+            "ML",\r
+            "NC",\r
+            "PV",\r
+            "RI",\r
+            "VC",\r
+        }\r
+        ES-AN{\r
+            "AL",\r
+            "CA",\r
+            "CO",\r
+            "GR",\r
+            "H",\r
+            "J",\r
+            "MA",\r
+            "SE",\r
         }\r
-        MX{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-AR{\r
+            "HU",\r
+            "TE",\r
+            "Z",\r
         }\r
-        NI{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-AS{"O"}\r
+        ES-CB{"S"}\r
+        ES-CL{\r
+            "AV",\r
+            "BU",\r
+            "LE",\r
+            "P",\r
+            "SA",\r
+            "SG",\r
+            "SO",\r
+            "VA",\r
+            "ZA",\r
         }\r
-        PA{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-CM{\r
+            "AB",\r
+            "CR",\r
+            "CU",\r
+            "GU",\r
+            "TO",\r
         }\r
-        PH{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-CN{\r
+            "GC",\r
+            "TF",\r
         }\r
-        PR{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
-            }\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-CT{\r
+            "B",\r
+            "GI",\r
+            "L",\r
+            "T",\r
         }\r
-        PW{\r
-            MeasurementSystemCategory{\r
-                temperature:int{1}\r
-            }\r
+        ES-EX{\r
+            "BA",\r
+            "CC",\r
         }\r
-        SV{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-GA{\r
+            "C",\r
+            "LU",\r
+            "OR",\r
+            "PO",\r
+        }\r
+        ES-IB{"PM"}\r
+        ES-MC{"MU"}\r
+        ES-MD{"M"}\r
+        ES-NC{"NA"}\r
+        ES-PV{\r
+            "BI",\r
+            "SS",\r
+            "VI",\r
         }\r
-        US{\r
-            MeasurementSystem:int{1}\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ES-RI{"LO"}\r
+        ES-VC{\r
+            "A",\r
+            "CS",\r
+            "V",\r
         }\r
-        VE{\r
-            PaperSize:intvector{\r
-                279,\r
-                216,\r
-            }\r
+        ET{\r
+            "AA",\r
+            "AF",\r
+            "AM",\r
+            "BE",\r
+            "DD",\r
+            "GA",\r
+            "HA",\r
+            "OR",\r
+            "SN",\r
+            "SO",\r
+            "TI",\r
         }\r
-    }\r
-    parentLocales{\r
-        en_001{\r
-            "en_150",\r
-            "en_AG",\r
-            "en_AI",\r
-            "en_AU",\r
-            "en_BB",\r
-            "en_BE",\r
-            "en_BM",\r
-            "en_BS",\r
-            "en_BW",\r
-            "en_BZ",\r
-            "en_CA",\r
-            "en_CC",\r
-            "en_CK",\r
-            "en_CM",\r
-            "en_CX",\r
-            "en_CY",\r
-            "en_DG",\r
-            "en_DM",\r
-            "en_ER",\r
-            "en_FJ",\r
-            "en_FK",\r
-            "en_FM",\r
-            "en_GB",\r
-            "en_GD",\r
-            "en_GG",\r
-            "en_GH",\r
-            "en_GI",\r
-            "en_GM",\r
-            "en_GY",\r
-            "en_HK",\r
-            "en_IE",\r
-            "en_IL",\r
-            "en_IM",\r
-            "en_IN",\r
-            "en_IO",\r
-            "en_JE",\r
-            "en_JM",\r
-            "en_KE",\r
-            "en_KI",\r
-            "en_KN",\r
-            "en_KY",\r
-            "en_LC",\r
-            "en_LR",\r
-            "en_LS",\r
-            "en_MG",\r
-            "en_MO",\r
-            "en_MS",\r
-            "en_MT",\r
-            "en_MU",\r
-            "en_MW",\r
-            "en_MY",\r
-            "en_NA",\r
-            "en_NF",\r
-            "en_NG",\r
-            "en_NR",\r
-            "en_NU",\r
-            "en_NZ",\r
-            "en_PG",\r
-            "en_PH",\r
-            "en_PK",\r
-            "en_PN",\r
-            "en_PW",\r
-            "en_RW",\r
-            "en_SB",\r
-            "en_SC",\r
-            "en_SD",\r
-            "en_SG",\r
-            "en_SH",\r
-            "en_SL",\r
-            "en_SS",\r
-            "en_SX",\r
-            "en_SZ",\r
-            "en_TC",\r
-            "en_TK",\r
-            "en_TO",\r
-            "en_TT",\r
-            "en_TV",\r
-            "en_TZ",\r
-            "en_UG",\r
-            "en_VC",\r
-            "en_VG",\r
-            "en_VU",\r
-            "en_WS",\r
-            "en_ZA",\r
-            "en_ZM",\r
-            "en_ZW",\r
+        FI{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
         }\r
-        en_150{\r
-            "en_AT",\r
-            "en_CH",\r
-            "en_DE",\r
-            "en_DK",\r
-            "en_FI",\r
-            "en_NL",\r
-            "en_SE",\r
-            "en_SI",\r
+        FJ{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "C",\r
+            "E",\r
+            "N",\r
+            "R",\r
+            "W",\r
         }\r
-        es_419{\r
-            "es_AR",\r
-            "es_BO",\r
-            "es_BR",\r
-            "es_BZ",\r
-            "es_CL",\r
-            "es_CO",\r
-            "es_CR",\r
-            "es_CU",\r
-            "es_DO",\r
-            "es_EC",\r
-            "es_GT",\r
-            "es_HN",\r
-            "es_MX",\r
-            "es_NI",\r
-            "es_PA",\r
-            "es_PE",\r
-            "es_PR",\r
-            "es_PY",\r
-            "es_SV",\r
-            "es_US",\r
-            "es_UY",\r
-            "es_VE",\r
+        FM{\r
+            "KSA",\r
+            "PNI",\r
+            "TRK",\r
+            "YAP",\r
         }\r
-        pt_PT{\r
-            "pt_AO",\r
-            "pt_CH",\r
-            "pt_CV",\r
-            "pt_GQ",\r
-            "pt_GW",\r
-            "pt_LU",\r
-            "pt_MO",\r
-            "pt_MZ",\r
-            "pt_ST",\r
-            "pt_TL",\r
+        FR{\r
+            "A",\r
+            "B",\r
+            "BL",\r
+            "C",\r
+            "CP",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "GF",\r
+            "GP",\r
+            "H",\r
+            "I",\r
+            "J",\r
+            "K",\r
+            "L",\r
+            "M",\r
+            "MF",\r
+            "MQ",\r
+            "N",\r
+            "NC",\r
+            "O",\r
+            "P",\r
+            "PF",\r
+            "PM",\r
+            "Q",\r
+            "R",\r
+            "RE",\r
+            "S",\r
+            "T",\r
+            "TF",\r
+            "U",\r
+            "V",\r
+            "WF",\r
+            "YT",\r
         }\r
-        root{\r
-            "az_Arab",\r
-            "az_Cyrl",\r
-            "bm_Nkoo",\r
-            "bs_Cyrl",\r
-            "en_Dsrt",\r
-            "en_Shaw",\r
-            "ha_Arab",\r
-            "iu_Latn",\r
-            "mn_Mong",\r
-            "ms_Arab",\r
-            "pa_Arab",\r
-            "shi_Latn",\r
-            "sr_Latn",\r
-            "uz_Arab",\r
-            "uz_Cyrl",\r
-            "vai_Latn",\r
-            "zh_Hant",\r
-            "yue_Hans",\r
+        FR-A{\r
+            "67",\r
+            "68",\r
         }\r
-        zh_Hant_HK{"zh_Hant_MO"}\r
-    }\r
-    subdivisionContainment{\r
-        AD{\r
-            "ad02",\r
-            "ad03",\r
-            "ad04",\r
-            "ad05",\r
-            "ad06",\r
-            "ad07",\r
-            "ad08",\r
+        FR-B{\r
+            "24",\r
+            "33",\r
+            "40",\r
+            "47",\r
+            "64",\r
+        }\r
+        FR-C{\r
+            "03",\r
+            "15",\r
+            "43",\r
+            "63",\r
+        }\r
+        FR-D{\r
+            "21",\r
+            "58",\r
+            "71",\r
+            "89",\r
+        }\r
+        FR-E{\r
+            "22",\r
+            "29",\r
+            "35",\r
+            "56",\r
+        }\r
+        FR-F{\r
+            "18",\r
+            "28",\r
+            "36",\r
+            "37",\r
+            "41",\r
+            "45",\r
         }\r
-        AE{\r
-            "aeaj",\r
-            "aeaz",\r
-            "aedu",\r
-            "aefu",\r
-            "aerk",\r
-            "aesh",\r
-            "aeuq",\r
+        FR-G{\r
+            "08",\r
+            "10",\r
+            "51",\r
+            "52",\r
         }\r
-        AF{\r
-            "afbal",\r
-            "afbam",\r
-            "afbdg",\r
-            "afbds",\r
-            "afbgl",\r
-            "afday",\r
-            "affra",\r
-            "affyb",\r
-            "afgha",\r
-            "afgho",\r
-            "afhel",\r
-            "afher",\r
-            "afjow",\r
-            "afkab",\r
-            "afkan",\r
-            "afkap",\r
-            "afkdz",\r
-            "afkho",\r
-            "afknr",\r
-            "aflag",\r
-            "aflog",\r
-            "afnan",\r
-            "afnim",\r
-            "afnur",\r
-            "afpan",\r
-            "afpar",\r
-            "afpia",\r
-            "afpka",\r
-            "afsam",\r
-            "afsar",\r
-            "aftak",\r
-            "afuru",\r
-            "afwar",\r
-            "afzab",\r
+        FR-H{\r
+            "2A",\r
+            "2B",\r
         }\r
-        AG{\r
-            "ag03",\r
-            "ag04",\r
-            "ag05",\r
-            "ag06",\r
-            "ag07",\r
-            "ag08",\r
-            "ag10",\r
-            "ag11",\r
+        FR-I{\r
+            "25",\r
+            "39",\r
+            "70",\r
+            "90",\r
         }\r
-        AL{\r
-            "al01",\r
-            "al02",\r
-            "al03",\r
-            "al04",\r
-            "al05",\r
-            "al06",\r
-            "al07",\r
-            "al08",\r
-            "al09",\r
-            "al10",\r
-            "al11",\r
-            "al12",\r
+        FR-J{\r
+            "75",\r
+            "77",\r
+            "78",\r
+            "91",\r
+            "92",\r
+            "93",\r
+            "94",\r
+            "95",\r
+        }\r
+        FR-K{\r
+            "11",\r
+            "30",\r
+            "34",\r
+            "48",\r
+            "66",\r
         }\r
-        AM{\r
-            "amag",\r
-            "amar",\r
-            "amav",\r
-            "amer",\r
-            "amgr",\r
-            "amkt",\r
-            "amlo",\r
-            "amsh",\r
-            "amsu",\r
-            "amtv",\r
-            "amvd",\r
+        FR-L{\r
+            "19",\r
+            "23",\r
+            "87",\r
         }\r
-        AO{\r
-            "aobgo",\r
-            "aobgu",\r
-            "aobie",\r
-            "aocab",\r
-            "aoccu",\r
-            "aocnn",\r
-            "aocno",\r
-            "aocus",\r
-            "aohua",\r
-            "aohui",\r
-            "aolno",\r
-            "aolsu",\r
-            "aolua",\r
-            "aomal",\r
-            "aomox",\r
-            "aonam",\r
-            "aouig",\r
-            "aozai",\r
+        FR-M{\r
+            "54",\r
+            "55",\r
+            "57",\r
+            "88",\r
         }\r
-        AR{\r
-            "ara",\r
-            "arb",\r
-            "arc",\r
-            "ard",\r
-            "are",\r
-            "arf",\r
-            "arg",\r
-            "arh",\r
-            "arj",\r
-            "ark",\r
-            "arl",\r
-            "arm",\r
-            "arn",\r
-            "arp",\r
-            "arq",\r
-            "arr",\r
-            "ars",\r
-            "art",\r
-            "aru",\r
-            "arv",\r
-            "arw",\r
-            "arx",\r
-            "ary",\r
-            "arz",\r
+        FR-N{\r
+            "09",\r
+            "12",\r
+            "31",\r
+            "32",\r
+            "46",\r
+            "65",\r
+            "81",\r
+            "82",\r
         }\r
-        AT{\r
-            "at1",\r
-            "at2",\r
-            "at3",\r
-            "at4",\r
-            "at5",\r
-            "at6",\r
-            "at7",\r
-            "at8",\r
-            "at9",\r
+        FR-O{\r
+            "59",\r
+            "62",\r
         }\r
-        AU{\r
-            "auact",\r
-            "aunsw",\r
-            "aunt",\r
-            "auqld",\r
-            "ausa",\r
-            "autas",\r
-            "auvic",\r
-            "auwa",\r
+        FR-P{\r
+            "14",\r
+            "50",\r
+            "61",\r
         }\r
-        AZ{\r
-            "azabs",\r
-            "azaga",\r
-            "azagc",\r
-            "azagm",\r
-            "azags",\r
-            "azagu",\r
-            "azast",\r
-            "azba",\r
-            "azbal",\r
-            "azbar",\r
-            "azbey",\r
-            "azbil",\r
-            "azcab",\r
-            "azcal",\r
-            "azdas",\r
-            "azfuz",\r
-            "azga",\r
-            "azgad",\r
-            "azgor",\r
-            "azgoy",\r
-            "azgyg",\r
-            "azhac",\r
-            "azimi",\r
-            "azism",\r
-            "azkal",\r
-            "azkur",\r
-            "azla",\r
-            "azlac",\r
-            "azlan",\r
-            "azler",\r
-            "azmas",\r
-            "azmi",\r
-            "azna",\r
-            "aznef",\r
-            "aznx",\r
-            "azogu",\r
-            "azqab",\r
-            "azqax",\r
-            "azqaz",\r
-            "azqba",\r
-            "azqbi",\r
-            "azqob",\r
-            "azqus",\r
-            "azsa",\r
-            "azsab",\r
-            "azsak",\r
-            "azsal",\r
-            "azsat",\r
-            "azsbn",\r
-            "azsiy",\r
-            "azskr",\r
-            "azsm",\r
-            "azsmi",\r
-            "azsmx",\r
-            "azsr",\r
-            "azsus",\r
-            "aztar",\r
-            "aztov",\r
-            "azuca",\r
-            "azxa",\r
-            "azxac",\r
-            "azxci",\r
-            "azxiz",\r
-            "azxvd",\r
-            "azyar",\r
-            "azye",\r
-            "azyev",\r
-            "azzan",\r
-            "azzaq",\r
-            "azzar",\r
+        FR-Q{\r
+            "27",\r
+            "76",\r
         }\r
-        BA{\r
-            "babih",\r
-            "babrc",\r
-            "basrp",\r
+        FR-R{\r
+            "44",\r
+            "49",\r
+            "53",\r
+            "72",\r
+            "85",\r
         }\r
-        BB{\r
-            "bb01",\r
-            "bb02",\r
-            "bb03",\r
-            "bb04",\r
-            "bb05",\r
-            "bb06",\r
-            "bb07",\r
-            "bb08",\r
-            "bb09",\r
-            "bb10",\r
-            "bb11",\r
+        FR-S{\r
+            "02",\r
+            "60",\r
+            "80",\r
+        }\r
+        FR-T{\r
+            "16",\r
+            "17",\r
+            "79",\r
+            "86",\r
+        }\r
+        FR-U{\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "13",\r
+            "83",\r
+            "84",\r
         }\r
-        BD{\r
-            "bda",\r
-            "bdb",\r
-            "bdc",\r
-            "bdd",\r
-            "bde",\r
-            "bdf",\r
-            "bdg",\r
-            "bdh",\r
+        FR-V{\r
+            "01",\r
+            "07",\r
+            "26",\r
+            "38",\r
+            "42",\r
+            "69",\r
+            "73",\r
+            "74",\r
         }\r
-        BE{\r
-            "bebru",\r
-            "bevlg",\r
-            "bewal",\r
+        GA{\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "9",\r
         }\r
-        BF{\r
-            "bf01",\r
-            "bf02",\r
-            "bf03",\r
-            "bf04",\r
-            "bf05",\r
-            "bf06",\r
-            "bf07",\r
-            "bf08",\r
-            "bf09",\r
-            "bf10",\r
-            "bf11",\r
-            "bf12",\r
-            "bf13",\r
+        GB{\r
+            "EAW",\r
+            "ENG",\r
+            "GBN",\r
+            "NIR",\r
+            "SCT",\r
+            "UKM",\r
+            "WLS",\r
+        }\r
+        GB-ENG{\r
+            "BAS",\r
+            "BBD",\r
+            "BDF",\r
+            "BDG",\r
+            "BEN",\r
+            "BEX",\r
+            "BIR",\r
+            "BKM",\r
+            "BMH",\r
+            "BNE",\r
+            "BNH",\r
+            "BNS",\r
+            "BOL",\r
+            "BPL",\r
+            "BRC",\r
+            "BRD",\r
+            "BRY",\r
+            "BST",\r
+            "BUR",\r
+            "CAM",\r
+            "CBF",\r
+            "CHE",\r
+            "CHW",\r
+            "CLD",\r
+            "CMA",\r
+            "CMD",\r
+            "CON",\r
+            "COV",\r
+            "CRY",\r
+            "DAL",\r
+            "DBY",\r
+            "DER",\r
+            "DEV",\r
+            "DNC",\r
+            "DOR",\r
+            "DUD",\r
+            "DUR",\r
+            "EAL",\r
+            "ENF",\r
+            "ERY",\r
+            "ESS",\r
+            "ESX",\r
+            "GAT",\r
+            "GLS",\r
+            "GRE",\r
+            "HAL",\r
+            "HAM",\r
+            "HAV",\r
+            "HCK",\r
+            "HEF",\r
+            "HIL",\r
+            "HMF",\r
+            "HNS",\r
+            "HPL",\r
+            "HRT",\r
+            "HRW",\r
+            "HRY",\r
+            "IOS",\r
+            "IOW",\r
+            "ISL",\r
+            "KEC",\r
+            "KEN",\r
+            "KHL",\r
+            "KIR",\r
+            "KTT",\r
+            "KWL",\r
+            "LAN",\r
+            "LBH",\r
+            "LCE",\r
+            "LDS",\r
+            "LEC",\r
+            "LEW",\r
+            "LIN",\r
+            "LIV",\r
+            "LND",\r
+            "LUT",\r
+            "MAN",\r
+            "MDB",\r
+            "MDW",\r
+            "MIK",\r
+            "MRT",\r
+            "NBL",\r
+            "NEL",\r
+            "NET",\r
+            "NFK",\r
+            "NGM",\r
+            "NLN",\r
+            "NSM",\r
+            "NTH",\r
+            "NTT",\r
+            "NTY",\r
+            "NWM",\r
+            "NYK",\r
+            "OLD",\r
+            "OXF",\r
+            "PLY",\r
+            "POL",\r
+            "POR",\r
+            "PTE",\r
+            "RCC",\r
+            "RCH",\r
+            "RDB",\r
+            "RDG",\r
+            "RIC",\r
+            "ROT",\r
+            "RUT",\r
+            "SAW",\r
+            "SFK",\r
+            "SFT",\r
+            "SGC",\r
+            "SHF",\r
+            "SHN",\r
+            "SHR",\r
+            "SKP",\r
+            "SLF",\r
+            "SLG",\r
+            "SND",\r
+            "SOL",\r
+            "SOM",\r
+            "SOS",\r
+            "SRY",\r
+            "STE",\r
+            "STH",\r
+            "STN",\r
+            "STS",\r
+            "STT",\r
+            "STY",\r
+            "SWD",\r
+            "SWK",\r
+            "TAM",\r
+            "TFW",\r
+            "THR",\r
+            "TOB",\r
+            "TRF",\r
+            "TWH",\r
+            "WAR",\r
+            "WBK",\r
+            "WFT",\r
+            "WGN",\r
+            "WIL",\r
+            "WKF",\r
+            "WLL",\r
+            "WLV",\r
+            "WND",\r
+            "WNM",\r
+            "WOK",\r
+            "WOR",\r
+            "WRL",\r
+            "WRT",\r
+            "WSM",\r
+            "WSX",\r
+            "YOR",\r
         }\r
-        BG{\r
-            "bg01",\r
-            "bg02",\r
-            "bg03",\r
-            "bg04",\r
-            "bg05",\r
-            "bg06",\r
-            "bg07",\r
-            "bg08",\r
-            "bg09",\r
-            "bg10",\r
-            "bg11",\r
-            "bg12",\r
-            "bg13",\r
-            "bg14",\r
-            "bg15",\r
-            "bg16",\r
-            "bg17",\r
-            "bg18",\r
-            "bg19",\r
-            "bg20",\r
-            "bg21",\r
-            "bg22",\r
-            "bg23",\r
-            "bg24",\r
-            "bg25",\r
-            "bg26",\r
-            "bg27",\r
-            "bg28",\r
+        GB-NIR{\r
+            "ABC",\r
+            "AND",\r
+            "ANN",\r
+            "BFS",\r
+            "CCG",\r
+            "DRS",\r
+            "FMO",\r
+            "LBC",\r
+            "MEA",\r
+            "MUL",\r
+            "NMD",\r
+        }\r
+        GB-SCT{\r
+            "ABD",\r
+            "ABE",\r
+            "AGB",\r
+            "ANS",\r
+            "CLK",\r
+            "DGY",\r
+            "DND",\r
+            "EAY",\r
+            "EDH",\r
+            "EDU",\r
+            "ELN",\r
+            "ELS",\r
+            "ERW",\r
+            "FAL",\r
+            "FIF",\r
+            "GLG",\r
+            "HLD",\r
+            "IVC",\r
+            "MLN",\r
+            "MRY",\r
+            "NAY",\r
+            "NLK",\r
+            "ORK",\r
+            "PKN",\r
+            "RFW",\r
+            "SAY",\r
+            "SCB",\r
+            "SLK",\r
+            "STG",\r
+            "WDU",\r
+            "WLN",\r
+            "ZET",\r
+        }\r
+        GB-WLS{\r
+            "AGY",\r
+            "BGE",\r
+            "BGW",\r
+            "CAY",\r
+            "CGN",\r
+            "CMN",\r
+            "CRF",\r
+            "CWY",\r
+            "DEN",\r
+            "FLN",\r
+            "GWN",\r
+            "MON",\r
+            "MTY",\r
+            "NTL",\r
+            "NWP",\r
+            "PEM",\r
+            "POW",\r
+            "RCT",\r
+            "SWA",\r
+            "TOF",\r
+            "VGL",\r
+            "WRX",\r
         }\r
-        BH{\r
-            "bh13",\r
-            "bh14",\r
-            "bh15",\r
-            "bh17",\r
+        GD{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "10",\r
         }\r
-        BI{\r
-            "bibb",\r
-            "bibl",\r
-            "bibm",\r
-            "bibr",\r
-            "bica",\r
-            "bici",\r
-            "bigi",\r
-            "biki",\r
-            "bikr",\r
-            "biky",\r
-            "bima",\r
-            "bimu",\r
-            "bimw",\r
-            "bimy",\r
-            "bing",\r
-            "birm",\r
-            "birt",\r
-            "biry",\r
+        GE{\r
+            "AB",\r
+            "AJ",\r
+            "GU",\r
+            "IM",\r
+            "KA",\r
+            "KK",\r
+            "MM",\r
+            "RL",\r
+            "SJ",\r
+            "SK",\r
+            "SZ",\r
+            "TB",\r
         }\r
-        BJ{\r
-            "bjak",\r
-            "bjal",\r
-            "bjaq",\r
-            "bjbo",\r
-            "bjco",\r
-            "bjdo",\r
-            "bjko",\r
-            "bjli",\r
-            "bjmo",\r
-            "bjou",\r
-            "bjpl",\r
-            "bjzo",\r
+        GH{\r
+            "AA",\r
+            "AH",\r
+            "BA",\r
+            "CP",\r
+            "EP",\r
+            "NP",\r
+            "TV",\r
+            "UE",\r
+            "UW",\r
+            "WP",\r
         }\r
-        BN{\r
-            "bnbe",\r
-            "bnbm",\r
-            "bnte",\r
-            "bntu",\r
+        GL{\r
+            "KU",\r
+            "QA",\r
+            "QE",\r
+            "SM",\r
         }\r
-        BO{\r
-            "bob",\r
-            "boc",\r
-            "boh",\r
-            "bol",\r
-            "bon",\r
-            "boo",\r
-            "bop",\r
-            "bos",\r
-            "bot",\r
+        GM{\r
+            "B",\r
+            "L",\r
+            "M",\r
+            "N",\r
+            "U",\r
+            "W",\r
         }\r
-        BQ{\r
-            "bqbo",\r
-            "bqsa",\r
-            "bqse",\r
+        GN{\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "F",\r
+            "K",\r
+            "L",\r
+            "M",\r
+            "N",\r
+        }\r
+        GN-B{\r
+            "BF",\r
+            "BK",\r
+            "FR",\r
+            "GA",\r
+            "KN",\r
         }\r
-        BR{\r
-            "brac",\r
-            "bral",\r
-            "bram",\r
-            "brap",\r
-            "brba",\r
-            "brce",\r
-            "brdf",\r
-            "bres",\r
-            "brgo",\r
-            "brma",\r
-            "brmg",\r
-            "brms",\r
-            "brmt",\r
-            "brpa",\r
-            "brpb",\r
-            "brpe",\r
-            "brpi",\r
-            "brpr",\r
-            "brrj",\r
-            "brrn",\r
-            "brro",\r
-            "brrr",\r
-            "brrs",\r
-            "brsc",\r
-            "brse",\r
-            "brsp",\r
-            "brto",\r
+        GN-D{\r
+            "CO",\r
+            "DU",\r
+            "FO",\r
+            "KD",\r
+            "TE",\r
         }\r
-        BS{\r
-            "bsak",\r
-            "bsbi",\r
-            "bsbp",\r
-            "bsby",\r
-            "bsce",\r
-            "bsci",\r
-            "bsck",\r
-            "bsco",\r
-            "bscs",\r
-            "bseg",\r
-            "bsex",\r
-            "bsfp",\r
-            "bsgc",\r
-            "bshi",\r
-            "bsht",\r
-            "bsin",\r
-            "bsli",\r
-            "bsmc",\r
-            "bsmg",\r
-            "bsmi",\r
-            "bsne",\r
-            "bsno",\r
-            "bsns",\r
-            "bsrc",\r
-            "bsri",\r
-            "bssa",\r
-            "bsse",\r
-            "bsso",\r
-            "bsss",\r
-            "bssw",\r
-            "bswg",\r
+        GN-F{\r
+            "DB",\r
+            "DI",\r
+            "FA",\r
+            "KS",\r
         }\r
-        BT{\r
-            "bt11",\r
-            "bt12",\r
-            "bt13",\r
-            "bt14",\r
-            "bt15",\r
-            "bt21",\r
-            "bt22",\r
-            "bt23",\r
-            "bt24",\r
-            "bt31",\r
-            "bt32",\r
-            "bt33",\r
-            "bt34",\r
-            "bt41",\r
-            "bt42",\r
-            "bt43",\r
-            "bt44",\r
-            "bt45",\r
-            "btga",\r
-            "btty",\r
+        GN-K{\r
+            "KA",\r
+            "KE",\r
+            "KO",\r
+            "MD",\r
+            "SI",\r
         }\r
-        BW{\r
-            "bwce",\r
-            "bwch",\r
-            "bwfr",\r
-            "bwga",\r
-            "bwgh",\r
-            "bwjw",\r
-            "bwkg",\r
-            "bwkl",\r
-            "bwkw",\r
-            "bwlo",\r
-            "bwne",\r
-            "bwnw",\r
-            "bwse",\r
-            "bwso",\r
-            "bwsp",\r
-            "bwst",\r
+        GN-L{\r
+            "KB",\r
+            "LA",\r
+            "LE",\r
+            "ML",\r
+            "TO",\r
         }\r
-        BY{\r
-            "bybr",\r
-            "byhm",\r
-            "byho",\r
-            "byhr",\r
-            "byma",\r
-            "bymi",\r
-            "byvi",\r
+        GN-M{\r
+            "DL",\r
+            "MM",\r
+            "PI",\r
         }\r
-        BZ{\r
-            "bzbz",\r
-            "bzcy",\r
-            "bzczl",\r
-            "bzow",\r
-            "bzsc",\r
-            "bztol",\r
+        GN-N{\r
+            "BE",\r
+            "GU",\r
+            "LO",\r
+            "MC",\r
+            "NZ",\r
+            "YO",\r
         }\r
-        CA{\r
-            "caab",\r
-            "cabc",\r
-            "camb",\r
-            "canb",\r
-            "canl",\r
-            "cans",\r
-            "cant",\r
-            "canu",\r
-            "caon",\r
-            "cape",\r
-            "caqc",\r
-            "cask",\r
-            "cayt",\r
+        GQ{\r
+            "C",\r
+            "I",\r
         }\r
-        CD{\r
-            "cdbc",\r
-            "cdbu",\r
-            "cdeq",\r
-            "cdhk",\r
-            "cdhl",\r
-            "cdhu",\r
-            "cdit",\r
-            "cdkc",\r
-            "cdke",\r
-            "cdkg",\r
-            "cdkl",\r
-            "cdkn",\r
-            "cdks",\r
-            "cdlo",\r
-            "cdlu",\r
-            "cdma",\r
-            "cdmn",\r
-            "cdmo",\r
-            "cdnk",\r
-            "cdnu",\r
-            "cdsa",\r
-            "cdsk",\r
-            "cdsu",\r
-            "cdta",\r
-            "cdto",\r
-            "cdtu",\r
+        GQ-C{\r
+            "CS",\r
+            "KN",\r
+            "LI",\r
+            "WN",\r
         }\r
-        CF{\r
-            "cfac",\r
-            "cfbb",\r
-            "cfbgf",\r
-            "cfbk",\r
-            "cfhk",\r
-            "cfhm",\r
-            "cfhs",\r
-            "cfkb",\r
-            "cfkg",\r
-            "cflb",\r
-            "cfmb",\r
-            "cfmp",\r
-            "cfnm",\r
-            "cfop",\r
-            "cfse",\r
-            "cfuk",\r
-            "cfvk",\r
+        GQ-I{\r
+            "AN",\r
+            "BN",\r
+            "BS",\r
         }\r
-        CG{\r
-            "cg2",\r
-            "cg5",\r
-            "cg7",\r
-            "cg8",\r
-            "cg9",\r
-            "cg11",\r
-            "cg12",\r
-            "cg13",\r
-            "cg14",\r
-            "cg15",\r
-            "cg16",\r
-            "cgbzv",\r
+        GR{\r
+            "69",\r
+            "A",\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "H",\r
+            "I",\r
+            "J",\r
+            "K",\r
+            "L",\r
+            "M",\r
+        }\r
+        GR-A{\r
+            "52",\r
+            "55",\r
+            "71",\r
+            "72",\r
+            "73",\r
+        }\r
+        GR-B{\r
+            "53",\r
+            "54",\r
+            "57",\r
+            "59",\r
+            "61",\r
+            "62",\r
+            "64",\r
         }\r
-        CH{\r
-            "chag",\r
-            "chai",\r
-            "char",\r
-            "chbe",\r
-            "chbl",\r
-            "chbs",\r
-            "chfr",\r
-            "chge",\r
-            "chgl",\r
-            "chgr",\r
-            "chju",\r
-            "chlu",\r
-            "chne",\r
-            "chnw",\r
-            "chow",\r
-            "chsg",\r
-            "chsh",\r
-            "chso",\r
-            "chsz",\r
-            "chtg",\r
-            "chti",\r
-            "chur",\r
-            "chvd",\r
-            "chvs",\r
-            "chzg",\r
-            "chzh",\r
+        GR-C{\r
+            "51",\r
+            "56",\r
+            "58",\r
+            "63",\r
         }\r
-        CI{\r
-            "ciab",\r
-            "cibs",\r
-            "cicm",\r
-            "cidn",\r
-            "cigd",\r
-            "cilc",\r
-            "cilg",\r
-            "cimg",\r
-            "cism",\r
-            "cisv",\r
-            "civb",\r
-            "ciwr",\r
-            "ciym",\r
-            "cizz",\r
+        GR-D{\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
         }\r
-        CL{\r
-            "clai",\r
-            "clan",\r
-            "clap",\r
-            "clar",\r
-            "clat",\r
-            "clbi",\r
-            "clco",\r
-            "clli",\r
-            "clll",\r
-            "cllr",\r
-            "clma",\r
-            "clml",\r
-            "clrm",\r
-            "clta",\r
-            "clvs",\r
+        GR-E{\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
         }\r
-        CM{\r
-            "cmad",\r
-            "cmce",\r
-            "cmen",\r
-            "cmes",\r
-            "cmlt",\r
-            "cmno",\r
-            "cmnw",\r
-            "cmou",\r
-            "cmsu",\r
-            "cmsw",\r
+        GR-F{\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+        }\r
+        GR-G{\r
+            "01",\r
+            "13",\r
+            "14",\r
+        }\r
+        GR-H{\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+        }\r
+        GR-I{"A1"}\r
+        GR-J{\r
+            "11",\r
+            "12",\r
+            "15",\r
+            "16",\r
+            "17",\r
         }\r
-        CN{\r
-            "cn11",\r
-            "cn12",\r
-            "cn13",\r
-            "cn14",\r
-            "cn15",\r
-            "cn21",\r
-            "cn22",\r
-            "cn23",\r
-            "cn31",\r
-            "cn32",\r
-            "cn33",\r
-            "cn34",\r
-            "cn35",\r
-            "cn36",\r
-            "cn37",\r
-            "cn41",\r
-            "cn42",\r
-            "cn43",\r
-            "cn44",\r
-            "cn45",\r
-            "cn46",\r
-            "cn50",\r
-            "cn51",\r
-            "cn52",\r
-            "cn53",\r
-            "cn54",\r
-            "cn61",\r
-            "cn62",\r
-            "cn63",\r
-            "cn64",\r
-            "cn65",\r
-            "cn71",\r
-            "cn91",\r
-            "cn92",\r
+        GR-K{\r
+            "83",\r
+            "84",\r
+            "85",\r
         }\r
-        CO{\r
-            "coama",\r
-            "coant",\r
-            "coara",\r
-            "coatl",\r
-            "cobol",\r
-            "coboy",\r
-            "cocal",\r
-            "cocaq",\r
-            "cocas",\r
-            "cocau",\r
-            "coces",\r
-            "cocho",\r
-            "cocor",\r
-            "cocun",\r
-            "codc",\r
-            "cogua",\r
-            "coguv",\r
-            "cohui",\r
-            "colag",\r
-            "comag",\r
-            "comet",\r
-            "conar",\r
-            "consa",\r
-            "coput",\r
-            "coqui",\r
-            "coris",\r
-            "cosan",\r
-            "cosap",\r
-            "cosuc",\r
-            "cotol",\r
-            "covac",\r
-            "covau",\r
-            "covid",\r
+        GR-L{\r
+            "81",\r
+            "82",\r
         }\r
-        CR{\r
-            "cra",\r
-            "crc",\r
-            "crg",\r
-            "crh",\r
-            "crl",\r
-            "crp",\r
-            "crsj",\r
+        GR-M{\r
+            "91",\r
+            "92",\r
+            "93",\r
+            "94",\r
         }\r
-        CU{\r
-            "cu01",\r
-            "cu03",\r
-            "cu04",\r
-            "cu05",\r
-            "cu06",\r
-            "cu07",\r
-            "cu08",\r
-            "cu09",\r
-            "cu10",\r
-            "cu11",\r
-            "cu12",\r
-            "cu13",\r
-            "cu14",\r
-            "cu15",\r
-            "cu16",\r
-            "cu99",\r
+        GT{\r
+            "AV",\r
+            "BV",\r
+            "CM",\r
+            "CQ",\r
+            "ES",\r
+            "GU",\r
+            "HU",\r
+            "IZ",\r
+            "JA",\r
+            "JU",\r
+            "PE",\r
+            "PR",\r
+            "QC",\r
+            "QZ",\r
+            "RE",\r
+            "SA",\r
+            "SM",\r
+            "SO",\r
+            "SR",\r
+            "SU",\r
+            "TO",\r
+            "ZA",\r
         }\r
-        CV{\r
-            "cvb",\r
-            "cvs",\r
+        GW{\r
+            "BS",\r
+            "L",\r
+            "N",\r
+            "S",\r
         }\r
-        CY{\r
-            "cy01",\r
-            "cy02",\r
-            "cy03",\r
-            "cy04",\r
-            "cy05",\r
-            "cy06",\r
+        GW-L{\r
+            "BA",\r
+            "GA",\r
         }\r
-        CZ{\r
-            "cz10",\r
-            "cz20",\r
-            "cz31",\r
-            "cz32",\r
-            "cz41",\r
-            "cz42",\r
-            "cz51",\r
-            "cz52",\r
-            "cz53",\r
-            "cz63",\r
-            "cz64",\r
-            "cz71",\r
-            "cz72",\r
-            "cz80",\r
+        GW-N{\r
+            "BM",\r
+            "CA",\r
+            "OI",\r
         }\r
-        DE{\r
-            "debb",\r
-            "debe",\r
-            "debw",\r
-            "deby",\r
-            "dehb",\r
-            "dehe",\r
-            "dehh",\r
-            "demv",\r
-            "deni",\r
-            "denw",\r
-            "derp",\r
-            "desh",\r
-            "desl",\r
-            "desn",\r
-            "dest",\r
-            "deth",\r
+        GW-S{\r
+            "BL",\r
+            "QU",\r
+            "TO",\r
         }\r
-        DJ{\r
-            "djar",\r
-            "djas",\r
-            "djdi",\r
-            "djdj",\r
-            "djob",\r
-            "djta",\r
+        GY{\r
+            "BA",\r
+            "CU",\r
+            "DE",\r
+            "EB",\r
+            "ES",\r
+            "MA",\r
+            "PM",\r
+            "PT",\r
+            "UD",\r
+            "UT",\r
         }\r
-        DK{\r
-            "dk81",\r
-            "dk82",\r
-            "dk83",\r
-            "dk84",\r
-            "dk85",\r
+        HN{\r
+            "AT",\r
+            "CH",\r
+            "CL",\r
+            "CM",\r
+            "CP",\r
+            "CR",\r
+            "EP",\r
+            "FM",\r
+            "GD",\r
+            "IB",\r
+            "IN",\r
+            "LE",\r
+            "LP",\r
+            "OC",\r
+            "OL",\r
+            "SB",\r
+            "VA",\r
+            "YO",\r
         }\r
-        DM{\r
-            "dm02",\r
-            "dm03",\r
-            "dm04",\r
-            "dm05",\r
-            "dm06",\r
-            "dm07",\r
-            "dm08",\r
-            "dm09",\r
-            "dm10",\r
-            "dm11",\r
+        HR{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
         }\r
-        DO{\r
-            "do33",\r
-            "do34",\r
-            "do35",\r
-            "do36",\r
-            "do37",\r
-            "do38",\r
-            "do39",\r
-            "do40",\r
-            "do41",\r
-            "do42",\r
+        HT{\r
+            "AR",\r
+            "CE",\r
+            "GA",\r
+            "ND",\r
+            "NE",\r
+            "NI",\r
+            "NO",\r
+            "OU",\r
+            "SD",\r
+            "SE",\r
         }\r
-        DZ{\r
-            "dz01",\r
-            "dz02",\r
-            "dz03",\r
-            "dz04",\r
-            "dz05",\r
-            "dz06",\r
-            "dz07",\r
-            "dz08",\r
-            "dz09",\r
-            "dz10",\r
-            "dz11",\r
-            "dz12",\r
-            "dz13",\r
-            "dz14",\r
-            "dz15",\r
-            "dz16",\r
-            "dz17",\r
-            "dz18",\r
-            "dz19",\r
-            "dz20",\r
-            "dz21",\r
-            "dz22",\r
-            "dz23",\r
-            "dz24",\r
-            "dz25",\r
-            "dz26",\r
-            "dz27",\r
-            "dz28",\r
-            "dz29",\r
-            "dz30",\r
-            "dz31",\r
-            "dz32",\r
-            "dz33",\r
-            "dz34",\r
-            "dz35",\r
-            "dz36",\r
-            "dz37",\r
-            "dz38",\r
-            "dz39",\r
-            "dz40",\r
-            "dz41",\r
-            "dz42",\r
-            "dz43",\r
-            "dz44",\r
-            "dz45",\r
-            "dz46",\r
-            "dz47",\r
-            "dz48",\r
+        HU{\r
+            "BA",\r
+            "BC",\r
+            "BE",\r
+            "BK",\r
+            "BU",\r
+            "BZ",\r
+            "CS",\r
+            "DE",\r
+            "DU",\r
+            "EG",\r
+            "ER",\r
+            "FE",\r
+            "GS",\r
+            "GY",\r
+            "HB",\r
+            "HE",\r
+            "HV",\r
+            "JN",\r
+            "KE",\r
+            "KM",\r
+            "KV",\r
+            "MI",\r
+            "NK",\r
+            "NO",\r
+            "NY",\r
+            "PE",\r
+            "PS",\r
+            "SD",\r
+            "SF",\r
+            "SH",\r
+            "SK",\r
+            "SN",\r
+            "SO",\r
+            "SS",\r
+            "ST",\r
+            "SZ",\r
+            "TB",\r
+            "TO",\r
+            "VA",\r
+            "VE",\r
+            "VM",\r
+            "ZA",\r
+            "ZE",\r
         }\r
-        EC{\r
-            "eca",\r
-            "ecb",\r
-            "ecc",\r
-            "ecd",\r
-            "ece",\r
-            "ecf",\r
-            "ecg",\r
-            "ech",\r
-            "eci",\r
-            "ecl",\r
-            "ecm",\r
-            "ecn",\r
-            "eco",\r
-            "ecp",\r
-            "ecr",\r
-            "ecs",\r
-            "ecsd",\r
-            "ecse",\r
-            "ect",\r
-            "ecu",\r
-            "ecw",\r
-            "ecx",\r
-            "ecy",\r
-            "ecz",\r
+        ID{\r
+            "JW",\r
+            "KA",\r
+            "ML",\r
+            "NU",\r
+            "PP",\r
+            "SL",\r
+            "SM",\r
         }\r
-        EE{\r
-            "ee37",\r
-            "ee39",\r
-            "ee44",\r
-            "ee49",\r
-            "ee51",\r
-            "ee57",\r
-            "ee59",\r
-            "ee65",\r
-            "ee67",\r
-            "ee70",\r
-            "ee74",\r
-            "ee78",\r
-            "ee82",\r
-            "ee84",\r
-            "ee86",\r
+        ID-JW{\r
+            "BT",\r
+            "JB",\r
+            "JI",\r
+            "JK",\r
+            "JT",\r
+            "YO",\r
+        }\r
+        ID-KA{\r
+            "KB",\r
+            "KI",\r
+            "KS",\r
+            "KT",\r
+            "KU",\r
         }\r
-        EG{\r
-            "egalx",\r
-            "egasn",\r
-            "egast",\r
-            "egba",\r
-            "egbh",\r
-            "egbns",\r
-            "egc",\r
-            "egdk",\r
-            "egdt",\r
-            "egfym",\r
-            "eggh",\r
-            "eggz",\r
-            "egis",\r
-            "egjs",\r
-            "egkb",\r
-            "egkfs",\r
-            "egkn",\r
-            "eglx",\r
-            "egmn",\r
-            "egmnf",\r
-            "egmt",\r
-            "egpts",\r
-            "egshg",\r
-            "egshr",\r
-            "egsin",\r
-            "egsuz",\r
-            "egwad",\r
+        ID-ML{\r
+            "MA",\r
+            "MU",\r
         }\r
-        ER{\r
-            "eran",\r
-            "erdk",\r
-            "erdu",\r
-            "ergb",\r
-            "erma",\r
-            "ersk",\r
+        ID-NU{\r
+            "BA",\r
+            "NB",\r
+            "NT",\r
         }\r
-        ES{\r
-            "esan",\r
-            "esar",\r
-            "esas",\r
-            "escb",\r
-            "esce",\r
-            "escl",\r
-            "escm",\r
-            "escn",\r
-            "esct",\r
-            "esex",\r
-            "esga",\r
-            "esib",\r
-            "esmc",\r
-            "esmd",\r
-            "esml",\r
-            "esnc",\r
-            "espv",\r
-            "esri",\r
-            "esvc",\r
+        ID-PP{\r
+            "PA",\r
+            "PB",\r
         }\r
-        ET{\r
-            "etaa",\r
-            "etaf",\r
-            "etam",\r
-            "etbe",\r
-            "etdd",\r
-            "etga",\r
-            "etha",\r
-            "etor",\r
-            "etsn",\r
-            "etso",\r
-            "etti",\r
+        ID-SL{\r
+            "GO",\r
+            "SA",\r
+            "SG",\r
+            "SN",\r
+            "SR",\r
+            "ST",\r
         }\r
-        FI{\r
-            "fi01",\r
-            "fi02",\r
-            "fi03",\r
-            "fi04",\r
-            "fi05",\r
-            "fi06",\r
-            "fi07",\r
-            "fi08",\r
-            "fi09",\r
-            "fi10",\r
-            "fi11",\r
-            "fi12",\r
-            "fi13",\r
-            "fi14",\r
-            "fi15",\r
-            "fi16",\r
-            "fi17",\r
-            "fi18",\r
-            "fi19",\r
+        ID-SM{\r
+            "AC",\r
+            "BB",\r
+            "BE",\r
+            "JA",\r
+            "KR",\r
+            "LA",\r
+            "RI",\r
+            "SB",\r
+            "SS",\r
+            "SU",\r
         }\r
-        FJ{\r
-            "fjc",\r
-            "fje",\r
-            "fjn",\r
-            "fjr",\r
-            "fjw",\r
+        IE{\r
+            "C",\r
+            "L",\r
+            "M",\r
+            "U",\r
+        }\r
+        IE-C{\r
+            "G",\r
+            "LM",\r
+            "MO",\r
+            "RN",\r
+            "SO",\r
+        }\r
+        IE-L{\r
+            "CW",\r
+            "D",\r
+            "KE",\r
+            "KK",\r
+            "LD",\r
+            "LH",\r
+            "LS",\r
+            "MH",\r
+            "OY",\r
+            "WH",\r
+            "WW",\r
+            "WX",\r
         }\r
-        FM{\r
-            "fmksa",\r
-            "fmpni",\r
-            "fmtrk",\r
-            "fmyap",\r
+        IE-M{\r
+            "CE",\r
+            "CO",\r
+            "KY",\r
+            "LK",\r
+            "TA",\r
+            "WD",\r
         }\r
-        FR{\r
-            "frara",\r
-            "frbfc",\r
-            "frbl",\r
-            "frbre",\r
-            "frcor",\r
-            "frcp",\r
-            "frcvl",\r
-            "frges",\r
-            "frgf",\r
-            "frgua",\r
-            "frhdf",\r
-            "fridf",\r
-            "frlre",\r
-            "frmay",\r
-            "frmf",\r
-            "frmq",\r
-            "frnaq",\r
-            "frnc",\r
-            "frnor",\r
-            "frocc",\r
-            "frpac",\r
-            "frpdl",\r
-            "frpf",\r
-            "frpm",\r
-            "frtf",\r
-            "frwf",\r
+        IE-U{\r
+            "CN",\r
+            "DL",\r
+            "MN",\r
         }\r
-        GA{\r
-            "ga1",\r
-            "ga2",\r
-            "ga3",\r
-            "ga4",\r
-            "ga5",\r
-            "ga6",\r
-            "ga7",\r
-            "ga8",\r
-            "ga9",\r
+        IL{\r
+            "D",\r
+            "HA",\r
+            "JM",\r
+            "M",\r
+            "TA",\r
+            "Z",\r
         }\r
-        GB{\r
-            "gbeaw",\r
-            "gbeng",\r
-            "gbgbn",\r
-            "gbnir",\r
-            "gbsct",\r
-            "gbukm",\r
-            "gbwls",\r
+        IN{\r
+            "AN",\r
+            "AP",\r
+            "AR",\r
+            "AS",\r
+            "BR",\r
+            "CH",\r
+            "CT",\r
+            "DD",\r
+            "DL",\r
+            "DN",\r
+            "GA",\r
+            "GJ",\r
+            "HP",\r
+            "HR",\r
+            "JH",\r
+            "JK",\r
+            "KA",\r
+            "KL",\r
+            "LD",\r
+            "MH",\r
+            "ML",\r
+            "MN",\r
+            "MP",\r
+            "MZ",\r
+            "NL",\r
+            "OR",\r
+            "PB",\r
+            "PY",\r
+            "RJ",\r
+            "SK",\r
+            "TG",\r
+            "TN",\r
+            "TR",\r
+            "UP",\r
+            "UT",\r
+            "WB",\r
         }\r
-        GD{\r
-            "gd01",\r
-            "gd02",\r
-            "gd03",\r
-            "gd04",\r
-            "gd05",\r
-            "gd06",\r
-            "gd10",\r
+        IQ{\r
+            "AN",\r
+            "AR",\r
+            "BA",\r
+            "BB",\r
+            "BG",\r
+            "DA",\r
+            "DI",\r
+            "DQ",\r
+            "KA",\r
+            "KI",\r
+            "MA",\r
+            "MU",\r
+            "NA",\r
+            "NI",\r
+            "QA",\r
+            "SD",\r
+            "SU",\r
+            "WA",\r
         }\r
-        GE{\r
-            "geab",\r
-            "geaj",\r
-            "gegu",\r
-            "geim",\r
-            "geka",\r
-            "gekk",\r
-            "gemm",\r
-            "gerl",\r
-            "gesj",\r
-            "gesk",\r
-            "gesz",\r
-            "getb",\r
+        IR{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
         }\r
-        GH{\r
-            "ghaa",\r
-            "ghah",\r
-            "ghba",\r
-            "ghcp",\r
-            "ghep",\r
-            "ghnp",\r
-            "ghtv",\r
-            "ghue",\r
-            "ghuw",\r
-            "ghwp",\r
+        IS{\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
         }\r
-        GL{\r
-            "glku",\r
-            "glqa",\r
-            "glqe",\r
-            "glsm",\r
+        IT{\r
+            "21",\r
+            "23",\r
+            "25",\r
+            "32",\r
+            "34",\r
+            "36",\r
+            "42",\r
+            "45",\r
+            "52",\r
+            "55",\r
+            "57",\r
+            "62",\r
+            "65",\r
+            "67",\r
+            "72",\r
+            "75",\r
+            "77",\r
+            "78",\r
+            "82",\r
+            "88",\r
         }\r
-        GM{\r
-            "gmb",\r
-            "gml",\r
-            "gmm",\r
-            "gmn",\r
-            "gmu",\r
-            "gmw",\r
+        IT-21{\r
+            "AL",\r
+            "AT",\r
+            "BI",\r
+            "CN",\r
+            "NO",\r
+            "TO",\r
+            "VB",\r
+            "VC",\r
         }\r
-        GN{\r
-            "gnb",\r
-            "gnc",\r
-            "gnd",\r
-            "gnf",\r
-            "gnk",\r
-            "gnl",\r
-            "gnm",\r
-            "gnn",\r
+        IT-23{"AO"}\r
+        IT-25{\r
+            "BG",\r
+            "BS",\r
+            "CO",\r
+            "CR",\r
+            "LC",\r
+            "LO",\r
+            "MB",\r
+            "MI",\r
+            "MN",\r
+            "PV",\r
+            "SO",\r
+            "VA",\r
         }\r
-        GQ{\r
-            "gqc",\r
-            "gqi",\r
+        IT-32{\r
+            "BZ",\r
+            "TN",\r
         }\r
-        GR{\r
-            "gr69",\r
-            "gra",\r
-            "grb",\r
-            "grc",\r
-            "grd",\r
-            "gre",\r
-            "grf",\r
-            "grg",\r
-            "grh",\r
-            "gri",\r
-            "grj",\r
-            "grk",\r
-            "grl",\r
-            "grm",\r
+        IT-34{\r
+            "BL",\r
+            "PD",\r
+            "RO",\r
+            "TV",\r
+            "VE",\r
+            "VI",\r
+            "VR",\r
         }\r
-        GT{\r
-            "gtav",\r
-            "gtbv",\r
-            "gtcm",\r
-            "gtcq",\r
-            "gtes",\r
-            "gtgu",\r
-            "gthu",\r
-            "gtiz",\r
-            "gtja",\r
-            "gtju",\r
-            "gtpe",\r
-            "gtpr",\r
-            "gtqc",\r
-            "gtqz",\r
-            "gtre",\r
-            "gtsa",\r
-            "gtsm",\r
-            "gtso",\r
-            "gtsr",\r
-            "gtsu",\r
-            "gtto",\r
-            "gtza",\r
+        IT-36{\r
+            "GO",\r
+            "PN",\r
+            "TS",\r
+            "UD",\r
         }\r
-        GW{\r
-            "gwbs",\r
-            "gwl",\r
-            "gwn",\r
-            "gws",\r
+        IT-42{\r
+            "GE",\r
+            "IM",\r
+            "SP",\r
+            "SV",\r
         }\r
-        GY{\r
-            "gyba",\r
-            "gycu",\r
-            "gyde",\r
-            "gyeb",\r
-            "gyes",\r
-            "gyma",\r
-            "gypm",\r
-            "gypt",\r
-            "gyud",\r
-            "gyut",\r
+        IT-45{\r
+            "BO",\r
+            "FC",\r
+            "FE",\r
+            "MO",\r
+            "PC",\r
+            "PR",\r
+            "RA",\r
+            "RE",\r
+            "RN",\r
         }\r
-        HN{\r
-            "hnat",\r
-            "hnch",\r
-            "hncl",\r
-            "hncm",\r
-            "hncp",\r
-            "hncr",\r
-            "hnep",\r
-            "hnfm",\r
-            "hngd",\r
-            "hnib",\r
-            "hnin",\r
-            "hnle",\r
-            "hnlp",\r
-            "hnoc",\r
-            "hnol",\r
-            "hnsb",\r
-            "hnva",\r
-            "hnyo",\r
+        IT-52{\r
+            "AR",\r
+            "FI",\r
+            "GR",\r
+            "LI",\r
+            "LU",\r
+            "MS",\r
+            "PI",\r
+            "PO",\r
+            "PT",\r
+            "SI",\r
         }\r
-        HR{\r
-            "hr01",\r
-            "hr02",\r
-            "hr03",\r
-            "hr04",\r
-            "hr05",\r
-            "hr06",\r
-            "hr07",\r
-            "hr08",\r
-            "hr09",\r
-            "hr10",\r
-            "hr11",\r
-            "hr12",\r
-            "hr13",\r
-            "hr14",\r
-            "hr15",\r
-            "hr16",\r
-            "hr17",\r
-            "hr18",\r
-            "hr19",\r
-            "hr20",\r
-            "hr21",\r
+        IT-55{\r
+            "PG",\r
+            "TR",\r
         }\r
-        HT{\r
-            "htar",\r
-            "htce",\r
-            "htga",\r
-            "htnd",\r
-            "htne",\r
-            "htni",\r
-            "htno",\r
-            "htou",\r
-            "htsd",\r
-            "htse",\r
+        IT-57{\r
+            "AN",\r
+            "AP",\r
+            "FM",\r
+            "MC",\r
+            "PU",\r
         }\r
-        HU{\r
-            "huba",\r
-            "hubc",\r
-            "hube",\r
-            "hubk",\r
-            "hubu",\r
-            "hubz",\r
-            "hucs",\r
-            "hude",\r
-            "hudu",\r
-            "hueg",\r
-            "huer",\r
-            "hufe",\r
-            "hugs",\r
-            "hugy",\r
-            "huhb",\r
-            "huhe",\r
-            "huhv",\r
-            "hujn",\r
-            "huke",\r
-            "hukm",\r
-            "hukv",\r
-            "humi",\r
-            "hunk",\r
-            "huno",\r
-            "huny",\r
-            "hupe",\r
-            "hups",\r
-            "husd",\r
-            "husf",\r
-            "hush",\r
-            "husk",\r
-            "husn",\r
-            "huso",\r
-            "huss",\r
-            "hust",\r
-            "husz",\r
-            "hutb",\r
-            "huto",\r
-            "huva",\r
-            "huve",\r
-            "huvm",\r
-            "huza",\r
-            "huze",\r
+        IT-62{\r
+            "FR",\r
+            "LT",\r
+            "RI",\r
+            "RM",\r
+            "VT",\r
         }\r
-        ID{\r
-            "idjw",\r
-            "idka",\r
-            "idml",\r
-            "idnu",\r
-            "idpp",\r
-            "idsl",\r
-            "idsm",\r
+        IT-65{\r
+            "AQ",\r
+            "CH",\r
+            "PE",\r
+            "TE",\r
         }\r
-        IE{\r
-            "iec",\r
-            "iel",\r
-            "iem",\r
-            "ieu",\r
+        IT-67{\r
+            "CB",\r
+            "IS",\r
         }\r
-        IL{\r
-            "ild",\r
-            "ilha",\r
-            "iljm",\r
-            "ilm",\r
-            "ilta",\r
-            "ilz",\r
+        IT-72{\r
+            "AV",\r
+            "BN",\r
+            "CE",\r
+            "NA",\r
+            "SA",\r
         }\r
-        IN{\r
-            "inan",\r
-            "inap",\r
-            "inar",\r
-            "inas",\r
-            "inbr",\r
-            "inch",\r
-            "inct",\r
-            "indd",\r
-            "indl",\r
-            "indn",\r
-            "inga",\r
-            "ingj",\r
-            "inhp",\r
-            "inhr",\r
-            "injh",\r
-            "injk",\r
-            "inka",\r
-            "inkl",\r
-            "inld",\r
-            "inmh",\r
-            "inml",\r
-            "inmn",\r
-            "inmp",\r
-            "inmz",\r
-            "innl",\r
-            "inor",\r
-            "inpb",\r
-            "inpy",\r
-            "inrj",\r
-            "insk",\r
-            "intg",\r
-            "intn",\r
-            "intr",\r
-            "inup",\r
-            "inut",\r
-            "inwb",\r
+        IT-75{\r
+            "BA",\r
+            "BR",\r
+            "BT",\r
+            "FG",\r
+            "LE",\r
+            "TA",\r
         }\r
-        IQ{\r
-            "iqan",\r
-            "iqar",\r
-            "iqba",\r
-            "iqbb",\r
-            "iqbg",\r
-            "iqda",\r
-            "iqdi",\r
-            "iqdq",\r
-            "iqka",\r
-            "iqki",\r
-            "iqma",\r
-            "iqmu",\r
-            "iqna",\r
-            "iqni",\r
-            "iqqa",\r
-            "iqsd",\r
-            "iqsu",\r
-            "iqwa",\r
+        IT-77{\r
+            "MT",\r
+            "PZ",\r
         }\r
-        IR{\r
-            "ir01",\r
-            "ir02",\r
-            "ir03",\r
-            "ir04",\r
-            "ir05",\r
-            "ir06",\r
-            "ir07",\r
-            "ir08",\r
-            "ir10",\r
-            "ir11",\r
-            "ir12",\r
-            "ir13",\r
-            "ir14",\r
-            "ir15",\r
-            "ir16",\r
-            "ir17",\r
-            "ir18",\r
-            "ir19",\r
-            "ir20",\r
-            "ir21",\r
-            "ir22",\r
-            "ir23",\r
-            "ir24",\r
-            "ir25",\r
-            "ir26",\r
-            "ir27",\r
-            "ir28",\r
-            "ir29",\r
-            "ir30",\r
-            "ir31",\r
-            "ir32",\r
+        IT-78{\r
+            "CS",\r
+            "CZ",\r
+            "KR",\r
+            "RC",\r
+            "VV",\r
         }\r
-        IS{\r
-            "is1",\r
-            "is2",\r
-            "is3",\r
-            "is4",\r
-            "is5",\r
-            "is6",\r
-            "is7",\r
-            "is8",\r
+        IT-82{\r
+            "AG",\r
+            "CL",\r
+            "CT",\r
+            "EN",\r
+            "ME",\r
+            "PA",\r
+            "RG",\r
+            "SR",\r
+            "TP",\r
         }\r
-        IT{\r
-            "it21",\r
-            "it23",\r
-            "it25",\r
-            "it32",\r
-            "it34",\r
-            "it36",\r
-            "it42",\r
-            "it45",\r
-            "it52",\r
-            "it55",\r
-            "it57",\r
-            "it62",\r
-            "it65",\r
-            "it67",\r
-            "it72",\r
-            "it75",\r
-            "it77",\r
-            "it78",\r
-            "it82",\r
-            "it88",\r
+        IT-88{\r
+            "CA",\r
+            "CI",\r
+            "NU",\r
+            "OG",\r
+            "OR",\r
+            "OT",\r
+            "SS",\r
+            "VS",\r
         }\r
         JM{\r
-            "jm01",\r
-            "jm02",\r
-            "jm03",\r
-            "jm04",\r
-            "jm05",\r
-            "jm06",\r
-            "jm07",\r
-            "jm08",\r
-            "jm09",\r
-            "jm10",\r
-            "jm11",\r
-            "jm12",\r
-            "jm13",\r
-            "jm14",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
         }\r
         JO{\r
-            "joaj",\r
-            "joam",\r
-            "joaq",\r
-            "joat",\r
-            "joaz",\r
-            "joba",\r
-            "joir",\r
-            "joja",\r
-            "joka",\r
-            "joma",\r
-            "jomd",\r
-            "jomn",\r
+            "AJ",\r
+            "AM",\r
+            "AQ",\r
+            "AT",\r
+            "AZ",\r
+            "BA",\r
+            "IR",\r
+            "JA",\r
+            "KA",\r
+            "MA",\r
+            "MD",\r
+            "MN",\r
         }\r
         JP{\r
-            "jp01",\r
-            "jp02",\r
-            "jp03",\r
-            "jp04",\r
-            "jp05",\r
-            "jp06",\r
-            "jp07",\r
-            "jp08",\r
-            "jp09",\r
-            "jp10",\r
-            "jp11",\r
-            "jp12",\r
-            "jp13",\r
-            "jp14",\r
-            "jp15",\r
-            "jp16",\r
-            "jp17",\r
-            "jp18",\r
-            "jp19",\r
-            "jp20",\r
-            "jp21",\r
-            "jp22",\r
-            "jp23",\r
-            "jp24",\r
-            "jp25",\r
-            "jp26",\r
-            "jp27",\r
-            "jp28",\r
-            "jp29",\r
-            "jp30",\r
-            "jp31",\r
-            "jp32",\r
-            "jp33",\r
-            "jp34",\r
-            "jp35",\r
-            "jp36",\r
-            "jp37",\r
-            "jp38",\r
-            "jp39",\r
-            "jp40",\r
-            "jp41",\r
-            "jp42",\r
-            "jp43",\r
-            "jp44",\r
-            "jp45",\r
-            "jp46",\r
-            "jp47",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
         }\r
         KE{\r
-            "ke01",\r
-            "ke02",\r
-            "ke03",\r
-            "ke04",\r
-            "ke05",\r
-            "ke06",\r
-            "ke07",\r
-            "ke08",\r
-            "ke09",\r
-            "ke10",\r
-            "ke11",\r
-            "ke12",\r
-            "ke13",\r
-            "ke14",\r
-            "ke15",\r
-            "ke16",\r
-            "ke17",\r
-            "ke18",\r
-            "ke19",\r
-            "ke20",\r
-            "ke21",\r
-            "ke22",\r
-            "ke23",\r
-            "ke24",\r
-            "ke25",\r
-            "ke26",\r
-            "ke27",\r
-            "ke28",\r
-            "ke29",\r
-            "ke30",\r
-            "ke31",\r
-            "ke32",\r
-            "ke33",\r
-            "ke34",\r
-            "ke35",\r
-            "ke36",\r
-            "ke37",\r
-            "ke38",\r
-            "ke39",\r
-            "ke40",\r
-            "ke41",\r
-            "ke42",\r
-            "ke43",\r
-            "ke44",\r
-            "ke45",\r
-            "ke46",\r
-            "ke47",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
         }\r
         KG{\r
-            "kgb",\r
-            "kgc",\r
-            "kggb",\r
-            "kggo",\r
-            "kgj",\r
-            "kgn",\r
-            "kgo",\r
-            "kgt",\r
-            "kgy",\r
+            "B",\r
+            "C",\r
+            "GB",\r
+            "GO",\r
+            "J",\r
+            "N",\r
+            "O",\r
+            "T",\r
+            "Y",\r
         }\r
         KH{\r
-            "kh1",\r
-            "kh2",\r
-            "kh3",\r
-            "kh4",\r
-            "kh5",\r
-            "kh6",\r
-            "kh7",\r
-            "kh8",\r
-            "kh9",\r
-            "kh10",\r
-            "kh11",\r
-            "kh12",\r
-            "kh13",\r
-            "kh14",\r
-            "kh15",\r
-            "kh16",\r
-            "kh17",\r
-            "kh18",\r
-            "kh19",\r
-            "kh20",\r
-            "kh21",\r
-            "kh22",\r
-            "kh23",\r
-            "kh24",\r
-            "kh25",\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "9",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
         }\r
         KI{\r
-            "kig",\r
-            "kil",\r
-            "kip",\r
+            "G",\r
+            "L",\r
+            "P",\r
         }\r
         KM{\r
-            "kma",\r
-            "kmg",\r
-            "kmm",\r
+            "A",\r
+            "G",\r
+            "M",\r
         }\r
         KN{\r
-            "knk",\r
-            "knn",\r
+            "K",\r
+            "N",\r
+        }\r
+        KN-K{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "06",\r
+            "08",\r
+            "09",\r
+            "11",\r
+            "13",\r
+            "15",\r
+        }\r
+        KN-N{\r
+            "04",\r
+            "05",\r
+            "07",\r
+            "10",\r
+            "12",\r
         }\r
         KP{\r
-            "kp01",\r
-            "kp02",\r
-            "kp03",\r
-            "kp04",\r
-            "kp05",\r
-            "kp06",\r
-            "kp07",\r
-            "kp08",\r
-            "kp09",\r
-            "kp10",\r
-            "kp13",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "13",\r
         }\r
         KR{\r
-            "kr11",\r
-            "kr26",\r
-            "kr27",\r
-            "kr28",\r
-            "kr29",\r
-            "kr30",\r
-            "kr31",\r
-            "kr41",\r
-            "kr42",\r
-            "kr43",\r
-            "kr44",\r
-            "kr45",\r
-            "kr46",\r
-            "kr47",\r
-            "kr48",\r
-            "kr49",\r
-            "kr50",\r
+            "11",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+            "49",\r
+            "50",\r
         }\r
         KW{\r
-            "kwah",\r
-            "kwfa",\r
-            "kwha",\r
-            "kwja",\r
-            "kwku",\r
-            "kwmu",\r
+            "AH",\r
+            "FA",\r
+            "HA",\r
+            "JA",\r
+            "KU",\r
+            "MU",\r
         }\r
         KZ{\r
-            "kzakm",\r
-            "kzakt",\r
-            "kzala",\r
-            "kzalm",\r
-            "kzast",\r
-            "kzaty",\r
-            "kzbay",\r
-            "kzkar",\r
-            "kzkus",\r
-            "kzkzy",\r
-            "kzman",\r
-            "kzpav",\r
-            "kzsev",\r
-            "kzvos",\r
-            "kzyuz",\r
-            "kzzap",\r
-            "kzzha",\r
+            "AKM",\r
+            "AKT",\r
+            "ALA",\r
+            "ALM",\r
+            "AST",\r
+            "ATY",\r
+            "KAR",\r
+            "KUS",\r
+            "KZY",\r
+            "MAN",\r
+            "PAV",\r
+            "SEV",\r
+            "VOS",\r
+            "YUZ",\r
+            "ZAP",\r
+            "ZHA",\r
         }\r
         LA{\r
-            "laat",\r
-            "labk",\r
-            "labl",\r
-            "lach",\r
-            "laho",\r
-            "lakh",\r
-            "lalm",\r
-            "lalp",\r
-            "laou",\r
-            "laph",\r
-            "lasl",\r
-            "lasv",\r
-            "lavi",\r
-            "lavt",\r
-            "laxa",\r
-            "laxe",\r
-            "laxi",\r
-            "laxs",\r
+            "AT",\r
+            "BK",\r
+            "BL",\r
+            "CH",\r
+            "HO",\r
+            "KH",\r
+            "LM",\r
+            "LP",\r
+            "OU",\r
+            "PH",\r
+            "SL",\r
+            "SV",\r
+            "VI",\r
+            "VT",\r
+            "XA",\r
+            "XE",\r
+            "XI",\r
+            "XS",\r
         }\r
         LB{\r
-            "lbak",\r
-            "lbas",\r
-            "lbba",\r
-            "lbbh",\r
-            "lbbi",\r
-            "lbja",\r
-            "lbjl",\r
-            "lbna",\r
+            "AK",\r
+            "AS",\r
+            "BA",\r
+            "BH",\r
+            "BI",\r
+            "JA",\r
+            "JL",\r
+            "NA",\r
         }\r
         LC{\r
-            "lc01",\r
-            "lc02",\r
-            "lc03",\r
-            "lc05",\r
-            "lc06",\r
-            "lc07",\r
-            "lc08",\r
-            "lc10",\r
-            "lc11",\r
-            "lc12",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "10",\r
+            "11",\r
+            "12",\r
         }\r
         LI{\r
-            "li01",\r
-            "li02",\r
-            "li03",\r
-            "li04",\r
-            "li05",\r
-            "li06",\r
-            "li07",\r
-            "li08",\r
-            "li09",\r
-            "li10",\r
-            "li11",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+        }\r
+        LK{\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "9",\r
+        }\r
+        LK-1{\r
+            "52",\r
+            "71",\r
+            "81",\r
+        }\r
+        LK-2{\r
+            "11",\r
+            "31",\r
+            "51",\r
+        }\r
+        LK-3{\r
+            "12",\r
+            "33",\r
+            "41",\r
+        }\r
+        LK-4{\r
+            "13",\r
+            "21",\r
+            "42",\r
+            "61",\r
+            "92",\r
+        }\r
+        LK-5{\r
+            "22",\r
+            "32",\r
+            "43",\r
+        }\r
+        LK-6{\r
+            "45",\r
+            "82",\r
+        }\r
+        LK-7{\r
+            "23",\r
+            "72",\r
+        }\r
+        LK-8{\r
+            "62",\r
+            "91",\r
+        }\r
+        LK-9{\r
+            "44",\r
+            "53",\r
+        }\r
+        LR{\r
+            "BG",\r
+            "BM",\r
+            "CM",\r
+            "GB",\r
+            "GG",\r
+            "GK",\r
+            "GP",\r
+            "LO",\r
+            "MG",\r
+            "MO",\r
+            "MY",\r
+            "NI",\r
+            "RG",\r
+            "RI",\r
+            "SI",\r
+        }\r
+        LS{\r
+            "A",\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "H",\r
+            "J",\r
+            "K",\r
+        }\r
+        LT{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+            "49",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "55",\r
+            "56",\r
+            "57",\r
+            "58",\r
+            "59",\r
+            "60",\r
+            "AL",\r
+            "KL",\r
+            "KU",\r
+            "MR",\r
+            "PN",\r
+            "SA",\r
+            "TA",\r
+            "TE",\r
+            "UT",\r
+            "VL",\r
+        }\r
+        LU{\r
+            "CA",\r
+            "CL",\r
+            "DI",\r
+            "EC",\r
+            "ES",\r
+            "GR",\r
+            "LU",\r
+            "ME",\r
+            "RD",\r
+            "RM",\r
+            "VD",\r
+            "WI",\r
+        }\r
+        LV{\r
+            "001",\r
+            "002",\r
+            "003",\r
+            "004",\r
+            "005",\r
+            "006",\r
+            "007",\r
+            "008",\r
+            "009",\r
+            "010",\r
+            "011",\r
+            "012",\r
+            "013",\r
+            "014",\r
+            "015",\r
+            "016",\r
+            "017",\r
+            "018",\r
+            "019",\r
+            "020",\r
+            "021",\r
+            "022",\r
+            "023",\r
+            "024",\r
+            "025",\r
+            "026",\r
+            "027",\r
+            "028",\r
+            "029",\r
+            "030",\r
+            "031",\r
+            "032",\r
+            "033",\r
+            "034",\r
+            "035",\r
+            "036",\r
+            "037",\r
+            "038",\r
+            "039",\r
+            "040",\r
+            "041",\r
+            "042",\r
+            "043",\r
+            "044",\r
+            "045",\r
+            "046",\r
+            "047",\r
+            "048",\r
+            "049",\r
+            "050",\r
+            "051",\r
+            "052",\r
+            "053",\r
+            "054",\r
+            "055",\r
+            "056",\r
+            "057",\r
+            "058",\r
+            "059",\r
+            "060",\r
+            "061",\r
+            "062",\r
+            "063",\r
+            "064",\r
+            "065",\r
+            "066",\r
+            "067",\r
+            "068",\r
+            "069",\r
+            "070",\r
+            "071",\r
+            "072",\r
+            "073",\r
+            "074",\r
+            "075",\r
+            "076",\r
+            "077",\r
+            "078",\r
+            "079",\r
+            "080",\r
+            "081",\r
+            "082",\r
+            "083",\r
+            "084",\r
+            "085",\r
+            "086",\r
+            "087",\r
+            "088",\r
+            "089",\r
+            "090",\r
+            "091",\r
+            "092",\r
+            "093",\r
+            "094",\r
+            "095",\r
+            "096",\r
+            "097",\r
+            "098",\r
+            "099",\r
+            "100",\r
+            "101",\r
+            "102",\r
+            "103",\r
+            "104",\r
+            "105",\r
+            "106",\r
+            "107",\r
+            "108",\r
+            "109",\r
+            "110",\r
+            "DGV",\r
+            "JEL",\r
+            "JKB",\r
+            "JUR",\r
+            "LPX",\r
+            "REZ",\r
+            "RIX",\r
+            "VEN",\r
+            "VMR",\r
         }\r
-        LK{\r
-            "lk1",\r
-            "lk2",\r
-            "lk3",\r
-            "lk4",\r
-            "lk5",\r
-            "lk6",\r
-            "lk7",\r
-            "lk8",\r
-            "lk9",\r
+        LY{\r
+            "BA",\r
+            "BU",\r
+            "DR",\r
+            "GT",\r
+            "JA",\r
+            "JG",\r
+            "JI",\r
+            "JU",\r
+            "KF",\r
+            "MB",\r
+            "MI",\r
+            "MJ",\r
+            "MQ",\r
+            "NL",\r
+            "NQ",\r
+            "SB",\r
+            "SR",\r
+            "TB",\r
+            "WA",\r
+            "WD",\r
+            "WS",\r
+            "ZA",\r
         }\r
-        LR{\r
-            "lrbg",\r
-            "lrbm",\r
-            "lrcm",\r
-            "lrgb",\r
-            "lrgg",\r
-            "lrgk",\r
-            "lrgp",\r
-            "lrlo",\r
-            "lrmg",\r
-            "lrmo",\r
-            "lrmy",\r
-            "lrni",\r
-            "lrrg",\r
-            "lrri",\r
-            "lrsi",\r
+        MA{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
         }\r
-        LS{\r
-            "lsa",\r
-            "lsb",\r
-            "lsc",\r
-            "lsd",\r
-            "lse",\r
-            "lsf",\r
-            "lsg",\r
-            "lsh",\r
-            "lsj",\r
-            "lsk",\r
+        MA-01{\r
+            "CHE",\r
+            "FAH",\r
+            "LAR",\r
+            "TET",\r
+            "TNG",\r
         }\r
-        LT{\r
-            "lt01",\r
-            "lt02",\r
-            "lt03",\r
-            "lt04",\r
-            "lt05",\r
-            "lt06",\r
-            "lt07",\r
-            "lt08",\r
-            "lt09",\r
-            "lt10",\r
-            "lt11",\r
-            "lt12",\r
-            "lt13",\r
-            "lt14",\r
-            "lt15",\r
-            "lt16",\r
-            "lt17",\r
-            "lt18",\r
-            "lt19",\r
-            "lt20",\r
-            "lt21",\r
-            "lt22",\r
-            "lt23",\r
-            "lt24",\r
-            "lt25",\r
-            "lt26",\r
-            "lt27",\r
-            "lt28",\r
-            "lt29",\r
-            "lt30",\r
-            "lt31",\r
-            "lt32",\r
-            "lt33",\r
-            "lt34",\r
-            "lt35",\r
-            "lt36",\r
-            "lt37",\r
-            "lt38",\r
-            "lt39",\r
-            "lt40",\r
-            "lt41",\r
-            "lt42",\r
-            "lt43",\r
-            "lt44",\r
-            "lt45",\r
-            "lt46",\r
-            "lt47",\r
-            "lt48",\r
-            "lt49",\r
-            "lt50",\r
-            "lt51",\r
-            "lt52",\r
-            "lt53",\r
-            "lt54",\r
-            "lt55",\r
-            "lt56",\r
-            "lt57",\r
-            "lt58",\r
-            "lt59",\r
-            "lt60",\r
-            "ltal",\r
-            "ltkl",\r
-            "ltku",\r
-            "ltmr",\r
-            "ltpn",\r
-            "ltsa",\r
-            "ltta",\r
-            "ltte",\r
-            "ltut",\r
-            "ltvl",\r
+        MA-02{\r
+            "KEN",\r
+            "SIK",\r
         }\r
-        LU{\r
-            "luca",\r
-            "lucl",\r
-            "ludi",\r
-            "luec",\r
-            "lues",\r
-            "lugr",\r
-            "lulu",\r
-            "lume",\r
-            "lurd",\r
-            "lurm",\r
-            "luvd",\r
-            "luwi",\r
+        MA-03{\r
+            "HOC",\r
+            "TAO",\r
+            "TAZ",\r
         }\r
-        LV{\r
-            "lv001",\r
-            "lv002",\r
-            "lv003",\r
-            "lv004",\r
-            "lv005",\r
-            "lv006",\r
-            "lv007",\r
-            "lv008",\r
-            "lv009",\r
-            "lv010",\r
-            "lv011",\r
-            "lv012",\r
-            "lv013",\r
-            "lv014",\r
-            "lv015",\r
-            "lv016",\r
-            "lv017",\r
-            "lv018",\r
-            "lv019",\r
-            "lv020",\r
-            "lv021",\r
-            "lv022",\r
-            "lv023",\r
-            "lv024",\r
-            "lv025",\r
-            "lv026",\r
-            "lv027",\r
-            "lv028",\r
-            "lv029",\r
-            "lv030",\r
-            "lv031",\r
-            "lv032",\r
-            "lv033",\r
-            "lv034",\r
-            "lv035",\r
-            "lv036",\r
-            "lv037",\r
-            "lv038",\r
-            "lv039",\r
-            "lv040",\r
-            "lv041",\r
-            "lv042",\r
-            "lv043",\r
-            "lv044",\r
-            "lv045",\r
-            "lv046",\r
-            "lv047",\r
-            "lv048",\r
-            "lv049",\r
-            "lv050",\r
-            "lv051",\r
-            "lv052",\r
-            "lv053",\r
-            "lv054",\r
-            "lv055",\r
-            "lv056",\r
-            "lv057",\r
-            "lv058",\r
-            "lv059",\r
-            "lv060",\r
-            "lv061",\r
-            "lv062",\r
-            "lv063",\r
-            "lv064",\r
-            "lv065",\r
-            "lv066",\r
-            "lv067",\r
-            "lv068",\r
-            "lv069",\r
-            "lv070",\r
-            "lv071",\r
-            "lv072",\r
-            "lv073",\r
-            "lv074",\r
-            "lv075",\r
-            "lv076",\r
-            "lv077",\r
-            "lv078",\r
-            "lv079",\r
-            "lv080",\r
-            "lv081",\r
-            "lv082",\r
-            "lv083",\r
-            "lv084",\r
-            "lv085",\r
-            "lv086",\r
-            "lv087",\r
-            "lv088",\r
-            "lv089",\r
-            "lv090",\r
-            "lv091",\r
-            "lv092",\r
-            "lv093",\r
-            "lv094",\r
-            "lv095",\r
-            "lv096",\r
-            "lv097",\r
-            "lv098",\r
-            "lv099",\r
-            "lv100",\r
-            "lv101",\r
-            "lv102",\r
-            "lv103",\r
-            "lv104",\r
-            "lv105",\r
-            "lv106",\r
-            "lv107",\r
-            "lv108",\r
-            "lv109",\r
-            "lv110",\r
-            "lvdgv",\r
-            "lvjel",\r
-            "lvjkb",\r
-            "lvjur",\r
-            "lvlpx",\r
-            "lvrez",\r
-            "lvrix",\r
-            "lvven",\r
-            "lvvmr",\r
+        MA-04{\r
+            "BER",\r
+            "FIG",\r
+            "JRA",\r
+            "NAD",\r
+            "OUJ",\r
+            "TAI",\r
+        }\r
+        MA-05{\r
+            "BOM",\r
+            "FES",\r
+            "MOU",\r
+            "SEF",\r
+        }\r
+        MA-06{\r
+            "ERR",\r
+            "HAJ",\r
+            "IFR",\r
+            "KHN",\r
+            "MEK",\r
+        }\r
+        MA-07{\r
+            "KHE",\r
+            "RAB",\r
+            "SAL",\r
+            "SKH",\r
+        }\r
+        MA-08{\r
+            "CAS",\r
+            "MED",\r
+            "MOH",\r
+            "NOU",\r
+        }\r
+        MA-09{\r
+            "BES",\r
+            "KHO",\r
+            "SET",\r
         }\r
-        LY{\r
-            "lyba",\r
-            "lybu",\r
-            "lydr",\r
-            "lygt",\r
-            "lyja",\r
-            "lyjg",\r
-            "lyji",\r
-            "lyju",\r
-            "lykf",\r
-            "lymb",\r
-            "lymi",\r
-            "lymj",\r
-            "lymq",\r
-            "lynl",\r
-            "lynq",\r
-            "lysb",\r
-            "lysr",\r
-            "lytb",\r
-            "lywa",\r
-            "lywd",\r
-            "lyws",\r
-            "lyza",\r
+        MA-10{\r
+            "JDI",\r
+            "SAF",\r
         }\r
-        MA{\r
-            "ma01",\r
-            "ma02",\r
-            "ma03",\r
-            "ma04",\r
-            "ma05",\r
-            "ma06",\r
-            "ma07",\r
-            "ma08",\r
-            "ma09",\r
-            "ma10",\r
-            "ma11",\r
-            "ma12",\r
-            "ma13",\r
-            "ma14",\r
-            "ma15",\r
-            "ma16",\r
+        MA-11{\r
+            "CHI",\r
+            "ESI",\r
+            "HAO",\r
+            "KES",\r
+            "MMD",\r
+            "MMN",\r
+            "SYB",\r
+        }\r
+        MA-12{\r
+            "AZI",\r
+            "BEM",\r
+        }\r
+        MA-13{\r
+            "AGD",\r
+            "CHT",\r
+            "INE",\r
+            "OUA",\r
+            "TAR",\r
+            "TIZ",\r
+            "ZAG",\r
+        }\r
+        MA-14{\r
+            "ASZ",\r
+            "ESM",\r
+            "GUE",\r
+            "TAT",\r
+            "TNT",\r
+        }\r
+        MA-15{\r
+            "BOD",\r
+            "LAA",\r
+        }\r
+        MA-16{\r
+            "AOU",\r
+            "OUD",\r
         }\r
         MC{\r
-            "mccl",\r
-            "mcco",\r
-            "mcfo",\r
-            "mcga",\r
-            "mcje",\r
-            "mcla",\r
-            "mcma",\r
-            "mcmc",\r
-            "mcmg",\r
-            "mcmo",\r
-            "mcmu",\r
-            "mcph",\r
-            "mcsd",\r
-            "mcso",\r
-            "mcsp",\r
-            "mcsr",\r
-            "mcvr",\r
+            "CL",\r
+            "CO",\r
+            "FO",\r
+            "GA",\r
+            "JE",\r
+            "LA",\r
+            "MA",\r
+            "MC",\r
+            "MG",\r
+            "MO",\r
+            "MU",\r
+            "PH",\r
+            "SD",\r
+            "SO",\r
+            "SP",\r
+            "SR",\r
+            "VR",\r
         }\r
         MD{\r
-            "mdan",\r
-            "mdba",\r
-            "mdbd",\r
-            "mdbr",\r
-            "mdbs",\r
-            "mdca",\r
-            "mdcl",\r
-            "mdcm",\r
-            "mdcr",\r
-            "mdcs",\r
-            "mdct",\r
-            "mdcu",\r
-            "mddo",\r
-            "mddr",\r
-            "mddu",\r
-            "mded",\r
-            "mdfa",\r
-            "mdfl",\r
-            "mdga",\r
-            "mdgl",\r
-            "mdhi",\r
-            "mdia",\r
-            "mdle",\r
-            "mdni",\r
-            "mdoc",\r
-            "mdor",\r
-            "mdre",\r
-            "mdri",\r
-            "mdsd",\r
-            "mdsi",\r
-            "mdsn",\r
-            "mdso",\r
-            "mdst",\r
-            "mdsv",\r
-            "mdta",\r
-            "mdte",\r
-            "mdun",\r
+            "AN",\r
+            "BA",\r
+            "BD",\r
+            "BR",\r
+            "BS",\r
+            "CA",\r
+            "CL",\r
+            "CM",\r
+            "CR",\r
+            "CS",\r
+            "CT",\r
+            "CU",\r
+            "DO",\r
+            "DR",\r
+            "DU",\r
+            "ED",\r
+            "FA",\r
+            "FL",\r
+            "GA",\r
+            "GL",\r
+            "HI",\r
+            "IA",\r
+            "LE",\r
+            "NI",\r
+            "OC",\r
+            "OR",\r
+            "RE",\r
+            "RI",\r
+            "SD",\r
+            "SI",\r
+            "SN",\r
+            "SO",\r
+            "ST",\r
+            "SV",\r
+            "TA",\r
+            "TE",\r
+            "UN",\r
         }\r
         ME{\r
-            "me01",\r
-            "me02",\r
-            "me03",\r
-            "me04",\r
-            "me05",\r
-            "me06",\r
-            "me07",\r
-            "me08",\r
-            "me09",\r
-            "me10",\r
-            "me11",\r
-            "me12",\r
-            "me13",\r
-            "me14",\r
-            "me15",\r
-            "me16",\r
-            "me17",\r
-            "me18",\r
-            "me19",\r
-            "me20",\r
-            "me21",\r
-            "me22",\r
-            "me23",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
         }\r
         MG{\r
-            "mga",\r
-            "mgd",\r
-            "mgf",\r
-            "mgm",\r
-            "mgt",\r
-            "mgu",\r
+            "A",\r
+            "D",\r
+            "F",\r
+            "M",\r
+            "T",\r
+            "U",\r
         }\r
         MH{\r
-            "mhl",\r
-            "mht",\r
+            "L",\r
+            "T",\r
+        }\r
+        MH-L{\r
+            "ALL",\r
+            "EBO",\r
+            "ENI",\r
+            "JAB",\r
+            "JAL",\r
+            "KIL",\r
+            "KWA",\r
+            "LAE",\r
+            "LIB",\r
+            "NMK",\r
+            "NMU",\r
+            "RON",\r
+            "UJA",\r
+            "WTH",\r
+        }\r
+        MH-T{\r
+            "ALK",\r
+            "ARN",\r
+            "AUR",\r
+            "LIK",\r
+            "MAJ",\r
+            "MAL",\r
+            "MEJ",\r
+            "MIL",\r
+            "UTI",\r
+            "WTJ",\r
         }\r
         MK{\r
-            "mk02",\r
-            "mk03",\r
-            "mk04",\r
-            "mk05",\r
-            "mk06",\r
-            "mk07",\r
-            "mk08",\r
-            "mk10",\r
-            "mk11",\r
-            "mk12",\r
-            "mk13",\r
-            "mk14",\r
-            "mk16",\r
-            "mk18",\r
-            "mk19",\r
-            "mk20",\r
-            "mk21",\r
-            "mk22",\r
-            "mk23",\r
-            "mk24",\r
-            "mk25",\r
-            "mk26",\r
-            "mk27",\r
-            "mk30",\r
-            "mk32",\r
-            "mk33",\r
-            "mk34",\r
-            "mk35",\r
-            "mk36",\r
-            "mk37",\r
-            "mk40",\r
-            "mk41",\r
-            "mk42",\r
-            "mk43",\r
-            "mk44",\r
-            "mk45",\r
-            "mk46",\r
-            "mk47",\r
-            "mk48",\r
-            "mk49",\r
-            "mk50",\r
-            "mk51",\r
-            "mk52",\r
-            "mk53",\r
-            "mk54",\r
-            "mk55",\r
-            "mk56",\r
-            "mk58",\r
-            "mk59",\r
-            "mk60",\r
-            "mk61",\r
-            "mk62",\r
-            "mk63",\r
-            "mk64",\r
-            "mk65",\r
-            "mk66",\r
-            "mk67",\r
-            "mk69",\r
-            "mk70",\r
-            "mk71",\r
-            "mk72",\r
-            "mk73",\r
-            "mk74",\r
-            "mk75",\r
-            "mk76",\r
-            "mk78",\r
-            "mk80",\r
-            "mk81",\r
-            "mk82",\r
-            "mk83",\r
-            "mk85",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "16",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "30",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+            "49",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "55",\r
+            "56",\r
+            "58",\r
+            "59",\r
+            "60",\r
+            "61",\r
+            "62",\r
+            "63",\r
+            "64",\r
+            "65",\r
+            "66",\r
+            "67",\r
+            "69",\r
+            "70",\r
+            "71",\r
+            "72",\r
+            "73",\r
+            "74",\r
+            "75",\r
+            "76",\r
+            "78",\r
+            "80",\r
+            "81",\r
+            "82",\r
+            "83",\r
+            "85",\r
         }\r
         ML{\r
-            "ml1",\r
-            "ml2",\r
-            "ml3",\r
-            "ml4",\r
-            "ml5",\r
-            "ml6",\r
-            "ml7",\r
-            "ml8",\r
-            "mlbko",\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "BKO",\r
         }\r
         MM{\r
-            "mm01",\r
-            "mm02",\r
-            "mm03",\r
-            "mm04",\r
-            "mm05",\r
-            "mm06",\r
-            "mm07",\r
-            "mm11",\r
-            "mm12",\r
-            "mm13",\r
-            "mm14",\r
-            "mm15",\r
-            "mm16",\r
-            "mm17",\r
-            "mm18",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
         }\r
         MN{\r
-            "mn1",\r
-            "mn035",\r
-            "mn037",\r
-            "mn039",\r
-            "mn041",\r
-            "mn043",\r
-            "mn046",\r
-            "mn047",\r
-            "mn049",\r
-            "mn051",\r
-            "mn053",\r
-            "mn055",\r
-            "mn057",\r
-            "mn059",\r
-            "mn061",\r
-            "mn063",\r
-            "mn064",\r
-            "mn065",\r
-            "mn067",\r
-            "mn069",\r
-            "mn071",\r
-            "mn073",\r
+            "1",\r
+            "035",\r
+            "037",\r
+            "039",\r
+            "041",\r
+            "043",\r
+            "046",\r
+            "047",\r
+            "049",\r
+            "051",\r
+            "053",\r
+            "055",\r
+            "057",\r
+            "059",\r
+            "061",\r
+            "063",\r
+            "064",\r
+            "065",\r
+            "067",\r
+            "069",\r
+            "071",\r
+            "073",\r
         }\r
         MR{\r
-            "mr01",\r
-            "mr02",\r
-            "mr03",\r
-            "mr04",\r
-            "mr05",\r
-            "mr06",\r
-            "mr07",\r
-            "mr08",\r
-            "mr09",\r
-            "mr10",\r
-            "mr11",\r
-            "mr12",\r
-            "mr13",\r
-            "mr14",\r
-            "mr15",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
         }\r
         MT{\r
-            "mt01",\r
-            "mt02",\r
-            "mt03",\r
-            "mt04",\r
-            "mt05",\r
-            "mt06",\r
-            "mt07",\r
-            "mt08",\r
-            "mt09",\r
-            "mt10",\r
-            "mt11",\r
-            "mt12",\r
-            "mt13",\r
-            "mt14",\r
-            "mt15",\r
-            "mt16",\r
-            "mt17",\r
-            "mt18",\r
-            "mt19",\r
-            "mt20",\r
-            "mt21",\r
-            "mt22",\r
-            "mt23",\r
-            "mt24",\r
-            "mt25",\r
-            "mt26",\r
-            "mt27",\r
-            "mt28",\r
-            "mt29",\r
-            "mt30",\r
-            "mt31",\r
-            "mt32",\r
-            "mt33",\r
-            "mt34",\r
-            "mt35",\r
-            "mt36",\r
-            "mt37",\r
-            "mt38",\r
-            "mt39",\r
-            "mt40",\r
-            "mt41",\r
-            "mt42",\r
-            "mt43",\r
-            "mt44",\r
-            "mt45",\r
-            "mt46",\r
-            "mt47",\r
-            "mt48",\r
-            "mt49",\r
-            "mt50",\r
-            "mt51",\r
-            "mt52",\r
-            "mt53",\r
-            "mt54",\r
-            "mt55",\r
-            "mt56",\r
-            "mt57",\r
-            "mt58",\r
-            "mt59",\r
-            "mt60",\r
-            "mt61",\r
-            "mt62",\r
-            "mt63",\r
-            "mt64",\r
-            "mt65",\r
-            "mt66",\r
-            "mt67",\r
-            "mt68",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+            "49",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "55",\r
+            "56",\r
+            "57",\r
+            "58",\r
+            "59",\r
+            "60",\r
+            "61",\r
+            "62",\r
+            "63",\r
+            "64",\r
+            "65",\r
+            "66",\r
+            "67",\r
+            "68",\r
         }\r
         MU{\r
-            "muag",\r
-            "mubl",\r
-            "mubr",\r
-            "mucc",\r
-            "mucu",\r
-            "mufl",\r
-            "mugp",\r
-            "mumo",\r
-            "mupa",\r
-            "mupl",\r
-            "mupu",\r
-            "mupw",\r
-            "muqb",\r
-            "muro",\r
-            "murr",\r
-            "musa",\r
-            "muvp",\r
+            "AG",\r
+            "BL",\r
+            "BR",\r
+            "CC",\r
+            "CU",\r
+            "FL",\r
+            "GP",\r
+            "MO",\r
+            "PA",\r
+            "PL",\r
+            "PU",\r
+            "PW",\r
+            "QB",\r
+            "RO",\r
+            "RR",\r
+            "SA",\r
+            "VP",\r
         }\r
         MV{\r
-            "mvce",\r
-            "mvmle",\r
-            "mvnc",\r
-            "mvno",\r
-            "mvsc",\r
-            "mvsu",\r
-            "mvun",\r
-            "mvus",\r
+            "CE",\r
+            "MLE",\r
+            "NC",\r
+            "NO",\r
+            "SC",\r
+            "SU",\r
+            "UN",\r
+            "US",\r
+        }\r
+        MV-CE{\r
+            "12",\r
+            "14",\r
+            "17",\r
+        }\r
+        MV-NC{\r
+            "00",\r
+            "02",\r
+            "04",\r
+            "26",\r
+        }\r
+        MV-NO{\r
+            "03",\r
+            "13",\r
+            "20",\r
+            "25",\r
+        }\r
+        MV-SC{\r
+            "27",\r
+            "28",\r
+        }\r
+        MV-SU{\r
+            "01",\r
+            "29",\r
+        }\r
+        MV-UN{\r
+            "07",\r
+            "23",\r
+            "24",\r
+        }\r
+        MV-US{\r
+            "05",\r
+            "08",\r
         }\r
         MW{\r
-            "mwc",\r
-            "mwn",\r
-            "mws",\r
+            "C",\r
+            "N",\r
+            "S",\r
+        }\r
+        MW-C{\r
+            "DE",\r
+            "DO",\r
+            "KS",\r
+            "LI",\r
+            "MC",\r
+            "NI",\r
+            "NK",\r
+            "NU",\r
+            "SA",\r
+        }\r
+        MW-N{\r
+            "CT",\r
+            "KR",\r
+            "LK",\r
+            "MZ",\r
+            "NB",\r
+            "RU",\r
+        }\r
+        MW-S{\r
+            "BA",\r
+            "BL",\r
+            "CK",\r
+            "CR",\r
+            "MG",\r
+            "MH",\r
+            "MU",\r
+            "MW",\r
+            "NE",\r
+            "NS",\r
+            "PH",\r
+            "TH",\r
+            "ZO",\r
         }\r
         MX{\r
-            "mxagu",\r
-            "mxbcn",\r
-            "mxbcs",\r
-            "mxcam",\r
-            "mxchh",\r
-            "mxchp",\r
-            "mxcmx",\r
-            "mxcoa",\r
-            "mxcol",\r
-            "mxdur",\r
-            "mxgro",\r
-            "mxgua",\r
-            "mxhid",\r
-            "mxjal",\r
-            "mxmex",\r
-            "mxmic",\r
-            "mxmor",\r
-            "mxnay",\r
-            "mxnle",\r
-            "mxoax",\r
-            "mxpue",\r
-            "mxque",\r
-            "mxroo",\r
-            "mxsin",\r
-            "mxslp",\r
-            "mxson",\r
-            "mxtab",\r
-            "mxtam",\r
-            "mxtla",\r
-            "mxver",\r
-            "mxyuc",\r
-            "mxzac",\r
+            "AGU",\r
+            "BCN",\r
+            "BCS",\r
+            "CAM",\r
+            "CHH",\r
+            "CHP",\r
+            "COA",\r
+            "COL",\r
+            "DIF",\r
+            "DUR",\r
+            "GRO",\r
+            "GUA",\r
+            "HID",\r
+            "JAL",\r
+            "MEX",\r
+            "MIC",\r
+            "MOR",\r
+            "NAY",\r
+            "NLE",\r
+            "OAX",\r
+            "PUE",\r
+            "QUE",\r
+            "ROO",\r
+            "SIN",\r
+            "SLP",\r
+            "SON",\r
+            "TAB",\r
+            "TAM",\r
+            "TLA",\r
+            "VER",\r
+            "YUC",\r
+            "ZAC",\r
         }\r
         MY{\r
-            "my01",\r
-            "my02",\r
-            "my03",\r
-            "my04",\r
-            "my05",\r
-            "my06",\r
-            "my07",\r
-            "my08",\r
-            "my09",\r
-            "my10",\r
-            "my11",\r
-            "my12",\r
-            "my13",\r
-            "my14",\r
-            "my15",\r
-            "my16",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
         }\r
         MZ{\r
-            "mza",\r
-            "mzb",\r
-            "mzg",\r
-            "mzi",\r
-            "mzl",\r
-            "mzmpm",\r
-            "mzn",\r
-            "mzp",\r
-            "mzq",\r
-            "mzs",\r
-            "mzt",\r
+            "A",\r
+            "B",\r
+            "G",\r
+            "I",\r
+            "L",\r
+            "MPM",\r
+            "N",\r
+            "P",\r
+            "Q",\r
+            "S",\r
+            "T",\r
         }\r
         NA{\r
-            "naca",\r
-            "naer",\r
-            "naha",\r
-            "naka",\r
-            "nake",\r
-            "nakh",\r
-            "naku",\r
-            "nakw",\r
-            "naod",\r
-            "naoh",\r
-            "naon",\r
-            "naos",\r
-            "naot",\r
-            "naow",\r
+            "CA",\r
+            "ER",\r
+            "HA",\r
+            "KA",\r
+            "KE",\r
+            "KH",\r
+            "KU",\r
+            "KW",\r
+            "OD",\r
+            "OH",\r
+            "ON",\r
+            "OS",\r
+            "OT",\r
+            "OW",\r
+        }\r
+        NE{\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+        }\r
+        NG{\r
+            "AB",\r
+            "AD",\r
+            "AK",\r
+            "AN",\r
+            "BA",\r
+            "BE",\r
+            "BO",\r
+            "BY",\r
+            "CR",\r
+            "DE",\r
+            "EB",\r
+            "ED",\r
+            "EK",\r
+            "EN",\r
+            "FC",\r
+            "GO",\r
+            "IM",\r
+            "JI",\r
+            "KD",\r
+            "KE",\r
+            "KN",\r
+            "KO",\r
+            "KT",\r
+            "KW",\r
+            "LA",\r
+            "NA",\r
+            "NI",\r
+            "OG",\r
+            "ON",\r
+            "OS",\r
+            "OY",\r
+            "PL",\r
+            "RI",\r
+            "SO",\r
+            "TA",\r
+            "YO",\r
+            "ZA",\r
+        }\r
+        NI{\r
+            "AN",\r
+            "AS",\r
+            "BO",\r
+            "CA",\r
+            "CI",\r
+            "CO",\r
+            "ES",\r
+            "GR",\r
+            "JI",\r
+            "LE",\r
+            "MD",\r
+            "MN",\r
+            "MS",\r
+            "MT",\r
+            "NS",\r
+            "RI",\r
+            "SJ",\r
+        }\r
+        NL{\r
+            "AW",\r
+            "BQ1",\r
+            "BQ2",\r
+            "BQ3",\r
+            "CW",\r
+            "DR",\r
+            "FL",\r
+            "FR",\r
+            "GE",\r
+            "GR",\r
+            "LI",\r
+            "NB",\r
+            "NH",\r
+            "OV",\r
+            "SX",\r
+            "UT",\r
+            "ZE",\r
+            "ZH",\r
+        }\r
+        NO{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
         }\r
-        NE{\r
-            "ne1",\r
-            "ne2",\r
-            "ne3",\r
-            "ne4",\r
-            "ne5",\r
-            "ne6",\r
-            "ne7",\r
-            "ne8",\r
+        NP{\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
         }\r
-        NG{\r
-            "ngab",\r
-            "ngad",\r
-            "ngak",\r
-            "ngan",\r
-            "ngba",\r
-            "ngbe",\r
-            "ngbo",\r
-            "ngby",\r
-            "ngcr",\r
-            "ngde",\r
-            "ngeb",\r
-            "nged",\r
-            "ngek",\r
-            "ngen",\r
-            "ngfc",\r
-            "nggo",\r
-            "ngim",\r
-            "ngji",\r
-            "ngkd",\r
-            "ngke",\r
-            "ngkn",\r
-            "ngko",\r
-            "ngkt",\r
-            "ngkw",\r
-            "ngla",\r
-            "ngna",\r
-            "ngni",\r
-            "ngog",\r
-            "ngon",\r
-            "ngos",\r
-            "ngoy",\r
-            "ngpl",\r
-            "ngri",\r
-            "ngso",\r
-            "ngta",\r
-            "ngyo",\r
-            "ngza",\r
+        NP-1{\r
+            "BA",\r
+            "JA",\r
+            "NA",\r
         }\r
-        NI{\r
-            "nian",\r
-            "nias",\r
-            "nibo",\r
-            "nica",\r
-            "nici",\r
-            "nico",\r
-            "nies",\r
-            "nigr",\r
-            "niji",\r
-            "nile",\r
-            "nimd",\r
-            "nimn",\r
-            "nims",\r
-            "nimt",\r
-            "nins",\r
-            "niri",\r
-            "nisj",\r
+        NP-2{\r
+            "BH",\r
+            "KA",\r
+            "RA",\r
         }\r
-        NL{\r
-            "nlaw",\r
-            "nlbq1",\r
-            "nlbq2",\r
-            "nlbq3",\r
-            "nlcw",\r
-            "nldr",\r
-            "nlfl",\r
-            "nlfr",\r
-            "nlge",\r
-            "nlgr",\r
-            "nlli",\r
-            "nlnb",\r
-            "nlnh",\r
-            "nlov",\r
-            "nlsx",\r
-            "nlut",\r
-            "nlze",\r
-            "nlzh",\r
+        NP-3{\r
+            "DH",\r
+            "GA",\r
+            "LU",\r
         }\r
-        NO{\r
-            "no01",\r
-            "no02",\r
-            "no03",\r
-            "no04",\r
-            "no05",\r
-            "no06",\r
-            "no07",\r
-            "no08",\r
-            "no09",\r
-            "no10",\r
-            "no11",\r
-            "no12",\r
-            "no14",\r
-            "no15",\r
-            "no16",\r
-            "no17",\r
-            "no18",\r
-            "no19",\r
-            "no20",\r
-            "no21",\r
-            "no22",\r
+        NP-4{\r
+            "KO",\r
+            "ME",\r
+            "SA",\r
         }\r
-        NP{\r
-            "np1",\r
-            "np2",\r
-            "np3",\r
-            "np4",\r
-            "np5",\r
+        NP-5{\r
+            "MA",\r
+            "SE",\r
         }\r
         NR{\r
-            "nr01",\r
-            "nr02",\r
-            "nr03",\r
-            "nr04",\r
-            "nr05",\r
-            "nr06",\r
-            "nr07",\r
-            "nr08",\r
-            "nr09",\r
-            "nr10",\r
-            "nr11",\r
-            "nr12",\r
-            "nr13",\r
-            "nr14",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
         }\r
         NZ{\r
-            "nzauk",\r
-            "nzbop",\r
-            "nzcan",\r
-            "nzcit",\r
-            "nzgis",\r
-            "nzhkb",\r
-            "nzmbh",\r
-            "nzmwt",\r
-            "nznsn",\r
-            "nzntl",\r
-            "nzota",\r
-            "nzstl",\r
-            "nztas",\r
-            "nztki",\r
-            "nzwgn",\r
-            "nzwko",\r
-            "nzwtc",\r
+            "AUK",\r
+            "BOP",\r
+            "CAN",\r
+            "CIT",\r
+            "GIS",\r
+            "HKB",\r
+            "MBH",\r
+            "MWT",\r
+            "NSN",\r
+            "NTL",\r
+            "OTA",\r
+            "STL",\r
+            "TAS",\r
+            "TKI",\r
+            "WGN",\r
+            "WKO",\r
+            "WTC",\r
         }\r
         OM{\r
-            "ombj",\r
-            "ombs",\r
-            "ombu",\r
-            "omda",\r
-            "omma",\r
-            "ommu",\r
-            "omsj",\r
-            "omss",\r
-            "omwu",\r
-            "omza",\r
-            "omzu",\r
+            "BJ",\r
+            "BS",\r
+            "BU",\r
+            "DA",\r
+            "MA",\r
+            "MU",\r
+            "SJ",\r
+            "SS",\r
+            "WU",\r
+            "ZA",\r
+            "ZU",\r
         }\r
         PA{\r
-            "pa1",\r
-            "pa2",\r
-            "pa3",\r
-            "pa4",\r
-            "pa5",\r
-            "pa6",\r
-            "pa7",\r
-            "pa8",\r
-            "pa9",\r
-            "pa10",\r
-            "paem",\r
-            "paky",\r
-            "panb",\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "9",\r
+            "10",\r
+            "EM",\r
+            "KY",\r
+            "NB",\r
         }\r
         PE{\r
-            "peama",\r
-            "peanc",\r
-            "peapu",\r
-            "peare",\r
-            "peaya",\r
-            "pecaj",\r
-            "pecal",\r
-            "pecus",\r
-            "pehuc",\r
-            "pehuv",\r
-            "peica",\r
-            "pejun",\r
-            "pelal",\r
-            "pelam",\r
-            "pelim",\r
-            "pelma",\r
-            "pelor",\r
-            "pemdd",\r
-            "pemoq",\r
-            "pepas",\r
-            "pepiu",\r
-            "pepun",\r
-            "pesam",\r
-            "petac",\r
-            "petum",\r
-            "peuca",\r
+            "AMA",\r
+            "ANC",\r
+            "APU",\r
+            "ARE",\r
+            "AYA",\r
+            "CAJ",\r
+            "CAL",\r
+            "CUS",\r
+            "HUC",\r
+            "HUV",\r
+            "ICA",\r
+            "JUN",\r
+            "LAL",\r
+            "LAM",\r
+            "LIM",\r
+            "LMA",\r
+            "LOR",\r
+            "MDD",\r
+            "MOQ",\r
+            "PAS",\r
+            "PIU",\r
+            "PUN",\r
+            "SAM",\r
+            "TAC",\r
+            "TUM",\r
+            "UCA",\r
         }\r
         PG{\r
-            "pgcpk",\r
-            "pgcpm",\r
-            "pgebr",\r
-            "pgehg",\r
-            "pgepw",\r
-            "pgesw",\r
-            "pggpk",\r
-            "pghla",\r
-            "pgjwk",\r
-            "pgmba",\r
-            "pgmpl",\r
-            "pgmpm",\r
-            "pgmrl",\r
-            "pgncd",\r
-            "pgnik",\r
-            "pgnpp",\r
-            "pgnsb",\r
-            "pgsan",\r
-            "pgshm",\r
-            "pgwbk",\r
-            "pgwhm",\r
-            "pgwpd",\r
+            "CPK",\r
+            "CPM",\r
+            "EBR",\r
+            "EHG",\r
+            "EPW",\r
+            "ESW",\r
+            "GPK",\r
+            "HLA",\r
+            "JWK",\r
+            "MBA",\r
+            "MPL",\r
+            "MPM",\r
+            "MRL",\r
+            "NCD",\r
+            "NIK",\r
+            "NPP",\r
+            "NSB",\r
+            "SAN",\r
+            "SHM",\r
+            "WBK",\r
+            "WHM",\r
+            "WPD",\r
         }\r
         PH{\r
-            "ph00",\r
-            "ph01",\r
-            "ph02",\r
-            "ph03",\r
-            "ph05",\r
-            "ph06",\r
-            "ph07",\r
-            "ph08",\r
-            "ph09",\r
-            "ph10",\r
-            "ph11",\r
-            "ph12",\r
-            "ph13",\r
-            "ph14",\r
-            "ph15",\r
-            "ph40",\r
-            "ph41",\r
+            "00",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "40",\r
+            "41",\r
+        }\r
+        PH-01{\r
+            "ILN",\r
+            "ILS",\r
+            "LUN",\r
+            "PAN",\r
+        }\r
+        PH-02{\r
+            "BTN",\r
+            "CAG",\r
+            "ISA",\r
+            "NUV",\r
+            "QUI",\r
+        }\r
+        PH-03{\r
+            "AUR",\r
+            "BAN",\r
+            "BUL",\r
+            "NUE",\r
+            "PAM",\r
+            "TAR",\r
+            "ZMB",\r
+        }\r
+        PH-05{\r
+            "ALB",\r
+            "CAN",\r
+            "CAS",\r
+            "CAT",\r
+            "MAS",\r
+            "SOR",\r
+        }\r
+        PH-06{\r
+            "AKL",\r
+            "ANT",\r
+            "CAP",\r
+            "GUI",\r
+            "ILI",\r
+            "NEC",\r
+        }\r
+        PH-07{\r
+            "BOH",\r
+            "CEB",\r
+            "NER",\r
+            "SIG",\r
+        }\r
+        PH-08{\r
+            "BIL",\r
+            "EAS",\r
+            "LEY",\r
+            "NSA",\r
+            "SLE",\r
+            "WSA",\r
+        }\r
+        PH-09{\r
+            "BAS",\r
+            "ZAN",\r
+            "ZAS",\r
+            "ZSI",\r
+        }\r
+        PH-10{\r
+            "BUK",\r
+            "CAM",\r
+            "MSC",\r
+            "MSR",\r
+        }\r
+        PH-11{\r
+            "COM",\r
+            "DAO",\r
+            "DAS",\r
+            "DAV",\r
+            "DVO",\r
+            "SAR",\r
+            "SCO",\r
+        }\r
+        PH-12{\r
+            "LAN",\r
+            "NCO",\r
+            "SUK",\r
+        }\r
+        PH-13{\r
+            "AGN",\r
+            "AGS",\r
+            "DIN",\r
+            "SUN",\r
+            "SUR",\r
+        }\r
+        PH-14{\r
+            "LAS",\r
+            "MAG",\r
+            "SLU",\r
+            "TAW",\r
+        }\r
+        PH-15{\r
+            "ABR",\r
+            "APA",\r
+            "BEN",\r
+            "IFU",\r
+            "KAL",\r
+            "MOU",\r
+        }\r
+        PH-40{\r
+            "BTG",\r
+            "CAV",\r
+            "LAG",\r
+            "QUE",\r
+            "RIZ",\r
+        }\r
+        PH-41{\r
+            "MAD",\r
+            "MDC",\r
+            "MDR",\r
+            "PLW",\r
+            "ROM",\r
         }\r
         PK{\r
-            "pkba",\r
-            "pkgb",\r
-            "pkis",\r
-            "pkjk",\r
-            "pkkp",\r
-            "pkpb",\r
-            "pksd",\r
-            "pkta",\r
+            "BA",\r
+            "GB",\r
+            "IS",\r
+            "JK",\r
+            "KP",\r
+            "PB",\r
+            "SD",\r
+            "TA",\r
         }\r
         PL{\r
-            "plds",\r
-            "plkp",\r
-            "pllb",\r
-            "plld",\r
-            "pllu",\r
-            "plma",\r
-            "plmz",\r
-            "plop",\r
-            "plpd",\r
-            "plpk",\r
-            "plpm",\r
-            "plsk",\r
-            "plsl",\r
-            "plwn",\r
-            "plwp",\r
-            "plzp",\r
+            "DS",\r
+            "KP",\r
+            "LB",\r
+            "LD",\r
+            "LU",\r
+            "MA",\r
+            "MZ",\r
+            "OP",\r
+            "PD",\r
+            "PK",\r
+            "PM",\r
+            "SK",\r
+            "SL",\r
+            "WN",\r
+            "WP",\r
+            "ZP",\r
         }\r
         PS{\r
-            "psbth",\r
-            "psdeb",\r
-            "psgza",\r
-            "pshbn",\r
-            "psjem",\r
-            "psjen",\r
-            "psjrh",\r
-            "pskys",\r
-            "psnbs",\r
-            "psngz",\r
-            "psqqa",\r
-            "psrbh",\r
-            "psrfh",\r
-            "psslt",\r
-            "pstbs",\r
-            "pstkm",\r
+            "BTH",\r
+            "DEB",\r
+            "GZA",\r
+            "HBN",\r
+            "JEM",\r
+            "JEN",\r
+            "JRH",\r
+            "KYS",\r
+            "NBS",\r
+            "NGZ",\r
+            "QQA",\r
+            "RBH",\r
+            "RFH",\r
+            "SLT",\r
+            "TBS",\r
+            "TKM",\r
         }\r
         PT{\r
-            "pt01",\r
-            "pt02",\r
-            "pt03",\r
-            "pt04",\r
-            "pt05",\r
-            "pt06",\r
-            "pt07",\r
-            "pt08",\r
-            "pt09",\r
-            "pt10",\r
-            "pt11",\r
-            "pt12",\r
-            "pt13",\r
-            "pt14",\r
-            "pt15",\r
-            "pt16",\r
-            "pt17",\r
-            "pt18",\r
-            "pt20",\r
-            "pt30",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "20",\r
+            "30",\r
         }\r
         PW{\r
-            "pw002",\r
-            "pw004",\r
-            "pw010",\r
-            "pw050",\r
-            "pw100",\r
-            "pw150",\r
-            "pw212",\r
-            "pw214",\r
-            "pw218",\r
-            "pw222",\r
-            "pw224",\r
-            "pw226",\r
-            "pw227",\r
-            "pw228",\r
-            "pw350",\r
-            "pw370",\r
+            "002",\r
+            "004",\r
+            "010",\r
+            "050",\r
+            "100",\r
+            "150",\r
+            "212",\r
+            "214",\r
+            "218",\r
+            "222",\r
+            "224",\r
+            "226",\r
+            "227",\r
+            "228",\r
+            "350",\r
+            "370",\r
         }\r
         PY{\r
-            "py1",\r
-            "py2",\r
-            "py3",\r
-            "py4",\r
-            "py5",\r
-            "py6",\r
-            "py7",\r
-            "py8",\r
-            "py9",\r
-            "py10",\r
-            "py11",\r
-            "py12",\r
-            "py13",\r
-            "py14",\r
-            "py15",\r
-            "py16",\r
-            "py19",\r
-            "pyasu",\r
+            "1",\r
+            "2",\r
+            "3",\r
+            "4",\r
+            "5",\r
+            "6",\r
+            "7",\r
+            "8",\r
+            "9",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "19",\r
+            "ASU",\r
         }\r
         QA{\r
-            "qada",\r
-            "qakh",\r
-            "qams",\r
-            "qara",\r
-            "qaus",\r
-            "qawa",\r
-            "qaza",\r
+            "DA",\r
+            "KH",\r
+            "MS",\r
+            "RA",\r
+            "US",\r
+            "WA",\r
+            "ZA",\r
         }\r
         RO{\r
-            "roab",\r
-            "roag",\r
-            "roar",\r
-            "rob",\r
-            "robc",\r
-            "robh",\r
-            "robn",\r
-            "robr",\r
-            "robt",\r
-            "robv",\r
-            "robz",\r
-            "rocj",\r
-            "rocl",\r
-            "rocs",\r
-            "roct",\r
-            "rocv",\r
-            "rodb",\r
-            "rodj",\r
-            "rogj",\r
-            "rogl",\r
-            "rogr",\r
-            "rohd",\r
-            "rohr",\r
-            "roif",\r
-            "roil",\r
-            "rois",\r
-            "romh",\r
-            "romm",\r
-            "roms",\r
-            "ront",\r
-            "root",\r
-            "roph",\r
-            "rosb",\r
-            "rosj",\r
-            "rosm",\r
-            "rosv",\r
-            "rotl",\r
-            "rotm",\r
-            "rotr",\r
-            "rovl",\r
-            "rovn",\r
-            "rovs",\r
+            "AB",\r
+            "AG",\r
+            "AR",\r
+            "B",\r
+            "BC",\r
+            "BH",\r
+            "BN",\r
+            "BR",\r
+            "BT",\r
+            "BV",\r
+            "BZ",\r
+            "CJ",\r
+            "CL",\r
+            "CS",\r
+            "CT",\r
+            "CV",\r
+            "DB",\r
+            "DJ",\r
+            "GJ",\r
+            "GL",\r
+            "GR",\r
+            "HD",\r
+            "HR",\r
+            "IF",\r
+            "IL",\r
+            "IS",\r
+            "MH",\r
+            "MM",\r
+            "MS",\r
+            "NT",\r
+            "OT",\r
+            "PH",\r
+            "SB",\r
+            "SJ",\r
+            "SM",\r
+            "SV",\r
+            "TL",\r
+            "TM",\r
+            "TR",\r
+            "VL",\r
+            "VN",\r
+            "VS",\r
         }\r
         RS{\r
-            "rs00",\r
-            "rs08",\r
-            "rs09",\r
-            "rs10",\r
-            "rs11",\r
-            "rs12",\r
-            "rs13",\r
-            "rs14",\r
-            "rs15",\r
-            "rs16",\r
-            "rs17",\r
-            "rs18",\r
-            "rs19",\r
-            "rs20",\r
-            "rs21",\r
-            "rs22",\r
-            "rs23",\r
-            "rs24",\r
-            "rskm",\r
-            "rsvo",\r
+            "00",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "KM",\r
+            "VO",\r
+        }\r
+        RS-KM{\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+        }\r
+        RS-VO{\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
         }\r
         RU{\r
-            "ruad",\r
-            "rual",\r
-            "rualt",\r
-            "ruamu",\r
-            "ruark",\r
-            "ruast",\r
-            "ruba",\r
-            "rubel",\r
-            "rubry",\r
-            "rubu",\r
-            "ruce",\r
-            "ruche",\r
-            "ruchu",\r
-            "rucu",\r
-            "ruda",\r
-            "ruin",\r
-            "ruirk",\r
-            "ruiva",\r
-            "rukam",\r
-            "rukb",\r
-            "rukc",\r
-            "rukda",\r
-            "rukem",\r
-            "rukgd",\r
-            "rukgn",\r
-            "rukha",\r
-            "rukhm",\r
-            "rukir",\r
-            "rukk",\r
-            "rukl",\r
-            "ruklu",\r
-            "ruko",\r
-            "rukos",\r
-            "rukr",\r
-            "rukrs",\r
-            "rukya",\r
-            "rulen",\r
-            "rulip",\r
-            "rumag",\r
-            "rume",\r
-            "rumo",\r
-            "rumos",\r
-            "rumow",\r
-            "rumur",\r
-            "runen",\r
-            "rungr",\r
-            "runiz",\r
-            "runvs",\r
-            "ruoms",\r
-            "ruore",\r
-            "ruorl",\r
-            "ruper",\r
-            "rupnz",\r
-            "rupri",\r
-            "rupsk",\r
-            "ruros",\r
-            "rurya",\r
-            "rusa",\r
-            "rusak",\r
-            "rusam",\r
-            "rusar",\r
-            "ruse",\r
-            "rusmo",\r
-            "ruspe",\r
-            "rusta",\r
-            "rusve",\r
-            "ruta",\r
-            "rutam",\r
-            "rutom",\r
-            "rutul",\r
-            "rutve",\r
-            "ruty",\r
-            "rutyu",\r
-            "ruud",\r
-            "ruuly",\r
-            "ruvgg",\r
-            "ruvla",\r
-            "ruvlg",\r
-            "ruvor",\r
-            "ruyan",\r
-            "ruyar",\r
-            "ruyev",\r
-            "ruzab",\r
+            "AD",\r
+            "AL",\r
+            "ALT",\r
+            "AMU",\r
+            "ARK",\r
+            "AST",\r
+            "BA",\r
+            "BEL",\r
+            "BRY",\r
+            "BU",\r
+            "CE",\r
+            "CHE",\r
+            "CHU",\r
+            "CU",\r
+            "DA",\r
+            "IN",\r
+            "IRK",\r
+            "IVA",\r
+            "KAM",\r
+            "KB",\r
+            "KC",\r
+            "KDA",\r
+            "KEM",\r
+            "KGD",\r
+            "KGN",\r
+            "KHA",\r
+            "KHM",\r
+            "KIR",\r
+            "KK",\r
+            "KL",\r
+            "KLU",\r
+            "KO",\r
+            "KOS",\r
+            "KR",\r
+            "KRS",\r
+            "KYA",\r
+            "LEN",\r
+            "LIP",\r
+            "MAG",\r
+            "ME",\r
+            "MO",\r
+            "MOS",\r
+            "MOW",\r
+            "MUR",\r
+            "NEN",\r
+            "NGR",\r
+            "NIZ",\r
+            "NVS",\r
+            "OMS",\r
+            "ORE",\r
+            "ORL",\r
+            "PER",\r
+            "PNZ",\r
+            "PRI",\r
+            "PSK",\r
+            "ROS",\r
+            "RYA",\r
+            "SA",\r
+            "SAK",\r
+            "SAM",\r
+            "SAR",\r
+            "SE",\r
+            "SMO",\r
+            "SPE",\r
+            "STA",\r
+            "SVE",\r
+            "TA",\r
+            "TAM",\r
+            "TOM",\r
+            "TUL",\r
+            "TVE",\r
+            "TY",\r
+            "TYU",\r
+            "UD",\r
+            "ULY",\r
+            "VGG",\r
+            "VLA",\r
+            "VLG",\r
+            "VOR",\r
+            "YAN",\r
+            "YAR",\r
+            "YEV",\r
+            "ZAB",\r
         }\r
         RW{\r
-            "rw01",\r
-            "rw02",\r
-            "rw03",\r
-            "rw04",\r
-            "rw05",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
         }\r
         SA{\r
-            "sa01",\r
-            "sa02",\r
-            "sa03",\r
-            "sa04",\r
-            "sa05",\r
-            "sa06",\r
-            "sa07",\r
-            "sa08",\r
-            "sa09",\r
-            "sa10",\r
-            "sa11",\r
-            "sa12",\r
-            "sa14",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "14",\r
         }\r
         SB{\r
-            "sbce",\r
-            "sbch",\r
-            "sbct",\r
-            "sbgu",\r
-            "sbis",\r
-            "sbmk",\r
-            "sbml",\r
-            "sbrb",\r
-            "sbte",\r
-            "sbwe",\r
+            "CE",\r
+            "CH",\r
+            "CT",\r
+            "GU",\r
+            "IS",\r
+            "MK",\r
+            "ML",\r
+            "RB",\r
+            "TE",\r
+            "WE",\r
         }\r
         SC{\r
-            "sc01",\r
-            "sc02",\r
-            "sc03",\r
-            "sc04",\r
-            "sc05",\r
-            "sc06",\r
-            "sc07",\r
-            "sc08",\r
-            "sc09",\r
-            "sc10",\r
-            "sc11",\r
-            "sc12",\r
-            "sc13",\r
-            "sc14",\r
-            "sc15",\r
-            "sc16",\r
-            "sc17",\r
-            "sc18",\r
-            "sc19",\r
-            "sc20",\r
-            "sc21",\r
-            "sc22",\r
-            "sc23",\r
-            "sc24",\r
-            "sc25",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
         }\r
         SD{\r
-            "sddc",\r
-            "sdde",\r
-            "sddn",\r
-            "sdds",\r
-            "sddw",\r
-            "sdgd",\r
-            "sdgk",\r
-            "sdgz",\r
-            "sdka",\r
-            "sdkh",\r
-            "sdkn",\r
-            "sdks",\r
-            "sdnb",\r
-            "sdno",\r
-            "sdnr",\r
-            "sdnw",\r
-            "sdrs",\r
-            "sdsi",\r
+            "DC",\r
+            "DE",\r
+            "DN",\r
+            "DS",\r
+            "DW",\r
+            "GD",\r
+            "GK",\r
+            "GZ",\r
+            "KA",\r
+            "KH",\r
+            "KN",\r
+            "KS",\r
+            "NB",\r
+            "NO",\r
+            "NR",\r
+            "NW",\r
+            "RS",\r
+            "SI",\r
         }\r
         SE{\r
-            "seab",\r
-            "seac",\r
-            "sebd",\r
-            "sec",\r
-            "sed",\r
-            "see",\r
-            "sef",\r
-            "seg",\r
-            "seh",\r
-            "sei",\r
-            "sek",\r
-            "sem",\r
-            "sen",\r
-            "seo",\r
-            "ses",\r
-            "set",\r
-            "seu",\r
-            "sew",\r
-            "sex",\r
-            "sey",\r
-            "sez",\r
+            "AB",\r
+            "AC",\r
+            "BD",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "H",\r
+            "I",\r
+            "K",\r
+            "M",\r
+            "N",\r
+            "O",\r
+            "S",\r
+            "T",\r
+            "U",\r
+            "W",\r
+            "X",\r
+            "Y",\r
+            "Z",\r
         }\r
         SG{\r
-            "sg01",\r
-            "sg02",\r
-            "sg03",\r
-            "sg04",\r
-            "sg05",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
         }\r
         SH{\r
-            "shac",\r
-            "shhl",\r
-            "shta",\r
+            "AC",\r
+            "HL",\r
+            "TA",\r
         }\r
         SI{\r
-            "si001",\r
-            "si002",\r
-            "si003",\r
-            "si004",\r
-            "si005",\r
-            "si006",\r
-            "si007",\r
-            "si008",\r
-            "si009",\r
-            "si010",\r
-            "si011",\r
-            "si012",\r
-            "si013",\r
-            "si014",\r
-            "si015",\r
-            "si016",\r
-            "si017",\r
-            "si018",\r
-            "si019",\r
-            "si020",\r
-            "si021",\r
-            "si022",\r
-            "si023",\r
-            "si024",\r
-            "si025",\r
-            "si026",\r
-            "si027",\r
-            "si028",\r
-            "si029",\r
-            "si030",\r
-            "si031",\r
-            "si032",\r
-            "si033",\r
-            "si034",\r
-            "si035",\r
-            "si036",\r
-            "si037",\r
-            "si038",\r
-            "si039",\r
-            "si040",\r
-            "si041",\r
-            "si042",\r
-            "si043",\r
-            "si044",\r
-            "si045",\r
-            "si046",\r
-            "si047",\r
-            "si048",\r
-            "si049",\r
-            "si050",\r
-            "si051",\r
-            "si052",\r
-            "si053",\r
-            "si054",\r
-            "si055",\r
-            "si056",\r
-            "si057",\r
-            "si058",\r
-            "si059",\r
-            "si060",\r
-            "si061",\r
-            "si062",\r
-            "si063",\r
-            "si064",\r
-            "si065",\r
-            "si066",\r
-            "si067",\r
-            "si068",\r
-            "si069",\r
-            "si070",\r
-            "si071",\r
-            "si072",\r
-            "si073",\r
-            "si074",\r
-            "si075",\r
-            "si076",\r
-            "si077",\r
-            "si078",\r
-            "si079",\r
-            "si080",\r
-            "si081",\r
-            "si082",\r
-            "si083",\r
-            "si084",\r
-            "si085",\r
-            "si086",\r
-            "si087",\r
-            "si088",\r
-            "si089",\r
-            "si090",\r
-            "si091",\r
-            "si092",\r
-            "si093",\r
-            "si094",\r
-            "si095",\r
-            "si096",\r
-            "si097",\r
-            "si098",\r
-            "si099",\r
-            "si100",\r
-            "si101",\r
-            "si102",\r
-            "si103",\r
-            "si104",\r
-            "si105",\r
-            "si106",\r
-            "si107",\r
-            "si108",\r
-            "si109",\r
-            "si110",\r
-            "si111",\r
-            "si112",\r
-            "si113",\r
-            "si114",\r
-            "si115",\r
-            "si116",\r
-            "si117",\r
-            "si118",\r
-            "si119",\r
-            "si120",\r
-            "si121",\r
-            "si122",\r
-            "si123",\r
-            "si124",\r
-            "si125",\r
-            "si126",\r
-            "si127",\r
-            "si128",\r
-            "si129",\r
-            "si130",\r
-            "si131",\r
-            "si132",\r
-            "si133",\r
-            "si134",\r
-            "si135",\r
-            "si136",\r
-            "si137",\r
-            "si138",\r
-            "si139",\r
-            "si140",\r
-            "si141",\r
-            "si142",\r
-            "si143",\r
-            "si144",\r
-            "si146",\r
-            "si147",\r
-            "si148",\r
-            "si149",\r
-            "si150",\r
-            "si151",\r
-            "si152",\r
-            "si153",\r
-            "si154",\r
-            "si155",\r
-            "si156",\r
-            "si157",\r
-            "si158",\r
-            "si159",\r
-            "si160",\r
-            "si161",\r
-            "si162",\r
-            "si163",\r
-            "si164",\r
-            "si165",\r
-            "si166",\r
-            "si167",\r
-            "si168",\r
-            "si169",\r
-            "si170",\r
-            "si171",\r
-            "si172",\r
-            "si173",\r
-            "si174",\r
-            "si175",\r
-            "si176",\r
-            "si177",\r
-            "si178",\r
-            "si179",\r
-            "si180",\r
-            "si181",\r
-            "si182",\r
-            "si183",\r
-            "si184",\r
-            "si185",\r
-            "si186",\r
-            "si187",\r
-            "si188",\r
-            "si189",\r
-            "si190",\r
-            "si191",\r
-            "si192",\r
-            "si193",\r
-            "si194",\r
-            "si195",\r
-            "si196",\r
-            "si197",\r
-            "si198",\r
-            "si199",\r
-            "si200",\r
-            "si201",\r
-            "si202",\r
-            "si203",\r
-            "si204",\r
-            "si205",\r
-            "si206",\r
-            "si207",\r
-            "si208",\r
-            "si209",\r
-            "si210",\r
-            "si211",\r
-            "si212",\r
-            "si213",\r
+            "001",\r
+            "002",\r
+            "003",\r
+            "004",\r
+            "005",\r
+            "006",\r
+            "007",\r
+            "008",\r
+            "009",\r
+            "010",\r
+            "011",\r
+            "012",\r
+            "013",\r
+            "014",\r
+            "015",\r
+            "016",\r
+            "017",\r
+            "018",\r
+            "019",\r
+            "020",\r
+            "021",\r
+            "022",\r
+            "023",\r
+            "024",\r
+            "025",\r
+            "026",\r
+            "027",\r
+            "028",\r
+            "029",\r
+            "030",\r
+            "031",\r
+            "032",\r
+            "033",\r
+            "034",\r
+            "035",\r
+            "036",\r
+            "037",\r
+            "038",\r
+            "039",\r
+            "040",\r
+            "041",\r
+            "042",\r
+            "043",\r
+            "044",\r
+            "045",\r
+            "046",\r
+            "047",\r
+            "048",\r
+            "049",\r
+            "050",\r
+            "051",\r
+            "052",\r
+            "053",\r
+            "054",\r
+            "055",\r
+            "056",\r
+            "057",\r
+            "058",\r
+            "059",\r
+            "060",\r
+            "061",\r
+            "062",\r
+            "063",\r
+            "064",\r
+            "065",\r
+            "066",\r
+            "067",\r
+            "068",\r
+            "069",\r
+            "070",\r
+            "071",\r
+            "072",\r
+            "073",\r
+            "074",\r
+            "075",\r
+            "076",\r
+            "077",\r
+            "078",\r
+            "079",\r
+            "080",\r
+            "081",\r
+            "082",\r
+            "083",\r
+            "084",\r
+            "085",\r
+            "086",\r
+            "087",\r
+            "088",\r
+            "089",\r
+            "090",\r
+            "091",\r
+            "092",\r
+            "093",\r
+            "094",\r
+            "095",\r
+            "096",\r
+            "097",\r
+            "098",\r
+            "099",\r
+            "100",\r
+            "101",\r
+            "102",\r
+            "103",\r
+            "104",\r
+            "105",\r
+            "106",\r
+            "107",\r
+            "108",\r
+            "109",\r
+            "110",\r
+            "111",\r
+            "112",\r
+            "113",\r
+            "114",\r
+            "115",\r
+            "116",\r
+            "117",\r
+            "118",\r
+            "119",\r
+            "120",\r
+            "121",\r
+            "122",\r
+            "123",\r
+            "124",\r
+            "125",\r
+            "126",\r
+            "127",\r
+            "128",\r
+            "129",\r
+            "130",\r
+            "131",\r
+            "132",\r
+            "133",\r
+            "134",\r
+            "135",\r
+            "136",\r
+            "137",\r
+            "138",\r
+            "139",\r
+            "140",\r
+            "141",\r
+            "142",\r
+            "143",\r
+            "144",\r
+            "146",\r
+            "147",\r
+            "148",\r
+            "149",\r
+            "150",\r
+            "151",\r
+            "152",\r
+            "153",\r
+            "154",\r
+            "155",\r
+            "156",\r
+            "157",\r
+            "158",\r
+            "159",\r
+            "160",\r
+            "161",\r
+            "162",\r
+            "163",\r
+            "164",\r
+            "165",\r
+            "166",\r
+            "167",\r
+            "168",\r
+            "169",\r
+            "170",\r
+            "171",\r
+            "172",\r
+            "173",\r
+            "174",\r
+            "175",\r
+            "176",\r
+            "177",\r
+            "178",\r
+            "179",\r
+            "180",\r
+            "181",\r
+            "182",\r
+            "183",\r
+            "184",\r
+            "185",\r
+            "186",\r
+            "187",\r
+            "188",\r
+            "189",\r
+            "190",\r
+            "191",\r
+            "192",\r
+            "193",\r
+            "194",\r
+            "195",\r
+            "196",\r
+            "197",\r
+            "198",\r
+            "199",\r
+            "200",\r
+            "201",\r
+            "202",\r
+            "203",\r
+            "204",\r
+            "205",\r
+            "206",\r
+            "207",\r
+            "208",\r
+            "209",\r
+            "210",\r
+            "211",\r
+            "212",\r
         }\r
         SK{\r
-            "skbc",\r
-            "skbl",\r
-            "skki",\r
-            "skni",\r
-            "skpv",\r
-            "skta",\r
-            "sktc",\r
-            "skzi",\r
+            "BC",\r
+            "BL",\r
+            "KI",\r
+            "NI",\r
+            "PV",\r
+            "TA",\r
+            "TC",\r
+            "ZI",\r
         }\r
         SL{\r
-            "sle",\r
-            "sln",\r
-            "sls",\r
-            "slw",\r
+            "E",\r
+            "N",\r
+            "S",\r
+            "W",\r
         }\r
         SM{\r
-            "sm01",\r
-            "sm02",\r
-            "sm03",\r
-            "sm04",\r
-            "sm05",\r
-            "sm06",\r
-            "sm07",\r
-            "sm08",\r
-            "sm09",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
         }\r
         SN{\r
-            "sndb",\r
-            "sndk",\r
-            "snfk",\r
-            "snka",\r
-            "snkd",\r
-            "snke",\r
-            "snkl",\r
-            "snlg",\r
-            "snmt",\r
-            "snse",\r
-            "snsl",\r
-            "sntc",\r
-            "snth",\r
-            "snzg",\r
+            "DB",\r
+            "DK",\r
+            "FK",\r
+            "KA",\r
+            "KD",\r
+            "KE",\r
+            "KL",\r
+            "LG",\r
+            "MT",\r
+            "SE",\r
+            "SL",\r
+            "TC",\r
+            "TH",\r
+            "ZG",\r
         }\r
         SO{\r
-            "soaw",\r
-            "sobk",\r
-            "sobn",\r
-            "sobr",\r
-            "soby",\r
-            "soga",\r
-            "soge",\r
-            "sohi",\r
-            "sojd",\r
-            "sojh",\r
-            "somu",\r
-            "sonu",\r
-            "sosa",\r
-            "sosd",\r
-            "sosh",\r
-            "soso",\r
-            "soto",\r
-            "sowo",\r
+            "AW",\r
+            "BK",\r
+            "BN",\r
+            "BR",\r
+            "BY",\r
+            "GA",\r
+            "GE",\r
+            "HI",\r
+            "JD",\r
+            "JH",\r
+            "MU",\r
+            "NU",\r
+            "SA",\r
+            "SD",\r
+            "SH",\r
+            "SO",\r
+            "TO",\r
+            "WO",\r
         }\r
         SR{\r
-            "srbr",\r
-            "srcm",\r
-            "srcr",\r
-            "srma",\r
-            "srni",\r
-            "srpm",\r
-            "srpr",\r
-            "srsa",\r
-            "srsi",\r
-            "srwa",\r
+            "BR",\r
+            "CM",\r
+            "CR",\r
+            "MA",\r
+            "NI",\r
+            "PM",\r
+            "PR",\r
+            "SA",\r
+            "SI",\r
+            "WA",\r
         }\r
         SS{\r
-            "ssbn",\r
-            "ssbw",\r
-            "ssec",\r
-            "ssee",\r
-            "ssew",\r
-            "ssjg",\r
-            "sslk",\r
-            "ssnu",\r
-            "ssuy",\r
-            "sswr",\r
+            "BN",\r
+            "BW",\r
+            "EC",\r
+            "EE",\r
+            "EW",\r
+            "JG",\r
+            "LK",\r
+            "NU",\r
+            "UY",\r
+            "WR",\r
         }\r
         ST{\r
-            "stp",\r
-            "sts",\r
+            "P",\r
+            "S",\r
         }\r
         SV{\r
-            "svah",\r
-            "svca",\r
-            "svch",\r
-            "svcu",\r
-            "svli",\r
-            "svmo",\r
-            "svpa",\r
-            "svsa",\r
-            "svsm",\r
-            "svso",\r
-            "svss",\r
-            "svsv",\r
-            "svun",\r
-            "svus",\r
+            "AH",\r
+            "CA",\r
+            "CH",\r
+            "CU",\r
+            "LI",\r
+            "MO",\r
+            "PA",\r
+            "SA",\r
+            "SM",\r
+            "SO",\r
+            "SS",\r
+            "SV",\r
+            "UN",\r
+            "US",\r
         }\r
         SY{\r
-            "sydi",\r
-            "sydr",\r
-            "sydy",\r
-            "syha",\r
-            "syhi",\r
-            "syhl",\r
-            "syhm",\r
-            "syid",\r
-            "syla",\r
-            "syqu",\r
-            "syra",\r
-            "syrd",\r
-            "sysu",\r
-            "syta",\r
+            "DI",\r
+            "DR",\r
+            "DY",\r
+            "HA",\r
+            "HI",\r
+            "HL",\r
+            "HM",\r
+            "ID",\r
+            "LA",\r
+            "QU",\r
+            "RA",\r
+            "RD",\r
+            "SU",\r
+            "TA",\r
         }\r
         SZ{\r
-            "szhh",\r
-            "szlu",\r
-            "szma",\r
-            "szsh",\r
+            "HH",\r
+            "LU",\r
+            "MA",\r
+            "SH",\r
         }\r
         TD{\r
-            "tdba",\r
-            "tdbg",\r
-            "tdbo",\r
-            "tdcb",\r
-            "tdee",\r
-            "tdeo",\r
-            "tdgr",\r
-            "tdhl",\r
-            "tdka",\r
-            "tdlc",\r
-            "tdlo",\r
-            "tdlr",\r
-            "tdma",\r
-            "tdmc",\r
-            "tdme",\r
-            "tdmo",\r
-            "tdnd",\r
-            "tdod",\r
-            "tdsa",\r
-            "tdsi",\r
-            "tdta",\r
-            "tdti",\r
-            "tdwf",\r
+            "BA",\r
+            "BG",\r
+            "BO",\r
+            "CB",\r
+            "EE",\r
+            "EO",\r
+            "GR",\r
+            "HL",\r
+            "KA",\r
+            "LC",\r
+            "LO",\r
+            "LR",\r
+            "MA",\r
+            "MC",\r
+            "ME",\r
+            "MO",\r
+            "ND",\r
+            "OD",\r
+            "SA",\r
+            "SI",\r
+            "TA",\r
+            "TI",\r
+            "WF",\r
         }\r
         TG{\r
-            "tgc",\r
-            "tgk",\r
-            "tgm",\r
-            "tgp",\r
-            "tgs",\r
+            "C",\r
+            "K",\r
+            "M",\r
+            "P",\r
+            "S",\r
         }\r
         TH{\r
-            "th10",\r
-            "th11",\r
-            "th12",\r
-            "th13",\r
-            "th14",\r
-            "th15",\r
-            "th16",\r
-            "th17",\r
-            "th18",\r
-            "th19",\r
-            "th20",\r
-            "th21",\r
-            "th22",\r
-            "th23",\r
-            "th24",\r
-            "th25",\r
-            "th26",\r
-            "th27",\r
-            "th30",\r
-            "th31",\r
-            "th32",\r
-            "th33",\r
-            "th34",\r
-            "th35",\r
-            "th36",\r
-            "th37",\r
-            "th38",\r
-            "th39",\r
-            "th40",\r
-            "th41",\r
-            "th42",\r
-            "th43",\r
-            "th44",\r
-            "th45",\r
-            "th46",\r
-            "th47",\r
-            "th48",\r
-            "th49",\r
-            "th50",\r
-            "th51",\r
-            "th52",\r
-            "th53",\r
-            "th54",\r
-            "th55",\r
-            "th56",\r
-            "th57",\r
-            "th58",\r
-            "th60",\r
-            "th61",\r
-            "th62",\r
-            "th63",\r
-            "th64",\r
-            "th65",\r
-            "th66",\r
-            "th67",\r
-            "th70",\r
-            "th71",\r
-            "th72",\r
-            "th73",\r
-            "th74",\r
-            "th75",\r
-            "th76",\r
-            "th77",\r
-            "th80",\r
-            "th81",\r
-            "th82",\r
-            "th83",\r
-            "th84",\r
-            "th85",\r
-            "th86",\r
-            "th90",\r
-            "th91",\r
-            "th92",\r
-            "th93",\r
-            "th94",\r
-            "th95",\r
-            "th96",\r
-            "ths",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+            "49",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "55",\r
+            "56",\r
+            "57",\r
+            "58",\r
+            "60",\r
+            "61",\r
+            "62",\r
+            "63",\r
+            "64",\r
+            "65",\r
+            "66",\r
+            "67",\r
+            "70",\r
+            "71",\r
+            "72",\r
+            "73",\r
+            "74",\r
+            "75",\r
+            "76",\r
+            "77",\r
+            "80",\r
+            "81",\r
+            "82",\r
+            "83",\r
+            "84",\r
+            "85",\r
+            "86",\r
+            "90",\r
+            "91",\r
+            "92",\r
+            "93",\r
+            "94",\r
+            "95",\r
+            "96",\r
+            "S",\r
         }\r
         TJ{\r
-            "tjdu",\r
-            "tjgb",\r
-            "tjkt",\r
-            "tjra",\r
-            "tjsu",\r
+            "DU",\r
+            "GB",\r
+            "KT",\r
+            "SU",\r
         }\r
         TL{\r
-            "tlal",\r
-            "tlan",\r
-            "tlba",\r
-            "tlbo",\r
-            "tlco",\r
-            "tldi",\r
-            "tler",\r
-            "tlla",\r
-            "tlli",\r
-            "tlmf",\r
-            "tlmt",\r
-            "tloe",\r
-            "tlvi",\r
+            "AL",\r
+            "AN",\r
+            "BA",\r
+            "BO",\r
+            "CO",\r
+            "DI",\r
+            "ER",\r
+            "LA",\r
+            "LI",\r
+            "MF",\r
+            "MT",\r
+            "OE",\r
+            "VI",\r
         }\r
         TM{\r
-            "tma",\r
-            "tmb",\r
-            "tmd",\r
-            "tml",\r
-            "tmm",\r
-            "tms",\r
+            "A",\r
+            "B",\r
+            "D",\r
+            "L",\r
+            "M",\r
+            "S",\r
         }\r
         TN{\r
-            "tn11",\r
-            "tn12",\r
-            "tn13",\r
-            "tn14",\r
-            "tn21",\r
-            "tn22",\r
-            "tn23",\r
-            "tn31",\r
-            "tn32",\r
-            "tn33",\r
-            "tn34",\r
-            "tn41",\r
-            "tn42",\r
-            "tn43",\r
-            "tn51",\r
-            "tn52",\r
-            "tn53",\r
-            "tn61",\r
-            "tn71",\r
-            "tn72",\r
-            "tn73",\r
-            "tn81",\r
-            "tn82",\r
-            "tn83",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "61",\r
+            "71",\r
+            "72",\r
+            "73",\r
+            "81",\r
+            "82",\r
+            "83",\r
         }\r
         TO{\r
-            "to01",\r
-            "to02",\r
-            "to03",\r
-            "to04",\r
-            "to05",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
         }\r
         TR{\r
-            "tr01",\r
-            "tr02",\r
-            "tr03",\r
-            "tr04",\r
-            "tr05",\r
-            "tr06",\r
-            "tr07",\r
-            "tr08",\r
-            "tr09",\r
-            "tr10",\r
-            "tr11",\r
-            "tr12",\r
-            "tr13",\r
-            "tr14",\r
-            "tr15",\r
-            "tr16",\r
-            "tr17",\r
-            "tr18",\r
-            "tr19",\r
-            "tr20",\r
-            "tr21",\r
-            "tr22",\r
-            "tr23",\r
-            "tr24",\r
-            "tr25",\r
-            "tr26",\r
-            "tr27",\r
-            "tr28",\r
-            "tr29",\r
-            "tr30",\r
-            "tr31",\r
-            "tr32",\r
-            "tr33",\r
-            "tr34",\r
-            "tr35",\r
-            "tr36",\r
-            "tr37",\r
-            "tr38",\r
-            "tr39",\r
-            "tr40",\r
-            "tr41",\r
-            "tr42",\r
-            "tr43",\r
-            "tr44",\r
-            "tr45",\r
-            "tr46",\r
-            "tr47",\r
-            "tr48",\r
-            "tr49",\r
-            "tr50",\r
-            "tr51",\r
-            "tr52",\r
-            "tr53",\r
-            "tr54",\r
-            "tr55",\r
-            "tr56",\r
-            "tr57",\r
-            "tr58",\r
-            "tr59",\r
-            "tr60",\r
-            "tr61",\r
-            "tr62",\r
-            "tr63",\r
-            "tr64",\r
-            "tr65",\r
-            "tr66",\r
-            "tr67",\r
-            "tr68",\r
-            "tr69",\r
-            "tr70",\r
-            "tr71",\r
-            "tr72",\r
-            "tr73",\r
-            "tr74",\r
-            "tr75",\r
-            "tr76",\r
-            "tr77",\r
-            "tr78",\r
-            "tr79",\r
-            "tr80",\r
-            "tr81",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "38",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "42",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "48",\r
+            "49",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "55",\r
+            "56",\r
+            "57",\r
+            "58",\r
+            "59",\r
+            "60",\r
+            "61",\r
+            "62",\r
+            "63",\r
+            "64",\r
+            "65",\r
+            "66",\r
+            "67",\r
+            "68",\r
+            "69",\r
+            "70",\r
+            "71",\r
+            "72",\r
+            "73",\r
+            "74",\r
+            "75",\r
+            "76",\r
+            "77",\r
+            "78",\r
+            "79",\r
+            "80",\r
+            "81",\r
         }\r
         TT{\r
-            "ttari",\r
-            "ttcha",\r
-            "ttctt",\r
-            "ttdmn",\r
-            "ttmrc",\r
-            "ttped",\r
-            "ttpos",\r
-            "ttprt",\r
-            "ttptf",\r
-            "ttsfo",\r
-            "ttsge",\r
-            "ttsip",\r
-            "ttsjl",\r
-            "tttob",\r
-            "tttup",\r
+            "ARI",\r
+            "CHA",\r
+            "CTT",\r
+            "DMN",\r
+            "MRC",\r
+            "PED",\r
+            "POS",\r
+            "PRT",\r
+            "PTF",\r
+            "SFO",\r
+            "SGE",\r
+            "SIP",\r
+            "SJL",\r
+            "TOB",\r
+            "TUP",\r
         }\r
         TV{\r
-            "tvfun",\r
-            "tvnit",\r
-            "tvnkf",\r
-            "tvnkl",\r
-            "tvnma",\r
-            "tvnmg",\r
-            "tvnui",\r
-            "tvvai",\r
+            "FUN",\r
+            "NIT",\r
+            "NKF",\r
+            "NKL",\r
+            "NMA",\r
+            "NMG",\r
+            "NUI",\r
+            "VAI",\r
         }\r
         TW{\r
-            "twcha",\r
-            "twcyi",\r
-            "twcyq",\r
-            "twhsq",\r
-            "twhsz",\r
-            "twhua",\r
-            "twila",\r
-            "twkee",\r
-            "twkhh",\r
-            "twkin",\r
-            "twlie",\r
-            "twmia",\r
-            "twnan",\r
-            "twnwt",\r
-            "twpen",\r
-            "twpif",\r
-            "twtao",\r
-            "twtnn",\r
-            "twtpe",\r
-            "twttt",\r
-            "twtxg",\r
-            "twyun",\r
+            "CHA",\r
+            "CYI",\r
+            "CYQ",\r
+            "HSQ",\r
+            "HSZ",\r
+            "HUA",\r
+            "ILA",\r
+            "KEE",\r
+            "KHH",\r
+            "KIN",\r
+            "LIE",\r
+            "MIA",\r
+            "NAN",\r
+            "NWT",\r
+            "PEN",\r
+            "PIF",\r
+            "TAO",\r
+            "TNN",\r
+            "TPE",\r
+            "TTT",\r
+            "TXG",\r
+            "YUN",\r
         }\r
         TZ{\r
-            "tz01",\r
-            "tz02",\r
-            "tz03",\r
-            "tz04",\r
-            "tz05",\r
-            "tz06",\r
-            "tz07",\r
-            "tz08",\r
-            "tz09",\r
-            "tz10",\r
-            "tz11",\r
-            "tz12",\r
-            "tz13",\r
-            "tz14",\r
-            "tz15",\r
-            "tz16",\r
-            "tz17",\r
-            "tz18",\r
-            "tz19",\r
-            "tz20",\r
-            "tz21",\r
-            "tz22",\r
-            "tz23",\r
-            "tz24",\r
-            "tz25",\r
-            "tz26",\r
-            "tz27",\r
-            "tz28",\r
-            "tz29",\r
-            "tz30",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
+            "11",\r
+            "12",\r
+            "13",\r
+            "14",\r
+            "15",\r
+            "16",\r
+            "17",\r
+            "18",\r
+            "19",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
         }\r
         UA{\r
-            "ua05",\r
-            "ua07",\r
-            "ua09",\r
-            "ua12",\r
-            "ua14",\r
-            "ua18",\r
-            "ua21",\r
-            "ua23",\r
-            "ua26",\r
-            "ua30",\r
-            "ua32",\r
-            "ua35",\r
-            "ua40",\r
-            "ua43",\r
-            "ua46",\r
-            "ua48",\r
-            "ua51",\r
-            "ua53",\r
-            "ua56",\r
-            "ua59",\r
-            "ua61",\r
-            "ua63",\r
-            "ua65",\r
-            "ua68",\r
-            "ua71",\r
-            "ua74",\r
-            "ua77",\r
+            "05",\r
+            "07",\r
+            "09",\r
+            "12",\r
+            "14",\r
+            "18",\r
+            "21",\r
+            "23",\r
+            "26",\r
+            "30",\r
+            "32",\r
+            "35",\r
+            "40",\r
+            "43",\r
+            "46",\r
+            "48",\r
+            "51",\r
+            "53",\r
+            "56",\r
+            "59",\r
+            "61",\r
+            "63",\r
+            "65",\r
+            "68",\r
+            "71",\r
+            "74",\r
+            "77",\r
         }\r
         UG{\r
-            "ugc",\r
-            "uge",\r
-            "ugn",\r
-            "ugw",\r
+            "C",\r
+            "E",\r
+            "N",\r
+            "W",\r
+        }\r
+        UG-C{\r
+            "101",\r
+            "102",\r
+            "103",\r
+            "104",\r
+            "105",\r
+            "106",\r
+            "107",\r
+            "108",\r
+            "109",\r
+            "110",\r
+            "111",\r
+            "112",\r
+            "113",\r
+            "114",\r
+            "115",\r
+            "116",\r
+            "117",\r
+            "118",\r
+            "119",\r
+            "120",\r
+            "121",\r
+            "122",\r
+            "123",\r
+            "124",\r
+        }\r
+        UG-E{\r
+            "201",\r
+            "202",\r
+            "203",\r
+            "204",\r
+            "205",\r
+            "206",\r
+            "207",\r
+            "208",\r
+            "209",\r
+            "210",\r
+            "211",\r
+            "212",\r
+            "213",\r
+            "214",\r
+            "215",\r
+            "216",\r
+            "217",\r
+            "218",\r
+            "219",\r
+            "220",\r
+            "221",\r
+            "222",\r
+            "223",\r
+            "224",\r
+            "225",\r
+            "226",\r
+            "227",\r
+            "228",\r
+            "229",\r
+            "230",\r
+            "231",\r
+            "232",\r
+        }\r
+        UG-N{\r
+            "301",\r
+            "302",\r
+            "303",\r
+            "304",\r
+            "305",\r
+            "306",\r
+            "307",\r
+            "308",\r
+            "309",\r
+            "310",\r
+            "311",\r
+            "312",\r
+            "313",\r
+            "314",\r
+            "315",\r
+            "316",\r
+            "317",\r
+            "318",\r
+            "319",\r
+            "320",\r
+            "321",\r
+            "322",\r
+            "323",\r
+            "324",\r
+            "325",\r
+            "326",\r
+            "327",\r
+            "328",\r
+            "329",\r
+            "330",\r
+            "331",\r
+        }\r
+        UG-W{\r
+            "401",\r
+            "402",\r
+            "403",\r
+            "404",\r
+            "405",\r
+            "406",\r
+            "407",\r
+            "408",\r
+            "409",\r
+            "410",\r
+            "411",\r
+            "412",\r
+            "413",\r
+            "414",\r
+            "415",\r
+            "416",\r
+            "417",\r
+            "418",\r
+            "419",\r
+            "420",\r
+            "421",\r
+            "422",\r
+            "423",\r
+            "424",\r
+            "425",\r
         }\r
         UM{\r
-            "um67",\r
-            "um71",\r
-            "um76",\r
-            "um79",\r
-            "um81",\r
-            "um84",\r
-            "um86",\r
-            "um89",\r
-            "um95",\r
+            "67",\r
+            "71",\r
+            "76",\r
+            "79",\r
+            "81",\r
+            "84",\r
+            "86",\r
+            "89",\r
+            "95",\r
         }\r
         US{\r
-            "usak",\r
-            "usal",\r
-            "usar",\r
-            "usas",\r
-            "usaz",\r
-            "usca",\r
-            "usco",\r
-            "usct",\r
-            "usdc",\r
-            "usde",\r
-            "usfl",\r
-            "usga",\r
-            "usgu",\r
-            "ushi",\r
-            "usia",\r
-            "usid",\r
-            "usil",\r
-            "usin",\r
-            "usks",\r
-            "usky",\r
-            "usla",\r
-            "usma",\r
-            "usmd",\r
-            "usme",\r
-            "usmi",\r
-            "usmn",\r
-            "usmo",\r
-            "usmp",\r
-            "usms",\r
-            "usmt",\r
-            "usnc",\r
-            "usnd",\r
-            "usne",\r
-            "usnh",\r
-            "usnj",\r
-            "usnm",\r
-            "usnv",\r
-            "usny",\r
-            "usoh",\r
-            "usok",\r
-            "usor",\r
-            "uspa",\r
-            "uspr",\r
-            "usri",\r
-            "ussc",\r
-            "ussd",\r
-            "ustn",\r
-            "ustx",\r
-            "usum",\r
-            "usut",\r
-            "usva",\r
-            "usvi",\r
-            "usvt",\r
-            "uswa",\r
-            "uswi",\r
-            "uswv",\r
-            "uswy",\r
+            "AK",\r
+            "AL",\r
+            "AR",\r
+            "AS",\r
+            "AZ",\r
+            "CA",\r
+            "CO",\r
+            "CT",\r
+            "DC",\r
+            "DE",\r
+            "FL",\r
+            "GA",\r
+            "GU",\r
+            "HI",\r
+            "IA",\r
+            "ID",\r
+            "IL",\r
+            "IN",\r
+            "KS",\r
+            "KY",\r
+            "LA",\r
+            "MA",\r
+            "MD",\r
+            "ME",\r
+            "MI",\r
+            "MN",\r
+            "MO",\r
+            "MP",\r
+            "MS",\r
+            "MT",\r
+            "NC",\r
+            "ND",\r
+            "NE",\r
+            "NH",\r
+            "NJ",\r
+            "NM",\r
+            "NV",\r
+            "NY",\r
+            "OH",\r
+            "OK",\r
+            "OR",\r
+            "PA",\r
+            "PR",\r
+            "RI",\r
+            "SC",\r
+            "SD",\r
+            "TN",\r
+            "TX",\r
+            "UM",\r
+            "UT",\r
+            "VA",\r
+            "VI",\r
+            "VT",\r
+            "WA",\r
+            "WI",\r
+            "WV",\r
+            "WY",\r
         }\r
         UY{\r
-            "uyar",\r
-            "uyca",\r
-            "uycl",\r
-            "uyco",\r
-            "uydu",\r
-            "uyfd",\r
-            "uyfs",\r
-            "uyla",\r
-            "uyma",\r
-            "uymo",\r
-            "uypa",\r
-            "uyrn",\r
-            "uyro",\r
-            "uyrv",\r
-            "uysa",\r
-            "uysj",\r
-            "uyso",\r
-            "uyta",\r
-            "uytt",\r
+            "AR",\r
+            "CA",\r
+            "CL",\r
+            "CO",\r
+            "DU",\r
+            "FD",\r
+            "FS",\r
+            "LA",\r
+            "MA",\r
+            "MO",\r
+            "PA",\r
+            "RN",\r
+            "RO",\r
+            "RV",\r
+            "SA",\r
+            "SJ",\r
+            "SO",\r
+            "TA",\r
+            "TT",\r
         }\r
         UZ{\r
-            "uzan",\r
-            "uzbu",\r
-            "uzfa",\r
-            "uzji",\r
-            "uzng",\r
-            "uznw",\r
-            "uzqa",\r
-            "uzqr",\r
-            "uzsa",\r
-            "uzsi",\r
-            "uzsu",\r
-            "uztk",\r
-            "uzto",\r
-            "uzxo",\r
+            "AN",\r
+            "BU",\r
+            "FA",\r
+            "JI",\r
+            "NG",\r
+            "NW",\r
+            "QA",\r
+            "QR",\r
+            "SA",\r
+            "SI",\r
+            "SU",\r
+            "TK",\r
+            "TO",\r
+            "XO",\r
         }\r
         VC{\r
-            "vc01",\r
-            "vc02",\r
-            "vc03",\r
-            "vc04",\r
-            "vc05",\r
-            "vc06",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
         }\r
         VE{\r
-            "vea",\r
-            "veb",\r
-            "vec",\r
-            "ved",\r
-            "vee",\r
-            "vef",\r
-            "veg",\r
-            "veh",\r
-            "vei",\r
-            "vej",\r
-            "vek",\r
-            "vel",\r
-            "vem",\r
-            "ven",\r
-            "veo",\r
-            "vep",\r
-            "ver",\r
-            "ves",\r
-            "vet",\r
-            "veu",\r
-            "vev",\r
-            "vew",\r
-            "vex",\r
-            "vey",\r
-            "vez",\r
+            "A",\r
+            "B",\r
+            "C",\r
+            "D",\r
+            "E",\r
+            "F",\r
+            "G",\r
+            "H",\r
+            "I",\r
+            "J",\r
+            "K",\r
+            "L",\r
+            "M",\r
+            "N",\r
+            "O",\r
+            "P",\r
+            "R",\r
+            "S",\r
+            "T",\r
+            "U",\r
+            "V",\r
+            "W",\r
+            "X",\r
+            "Y",\r
+            "Z",\r
         }\r
         VN{\r
-            "vn01",\r
-            "vn02",\r
-            "vn03",\r
-            "vn04",\r
-            "vn05",\r
-            "vn06",\r
-            "vn07",\r
-            "vn09",\r
-            "vn13",\r
-            "vn14",\r
-            "vn18",\r
-            "vn20",\r
-            "vn21",\r
-            "vn22",\r
-            "vn23",\r
-            "vn24",\r
-            "vn25",\r
-            "vn26",\r
-            "vn27",\r
-            "vn28",\r
-            "vn29",\r
-            "vn30",\r
-            "vn31",\r
-            "vn32",\r
-            "vn33",\r
-            "vn34",\r
-            "vn35",\r
-            "vn36",\r
-            "vn37",\r
-            "vn39",\r
-            "vn40",\r
-            "vn41",\r
-            "vn43",\r
-            "vn44",\r
-            "vn45",\r
-            "vn46",\r
-            "vn47",\r
-            "vn49",\r
-            "vn50",\r
-            "vn51",\r
-            "vn52",\r
-            "vn53",\r
-            "vn54",\r
-            "vn55",\r
-            "vn56",\r
-            "vn57",\r
-            "vn58",\r
-            "vn59",\r
-            "vn61",\r
-            "vn63",\r
-            "vn66",\r
-            "vn67",\r
-            "vn68",\r
-            "vn69",\r
-            "vn70",\r
-            "vn71",\r
-            "vn72",\r
-            "vn73",\r
-            "vnct",\r
-            "vndn",\r
-            "vnhn",\r
-            "vnhp",\r
-            "vnsg",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "09",\r
+            "13",\r
+            "14",\r
+            "18",\r
+            "20",\r
+            "21",\r
+            "22",\r
+            "23",\r
+            "24",\r
+            "25",\r
+            "26",\r
+            "27",\r
+            "28",\r
+            "29",\r
+            "30",\r
+            "31",\r
+            "32",\r
+            "33",\r
+            "34",\r
+            "35",\r
+            "36",\r
+            "37",\r
+            "39",\r
+            "40",\r
+            "41",\r
+            "43",\r
+            "44",\r
+            "45",\r
+            "46",\r
+            "47",\r
+            "49",\r
+            "50",\r
+            "51",\r
+            "52",\r
+            "53",\r
+            "54",\r
+            "55",\r
+            "56",\r
+            "57",\r
+            "58",\r
+            "59",\r
+            "61",\r
+            "63",\r
+            "66",\r
+            "67",\r
+            "68",\r
+            "69",\r
+            "70",\r
+            "71",\r
+            "72",\r
+            "73",\r
+            "CT",\r
+            "DN",\r
+            "HN",\r
+            "HP",\r
+            "SG",\r
         }\r
         VU{\r
-            "vumap",\r
-            "vupam",\r
-            "vusam",\r
-            "vusee",\r
-            "vutae",\r
-            "vutob",\r
+            "MAP",\r
+            "PAM",\r
+            "SAM",\r
+            "SEE",\r
+            "TAE",\r
+            "TOB",\r
         }\r
         WF{\r
-            "wfal",\r
-            "wfsg",\r
-            "wfuv",\r
+            "AL",\r
+            "SG",\r
+            "UV",\r
         }\r
         WS{\r
-            "wsaa",\r
-            "wsal",\r
-            "wsat",\r
-            "wsfa",\r
-            "wsge",\r
-            "wsgi",\r
-            "wspa",\r
-            "wssa",\r
-            "wstu",\r
-            "wsvf",\r
-            "wsvs",\r
+            "AA",\r
+            "AL",\r
+            "AT",\r
+            "FA",\r
+            "GE",\r
+            "GI",\r
+            "PA",\r
+            "SA",\r
+            "TU",\r
+            "VF",\r
+            "VS",\r
         }\r
         YE{\r
-            "yeab",\r
-            "yead",\r
-            "yeam",\r
-            "yeba",\r
-            "yeda",\r
-            "yedh",\r
-            "yehd",\r
-            "yehj",\r
-            "yehu",\r
-            "yeib",\r
-            "yeja",\r
-            "yela",\r
-            "yema",\r
-            "yemr",\r
-            "yemw",\r
-            "yera",\r
-            "yesa",\r
-            "yesd",\r
-            "yesh",\r
-            "yesn",\r
-            "yesu",\r
-            "yeta",\r
+            "AB",\r
+            "AD",\r
+            "AM",\r
+            "BA",\r
+            "DA",\r
+            "DH",\r
+            "HD",\r
+            "HJ",\r
+            "HU",\r
+            "IB",\r
+            "JA",\r
+            "LA",\r
+            "MA",\r
+            "MR",\r
+            "MW",\r
+            "RA",\r
+            "SA",\r
+            "SD",\r
+            "SH",\r
+            "SN",\r
+            "SU",\r
+            "TA",\r
         }\r
         ZA{\r
-            "zaec",\r
-            "zafs",\r
-            "zagt",\r
-            "zalp",\r
-            "zamp",\r
-            "zanc",\r
-            "zanl",\r
-            "zanw",\r
-            "zawc",\r
+            "EC",\r
+            "FS",\r
+            "GT",\r
+            "LP",\r
+            "MP",\r
+            "NC",\r
+            "NL",\r
+            "NW",\r
+            "WC",\r
         }\r
         ZM{\r
-            "zm01",\r
-            "zm02",\r
-            "zm03",\r
-            "zm04",\r
-            "zm05",\r
-            "zm06",\r
-            "zm07",\r
-            "zm08",\r
-            "zm09",\r
-            "zm10",\r
+            "01",\r
+            "02",\r
+            "03",\r
+            "04",\r
+            "05",\r
+            "06",\r
+            "07",\r
+            "08",\r
+            "09",\r
+            "10",\r
         }\r
         ZW{\r
-            "zwbu",\r
-            "zwha",\r
-            "zwma",\r
-            "zwmc",\r
-            "zwme",\r
-            "zwmi",\r
-            "zwmn",\r
-            "zwms",\r
-            "zwmv",\r
-            "zwmw",\r
-        }\r
-        aznx{\r
-            "azbab",\r
-            "azcul",\r
-            "azkan",\r
-            "aznv",\r
-            "azord",\r
-            "azsad",\r
-            "azsah",\r
-            "azsar",\r
-        }\r
-        bda{\r
-            "bd02",\r
-            "bd06",\r
-            "bd07",\r
-            "bd25",\r
-            "bd50",\r
-            "bd51",\r
-        }\r
-        bdb{\r
-            "bd01",\r
-            "bd04",\r
-            "bd08",\r
-            "bd09",\r
-            "bd10",\r
-            "bd11",\r
-            "bd16",\r
-            "bd29",\r
-            "bd31",\r
-            "bd47",\r
-            "bd56",\r
-        }\r
-        bdc{\r
-            "bd13",\r
-            "bd15",\r
-            "bd17",\r
-            "bd18",\r
-            "bd26",\r
-            "bd33",\r
-            "bd35",\r
-            "bd36",\r
-            "bd40",\r
-            "bd42",\r
-            "bd53",\r
-            "bd62",\r
-            "bd63",\r
-        }\r
-        bdd{\r
-            "bd05",\r
-            "bd12",\r
-            "bd22",\r
-            "bd23",\r
-            "bd27",\r
-            "bd30",\r
-            "bd37",\r
-            "bd39",\r
-            "bd43",\r
-            "bd58",\r
-        }\r
-        bde{\r
-            "bd03",\r
-            "bd24",\r
-            "bd44",\r
-            "bd45",\r
-            "bd48",\r
-            "bd49",\r
-            "bd54",\r
-            "bd59",\r
-        }\r
-        bdf{\r
-            "bd14",\r
-            "bd19",\r
-            "bd28",\r
-            "bd32",\r
-            "bd46",\r
-            "bd52",\r
-            "bd55",\r
-            "bd64",\r
-        }\r
-        bdg{\r
-            "bd20",\r
-            "bd38",\r
-            "bd60",\r
-            "bd61",\r
-        }\r
-        bdh{\r
-            "bd21",\r
-            "bd34",\r
-            "bd41",\r
-            "bd57",\r
-        }\r
-        bevlg{\r
-            "bevan",\r
-            "bevbr",\r
-            "bevli",\r
-            "bevov",\r
-            "bevwv",\r
-        }\r
-        bewal{\r
-            "bewbr",\r
-            "bewht",\r
-            "bewlg",\r
-            "bewlx",\r
-            "bewna",\r
-        }\r
-        bf01{\r
-            "bfbal",\r
-            "bfban",\r
-            "bfkos",\r
-            "bfmou",\r
-            "bfnay",\r
-            "bfsor",\r
-        }\r
-        bf02{\r
-            "bfcom",\r
-            "bfler",\r
-        }\r
-        bf03{"bfkad"}\r
-        bf04{\r
-            "bfblg",\r
-            "bfkop",\r
-            "bfkot",\r
-        }\r
-        bf05{\r
-            "bfbam",\r
-            "bfnam",\r
-            "bfsmt",\r
-        }\r
-        bf06{\r
-            "bfblk",\r
-            "bfsis",\r
-            "bfsng",\r
-            "bfzir",\r
-        }\r
-        bf07{\r
-            "bfbaz",\r
-            "bfnao",\r
-            "bfzou",\r
-        }\r
-        bf08{\r
-            "bfgna",\r
-            "bfgou",\r
-            "bfkmd",\r
-            "bfkmp",\r
-            "bftap",\r
-        }\r
-        bf09{\r
-            "bfhou",\r
-            "bfken",\r
-            "bftui",\r
-        }\r
-        bf10{\r
-            "bflor",\r
-            "bfpas",\r
-            "bfyat",\r
-            "bfzon",\r
-        }\r
-        bf11{\r
-            "bfgan",\r
-            "bfkow",\r
-            "bfoub",\r
-        }\r
-        bf12{\r
-            "bfoud",\r
-            "bfsen",\r
-            "bfsom",\r
-            "bfyag",\r
-        }\r
-        bf13{\r
-            "bfbgr",\r
-            "bfiob",\r
-            "bfnou",\r
-            "bfpon",\r
-        }\r
-        cvb{\r
-            "cvbv",\r
-            "cvpa",\r
-            "cvpn",\r
-            "cvrb",\r
-            "cvrg",\r
-            "cvsl",\r
-            "cvsv",\r
-            "cvts",\r
-        }\r
-        cvs{\r
-            "cvbr",\r
-            "cvca",\r
-            "cvcf",\r
-            "cvcr",\r
-            "cvma",\r
-            "cvmo",\r
-            "cvpr",\r
-            "cvrs",\r
-            "cvsd",\r
-            "cvsf",\r
-            "cvsm",\r
-            "cvso",\r
-            "cvss",\r
-            "cvta",\r
-        }\r
-        cz10{\r
-            "cz101",\r
-            "cz102",\r
-            "cz103",\r
-            "cz104",\r
-            "cz105",\r
-            "cz106",\r
-            "cz107",\r
-            "cz108",\r
-            "cz109",\r
-            "cz110",\r
-            "cz111",\r
-            "cz112",\r
-            "cz113",\r
-            "cz114",\r
-            "cz115",\r
-            "cz116",\r
-            "cz117",\r
-            "cz118",\r
-            "cz119",\r
-            "cz120",\r
-            "cz121",\r
-            "cz122",\r
-        }\r
-        cz20{\r
-            "cz20a",\r
-            "cz20b",\r
-            "cz20c",\r
-            "cz201",\r
-            "cz202",\r
-            "cz203",\r
-            "cz204",\r
-            "cz205",\r
-            "cz206",\r
-            "cz207",\r
-            "cz208",\r
-            "cz209",\r
-        }\r
-        cz31{\r
-            "cz311",\r
-            "cz312",\r
-            "cz313",\r
-            "cz314",\r
-            "cz315",\r
-            "cz316",\r
-            "cz317",\r
-        }\r
-        cz32{\r
-            "cz321",\r
-            "cz322",\r
-            "cz323",\r
-            "cz324",\r
-            "cz325",\r
-            "cz326",\r
-            "cz327",\r
-        }\r
-        cz41{\r
-            "cz411",\r
-            "cz412",\r
-            "cz413",\r
-        }\r
-        cz42{\r
-            "cz421",\r
-            "cz422",\r
-            "cz423",\r
-            "cz424",\r
-            "cz425",\r
-            "cz426",\r
-            "cz427",\r
-        }\r
-        cz51{\r
-            "cz511",\r
-            "cz512",\r
-            "cz513",\r
-            "cz514",\r
-        }\r
-        cz52{\r
-            "cz521",\r
-            "cz522",\r
-            "cz523",\r
-            "cz524",\r
-            "cz525",\r
-        }\r
-        cz53{\r
-            "cz531",\r
-            "cz532",\r
-            "cz533",\r
-            "cz534",\r
-        }\r
-        cz63{\r
-            "cz631",\r
-            "cz632",\r
-            "cz633",\r
-            "cz634",\r
-            "cz635",\r
-        }\r
-        cz64{\r
-            "cz641",\r
-            "cz642",\r
-            "cz643",\r
-            "cz644",\r
-            "cz645",\r
-            "cz646",\r
-            "cz647",\r
-        }\r
-        cz71{\r
-            "cz711",\r
-            "cz712",\r
-            "cz713",\r
-            "cz714",\r
-            "cz715",\r
-        }\r
-        cz72{\r
-            "cz721",\r
-            "cz722",\r
-            "cz723",\r
-            "cz724",\r
-        }\r
-        cz80{\r
-            "cz801",\r
-            "cz802",\r
-            "cz803",\r
-            "cz804",\r
-            "cz805",\r
-            "cz806",\r
-        }\r
-        do33{\r
-            "do06",\r
-            "do14",\r
-            "do19",\r
-            "do20",\r
-        }\r
-        do34{\r
-            "do05",\r
-            "do15",\r
-            "do26",\r
-            "do27",\r
-        }\r
-        do35{\r
-            "do09",\r
-            "do18",\r
-            "do25",\r
-        }\r
-        do36{\r
-            "do13",\r
-            "do24",\r
-            "do28",\r
-        }\r
-        do37{\r
-            "do07",\r
-            "do22",\r
-        }\r
-        do38{\r
-            "do03",\r
-            "do04",\r
-            "do10",\r
-            "do16",\r
-        }\r
-        do39{\r
-            "do23",\r
-            "do29",\r
-            "do30",\r
-        }\r
-        do40{\r
-            "do01",\r
-            "do32",\r
-        }\r
-        do41{\r
-            "do02",\r
-            "do17",\r
-            "do21",\r
-            "do31",\r
-        }\r
-        do42{\r
-            "do08",\r
-            "do11",\r
-            "do12",\r
-        }\r
-        esan{\r
-            "esal",\r
-            "esca",\r
-            "esco",\r
-            "esgr",\r
-            "esh",\r
-            "esj",\r
-            "esma",\r
-            "esse",\r
-        }\r
-        esar{\r
-            "eshu",\r
-            "este",\r
-            "esz",\r
-        }\r
-        esas{"eso"}\r
-        escb{"ess"}\r
-        escl{\r
-            "esav",\r
-            "esbu",\r
-            "esle",\r
-            "esp",\r
-            "essa",\r
-            "essg",\r
-            "esso",\r
-            "esva",\r
-            "esza",\r
-        }\r
-        escm{\r
-            "esab",\r
-            "escr",\r
-            "escu",\r
-            "esgu",\r
-            "esto",\r
-        }\r
-        escn{\r
-            "esgc",\r
-            "estf",\r
-        }\r
-        esct{\r
-            "esb",\r
-            "esgi",\r
-            "esl",\r
-            "est",\r
-        }\r
-        esex{\r
-            "esba",\r
-            "escc",\r
-        }\r
-        esga{\r
-            "esc",\r
-            "eslu",\r
-            "esor",\r
-            "espo",\r
-        }\r
-        esib{"espm"}\r
-        esmc{"esmu"}\r
-        esmd{"esm"}\r
-        esnc{"esna"}\r
-        espv{\r
-            "esbi",\r
-            "esss",\r
-            "esvi",\r
-        }\r
-        esri{"eslo"}\r
-        esvc{\r
-            "esa",\r
-            "escs",\r
-            "esv",\r
-        }\r
-        fjc{\r
-            "fj09",\r
-            "fj10",\r
-            "fj12",\r
-            "fj13",\r
-            "fj14",\r
-        }\r
-        fje{\r
-            "fj04",\r
-            "fj05",\r
-            "fj06",\r
-        }\r
-        fjn{\r
-            "fj02",\r
-            "fj03",\r
-            "fj07",\r
-        }\r
-        fjw{\r
-            "fj01",\r
-            "fj08",\r
-            "fj11",\r
-        }\r
-        frara{\r
-            "fr01",\r
-            "fr03",\r
-            "fr07",\r
-            "fr15",\r
-            "fr26",\r
-            "fr38",\r
-            "fr42",\r
-            "fr43",\r
-            "fr63",\r
-            "fr69",\r
-            "fr73",\r
-            "fr74",\r
-        }\r
-        frbfc{\r
-            "fr21",\r
-            "fr25",\r
-            "fr39",\r
-            "fr58",\r
-            "fr70",\r
-            "fr71",\r
-            "fr89",\r
-            "fr90",\r
-        }\r
-        frbre{\r
-            "fr22",\r
-            "fr29",\r
-            "fr35",\r
-            "fr56",\r
-        }\r
-        frcor{\r
-            "fr2a",\r
-            "fr2b",\r
-        }\r
-        frcvl{\r
-            "fr18",\r
-            "fr28",\r
-            "fr36",\r
-            "fr37",\r
-            "fr41",\r
-            "fr45",\r
-        }\r
-        frges{\r
-            "fr08",\r
-            "fr10",\r
-            "fr51",\r
-            "fr52",\r
-            "fr54",\r
-            "fr55",\r
-            "fr57",\r
-            "fr67",\r
-            "fr68",\r
-            "fr88",\r
-        }\r
-        frgua{"frgp"}\r
-        frhdf{\r
-            "fr02",\r
-            "fr59",\r
-            "fr60",\r
-            "fr62",\r
-            "fr80",\r
-        }\r
-        fridf{\r
-            "fr75",\r
-            "fr77",\r
-            "fr78",\r
-            "fr91",\r
-            "fr92",\r
-            "fr93",\r
-            "fr94",\r
-            "fr95",\r
-        }\r
-        frlre{"frre"}\r
-        frmay{"fryt"}\r
-        frnaq{\r
-            "fr16",\r
-            "fr17",\r
-            "fr19",\r
-            "fr23",\r
-            "fr24",\r
-            "fr33",\r
-            "fr40",\r
-            "fr47",\r
-            "fr64",\r
-            "fr79",\r
-            "fr86",\r
-            "fr87",\r
-        }\r
-        frnor{\r
-            "fr14",\r
-            "fr27",\r
-            "fr50",\r
-            "fr61",\r
-            "fr76",\r
-        }\r
-        frocc{\r
-            "fr09",\r
-            "fr11",\r
-            "fr12",\r
-            "fr30",\r
-            "fr31",\r
-            "fr32",\r
-            "fr34",\r
-            "fr46",\r
-            "fr48",\r
-            "fr65",\r
-            "fr66",\r
-            "fr81",\r
-            "fr82",\r
-        }\r
-        frpac{\r
-            "fr04",\r
-            "fr05",\r
-            "fr06",\r
-            "fr13",\r
-            "fr83",\r
-            "fr84",\r
-        }\r
-        frpdl{\r
-            "fr44",\r
-            "fr49",\r
-            "fr53",\r
-            "fr72",\r
-            "fr85",\r
-        }\r
-        gbeng{\r
-            "gbbas",\r
-            "gbbbd",\r
-            "gbbdf",\r
-            "gbbdg",\r
-            "gbben",\r
-            "gbbex",\r
-            "gbbir",\r
-            "gbbkm",\r
-            "gbbmh",\r
-            "gbbne",\r
-            "gbbnh",\r
-            "gbbns",\r
-            "gbbol",\r
-            "gbbpl",\r
-            "gbbrc",\r
-            "gbbrd",\r
-            "gbbry",\r
-            "gbbst",\r
-            "gbbur",\r
-            "gbcam",\r
-            "gbcbf",\r
-            "gbche",\r
-            "gbchw",\r
-            "gbcld",\r
-            "gbcma",\r
-            "gbcmd",\r
-            "gbcon",\r
-            "gbcov",\r
-            "gbcry",\r
-            "gbdal",\r
-            "gbdby",\r
-            "gbder",\r
-            "gbdev",\r
-            "gbdnc",\r
-            "gbdor",\r
-            "gbdud",\r
-            "gbdur",\r
-            "gbeal",\r
-            "gbenf",\r
-            "gbery",\r
-            "gbess",\r
-            "gbesx",\r
-            "gbgat",\r
-            "gbgls",\r
-            "gbgre",\r
-            "gbhal",\r
-            "gbham",\r
-            "gbhav",\r
-            "gbhck",\r
-            "gbhef",\r
-            "gbhil",\r
-            "gbhmf",\r
-            "gbhns",\r
-            "gbhpl",\r
-            "gbhrt",\r
-            "gbhrw",\r
-            "gbhry",\r
-            "gbios",\r
-            "gbiow",\r
-            "gbisl",\r
-            "gbkec",\r
-            "gbken",\r
-            "gbkhl",\r
-            "gbkir",\r
-            "gbktt",\r
-            "gbkwl",\r
-            "gblan",\r
-            "gblbh",\r
-            "gblce",\r
-            "gblds",\r
-            "gblec",\r
-            "gblew",\r
-            "gblin",\r
-            "gbliv",\r
-            "gblnd",\r
-            "gblut",\r
-            "gbman",\r
-            "gbmdb",\r
-            "gbmdw",\r
-            "gbmik",\r
-            "gbmrt",\r
-            "gbnbl",\r
-            "gbnel",\r
-            "gbnet",\r
-            "gbnfk",\r
-            "gbngm",\r
-            "gbnln",\r
-            "gbnsm",\r
-            "gbnth",\r
-            "gbntt",\r
-            "gbnty",\r
-            "gbnwm",\r
-            "gbnyk",\r
-            "gbold",\r
-            "gboxf",\r
-            "gbply",\r
-            "gbpol",\r
-            "gbpor",\r
-            "gbpte",\r
-            "gbrcc",\r
-            "gbrch",\r
-            "gbrdb",\r
-            "gbrdg",\r
-            "gbric",\r
-            "gbrot",\r
-            "gbrut",\r
-            "gbsaw",\r
-            "gbsfk",\r
-            "gbsft",\r
-            "gbsgc",\r
-            "gbshf",\r
-            "gbshn",\r
-            "gbshr",\r
-            "gbskp",\r
-            "gbslf",\r
-            "gbslg",\r
-            "gbsnd",\r
-            "gbsol",\r
-            "gbsom",\r
-            "gbsos",\r
-            "gbsry",\r
-            "gbste",\r
-            "gbsth",\r
-            "gbstn",\r
-            "gbsts",\r
-            "gbstt",\r
-            "gbsty",\r
-            "gbswd",\r
-            "gbswk",\r
-            "gbtam",\r
-            "gbtfw",\r
-            "gbthr",\r
-            "gbtob",\r
-            "gbtrf",\r
-            "gbtwh",\r
-            "gbwar",\r
-            "gbwbk",\r
-            "gbwft",\r
-            "gbwgn",\r
-            "gbwil",\r
-            "gbwkf",\r
-            "gbwll",\r
-            "gbwlv",\r
-            "gbwnd",\r
-            "gbwnm",\r
-            "gbwok",\r
-            "gbwor",\r
-            "gbwrl",\r
-            "gbwrt",\r
-            "gbwsm",\r
-            "gbwsx",\r
-            "gbyor",\r
-        }\r
-        gbnir{\r
-            "gbabc",\r
-            "gband",\r
-            "gbann",\r
-            "gbbfs",\r
-            "gbccg",\r
-            "gbdrs",\r
-            "gbfmo",\r
-            "gblbc",\r
-            "gbmea",\r
-            "gbmul",\r
-            "gbnmd",\r
-        }\r
-        gbsct{\r
-            "gbabd",\r
-            "gbabe",\r
-            "gbagb",\r
-            "gbans",\r
-            "gbclk",\r
-            "gbdgy",\r
-            "gbdnd",\r
-            "gbeay",\r
-            "gbedh",\r
-            "gbedu",\r
-            "gbeln",\r
-            "gbels",\r
-            "gberw",\r
-            "gbfal",\r
-            "gbfif",\r
-            "gbglg",\r
-            "gbhld",\r
-            "gbivc",\r
-            "gbmln",\r
-            "gbmry",\r
-            "gbnay",\r
-            "gbnlk",\r
-            "gbork",\r
-            "gbpkn",\r
-            "gbrfw",\r
-            "gbsay",\r
-            "gbscb",\r
-            "gbslk",\r
-            "gbstg",\r
-            "gbwdu",\r
-            "gbwln",\r
-            "gbzet",\r
-        }\r
-        gbwls{\r
-            "gbagy",\r
-            "gbbge",\r
-            "gbbgw",\r
-            "gbcay",\r
-            "gbcgn",\r
-            "gbcmn",\r
-            "gbcrf",\r
-            "gbcwy",\r
-            "gbden",\r
-            "gbfln",\r
-            "gbgwn",\r
-            "gbmon",\r
-            "gbmty",\r
-            "gbntl",\r
-            "gbnwp",\r
-            "gbpem",\r
-            "gbpow",\r
-            "gbrct",\r
-            "gbswa",\r
-            "gbtof",\r
-            "gbvgl",\r
-            "gbwrx",\r
-        }\r
-        gnb{\r
-            "gnbf",\r
-            "gnbk",\r
-            "gnfr",\r
-            "gnga",\r
-            "gnkn",\r
-        }\r
-        gnd{\r
-            "gnco",\r
-            "gndu",\r
-            "gnfo",\r
-            "gnkd",\r
-            "gnte",\r
-        }\r
-        gnf{\r
-            "gndb",\r
-            "gndi",\r
-            "gnfa",\r
-            "gnks",\r
-        }\r
-        gnk{\r
-            "gnka",\r
-            "gnke",\r
-            "gnko",\r
-            "gnmd",\r
-            "gnsi",\r
-        }\r
-        gnl{\r
-            "gnkb",\r
-            "gnla",\r
-            "gnle",\r
-            "gnml",\r
-            "gnto",\r
-        }\r
-        gnm{\r
-            "gndl",\r
-            "gnmm",\r
-            "gnpi",\r
-        }\r
-        gnn{\r
-            "gnbe",\r
-            "gngu",\r
-            "gnlo",\r
-            "gnmc",\r
-            "gnnz",\r
-            "gnyo",\r
-        }\r
-        gqc{\r
-            "gqcs",\r
-            "gqkn",\r
-            "gqli",\r
-            "gqwn",\r
-        }\r
-        gqi{\r
-            "gqan",\r
-            "gqbn",\r
-            "gqbs",\r
-        }\r
-        gwl{\r
-            "gwba",\r
-            "gwga",\r
-        }\r
-        gwn{\r
-            "gwbm",\r
-            "gwca",\r
-            "gwoi",\r
-        }\r
-        gws{\r
-            "gwbl",\r
-            "gwqu",\r
-            "gwto",\r
-        }\r
-        idjw{\r
-            "idbt",\r
-            "idjb",\r
-            "idji",\r
-            "idjk",\r
-            "idjt",\r
-            "idyo",\r
-        }\r
-        idka{\r
-            "idkb",\r
-            "idki",\r
-            "idks",\r
-            "idkt",\r
-            "idku",\r
-        }\r
-        idml{\r
-            "idma",\r
-            "idmu",\r
-        }\r
-        idnu{\r
-            "idba",\r
-            "idnb",\r
-            "idnt",\r
-        }\r
-        idpp{\r
-            "idpa",\r
-            "idpb",\r
-        }\r
-        idsl{\r
-            "idgo",\r
-            "idsa",\r
-            "idsg",\r
-            "idsn",\r
-            "idsr",\r
-            "idst",\r
-        }\r
-        idsm{\r
-            "idac",\r
-            "idbb",\r
-            "idbe",\r
-            "idja",\r
-            "idkr",\r
-            "idla",\r
-            "idri",\r
-            "idsb",\r
-            "idss",\r
-            "idsu",\r
-        }\r
-        iec{\r
-            "ieg",\r
-            "ielm",\r
-            "iemo",\r
-            "iern",\r
-            "ieso",\r
-        }\r
-        iel{\r
-            "iecw",\r
-            "ied",\r
-            "ieke",\r
-            "iekk",\r
-            "ield",\r
-            "ielh",\r
-            "iels",\r
-            "iemh",\r
-            "ieoy",\r
-            "iewh",\r
-            "ieww",\r
-            "iewx",\r
-        }\r
-        iem{\r
-            "iece",\r
-            "ieco",\r
-            "ieky",\r
-            "ielk",\r
-            "ieta",\r
-            "iewd",\r
-        }\r
-        ieu{\r
-            "iecn",\r
-            "iedl",\r
-            "iemn",\r
-        }\r
-        it21{\r
-            "ital",\r
-            "itat",\r
-            "itbi",\r
-            "itcn",\r
-            "itno",\r
-            "itto",\r
-            "itvb",\r
-            "itvc",\r
-        }\r
-        it23{"itao"}\r
-        it25{\r
-            "itbg",\r
-            "itbs",\r
-            "itco",\r
-            "itcr",\r
-            "itlc",\r
-            "itlo",\r
-            "itmb",\r
-            "itmi",\r
-            "itmn",\r
-            "itpv",\r
-            "itso",\r
-            "itva",\r
-        }\r
-        it32{\r
-            "itbz",\r
-            "ittn",\r
-        }\r
-        it34{\r
-            "itbl",\r
-            "itpd",\r
-            "itro",\r
-            "ittv",\r
-            "itve",\r
-            "itvi",\r
-            "itvr",\r
-        }\r
-        it36{\r
-            "itgo",\r
-            "itpn",\r
-            "itts",\r
-            "itud",\r
-        }\r
-        it42{\r
-            "itge",\r
-            "itim",\r
-            "itsp",\r
-            "itsv",\r
-        }\r
-        it45{\r
-            "itbo",\r
-            "itfc",\r
-            "itfe",\r
-            "itmo",\r
-            "itpc",\r
-            "itpr",\r
-            "itra",\r
-            "itre",\r
-            "itrn",\r
-        }\r
-        it52{\r
-            "itar",\r
-            "itfi",\r
-            "itgr",\r
-            "itli",\r
-            "itlu",\r
-            "itms",\r
-            "itpi",\r
-            "itpo",\r
-            "itpt",\r
-            "itsi",\r
-        }\r
-        it55{\r
-            "itpg",\r
-            "ittr",\r
-        }\r
-        it57{\r
-            "itan",\r
-            "itap",\r
-            "itfm",\r
-            "itmc",\r
-            "itpu",\r
-        }\r
-        it62{\r
-            "itfr",\r
-            "itlt",\r
-            "itri",\r
-            "itrm",\r
-            "itvt",\r
-        }\r
-        it65{\r
-            "itaq",\r
-            "itch",\r
-            "itpe",\r
-            "itte",\r
-        }\r
-        it67{\r
-            "itcb",\r
-            "itis",\r
-        }\r
-        it72{\r
-            "itav",\r
-            "itbn",\r
-            "itce",\r
-            "itna",\r
-            "itsa",\r
-        }\r
-        it75{\r
-            "itba",\r
-            "itbr",\r
-            "itbt",\r
-            "itfg",\r
-            "itle",\r
-            "itta",\r
-        }\r
-        it77{\r
-            "itmt",\r
-            "itpz",\r
-        }\r
-        it78{\r
-            "itcs",\r
-            "itcz",\r
-            "itkr",\r
-            "itrc",\r
-            "itvv",\r
-        }\r
-        it82{\r
-            "itag",\r
-            "itcl",\r
-            "itct",\r
-            "iten",\r
-            "itme",\r
-            "itpa",\r
-            "itrg",\r
-            "itsr",\r
-            "ittp",\r
-        }\r
-        it88{\r
-            "itca",\r
-            "itci",\r
-            "itnu",\r
-            "itog",\r
-            "itor",\r
-            "itot",\r
-            "itss",\r
-            "itvs",\r
-        }\r
-        knk{\r
-            "kn01",\r
-            "kn02",\r
-            "kn03",\r
-            "kn06",\r
-            "kn08",\r
-            "kn09",\r
-            "kn11",\r
-            "kn13",\r
-            "kn15",\r
-        }\r
-        knn{\r
-            "kn04",\r
-            "kn05",\r
-            "kn07",\r
-            "kn10",\r
-            "kn12",\r
-        }\r
-        lk1{\r
-            "lk52",\r
-            "lk71",\r
-            "lk81",\r
-        }\r
-        lk2{\r
-            "lk11",\r
-            "lk31",\r
-            "lk51",\r
-        }\r
-        lk3{\r
-            "lk12",\r
-            "lk33",\r
-            "lk41",\r
-        }\r
-        lk4{\r
-            "lk13",\r
-            "lk21",\r
-            "lk42",\r
-            "lk61",\r
-            "lk92",\r
-        }\r
-        lk5{\r
-            "lk22",\r
-            "lk32",\r
-            "lk43",\r
-        }\r
-        lk6{\r
-            "lk45",\r
-            "lk82",\r
-        }\r
-        lk7{\r
-            "lk23",\r
-            "lk72",\r
-        }\r
-        lk8{\r
-            "lk62",\r
-            "lk91",\r
-        }\r
-        lk9{\r
-            "lk44",\r
-            "lk53",\r
-        }\r
-        ma01{\r
-            "mache",\r
-            "mafah",\r
-            "malar",\r
-            "matet",\r
-            "matng",\r
-        }\r
-        ma02{\r
-            "maken",\r
-            "masik",\r
-        }\r
-        ma03{\r
-            "mahoc",\r
-            "matao",\r
-            "mataz",\r
-        }\r
-        ma04{\r
-            "maber",\r
-            "mafig",\r
-            "majra",\r
-            "manad",\r
-            "maouj",\r
-            "matai",\r
-        }\r
-        ma05{\r
-            "mabom",\r
-            "mafes",\r
-            "mamou",\r
-            "masef",\r
-        }\r
-        ma06{\r
-            "maerr",\r
-            "mahaj",\r
-            "maifr",\r
-            "makhn",\r
-            "mamek",\r
-        }\r
-        ma07{\r
-            "makhe",\r
-            "marab",\r
-            "masal",\r
-            "maskh",\r
-        }\r
-        ma08{\r
-            "macas",\r
-            "mamed",\r
-            "mamoh",\r
-            "manou",\r
-        }\r
-        ma09{\r
-            "mabes",\r
-            "makho",\r
-            "maset",\r
-        }\r
-        ma10{\r
-            "majdi",\r
-            "masaf",\r
-        }\r
-        ma11{\r
-            "machi",\r
-            "maesi",\r
-            "mahao",\r
-            "makes",\r
-            "mammd",\r
-            "mammn",\r
-            "masyb",\r
-        }\r
-        ma12{\r
-            "maazi",\r
-            "mabem",\r
-        }\r
-        ma13{\r
-            "maagd",\r
-            "macht",\r
-            "maine",\r
-            "maoua",\r
-            "matar",\r
-            "matiz",\r
-            "mazag",\r
-        }\r
-        ma14{\r
-            "maasz",\r
-            "maesm",\r
-            "mague",\r
-            "matat",\r
-            "matnt",\r
-        }\r
-        ma15{\r
-            "mabod",\r
-            "malaa",\r
-        }\r
-        ma16{\r
-            "maaou",\r
-            "maoud",\r
-        }\r
-        mhl{\r
-            "mhall",\r
-            "mhebo",\r
-            "mheni",\r
-            "mhjab",\r
-            "mhjal",\r
-            "mhkil",\r
-            "mhkwa",\r
-            "mhlae",\r
-            "mhlib",\r
-            "mhnmk",\r
-            "mhnmu",\r
-            "mhron",\r
-            "mhuja",\r
-            "mhwth",\r
-        }\r
-        mht{\r
-            "mhalk",\r
-            "mharn",\r
-            "mhaur",\r
-            "mhlik",\r
-            "mhmaj",\r
-            "mhmal",\r
-            "mhmej",\r
-            "mhmil",\r
-            "mhuti",\r
-            "mhwtj",\r
-        }\r
-        mvce{\r
-            "mv12",\r
-            "mv14",\r
-            "mv17",\r
-        }\r
-        mvnc{\r
-            "mv00",\r
-            "mv02",\r
-            "mv04",\r
-            "mv26",\r
-        }\r
-        mvno{\r
-            "mv03",\r
-            "mv13",\r
-            "mv20",\r
-            "mv25",\r
-        }\r
-        mvsc{\r
-            "mv27",\r
-            "mv28",\r
-        }\r
-        mvsu{\r
-            "mv01",\r
-            "mv29",\r
-        }\r
-        mvun{\r
-            "mv07",\r
-            "mv23",\r
-            "mv24",\r
-        }\r
-        mvus{\r
-            "mv05",\r
-            "mv08",\r
-        }\r
-        mwc{\r
-            "mwde",\r
-            "mwdo",\r
-            "mwks",\r
-            "mwli",\r
-            "mwmc",\r
-            "mwni",\r
-            "mwnk",\r
-            "mwnu",\r
-            "mwsa",\r
-        }\r
-        mwn{\r
-            "mwct",\r
-            "mwkr",\r
-            "mwlk",\r
-            "mwmz",\r
-            "mwnb",\r
-            "mwru",\r
-        }\r
-        mws{\r
-            "mwba",\r
-            "mwbl",\r
-            "mwck",\r
-            "mwcr",\r
-            "mwmg",\r
-            "mwmh",\r
-            "mwmu",\r
-            "mwmw",\r
-            "mwne",\r
-            "mwns",\r
-            "mwph",\r
-            "mwth",\r
-            "mwzo",\r
-        }\r
-        np1{\r
-            "npba",\r
-            "npja",\r
-            "npna",\r
-        }\r
-        np2{\r
-            "npbh",\r
-            "npka",\r
-            "npra",\r
-        }\r
-        np3{\r
-            "npdh",\r
-            "npga",\r
-            "nplu",\r
-        }\r
-        np4{\r
-            "npko",\r
-            "npme",\r
-            "npsa",\r
-        }\r
-        np5{\r
-            "npma",\r
-            "npse",\r
-        }\r
-        ph01{\r
-            "philn",\r
-            "phils",\r
-            "phlun",\r
-            "phpan",\r
-        }\r
-        ph02{\r
-            "phbtn",\r
-            "phcag",\r
-            "phisa",\r
-            "phnuv",\r
-            "phqui",\r
-        }\r
-        ph03{\r
-            "phaur",\r
-            "phban",\r
-            "phbul",\r
-            "phnue",\r
-            "phpam",\r
-            "phtar",\r
-            "phzmb",\r
-        }\r
-        ph05{\r
-            "phalb",\r
-            "phcan",\r
-            "phcas",\r
-            "phcat",\r
-            "phmas",\r
-            "phsor",\r
-        }\r
-        ph06{\r
-            "phakl",\r
-            "phant",\r
-            "phcap",\r
-            "phgui",\r
-            "phili",\r
-            "phnec",\r
-        }\r
-        ph07{\r
-            "phboh",\r
-            "phceb",\r
-            "phner",\r
-            "phsig",\r
-        }\r
-        ph08{\r
-            "phbil",\r
-            "pheas",\r
-            "phley",\r
-            "phnsa",\r
-            "phsle",\r
-            "phwsa",\r
-        }\r
-        ph09{\r
-            "phbas",\r
-            "phzan",\r
-            "phzas",\r
-            "phzsi",\r
-        }\r
-        ph10{\r
-            "phbuk",\r
-            "phcam",\r
-            "phmsc",\r
-            "phmsr",\r
-        }\r
-        ph11{\r
-            "phcom",\r
-            "phdao",\r
-            "phdas",\r
-            "phdav",\r
-            "phdvo",\r
-            "phsar",\r
-            "phsco",\r
-        }\r
-        ph12{\r
-            "phlan",\r
-            "phnco",\r
-            "phsuk",\r
-        }\r
-        ph13{\r
-            "phagn",\r
-            "phags",\r
-            "phdin",\r
-            "phsun",\r
-            "phsur",\r
-        }\r
-        ph14{\r
-            "phlas",\r
-            "phmag",\r
-            "phslu",\r
-            "phtaw",\r
-        }\r
-        ph15{\r
-            "phabr",\r
-            "phapa",\r
-            "phben",\r
-            "phifu",\r
-            "phkal",\r
-            "phmou",\r
-        }\r
-        ph40{\r
-            "phbtg",\r
-            "phcav",\r
-            "phlag",\r
-            "phque",\r
-            "phriz",\r
-        }\r
-        ph41{\r
-            "phmad",\r
-            "phmdc",\r
-            "phmdr",\r
-            "phplw",\r
-            "phrom",\r
-        }\r
-        rskm{\r
-            "rs25",\r
-            "rs26",\r
-            "rs27",\r
-            "rs28",\r
-            "rs29",\r
-        }\r
-        rsvo{\r
-            "rs01",\r
-            "rs02",\r
-            "rs03",\r
-            "rs04",\r
-            "rs05",\r
-            "rs06",\r
-            "rs07",\r
-        }\r
-        ugc{\r
-            "ug101",\r
-            "ug102",\r
-            "ug103",\r
-            "ug104",\r
-            "ug105",\r
-            "ug106",\r
-            "ug107",\r
-            "ug108",\r
-            "ug109",\r
-            "ug110",\r
-            "ug111",\r
-            "ug112",\r
-            "ug113",\r
-            "ug114",\r
-            "ug115",\r
-            "ug116",\r
-            "ug117",\r
-            "ug118",\r
-            "ug119",\r
-            "ug120",\r
-            "ug121",\r
-            "ug122",\r
-            "ug123",\r
-            "ug124",\r
-        }\r
-        uge{\r
-            "ug201",\r
-            "ug202",\r
-            "ug203",\r
-            "ug204",\r
-            "ug205",\r
-            "ug206",\r
-            "ug207",\r
-            "ug208",\r
-            "ug209",\r
-            "ug210",\r
-            "ug211",\r
-            "ug212",\r
-            "ug213",\r
-            "ug214",\r
-            "ug215",\r
-            "ug216",\r
-            "ug217",\r
-            "ug218",\r
-            "ug219",\r
-            "ug220",\r
-            "ug221",\r
-            "ug222",\r
-            "ug223",\r
-            "ug224",\r
-            "ug225",\r
-            "ug226",\r
-            "ug227",\r
-            "ug228",\r
-            "ug229",\r
-            "ug230",\r
-            "ug231",\r
-            "ug232",\r
-        }\r
-        ugn{\r
-            "ug301",\r
-            "ug302",\r
-            "ug303",\r
-            "ug304",\r
-            "ug305",\r
-            "ug306",\r
-            "ug307",\r
-            "ug308",\r
-            "ug309",\r
-            "ug310",\r
-            "ug311",\r
-            "ug312",\r
-            "ug313",\r
-            "ug314",\r
-            "ug315",\r
-            "ug316",\r
-            "ug317",\r
-            "ug318",\r
-            "ug319",\r
-            "ug320",\r
-            "ug321",\r
-            "ug322",\r
-            "ug323",\r
-            "ug324",\r
-            "ug325",\r
-            "ug326",\r
-            "ug327",\r
-            "ug328",\r
-            "ug329",\r
-            "ug330",\r
-        }\r
-        ugw{\r
-            "ug401",\r
-            "ug402",\r
-            "ug403",\r
-            "ug404",\r
-            "ug405",\r
-            "ug406",\r
-            "ug407",\r
-            "ug408",\r
-            "ug409",\r
-            "ug410",\r
-            "ug411",\r
-            "ug412",\r
-            "ug413",\r
-            "ug414",\r
-            "ug415",\r
-            "ug416",\r
-            "ug417",\r
-            "ug418",\r
-            "ug419",\r
-            "ug420",\r
-            "ug421",\r
-            "ug422",\r
-            "ug423",\r
-            "ug424",\r
-            "ug425",\r
-            "ug426",\r
+            "BU",\r
+            "HA",\r
+            "MA",\r
+            "MC",\r
+            "ME",\r
+            "MI",\r
+            "MN",\r
+            "MS",\r
+            "MV",\r
+            "MW",\r
         }\r
     }\r
     telephoneCodeData{\r
@@ -25726,9 +24785,6 @@ supplementalData:table(nofallback){
                 code{"381"}\r
             }\r
             {\r
-                code{"383"}\r
-            }\r
-            {\r
                 code{"386"}\r
             }\r
         }\r
@@ -26148,7 +25204,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             territoryF:intvector{\r
-                57406800,\r
+                57376800,\r
                 49990000,\r
                 52940000,\r
             }\r
@@ -26162,12 +25218,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49430000}\r
             }\r
             fr{\r
-                populationShareF:int{48670000}\r
+                populationShareF:int{48680000}\r
             }\r
             territoryF:intvector{\r
                 59316300,\r
                 50100000,\r
-                54856600,\r
+                54855800,\r
             }\r
         }\r
         AE{\r
@@ -26188,9 +25244,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48290000}\r
             }\r
             territoryF:intvector{\r
-                61667200,\r
+                61617100,\r
                 49900000,\r
-                56592748,\r
+                56577976,\r
             }\r
         }\r
         AF{\r
@@ -26210,7 +25266,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48590000}\r
             }\r
             kk_Arab{\r
-                populationShareF:int{45600000}\r
+                populationShareF:int{45610000}\r
             }\r
             prd{\r
                 populationShareF:int{48120000}\r
@@ -26220,16 +25276,16 @@ supplementalData:table(nofallback){
                 populationShareF:int{49430000}\r
             }\r
             territoryF:intvector{\r
-                60640800,\r
+                60608100,\r
                 49281000,\r
-                57333320,\r
+                57325643,\r
             }\r
-            tk{\r
+            tk_Latn{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48170000}\r
             }\r
-            ug{\r
-                populationShareF:int{45900000}\r
+            ug_Arab{\r
+                populationShareF:int{45920000}\r
             }\r
             uz_Arab{\r
                 officialStatus{"official_regional"}\r
@@ -26245,9 +25301,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48170000}\r
             }\r
             territoryF:intvector{\r
-                59217100,\r
+                59203200,\r
                 49990000,\r
-                54935810,\r
+                54924360,\r
             }\r
         }\r
         AI{\r
@@ -26258,7 +25314,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58175400,\r
                 49950000,\r
-                54167520,\r
+                54164180,\r
             }\r
         }\r
         AL{\r
@@ -26273,32 +25329,32 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60342100,\r
+                60315900,\r
                 49968000,\r
-                56303859,\r
+                56302928,\r
             }\r
         }\r
         AM{\r
-            az{\r
+            az_Latn{\r
                 populationShareF:int{0}\r
             }\r
             hy{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49980000}\r
             }\r
-            ku{\r
+            ku_Latn{\r
                 populationShareF:int{48330000}\r
             }\r
             territoryF:intvector{\r
-                60265600,\r
+                60243700,\r
                 49996000,\r
-                56305125,\r
+                56305638,\r
             }\r
         }\r
         AO{\r
             kmb{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{49250000}\r
+                writingShareF:int{49100000}\r
             }\r
             ln{\r
                 populationShareF:int{47670000}\r
@@ -26308,9 +25364,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49670000}\r
             }\r
             territoryF:intvector{\r
-                61187300,\r
+                61177300,\r
                 49704000,\r
-                57201723,\r
+                57196254,\r
             }\r
             umb{\r
                 populationShareF:int{49290000}\r
@@ -26318,7 +25374,7 @@ supplementalData:table(nofallback){
         }\r
         AQ{\r
             territoryF:intvector{\r
-                57171900,\r
+                57162000,\r
                 49990000,\r
                 52300000,\r
             }\r
@@ -26341,9 +25397,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46470000}\r
             }\r
             territoryF:intvector{\r
-                61879400,\r
+                61951000,\r
                 49979000,\r
-                57438867,\r
+                57434319,\r
             }\r
         }\r
         AS{\r
@@ -26358,7 +25414,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58711000,\r
                 49970000,\r
-                54541940,\r
+                54543430,\r
             }\r
         }\r
         AT{\r
@@ -26372,9 +25428,6 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49730000}\r
             }\r
-            fr{\r
-                populationShareF:int{49110000}\r
-            }\r
             hr{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48120000}\r
@@ -26383,17 +25436,14 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47270000}\r
             }\r
-            it{\r
-                populationShareF:int{48900000}\r
-            }\r
             sl{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47370000}\r
             }\r
             territoryF:intvector{\r
-                61415900,\r
+                61396800,\r
                 49980000,\r
-                56871177,\r
+                56866555,\r
             }\r
         }\r
         AU{\r
@@ -26405,9 +25455,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48190000}\r
             }\r
             territoryF:intvector{\r
-                62118900,\r
+                62110000,\r
                 49990000,\r
-                57229927,\r
+                57227510,\r
             }\r
             wbp{\r
                 populationShareF:int{46110000}\r
@@ -26418,7 +25468,7 @@ supplementalData:table(nofallback){
         }\r
         AW{\r
             en{\r
-                populationShareF:int{48260000}\r
+                populationShareF:int{48270000}\r
             }\r
             nl{\r
                 officialStatus{"official"}\r
@@ -26431,7 +25481,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59251600,\r
                 49968000,\r
-                55113648,\r
+                55112162,\r
             }\r
         }\r
         AX{\r
@@ -26446,41 +25496,41 @@ supplementalData:table(nofallback){
             }\r
         }\r
         AZ{\r
-            az{\r
-                officialStatus{"official"}\r
-                populationShareF:int{49890000}\r
-            }\r
             az_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48990000}\r
             }\r
-            ku{\r
+            az_Latn{\r
+                officialStatus{"official"}\r
+                populationShareF:int{49890000}\r
+            }\r
+            ku_Latn{\r
                 populationShareF:int{47240000}\r
             }\r
             territoryF:intvector{\r
-                61167900,\r
+                61165900,\r
                 49998000,\r
-                56987277,\r
+                56978078,\r
             }\r
-            tkr{\r
+            tkr_Latn{\r
                 populationShareF:int{47160000}\r
             }\r
-            tly{\r
+            tly_Latn{\r
                 populationShareF:int{48980000}\r
             }\r
-            ttt{\r
+            ttt_Latn{\r
                 populationShareF:int{47220000}\r
             }\r
         }\r
         BA{\r
-            bs{\r
+            bs_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
+                writingShareF:int{48500000}\r
             }\r
-            bs_Cyrl{\r
+            bs_Latn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
-                writingShareF:int{48500000}\r
             }\r
             en{\r
                 populationShareF:int{49450000}\r
@@ -26489,7 +25539,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49120000}\r
             }\r
-            sr{\r
+            sr_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49100000}\r
             }\r
@@ -26499,9 +25549,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60425300,\r
+                60382900,\r
                 49980000,\r
-                56386191,\r
+                56386706,\r
             }\r
         }\r
         BB{\r
@@ -26510,9 +25560,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59480400,\r
+                59456700,\r
                 49997000,\r
-                55291495,\r
+                55290604,\r
             }\r
         }\r
         BD{\r
@@ -26539,23 +25589,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{47210000}\r
             }\r
             rkt{\r
-                literacyShareF:int{49200000}\r
                 populationShareF:int{48650000}\r
+                writingShareF:int{49200000}\r
             }\r
             syl{\r
-                literacyShareF:int{49350000}\r
                 populationShareF:int{48500000}\r
+                writingShareF:int{49350000}\r
             }\r
             territoryF:intvector{\r
-                61628400,\r
+                61536500,\r
                 49577000,\r
-                58156187,\r
+                58168958,\r
             }\r
         }\r
         BE{\r
             de{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49220000}\r
+                populationShareF:int{48140000}\r
             }\r
             en{\r
                 populationShareF:int{49590000}\r
@@ -26569,9 +25619,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49550000}\r
             }\r
             territoryF:intvector{\r
-                61508600,\r
+                61483300,\r
                 49990000,\r
-                57114091,\r
+                57113240,\r
             }\r
             vls{\r
                 populationShareF:int{49100000}\r
@@ -26593,9 +25643,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49400000}\r
             }\r
             territoryF:intvector{\r
-                60329900,\r
+                60294200,\r
                 49287000,\r
-                57195125,\r
+                57189317,\r
             }\r
         }\r
         BG{\r
@@ -26603,19 +25653,13 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
-            de{\r
-                populationShareF:int{48800000}\r
-            }\r
             en{\r
                 populationShareF:int{49250000}\r
             }\r
-            ru{\r
-                populationShareF:int{49230000}\r
-            }\r
             territoryF:intvector{\r
-                61143100,\r
+                61129100,\r
                 49984000,\r
-                56714465,\r
+                56718689,\r
             }\r
             tr{\r
                 populationShareF:int{49110000}\r
@@ -26630,15 +25674,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{48330000}\r
             }\r
             territoryF:intvector{\r
-                60663700,\r
+                60621700,\r
                 49946000,\r
-                56137890,\r
+                56134661,\r
             }\r
         }\r
         BI{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{46560000}\r
+                populationShareF:int{46580000}\r
             }\r
             fr{\r
                 officialStatus{"official"}\r
@@ -26649,12 +25693,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49630000}\r
             }\r
             sw{\r
-                populationShareF:int{46570000}\r
+                populationShareF:int{46590000}\r
             }\r
             territoryF:intvector{\r
-                59789200,\r
+                59840900,\r
                 49672000,\r
-                57110993,\r
+                57107423,\r
             }\r
         }\r
         BJ{\r
@@ -26666,9 +25710,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49350000}\r
             }\r
             territoryF:intvector{\r
-                60243100,\r
+                60198600,\r
                 49424000,\r
-                57107415,\r
+                57104486,\r
             }\r
             yo{\r
                 populationShareF:int{48670000}\r
@@ -26682,7 +25726,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58255000,\r
                 49990000,\r
-                53720900,\r
+                53723700,\r
             }\r
         }\r
         BM{\r
@@ -26693,25 +25737,25 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59519800,\r
                 49980000,\r
-                54705370,\r
+                54701960,\r
             }\r
         }\r
         BN{\r
             en{\r
-                populationShareF:int{48180000}\r
-            }\r
-            ms{\r
-                officialStatus{"official"}\r
-                populationShareF:int{49930000}\r
+                populationShareF:int{48190000}\r
             }\r
             ms_Arab{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48500000}\r
             }\r
+            ms_Latn{\r
+                officialStatus{"official"}\r
+                populationShareF:int{49930000}\r
+            }\r
             territoryF:intvector{\r
-                60337300,\r
+                60329600,\r
                 49954000,\r
-                55436620,\r
+                55429646,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{49110000}\r
@@ -26737,9 +25781,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49320000}\r
             }\r
             territoryF:intvector{\r
-                60783500,\r
+                60702800,\r
                 49912000,\r
-                57109696,\r
+                57108009,\r
             }\r
         }\r
         BQ{\r
@@ -26751,8 +25795,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                58419800,\r
-                49990000,\r
+                58426100,\r
+                49965000,\r
                 54200000,\r
             }\r
         }\r
@@ -26786,9 +25830,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49910000}\r
             }\r
             territoryF:intvector{\r
-                62313500,\r
+                62327600,\r
                 49904000,\r
-                58205824,\r
+                58204260,\r
             }\r
             xav{\r
                 populationShareF:int{45490000}\r
@@ -26803,9 +25847,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59906600,\r
+                59903100,\r
                 49956000,\r
-                55327316,\r
+                55324597,\r
             }\r
         }\r
         BT{\r
@@ -26823,9 +25867,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49170000}\r
             }\r
             territoryF:intvector{\r
-                59643200,\r
+                59587100,\r
                 49528000,\r
-                55750125,\r
+                55741919,\r
             }\r
             tsj{\r
                 populationShareF:int{49150000}\r
@@ -26833,7 +25877,7 @@ supplementalData:table(nofallback){
         }\r
         BV{\r
             territoryF:intvector{\r
-                54432700,\r
+                54400900,\r
                 49990000,\r
                 50100000,\r
             }\r
@@ -26850,9 +25894,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                60365100,\r
+                60358700,\r
                 49851000,\r
-                56220921,\r
+                56218272,\r
             }\r
             tn{\r
                 officialStatus{"official"}\r
@@ -26869,9 +25913,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49120000}\r
             }\r
             territoryF:intvector{\r
-                61165400,\r
+                61172800,\r
                 49996000,\r
-                56957038,\r
+                56958969,\r
             }\r
         }\r
         BZ{\r
@@ -26883,9 +25927,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49280000}\r
             }\r
             territoryF:intvector{\r
-                59308800,\r
+                59297500,\r
                 49769000,\r
-                55353858,\r
+                55347369,\r
             }\r
         }\r
         CA{\r
@@ -26895,7 +25939,7 @@ supplementalData:table(nofallback){
             chp{\r
                 populationShareF:int{45220000}\r
             }\r
-            cr{\r
+            cr_Cans{\r
                 populationShareF:int{47110000}\r
             }\r
             crj{\r
@@ -26917,7 +25961,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48190000}\r
             }\r
             den{\r
-                populationShareF:int{45650000}\r
+                populationShareF:int{45660000}\r
             }\r
             dgr{\r
                 populationShareF:int{45750000}\r
@@ -26934,31 +25978,31 @@ supplementalData:table(nofallback){
                 populationShareF:int{45160000}\r
             }\r
             ikt{\r
-                literacyShareF:int{49300000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46110000}\r
+                writingShareF:int{49300000}\r
             }\r
             it{\r
                 populationShareF:int{48200000}\r
             }\r
-            iu{\r
-                literacyShareF:int{49300000}\r
+            iu_Cans{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46420000}\r
+                writingShareF:int{49300000}\r
             }\r
             iu_Latn{\r
-                literacyShareF:int{49300000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46420000}\r
+                writingShareF:int{49300000}\r
             }\r
             moe{\r
                 populationShareF:int{46330000}\r
             }\r
             moh{\r
-                populationShareF:int{45990000}\r
+                populationShareF:int{46100000}\r
             }\r
             nsk{\r
-                populationShareF:int{45330000}\r
+                populationShareF:int{45340000}\r
             }\r
             pdt{\r
                 populationShareF:int{47240000}\r
@@ -26967,9 +26011,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{45350000}\r
             }\r
             territoryF:intvector{\r
-                62167400,\r
+                62159600,\r
                 49990000,\r
-                57353629,\r
+                57350998,\r
             }\r
             yi{\r
                 populationShareF:int{46450000}\r
@@ -26984,7 +26028,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49830000}\r
             }\r
             territoryF:intvector{\r
-                57308200,\r
+                57288200,\r
                 49990000,\r
                 52596000,\r
             }\r
@@ -27020,9 +26064,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49500000}\r
             }\r
             territoryF:intvector{\r
-                60660100,\r
+                60577800,\r
                 49668000,\r
-                57813311,\r
+                57793751,\r
             }\r
         }\r
         CF{\r
@@ -27038,9 +26082,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49490000}\r
             }\r
             territoryF:intvector{\r
-                59320600,\r
+                59286500,\r
                 49566000,\r
-                56550726,\r
+                56539154,\r
             }\r
         }\r
         CG{\r
@@ -27052,9 +26096,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48240000}\r
             }\r
             territoryF:intvector{\r
-                60302700,\r
+                60283600,\r
                 49838000,\r
-                56485241,\r
+                56475510,\r
             }\r
         }\r
         CH{\r
@@ -27093,9 +26137,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47290000}\r
             }\r
             territoryF:intvector{\r
-                61494300,\r
+                61473300,\r
                 49990000,\r
-                56817929,\r
+                56812183,\r
             }\r
             wae{\r
                 populationShareF:int{47120000}\r
@@ -27103,16 +26147,16 @@ supplementalData:table(nofallback){
         }\r
         CI{\r
             bci{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{49110000}\r
+                writingShareF:int{49100000}\r
             }\r
             bqv{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{47170000}\r
+                writingShareF:int{49100000}\r
             }\r
             dnj{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{48400000}\r
+                writingShareF:int{48100000}\r
             }\r
             fr{\r
                 officialStatus{"official"}\r
@@ -27126,20 +26170,20 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60871200,\r
+                60716700,\r
                 49569000,\r
-                57237404,\r
+                57232953,\r
             }\r
         }\r
         CK{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49950000}\r
+                populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                58244100,\r
+                58183200,\r
                 49950000,\r
-                53955600,\r
+                53983800,\r
             }\r
         }\r
         CL{\r
@@ -27154,60 +26198,60 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                61436100,\r
+                61410900,\r
                 49986000,\r
-                57176501,\r
+                57175083,\r
             }\r
         }\r
         CM{\r
             agq{\r
-                literacyShareF:int{49200000}\r
                 populationShareF:int{47140000}\r
+                writingShareF:int{49200000}\r
             }\r
             ar{\r
                 populationShareF:int{47390000}\r
             }\r
             bas{\r
-                literacyShareF:int{49250000}\r
                 populationShareF:int{48120000}\r
+                writingShareF:int{49250000}\r
             }\r
             bax{\r
                 populationShareF:int{48120000}\r
             }\r
             bbj{\r
-                literacyShareF:int{49250000}\r
                 populationShareF:int{48140000}\r
+                writingShareF:int{49250000}\r
             }\r
             bfd{\r
-                literacyShareF:int{49300000}\r
                 populationShareF:int{47570000}\r
+                writingShareF:int{49300000}\r
             }\r
             bkm{\r
                 populationShareF:int{48130000}\r
                 writingShareF:int{48500000}\r
             }\r
             bss{\r
-                literacyShareF:int{49300000}\r
                 populationShareF:int{47540000}\r
+                writingShareF:int{49300000}\r
             }\r
             bum{\r
                 populationShareF:int{48460000}\r
             }\r
             byv{\r
-                literacyShareF:int{49150000}\r
                 populationShareF:int{48110000}\r
+                writingShareF:int{49150000}\r
             }\r
             dua{\r
-                literacyShareF:int{49250000}\r
                 populationShareF:int{47480000}\r
+                writingShareF:int{49250000}\r
             }\r
             en{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49380000}\r
             }\r
             ewo{\r
-                literacyShareF:int{49150000}\r
                 populationShareF:int{48310000}\r
+                writingShareF:int{49150000}\r
             }\r
             ff{\r
                 populationShareF:int{48360000}\r
@@ -27220,8 +26264,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47140000}\r
             }\r
             jgo{\r
-                literacyShareF:int{49300000}\r
                 populationShareF:int{47340000}\r
+                writingShareF:int{49300000}\r
             }\r
             kkj{\r
                 populationShareF:int{47540000}\r
@@ -27240,24 +26284,24 @@ supplementalData:table(nofallback){
                 populationShareF:int{48100000}\r
             }\r
             nmg{\r
-                literacyShareF:int{49100000}\r
-                populationShareF:int{46370000}\r
+                populationShareF:int{46380000}\r
+                writingShareF:int{49100000}\r
             }\r
             nnh{\r
-                literacyShareF:int{48800000}\r
                 populationShareF:int{48140000}\r
+                writingShareF:int{48800000}\r
             }\r
             territoryF:intvector{\r
-                60772400,\r
+                60677800,\r
                 49713000,\r
-                57243608,\r
+                57237392,\r
             }\r
             yav{\r
-                populationShareF:int{45940000}\r
+                populationShareF:int{45970000}\r
             }\r
             ybb{\r
-                literacyShareF:int{48200000}\r
                 populationShareF:int{48160000}\r
+                writingShareF:int{48200000}\r
             }\r
         }\r
         CN{\r
@@ -27278,8 +26322,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{48290000}\r
             }\r
             ii{\r
-                literacyShareF:int{49600000}\r
                 populationShareF:int{47600000}\r
+                writingShareF:int{49600000}\r
             }\r
             khb{\r
                 populationShareF:int{46190000}\r
@@ -27320,11 +26364,11 @@ supplementalData:table(nofallback){
                 populationShareF:int{46190000}\r
             }\r
             territoryF:intvector{\r
-                63212700,\r
+                63180900,\r
                 49951000,\r
-                59137354,\r
+                59136749,\r
             }\r
-            ug{\r
+            ug_Arab{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47550000}\r
             }\r
@@ -27344,7 +26388,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47310000}\r
             }\r
-            zh{\r
+            zh_Hans{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49900000}\r
             }\r
@@ -27358,14 +26402,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{47270000}\r
             }\r
             territoryF:intvector{\r
-                61690400,\r
+                61642500,\r
                 49936000,\r
-                57472209,\r
+                57467367,\r
             }\r
         }\r
         CP{\r
             territoryF:intvector{\r
-                54409500,\r
+                54389300,\r
                 49990000,\r
                 50100000,\r
             }\r
@@ -27379,9 +26423,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                60792600,\r
+                60712300,\r
                 49963000,\r
-                56487254,\r
+                56481414,\r
             }\r
         }\r
         CU{\r
@@ -27392,7 +26436,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 61128500,\r
                 49998000,\r
-                57111800,\r
+                57110314,\r
             }\r
         }\r
         CV{\r
@@ -27404,14 +26448,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{49760000}\r
             }\r
             territoryF:intvector{\r
-                59358300,\r
+                59333000,\r
                 49849000,\r
-                55553432,\r
+                55545993,\r
             }\r
         }\r
         CW{\r
             es{\r
-                populationShareF:int{48380000}\r
+                populationShareF:int{48390000}\r
             }\r
             nl{\r
                 officialStatus{"official"}\r
@@ -27423,19 +26467,19 @@ supplementalData:table(nofallback){
             }\r
             territoryF:intvector{\r
                 59312800,\r
-                49990000,\r
-                55149035,\r
+                49965000,\r
+                55146836,\r
             }\r
         }\r
         CX{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49630000}\r
+                populationShareF:int{49920000}\r
             }\r
             territoryF:intvector{\r
-                58114000,\r
+                57739700,\r
                 49990000,\r
-                53220500,\r
+                53153000,\r
             }\r
         }\r
         CY{\r
@@ -27444,21 +26488,18 @@ supplementalData:table(nofallback){
             }\r
             el{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49950000}\r
+                populationShareF:int{49750000}\r
             }\r
             en{\r
                 populationShareF:int{49730000}\r
             }\r
-            fr{\r
-                populationShareF:int{48700000}\r
-            }\r
             hy{\r
                 populationShareF:int{47230000}\r
             }\r
             territoryF:intvector{\r
-                60292600,\r
+                60275200,\r
                 49987000,\r
-                56120558,\r
+                56118920,\r
             }\r
             tr{\r
                 officialStatus{"official"}\r
@@ -27471,7 +26512,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             de{\r
-                populationShareF:int{49150000}\r
+                populationShareF:int{47490000}\r
             }\r
             en{\r
                 populationShareF:int{49270000}\r
@@ -27479,11 +26520,8 @@ supplementalData:table(nofallback){
             pl{\r
                 populationShareF:int{47490000}\r
             }\r
-            sk{\r
-                populationShareF:int{49160000}\r
-            }\r
             territoryF:intvector{\r
-                61350900,\r
+                61315900,\r
                 49990000,\r
                 57106448,\r
             }\r
@@ -27522,10 +26560,6 @@ supplementalData:table(nofallback){
             frs{\r
                 populationShareF:int{45250000}\r
             }\r
-            gsw{\r
-                populationShareF:int{48230000}\r
-                writingShareF:int{48500000}\r
-            }\r
             hr{\r
                 populationShareF:int{47790000}\r
             }\r
@@ -27539,7 +26573,7 @@ supplementalData:table(nofallback){
             ksh{\r
                 populationShareF:int{47300000}\r
             }\r
-            ku{\r
+            ku_Latn{\r
                 populationShareF:int{47660000}\r
             }\r
             nds{\r
@@ -27566,9 +26600,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62397900,\r
+                62374800,\r
                 49990000,\r
-                57807228,\r
+                57808544,\r
             }\r
             tr{\r
                 populationShareF:int{48250000}\r
@@ -27583,7 +26617,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             territoryF:intvector{\r
-                57216400,\r
+                57200400,\r
                 49990000,\r
                 52500000,\r
             }\r
@@ -27604,9 +26638,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49410000}\r
             }\r
             territoryF:intvector{\r
-                59334500,\r
+                59287600,\r
                 49679000,\r
-                55846687,\r
+                55828324,\r
             }\r
         }\r
         DK{\r
@@ -27616,7 +26650,7 @@ supplementalData:table(nofallback){
             }\r
             de{\r
                 officialStatus{"official_regional"}\r
-                populationShareF:int{49470000}\r
+                populationShareF:int{47430000}\r
             }\r
             en{\r
                 populationShareF:int{49860000}\r
@@ -27631,13 +26665,10 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47130000}\r
             }\r
-            sv{\r
-                populationShareF:int{49130000}\r
-            }\r
             territoryF:intvector{\r
-                61264800,\r
+                61250700,\r
                 49990000,\r
-                56559379,\r
+                56558150,\r
             }\r
         }\r
         DM{\r
@@ -27646,23 +26677,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{49940000}\r
             }\r
             territoryF:intvector{\r
-                58812000,\r
+                58790000,\r
                 49940000,\r
-                54737570,\r
+                54736070,\r
             }\r
         }\r
         DO{\r
             en{\r
-                populationShareF:int{46750000}\r
+                populationShareF:int{46760000}\r
             }\r
             es{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49780000}\r
             }\r
             territoryF:intvector{\r
-                61160900,\r
+                61138500,\r
                 49901000,\r
-                57106069,\r
+                57104788,\r
             }\r
         }\r
         DZ{\r
@@ -27681,13 +26712,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{49200000}\r
             }\r
             kab{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{48780000}\r
+                writingShareF:int{49100000}\r
             }\r
             territoryF:intvector{\r
-                61609400,\r
+                61548600,\r
                 49726000,\r
-                57402637,\r
+                57395422,\r
             }\r
         }\r
         EA{\r
@@ -27696,7 +26727,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                59522000,\r
+                59489800,\r
                 49977000,\r
                 55150000,\r
             }\r
@@ -27714,29 +26745,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{48570000}\r
             }\r
             territoryF:intvector{\r
-                61182400,\r
+                61181200,\r
                 49916000,\r
-                57160808,\r
+                57158684,\r
             }\r
         }\r
         EE{\r
-            en{\r
-                populationShareF:int{49500000}\r
-            }\r
             et{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49710000}\r
             }\r
-            fi{\r
-                populationShareF:int{49210000}\r
-            }\r
             ru{\r
-                populationShareF:int{49560000}\r
+                populationShareF:int{49300000}\r
             }\r
             territoryF:intvector{\r
-                60387000,\r
+                60367800,\r
                 49998000,\r
-                56125855,\r
+                56126542,\r
             }\r
             vro{\r
                 populationShareF:int{48570000}\r
@@ -27757,9 +26782,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49350000}\r
             }\r
             territoryF:intvector{\r
-                62110500,\r
+                61946600,\r
                 49739000,\r
-                57946670,\r
+                57884874,\r
             }\r
         }\r
         EH{\r
@@ -27770,7 +26795,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58906500,\r
                 49500000,\r
-                55587020,\r
+                55570866,\r
             }\r
         }\r
         ER{\r
@@ -27793,9 +26818,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48360000}\r
             }\r
             territoryF:intvector{\r
-                59916900,\r
+                59784200,\r
                 49689000,\r
-                56586987,\r
+                56652769,\r
             }\r
             ti{\r
                 officialStatus{"de_facto_official"}\r
@@ -27833,9 +26858,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48700000}\r
             }\r
             territoryF:intvector{\r
-                62169000,\r
+                62157200,\r
                 49977000,\r
-                57485635,\r
+                57481461,\r
             }\r
         }\r
         ET{\r
@@ -27859,9 +26884,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48600000}\r
             }\r
             territoryF:intvector{\r
-                61174700,\r
+                61145100,\r
                 49390000,\r
-                58102374,\r
+                57994658,\r
             }\r
             ti{\r
                 populationShareF:int{48600000}\r
@@ -27871,9 +26896,6 @@ supplementalData:table(nofallback){
             }\r
         }\r
         FI{\r
-            de{\r
-                populationShareF:int{49180000}\r
-            }\r
             en{\r
                 populationShareF:int{49700000}\r
             }\r
@@ -27891,7 +26913,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{47810000}\r
             }\r
             se{\r
-                populationShareF:int{46360000}\r
+                populationShareF:int{46370000}\r
             }\r
             smn{\r
                 populationShareF:int{46110000}\r
@@ -27901,12 +26923,12 @@ supplementalData:table(nofallback){
             }\r
             sv{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49440000}\r
+                populationShareF:int{48570000}\r
             }\r
             territoryF:intvector{\r
-                61230000,\r
+                61221700,\r
                 50100000,\r
-                56549821,\r
+                56547692,\r
             }\r
         }\r
         FJ{\r
@@ -27921,7 +26943,7 @@ supplementalData:table(nofallback){
             hi{\r
                 populationShareF:int{49440000}\r
             }\r
-            hif{\r
+            hif_Latn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49410000}\r
             }\r
@@ -27929,20 +26951,20 @@ supplementalData:table(nofallback){
                 populationShareF:int{47270000}\r
             }\r
             territoryF:intvector{\r
-                59837400,\r
+                59740400,\r
                 49937000,\r
-                55915303,\r
+                55909389,\r
             }\r
         }\r
         FK{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49960000}\r
+                populationShareF:int{49840000}\r
             }\r
             territoryF:intvector{\r
                 58164500,\r
                 49990000,\r
-                53293100,\r
+                53336100,\r
             }\r
         }\r
         FM{\r
@@ -27960,9 +26982,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49230000}\r
             }\r
             territoryF:intvector{\r
-                58314000,\r
+                58308000,\r
                 49890000,\r
-                55104719,\r
+                55105216,\r
             }\r
             uli{\r
                 populationShareF:int{48290000}\r
@@ -27977,32 +26999,26 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                59183100,\r
+                59147100,\r
                 49990000,\r
-                54504560,\r
+                54501960,\r
             }\r
         }\r
         FR{\r
             br{\r
-                literacyShareF:int{48300000}\r
                 populationShareF:int{47830000}\r
+                writingShareF:int{48300000}\r
             }\r
             ca{\r
                 populationShareF:int{47170000}\r
             }\r
             co{\r
-                populationShareF:int{47240000}\r
+                populationShareF:int{47570000}\r
                 writingShareF:int{48500000}\r
             }\r
-            de{\r
-                populationShareF:int{48500000}\r
-            }\r
             en{\r
                 populationShareF:int{49390000}\r
             }\r
-            es{\r
-                populationShareF:int{49130000}\r
-            }\r
             eu{\r
                 populationShareF:int{47130000}\r
             }\r
@@ -28037,9 +27053,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48130000}\r
             }\r
             territoryF:intvector{\r
-                62273700,\r
+                62259100,\r
                 49990000,\r
-                57668362,\r
+                57665538,\r
             }\r
         }\r
         GA{\r
@@ -28051,9 +27067,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48900000}\r
             }\r
             territoryF:intvector{\r
-                60362200,\r
+                60329100,\r
                 49890000,\r
-                56173854,\r
+                56170534,\r
             }\r
         }\r
         GB{\r
@@ -28064,9 +27080,6 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47770000}\r
             }\r
-            de{\r
-                populationShareF:int{48600000}\r
-            }\r
             el{\r
                 populationShareF:int{47340000}\r
             }\r
@@ -28075,7 +27088,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             fr{\r
-                populationShareF:int{49190000}\r
+                populationShareF:int{46240000}\r
             }\r
             ga{\r
                 officialStatus{"official_regional"}\r
@@ -28089,7 +27102,7 @@ supplementalData:table(nofallback){
             it{\r
                 populationShareF:int{47340000}\r
             }\r
-            ks{\r
+            ks_Arab{\r
                 populationShareF:int{47190000}\r
             }\r
             kw{\r
@@ -28098,7 +27111,7 @@ supplementalData:table(nofallback){
             ml{\r
                 populationShareF:int{46350000}\r
             }\r
-            pa{\r
+            pa_Guru{\r
                 populationShareF:int{47790000}\r
             }\r
             sco{\r
@@ -28109,9 +27122,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47510000}\r
             }\r
             territoryF:intvector{\r
-                62278800,\r
+                62256900,\r
                 49990000,\r
-                57644304,\r
+                57640882,\r
             }\r
             yi{\r
                 populationShareF:int{46490000}\r
@@ -28126,9 +27139,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                59151100,\r
+                59132600,\r
                 49960000,\r
-                55111219,\r
+                55110694,\r
             }\r
         }\r
         GE{\r
@@ -28143,7 +27156,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49860000}\r
             }\r
-            ku{\r
+            ku_Latn{\r
                 populationShareF:int{47890000}\r
             }\r
             os{\r
@@ -28154,9 +27167,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48900000}\r
             }\r
             territoryF:intvector{\r
-                60373800,\r
+                60343500,\r
                 49997000,\r
-                56492805,\r
+                56493123,\r
             }\r
             xmf{\r
                 populationShareF:int{49110000}\r
@@ -28185,9 +27198,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59345100,\r
+                59342000,\r
                 50100000,\r
-                54662970,\r
+                54660800,\r
             }\r
         }\r
         GH{\r
@@ -28216,7 +27229,7 @@ supplementalData:table(nofallback){
             gur{\r
                 populationShareF:int{48350000}\r
             }\r
-            ha{\r
+            ha_Latn{\r
                 populationShareF:int{47870000}\r
             }\r
             nzi{\r
@@ -28226,9 +27239,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46150000}\r
             }\r
             territoryF:intvector{\r
-                61120800,\r
+                61108500,\r
                 49715000,\r
-                57269083,\r
+                57263276,\r
             }\r
         }\r
         GI{\r
@@ -28242,7 +27255,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59185000,\r
                 49800000,\r
-                54293280,\r
+                54292580,\r
             }\r
         }\r
         GL{\r
@@ -28254,9 +27267,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49840000}\r
             }\r
             territoryF:intvector{\r
-                59217300,\r
+                59213300,\r
                 50100000,\r
-                54577280,\r
+                54577330,\r
             }\r
         }\r
         GM{\r
@@ -28264,13 +27277,13 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49400000}\r
             }\r
-            man{\r
+            man_Latn{\r
                 populationShareF:int{49290000}\r
             }\r
             territoryF:intvector{\r
-                59338700,\r
+                59309300,\r
                 49511000,\r
-                56200965,\r
+                56196771,\r
             }\r
         }\r
         GN{\r
@@ -28294,9 +27307,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                60160800,\r
+                60151300,\r
                 49410000,\r
-                57120933,\r
+                57117802,\r
             }\r
         }\r
         GP{\r
@@ -28330,18 +27343,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{44100000}\r
             }\r
             territoryF:intvector{\r
-                60317700,\r
+                60286200,\r
                 49942000,\r
-                55759451,\r
+                55740743,\r
             }\r
         }\r
         GR{\r
             bg{\r
                 populationShareF:int{47270000}\r
             }\r
-            de{\r
-                populationShareF:int{48500000}\r
-            }\r
             el{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
@@ -28349,22 +27359,19 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49510000}\r
             }\r
-            fr{\r
-                populationShareF:int{48900000}\r
-            }\r
             mk{\r
                 populationShareF:int{48160000}\r
             }\r
-            pnt{\r
+            pnt_Grek{\r
                 populationShareF:int{48370000}\r
             }\r
             sq{\r
                 populationShareF:int{46930000}\r
             }\r
             territoryF:intvector{\r
-                61290500,\r
+                61285300,\r
                 49973000,\r
-                57107733,\r
+                57107756,\r
             }\r
             tr{\r
                 populationShareF:int{48120000}\r
@@ -28375,13 +27382,13 @@ supplementalData:table(nofallback){
         }\r
         GS{\r
             territoryF:intvector{\r
-                55865400,\r
+                55801700,\r
                 49990000,\r
                 51200000,\r
             }\r
             und{\r
-                literacyShareF:int{50100000}\r
                 populationShareF:int{50100000}\r
+                writingShareF:int{50100000}\r
             }\r
         }\r
         GT{\r
@@ -28394,9 +27401,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48700000}\r
             }\r
             territoryF:intvector{\r
-                61132300,\r
+                61119800,\r
                 49759000,\r
-                57151900,\r
+                57149190,\r
             }\r
         }\r
         GU{\r
@@ -28411,7 +27418,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59488200,\r
                 49990000,\r
-                55162742,\r
+                55161785,\r
             }\r
         }\r
         GW{\r
@@ -28420,9 +27427,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59285100,\r
+                59253200,\r
                 49553000,\r
-                56175916,\r
+                56172617,\r
             }\r
         }\r
         GY{\r
@@ -28431,9 +27438,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59609300,\r
+                59553400,\r
                 49918000,\r
-                55735909,\r
+                55735222,\r
             }\r
         }\r
         HK{\r
@@ -28442,14 +27449,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{49510000}\r
             }\r
             territoryF:intvector{\r
-                61427400,\r
+                61400400,\r
                 49935000,\r
-                56716740,\r
+                56714111,\r
             }\r
             yue{\r
-                populationShareF:int{49900000}\r
+                populationShareF:int{49890000}\r
             }\r
-            zh{\r
+            zh_Hans{\r
                 populationShareF:int{48500000}\r
             }\r
             zh_Hant{\r
@@ -28459,13 +27466,13 @@ supplementalData:table(nofallback){
         }\r
         HM{\r
             territoryF:intvector{\r
-                54517100,\r
+                54483500,\r
                 49990000,\r
                 50100000,\r
             }\r
             und{\r
-                literacyShareF:int{50100000}\r
                 populationShareF:int{50100000}\r
+                writingShareF:int{50100000}\r
             }\r
         }\r
         HN{\r
@@ -28477,9 +27484,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49780000}\r
             }\r
             territoryF:intvector{\r
-                60431900,\r
+                60392200,\r
                 49851000,\r
-                56889326,\r
+                56874667,\r
             }\r
         }\r
         HR{\r
@@ -28495,37 +27502,34 @@ supplementalData:table(nofallback){
                 populationShareF:int{48160000}\r
             }\r
             territoryF:intvector{\r
-                60942400,\r
+                60887300,\r
                 49989000,\r
-                56431371,\r
+                56446484,\r
             }\r
         }\r
         HT{\r
             fr{\r
-                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{48470000}\r
+                writingShareF:int{50100000}\r
             }\r
             ht{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                60193600,\r
+                60183800,\r
                 49487000,\r
-                57104858,\r
+                57101100,\r
             }\r
         }\r
         HU{\r
             de{\r
-                populationShareF:int{49180000}\r
+                populationShareF:int{48250000}\r
             }\r
             en{\r
                 populationShareF:int{49200000}\r
             }\r
-            fr{\r
-                populationShareF:int{48300000}\r
-            }\r
             hr{\r
                 populationShareF:int{47320000}\r
             }\r
@@ -28543,9 +27547,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46500000}\r
             }\r
             territoryF:intvector{\r
-                61267600,\r
+                61247100,\r
                 49990000,\r
-                56987478,\r
+                56989754,\r
             }\r
         }\r
         IC{\r
@@ -28554,7 +27558,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                60730300,\r
+                60685200,\r
                 49977000,\r
                 56209859,\r
             }\r
@@ -28567,8 +27571,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47270000}\r
             }\r
             ban{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{48180000}\r
+                writingShareF:int{49100000}\r
             }\r
             bbc{\r
                 populationShareF:int{47920000}\r
@@ -28577,12 +27581,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{48210000}\r
             }\r
             bjn{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{48150000}\r
+                writingShareF:int{49100000}\r
             }\r
             bug{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{48160000}\r
+                writingShareF:int{49100000}\r
             }\r
             gay{\r
                 populationShareF:int{47120000}\r
@@ -28595,8 +27599,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{49640000}\r
             }\r
             jv{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{49340000}\r
+                writingShareF:int{49100000}\r
             }\r
             kge{\r
                 populationShareF:int{47320000}\r
@@ -28611,8 +27615,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47690000}\r
             }\r
             mad{\r
-                literacyShareF:int{49400000}\r
                 populationShareF:int{48630000}\r
+                writingShareF:int{49400000}\r
             }\r
             mak{\r
                 populationShareF:int{47730000}\r
@@ -28621,8 +27625,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46920000}\r
             }\r
             min{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{48300000}\r
+                writingShareF:int{49100000}\r
             }\r
             ms_Arab{\r
                 populationShareF:int{48460000}\r
@@ -28652,9 +27656,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46920000}\r
             }\r
             territoryF:intvector{\r
-                62302800,\r
+                62268600,\r
                 49928000,\r
-                58258316,\r
+                58255994,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{47920000}\r
@@ -28665,17 +27669,14 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49980000}\r
             }\r
-            fr{\r
-                populationShareF:int{49170000}\r
-            }\r
             ga{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49220000}\r
+                populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                61324300,\r
+                61236400,\r
                 49990000,\r
-                56495247,\r
+                56489231,\r
             }\r
         }\r
         IL{\r
@@ -28700,7 +27701,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48130000}\r
             }\r
             ml{\r
-                populationShareF:int{46980000}\r
+                populationShareF:int{46990000}\r
             }\r
             pl{\r
                 populationShareF:int{48150000}\r
@@ -28712,9 +27713,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                61297000,\r
+                61272100,\r
                 49971000,\r
-                56817453,\r
+                56804931,\r
             }\r
             ti{\r
                 populationShareF:int{47120000}\r
@@ -28735,7 +27736,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59629800,\r
                 49990000,\r
-                54881950,\r
+                54875450,\r
             }\r
         }\r
         IN{\r
@@ -28757,8 +27758,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46370000}\r
             }\r
             bgc{\r
-                literacyShareF:int{49550000}\r
                 populationShareF:int{48120000}\r
+                writingShareF:int{49550000}\r
             }\r
             bhb{\r
                 populationShareF:int{47120000}\r
@@ -28767,12 +27768,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{46920000}\r
             }\r
             bho{\r
-                literacyShareF:int{49300000}\r
                 populationShareF:int{48230000}\r
+                writingShareF:int{49300000}\r
             }\r
             bjj{\r
-                literacyShareF:int{49600000}\r
                 populationShareF:int{47560000}\r
+                writingShareF:int{49600000}\r
             }\r
             bn{\r
                 officialStatus{"official_regional"}\r
@@ -28818,7 +27819,7 @@ supplementalData:table(nofallback){
             gom{\r
                 populationShareF:int{47320000}\r
             }\r
-            gon{\r
+            gon_Telu{\r
                 populationShareF:int{47240000}\r
             }\r
             grt{\r
@@ -28848,9 +27849,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47220000}\r
             }\r
             kha{\r
-                literacyShareF:int{49290000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46800000}\r
+                writingShareF:int{49290000}\r
             }\r
             khn{\r
                 populationShareF:int{47150000}\r
@@ -28869,7 +27870,7 @@ supplementalData:table(nofallback){
             kru{\r
                 populationShareF:int{47190000}\r
             }\r
-            ks{\r
+            ks_Arab{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47410000}\r
             }\r
@@ -28879,15 +27880,15 @@ supplementalData:table(nofallback){
             lep{\r
                 populationShareF:int{45350000}\r
             }\r
-            lif{\r
+            lif_Deva{\r
                 populationShareF:int{45260000}\r
             }\r
             lmn{\r
                 populationShareF:int{47270000}\r
             }\r
             mag{\r
-                literacyShareF:int{49300000}\r
                 populationShareF:int{48120000}\r
+                writingShareF:int{49300000}\r
             }\r
             mai{\r
                 officialStatus{"official_regional"}\r
@@ -28924,7 +27925,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48320000}\r
             }\r
-            pa{\r
+            pa_Guru{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48280000}\r
             }\r
@@ -28935,8 +27936,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46130000}\r
             }\r
             rkt{\r
-                literacyShareF:int{49200000}\r
                 populationShareF:int{47440000}\r
+                writingShareF:int{49200000}\r
             }\r
             sa{\r
                 officialStatus{"official_regional"}\r
@@ -28952,7 +27953,7 @@ supplementalData:table(nofallback){
             sck{\r
                 populationShareF:int{47180000}\r
             }\r
-            sd{\r
+            sd_Arab{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47260000}\r
             }\r
@@ -28978,14 +27979,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{48720000}\r
             }\r
             territoryF:intvector{\r
-                62872100,\r
+                62741100,\r
                 49628000,\r
-                59126688,\r
+                59125170,\r
             }\r
-            unr{\r
+            unr_Beng{\r
                 populationShareF:int{46950000}\r
             }\r
-            unx{\r
+            unx_Beng{\r
                 populationShareF:int{46480000}\r
             }\r
             ur{\r
@@ -28999,8 +28000,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47150000}\r
             }\r
             wtm{\r
-                literacyShareF:int{49250000}\r
                 populationShareF:int{47460000}\r
+                writingShareF:int{49250000}\r
             }\r
             xnr{\r
                 populationShareF:int{47160000}\r
@@ -29008,12 +28009,12 @@ supplementalData:table(nofallback){
         }\r
         IO{\r
             en{\r
-                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
+                writingShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                58151500,\r
+                58140300,\r
                 49990000,\r
                 53350000,\r
             }\r
@@ -29044,9 +28045,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47500000}\r
             }\r
             territoryF:intvector{\r
-                61596700,\r
+                61526100,\r
                 49785000,\r
-                57381460,\r
+                57370562,\r
             }\r
         }\r
         IR{\r
@@ -29074,7 +28075,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49750000}\r
             }\r
             gbz{\r
-                populationShareF:int{45970000}\r
+                populationShareF:int{45980000}\r
             }\r
             glk{\r
                 populationShareF:int{48460000}\r
@@ -29086,14 +28087,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{46710000}\r
             }\r
             kk_Arab{\r
-                populationShareF:int{45360000}\r
+                populationShareF:int{45370000}\r
             }\r
             lki{\r
                 populationShareF:int{47760000}\r
             }\r
             lrc{\r
-                literacyShareF:int{49100000}\r
                 populationShareF:int{48210000}\r
+                writingShareF:int{49100000}\r
             }\r
             luz{\r
                 populationShareF:int{48120000}\r
@@ -29108,33 +28109,33 @@ supplementalData:table(nofallback){
                 populationShareF:int{47160000}\r
             }\r
             rmt{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{48190000}\r
+                writingShareF:int{48100000}\r
             }\r
             sdh{\r
                 populationShareF:int{48370000}\r
             }\r
             territoryF:intvector{\r
-                62145900,\r
+                62135700,\r
                 49850000,\r
-                57828016,\r
+                57818243,\r
             }\r
-            tk{\r
+            tk_Latn{\r
                 populationShareF:int{48280000}\r
             }\r
         }\r
         IS{\r
             da{\r
-                populationShareF:int{47670000}\r
+                populationShareF:int{47680000}\r
             }\r
             is{\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60161500,\r
+                60143400,\r
                 49990000,\r
-                55335878,\r
+                55331918,\r
             }\r
         }\r
         IT{\r
@@ -29162,7 +28163,7 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             hr{\r
-                populationShareF:int{45560000}\r
+                populationShareF:int{45570000}\r
             }\r
             it{\r
                 officialStatus{"official"}\r
@@ -29179,7 +28180,7 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             pms{\r
-                populationShareF:int{45990000}\r
+                populationShareF:int{46100000}\r
             }\r
             rgn{\r
                 populationShareF:int{0}\r
@@ -29198,9 +28199,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47170000}\r
             }\r
             territoryF:intvector{\r
-                62222100,\r
+                62213500,\r
                 49990000,\r
-                57620075,\r
+                57618551,\r
             }\r
             vec{\r
                 populationShareF:int{48130000}\r
@@ -29214,7 +28215,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59577100,\r
                 49990000,\r
-                54980690,\r
+                54972940,\r
             }\r
         }\r
         JM{\r
@@ -29226,9 +28227,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                60253900,\r
+                60241000,\r
                 49870000,\r
-                56297034,\r
+                56295021,\r
             }\r
         }\r
         JO{\r
@@ -29240,9 +28241,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49450000}\r
             }\r
             territoryF:intvector{\r
-                60861900,\r
+                60799100,\r
                 49959000,\r
-                56818538,\r
+                56811756,\r
             }\r
         }\r
         JP{\r
@@ -29258,9 +28259,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62493200,\r
+                62476700,\r
                 49990000,\r
-                58126702,\r
+                58126920,\r
             }\r
         }\r
         KE{\r
@@ -29272,8 +28273,8 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             ebu{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{48150000}\r
+                writingShareF:int{48100000}\r
             }\r
             en{\r
                 officialStatus{"official"}\r
@@ -29301,8 +28302,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             mas{\r
-                literacyShareF:int{49500000}\r
                 populationShareF:int{48160000}\r
+                writingShareF:int{49500000}\r
             }\r
             mer{\r
                 populationShareF:int{48400000}\r
@@ -29310,16 +28311,16 @@ supplementalData:table(nofallback){
             om{\r
                 populationShareF:int{47470000}\r
             }\r
-            pa{\r
-                populationShareF:int{46210000}\r
+            pa_Guru{\r
+                populationShareF:int{46220000}\r
             }\r
             pko{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{47700000}\r
+                writingShareF:int{48100000}\r
             }\r
             saq{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{47460000}\r
+                writingShareF:int{48100000}\r
             }\r
             so{\r
                 populationShareF:int{48130000}\r
@@ -29332,13 +28333,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{47740000}\r
             }\r
             territoryF:intvector{\r
-                61152700,\r
+                61133000,\r
                 49874000,\r
-                57467908,\r
+                57459253,\r
             }\r
         }\r
         KG{\r
-            ky{\r
+            ky_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49480000}\r
             }\r
@@ -29347,9 +28348,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49360000}\r
             }\r
             territoryF:intvector{\r
-                60210100,\r
+                60192300,\r
                 49992000,\r
-                56572755,\r
+                56566494,\r
             }\r
         }\r
         KH{\r
@@ -29364,9 +28365,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49890000}\r
             }\r
             territoryF:intvector{\r
-                60589400,\r
+                60501600,\r
                 49739000,\r
-                57159572,\r
+                57157088,\r
             }\r
         }\r
         KI{\r
@@ -29379,9 +28380,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49600000}\r
             }\r
             territoryF:intvector{\r
-                58211000,\r
+                58189000,\r
                 49900000,\r
-                55106925,\r
+                55105711,\r
             }\r
         }\r
         KM{\r
@@ -29394,9 +28395,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49560000}\r
             }\r
             territoryF:intvector{\r
-                59125900,\r
+                59119000,\r
                 49755000,\r
-                55794678,\r
+                55780971,\r
             }\r
             wni{\r
                 officialStatus{"official"}\r
@@ -29413,9 +28414,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                59142700,\r
+                59128100,\r
                 49978000,\r
-                54523290,\r
+                54519360,\r
             }\r
         }\r
         KP{\r
@@ -29426,7 +28427,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 60400000,\r
                 50100000,\r
-                57251153,\r
+                57249832,\r
             }\r
         }\r
         KR{\r
@@ -29435,9 +28436,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                62192900,\r
+                62178400,\r
                 49979000,\r
-                57509242,\r
+                57491152,\r
             }\r
         }\r
         KW{\r
@@ -29446,9 +28447,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                61301100,\r
+                61282600,\r
                 49939000,\r
-                56283278,\r
+                56278853,\r
             }\r
         }\r
         KY{\r
@@ -29459,7 +28460,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59250700,\r
                 49989000,\r
-                54572680,\r
+                54560920,\r
             }\r
         }\r
         KZ{\r
@@ -29469,7 +28470,7 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49150000}\r
             }\r
-            kk{\r
+            kk_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49640000}\r
             }\r
@@ -29478,9 +28479,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49720000}\r
             }\r
             territoryF:intvector{\r
-                61460700,\r
+                61420000,\r
                 49997000,\r
-                57183604,\r
+                57181571,\r
             }\r
             ug_Cyrl{\r
                 populationShareF:int{48200000}\r
@@ -29498,9 +28499,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49690000}\r
             }\r
             territoryF:intvector{\r
-                60409600,\r
+                60345300,\r
                 49727000,\r
-                56701907,\r
+                56691154,\r
             }\r
         }\r
         LB{\r
@@ -29521,9 +28522,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48160000}\r
             }\r
             territoryF:intvector{\r
-                60851600,\r
+                60814200,\r
                 49896000,\r
-                56623774,\r
+                56618470,\r
             }\r
         }\r
         LC{\r
@@ -29532,9 +28533,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                59208300,\r
+                59197800,\r
                 49901000,\r
-                55164464,\r
+                55163922,\r
             }\r
         }\r
         LI{\r
@@ -29550,10 +28551,10 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59320000,\r
                 50100000,\r
-                54379370,\r
+                54376240,\r
             }\r
             wae{\r
-                populationShareF:int{48340000}\r
+                populationShareF:int{48350000}\r
             }\r
         }\r
         LK{\r
@@ -29569,9 +28570,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49150000}\r
             }\r
             territoryF:intvector{\r
-                61237800,\r
+                61218200,\r
                 49912000,\r
-                57222350,\r
+                57220535,\r
             }\r
         }\r
         LR{\r
@@ -29586,16 +28587,16 @@ supplementalData:table(nofallback){
                 populationShareF:int{47480000}\r
             }\r
             territoryF:intvector{\r
-                59388100,\r
+                59371100,\r
                 49608000,\r
-                56429994,\r
-            }\r
-            vai{\r
-                populationShareF:int{48260000}\r
+                56419567,\r
             }\r
             vai_Latn{\r
                 populationShareF:int{0}\r
             }\r
+            vai_Vaii{\r
+                populationShareF:int{48260000}\r
+            }\r
         }\r
         LS{\r
             en{\r
@@ -29610,9 +28611,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                59601900,\r
+                59557500,\r
                 49896000,\r
-                56195307,\r
+                56194770,\r
             }\r
             xh{\r
                 populationShareF:int{47990000}\r
@@ -29622,9 +28623,6 @@ supplementalData:table(nofallback){
             }\r
         }\r
         LT{\r
-            de{\r
-                populationShareF:int{49140000}\r
-            }\r
             en{\r
                 populationShareF:int{49380000}\r
             }\r
@@ -29633,15 +28631,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49860000}\r
             }\r
             ru{\r
-                populationShareF:int{49800000}\r
+                populationShareF:int{48800000}\r
             }\r
             sgs{\r
                 populationShareF:int{0}\r
             }\r
             territoryF:intvector{\r
-                60857900,\r
+                60799300,\r
                 49997000,\r
-                56285424,\r
+                56288443,\r
             }\r
         }\r
         LU{\r
@@ -29649,9 +28647,6 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49630000}\r
             }\r
-            en{\r
-                populationShareF:int{49560000}\r
-            }\r
             fr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49870000}\r
@@ -29665,15 +28660,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49160000}\r
             }\r
             territoryF:intvector{\r
-                60587400,\r
+                60536700,\r
                 50100000,\r
-                55582291,\r
+                55570252,\r
             }\r
         }\r
         LV{\r
-            en{\r
-                populationShareF:int{49460000}\r
-            }\r
             ltg{\r
                 populationShareF:int{48890000}\r
             }\r
@@ -29685,9 +28677,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49380000}\r
             }\r
             territoryF:intvector{\r
-                60508700,\r
+                60483600,\r
                 49998000,\r
-                56196569,\r
+                56198671,\r
             }\r
         }\r
         LY{\r
@@ -29696,9 +28688,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49740000}\r
             }\r
             territoryF:intvector{\r
-                60908900,\r
+                60979400,\r
                 49895000,\r
-                56654195,\r
+                56641178,\r
             }\r
         }\r
         MA{\r
@@ -29719,29 +28711,29 @@ supplementalData:table(nofallback){
                 officialStatus{"de_facto_official"}\r
                 populationShareF:int{49200000}\r
             }\r
-            rif{\r
+            rif_Latn{\r
                 populationShareF:int{48490000}\r
                 writingShareF:int{48500000}\r
             }\r
-            rif_Latn{\r
+            rif_Tfng{\r
                 populationShareF:int{48490000}\r
                 writingShareF:int{48500000}\r
             }\r
-            shi{\r
+            shi_Latn{\r
                 populationShareF:int{48870000}\r
             }\r
-            shi_Latn{\r
+            shi_Tfng{\r
                 populationShareF:int{48870000}\r
             }\r
             territoryF:intvector{\r
-                61282800,\r
+                61259200,\r
                 49671000,\r
-                57336558,\r
+                57333227,\r
             }\r
-            tzm{\r
-                literacyShareF:int{49250000}\r
+            tzm_Latn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48980000}\r
+                writingShareF:int{49250000}\r
             }\r
             zgh{\r
                 populationShareF:int{49220000}\r
@@ -29755,7 +28747,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59679000,\r
                 49990000,\r
-                54305810,\r
+                54305350,\r
             }\r
         }\r
         MD{\r
@@ -29773,9 +28765,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48300000}\r
             }\r
             territoryF:intvector{\r
-                60185400,\r
+                60177800,\r
                 49990000,\r
-                56351049,\r
+                56354685,\r
             }\r
             uk{\r
                 populationShareF:int{49140000}\r
@@ -29785,7 +28777,7 @@ supplementalData:table(nofallback){
             sq{\r
                 populationShareF:int{48790000}\r
             }\r
-            sr{\r
+            sr_Cyrl{\r
                 populationShareF:int{48500000}\r
             }\r
             sr_Latn{\r
@@ -29793,9 +28785,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60106100,\r
+                59942800,\r
                 49985000,\r
-                55644578,\r
+                55647073,\r
             }\r
         }\r
         MF{\r
@@ -29806,7 +28798,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58561500,\r
                 49990000,\r
-                54319490,\r
+                54317540,\r
             }\r
         }\r
         MG{\r
@@ -29823,9 +28815,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                60374900,\r
+                60340500,\r
                 49645000,\r
-                57244303,\r
+                57238127,\r
             }\r
         }\r
         MH{\r
@@ -29838,9 +28830,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49730000}\r
             }\r
             territoryF:intvector{\r
-                58180000,\r
+                58182000,\r
                 49937000,\r
-                54733760,\r
+                54721910,\r
             }\r
         }\r
         MK{\r
@@ -29853,9 +28845,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49250000}\r
             }\r
             territoryF:intvector{\r
-                60301300,\r
+                60277200,\r
                 49974000,\r
-                56210003,\r
+                56209602,\r
             }\r
             tr{\r
                 populationShareF:int{48350000}\r
@@ -29865,7 +28857,7 @@ supplementalData:table(nofallback){
             ar{\r
                 populationShareF:int{47890000}\r
             }\r
-            bm{\r
+            bm_Latn{\r
                 populationShareF:int{49460000}\r
             }\r
             bm_Nkoo{\r
@@ -29903,9 +28895,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48590000}\r
             }\r
             territoryF:intvector{\r
-                60380900,\r
+                60275000,\r
                 49334000,\r
-                57174671,\r
+                57169555,\r
             }\r
             tmh{\r
                 populationShareF:int{48210000}\r
@@ -29929,16 +28921,16 @@ supplementalData:table(nofallback){
                 populationShareF:int{48640000}\r
             }\r
             territoryF:intvector{\r
-                61311100,\r
+                61244400,\r
                 49927000,\r
-                57568904,\r
+                57563202,\r
             }\r
         }\r
         MN{\r
             kk_Arab{\r
                 populationShareF:int{48720000}\r
             }\r
-            mn{\r
+            mn_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49930000}\r
             }\r
@@ -29946,14 +28938,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{47130000}\r
             }\r
             territoryF:intvector{\r
-                60366500,\r
+                60348700,\r
                 49974000,\r
-                56303133,\r
+                56299291,\r
             }\r
             ug_Cyrl{\r
                 populationShareF:int{46330000}\r
             }\r
-            zh{\r
+            zh_Hans{\r
                 populationShareF:int{48140000}\r
             }\r
         }\r
@@ -29966,11 +28958,11 @@ supplementalData:table(nofallback){
                 populationShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60632200,\r
+                60516800,\r
                 49956000,\r
-                55597425,\r
+                55592731,\r
             }\r
-            zh{\r
+            zh_Hans{\r
                 populationShareF:int{48500000}\r
             }\r
             zh_Hant{\r
@@ -29980,7 +28972,7 @@ supplementalData:table(nofallback){
         }\r
         MP{\r
             ch{\r
-                populationShareF:int{49170000}\r
+                populationShareF:int{49180000}\r
             }\r
             en{\r
                 officialStatus{"de_facto_official"}\r
@@ -29989,7 +28981,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58682000,\r
                 49970000,\r
-                54534670,\r
+                54523440,\r
             }\r
         }\r
         MQ{\r
@@ -30015,23 +29007,23 @@ supplementalData:table(nofallback){
                 populationShareF:int{49170000}\r
             }\r
             territoryF:intvector{\r
-                60167100,\r
+                60156200,\r
                 49586000,\r
-                56367729,\r
+                56359670,\r
             }\r
             wo{\r
-                populationShareF:int{47270000}\r
+                populationShareF:int{47280000}\r
             }\r
         }\r
         MS{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49660000}\r
+                populationShareF:int{49670000}\r
             }\r
             territoryF:intvector{\r
                 57437800,\r
                 49970000,\r
-                53526700,\r
+                53524100,\r
             }\r
         }\r
         MT{\r
@@ -30039,20 +29031,14 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49880000}\r
             }\r
-            fr{\r
-                populationShareF:int{49110000}\r
-            }\r
-            it{\r
-                populationShareF:int{49560000}\r
-            }\r
             mt{\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60163200,\r
+                60141200,\r
                 49924000,\r
-                55415196,\r
+                55413965,\r
             }\r
         }\r
         MU{\r
@@ -30074,9 +29060,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48250000}\r
             }\r
             territoryF:intvector{\r
-                60258500,\r
+                60235300,\r
                 49888000,\r
-                56134824,\r
+                56133983,\r
             }\r
             ur{\r
                 populationShareF:int{48520000}\r
@@ -30088,9 +29074,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49940000}\r
             }\r
             territoryF:intvector{\r
-                59540700,\r
+                59455400,\r
                 49984000,\r
-                55392960,\r
+                55393253,\r
             }\r
         }\r
         MW{\r
@@ -30103,9 +29089,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49630000}\r
             }\r
             territoryF:intvector{\r
-                60212300,\r
+                60195800,\r
                 49748000,\r
-                57185703,\r
+                57179647,\r
             }\r
             tog{\r
                 populationShareF:int{47980000}\r
@@ -30141,9 +29127,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{44700000}\r
             }\r
             territoryF:intvector{\r
-                62230700,\r
+                62214900,\r
                 49935000,\r
-                58123167,\r
+                58121737,\r
             }\r
             yua{\r
                 populationShareF:int{47670000}\r
@@ -30171,7 +29157,7 @@ supplementalData:table(nofallback){
             ml{\r
                 populationShareF:int{47150000}\r
             }\r
-            ms{\r
+            ms_Latn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49750000}\r
             }\r
@@ -30179,9 +29165,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48420000}\r
             }\r
             territoryF:intvector{\r
-                61863800,\r
+                61769400,\r
                 49931000,\r
-                57309500,\r
+                57305138,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{49170000}\r
@@ -30217,9 +29203,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{46360000}\r
             }\r
             territoryF:intvector{\r
-                60353100,\r
+                60312100,\r
                 49561000,\r
-                57259302,\r
+                57253031,\r
             }\r
             ts{\r
                 populationShareF:int{48790000}\r
@@ -30231,7 +29217,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48240000}\r
             }\r
             zu{\r
-                populationShareF:int{45690000}\r
+                populationShareF:int{45710000}\r
             }\r
         }\r
         NA{\r
@@ -30258,9 +29244,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49210000}\r
             }\r
             territoryF:intvector{\r
-                60270400,\r
+                60234800,\r
                 49888000,\r
-                56243647,\r
+                56221231,\r
             }\r
             tn{\r
                 populationShareF:int{47560000}\r
@@ -30274,7 +29260,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 60111000,\r
                 49962000,\r
-                55275355,\r
+                55271615,\r
             }\r
         }\r
         NE{\r
@@ -30291,19 +29277,19 @@ supplementalData:table(nofallback){
             fuq{\r
                 populationShareF:int{48700000}\r
             }\r
-            ha{\r
+            ha_Latn{\r
                 populationShareF:int{49410000}\r
             }\r
             territoryF:intvector{\r
-                60202700,\r
+                60180000,\r
                 49287000,\r
-                57186386,\r
+                57180457,\r
             }\r
             tmh{\r
                 populationShareF:int{48600000}\r
             }\r
             twq{\r
-                populationShareF:int{46430000}\r
+                populationShareF:int{46440000}\r
             }\r
         }\r
         NF{\r
@@ -30312,7 +29298,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49760000}\r
             }\r
             territoryF:intvector{\r
-                58114300,\r
+                58106900,\r
                 49990000,\r
                 53221000,\r
             }\r
@@ -30338,15 +29324,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49530000}\r
             }\r
             fuv{\r
-                literacyShareF:int{49200000}\r
                 populationShareF:int{48670000}\r
-            }\r
-            ha{\r
-                populationShareF:int{49130000}\r
+                writingShareF:int{49200000}\r
             }\r
             ha_Arab{\r
                 populationShareF:int{48100000}\r
             }\r
+            ha_Latn{\r
+                populationShareF:int{49130000}\r
+            }\r
             ibb{\r
                 populationShareF:int{48140000}\r
             }\r
@@ -30363,13 +29349,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{49210000}\r
             }\r
             territoryF:intvector{\r
-                62108900,\r
+                62105300,\r
                 49613000,\r
-                58186053,\r
+                58181562,\r
             }\r
             tiv{\r
-                literacyShareF:int{49250000}\r
                 populationShareF:int{48160000}\r
+                writingShareF:int{49250000}\r
             }\r
             yo{\r
                 officialStatus{"official"}\r
@@ -30382,9 +29368,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49780000}\r
             }\r
             territoryF:intvector{\r
-                60334900,\r
+                60296900,\r
                 49780000,\r
-                56596680,\r
+                56590788,\r
             }\r
         }\r
         NL{\r
@@ -30425,9 +29411,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48120000}\r
             }\r
             territoryF:intvector{\r
-                61865900,\r
+                61808800,\r
                 49990000,\r
-                57170170,\r
+                57169479,\r
             }\r
             tr{\r
                 populationShareF:int{48120000}\r
@@ -30450,9 +29436,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48330000}\r
             }\r
             territoryF:intvector{\r
-                61364700,\r
+                61346300,\r
                 50100000,\r
-                56526516,\r
+                56520769,\r
             }\r
         }\r
         NP{\r
@@ -30493,9 +29479,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48320000}\r
             }\r
             lep{\r
-                populationShareF:int{45970000}\r
+                populationShareF:int{45900000}\r
             }\r
-            lif{\r
+            lif_Deva{\r
                 populationShareF:int{48110000}\r
             }\r
             mai{\r
@@ -30515,8 +29501,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{48330000}\r
             }\r
             rjs{\r
-                literacyShareF:int{49670000}\r
                 populationShareF:int{47440000}\r
+                writingShareF:int{49670000}\r
             }\r
             taj{\r
                 populationShareF:int{48300000}\r
@@ -30528,9 +29514,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47120000}\r
             }\r
             territoryF:intvector{\r
-                60715200,\r
+                60671400,\r
                 49574000,\r
-                57290339,\r
+                57315513,\r
             }\r
             thl{\r
                 populationShareF:int{48200000}\r
@@ -30548,7 +29534,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{47430000}\r
             }\r
             unr_Deva{\r
-                populationShareF:int{46200000}\r
+                populationShareF:int{46180000}\r
             }\r
             xsr{\r
                 populationShareF:int{47520000}\r
@@ -30566,7 +29552,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58150800,\r
                 49990000,\r
-                53959100,\r
+                53954000,\r
             }\r
         }\r
         NU{\r
@@ -30591,12 +29577,12 @@ supplementalData:table(nofallback){
             }\r
             mi{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48280000}\r
+                populationShareF:int{48250000}\r
             }\r
             territoryF:intvector{\r
-                61174800,\r
+                61160800,\r
                 49990000,\r
-                56447455,\r
+                56443839,\r
             }\r
         }\r
         OM{\r
@@ -30611,9 +29597,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47940000}\r
             }\r
             territoryF:intvector{\r
-                61173100,\r
+                61163000,\r
                 49869000,\r
-                56335526,\r
+                56328694,\r
             }\r
         }\r
         PA{\r
@@ -30625,9 +29611,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49690000}\r
             }\r
             territoryF:intvector{\r
-                60931200,\r
+                60767700,\r
                 49941000,\r
-                56370525,\r
+                56365702,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{47160000}\r
@@ -30646,9 +29632,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49150000}\r
             }\r
             territoryF:intvector{\r
-                61409900,\r
+                61372700,\r
                 49896000,\r
-                57307411,\r
+                57304450,\r
             }\r
         }\r
         PF{\r
@@ -30659,7 +29645,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59715000,\r
                 49980000,\r
-                55285321,\r
+                55282703,\r
             }\r
             ty{\r
                 officialStatus{"official"}\r
@@ -30680,14 +29666,14 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60280200,\r
+                60186000,\r
                 49624000,\r
-                56679132,\r
+                56667243,\r
             }\r
             tpi{\r
-                literacyShareF:int{49450000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49710000}\r
+                writingShareF:int{49450000}\r
             }\r
         }\r
         PH{\r
@@ -30698,15 +29684,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{48300000}\r
             }\r
             bku{\r
-                populationShareF:int{45780000}\r
+                populationShareF:int{45790000}\r
             }\r
             bto{\r
                 populationShareF:int{47280000}\r
             }\r
             ceb{\r
-                literacyShareF:int{49130000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49240000}\r
+                writingShareF:int{49130000}\r
             }\r
             cps{\r
                 populationShareF:int{47670000}\r
@@ -30723,17 +29709,17 @@ supplementalData:table(nofallback){
                 populationShareF:int{49600000}\r
             }\r
             hil{\r
-                literacyShareF:int{48800000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48840000}\r
+                writingShareF:int{48800000}\r
             }\r
             hnn{\r
                 populationShareF:int{46160000}\r
             }\r
             ilo{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48960000}\r
+                writingShareF:int{49100000}\r
             }\r
             krj{\r
                 populationShareF:int{47390000}\r
@@ -30750,13 +29736,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{48230000}\r
             }\r
             tbw{\r
-                literacyShareF:int{49360000}\r
-                populationShareF:int{45970000}\r
+                populationShareF:int{45990000}\r
+                writingShareF:int{49360000}\r
             }\r
             territoryF:intvector{\r
-                61801900,\r
+                61693400,\r
                 49954000,\r
-                58102624,\r
+                58100998,\r
             }\r
             tsg{\r
                 officialStatus{"official_regional"}\r
@@ -30809,7 +29795,7 @@ supplementalData:table(nofallback){
             khw{\r
                 populationShareF:int{47150000}\r
             }\r
-            ks{\r
+            ks_Arab{\r
                 populationShareF:int{46690000}\r
             }\r
             kvx{\r
@@ -30830,17 +29816,17 @@ supplementalData:table(nofallback){
             ps{\r
                 populationShareF:int{49150000}\r
             }\r
-            sd{\r
+            sd_Arab{\r
                 populationShareF:int{49120000}\r
             }\r
             skr{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{48910000}\r
+                writingShareF:int{48100000}\r
             }\r
             territoryF:intvector{\r
-                61988200,\r
+                61884200,\r
                 49549000,\r
-                58201996,\r
+                58199086,\r
             }\r
             tg_Arab{\r
                 populationShareF:int{47330000}\r
@@ -30860,7 +29846,7 @@ supplementalData:table(nofallback){
             }\r
             de{\r
                 officialStatus{"official_regional"}\r
-                populationShareF:int{49190000}\r
+                populationShareF:int{46960000}\r
             }\r
             en{\r
                 populationShareF:int{49330000}\r
@@ -30873,9 +29859,6 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49960000}\r
             }\r
-            ru{\r
-                populationShareF:int{49180000}\r
-            }\r
             sli{\r
                 populationShareF:int{46310000}\r
             }\r
@@ -30883,9 +29866,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48130000}\r
             }\r
             territoryF:intvector{\r
-                62105200,\r
+                61959800,\r
                 49997000,\r
-                57385233,\r
+                57385622,\r
             }\r
             uk{\r
                 populationShareF:int{47390000}\r
@@ -30893,27 +29876,27 @@ supplementalData:table(nofallback){
         }\r
         PM{\r
             en{\r
-                populationShareF:int{48340000}\r
+                populationShareF:int{48330000}\r
             }\r
             fr{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49910000}\r
+                populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
                 58215300,\r
                 49990000,\r
-                53559500,\r
+                53565700,\r
             }\r
         }\r
         PN{\r
             en{\r
                 officialStatus{"official"}\r
-                populationShareF:int{49850000}\r
+                populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                56233700,\r
+                56192400,\r
                 49990000,\r
-                51540000,\r
+                51480000,\r
             }\r
         }\r
         PR{\r
@@ -30926,9 +29909,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49870000}\r
             }\r
             territoryF:intvector{\r
-                61131000,\r
+                60614600,\r
                 49903000,\r
-                56357806,\r
+                56359836,\r
             }\r
         }\r
         PS{\r
@@ -30937,9 +29920,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                60212200,\r
+                60201200,\r
                 49953000,\r
-                56445101,\r
+                56465442,\r
             }\r
         }\r
         PT{\r
@@ -30947,10 +29930,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49270000}\r
             }\r
             es{\r
-                populationShareF:int{49100000}\r
-            }\r
-            fr{\r
-                populationShareF:int{49150000}\r
+                populationShareF:int{46970000}\r
             }\r
             gl{\r
                 populationShareF:int{47140000}\r
@@ -30960,9 +29940,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                61297100,\r
+                61281400,\r
                 49954000,\r
-                57108338,\r
+                57108253,\r
             }\r
         }\r
         PW{\r
@@ -30975,9 +29955,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49740000}\r
             }\r
             territoryF:intvector{\r
-                58276000,\r
+                58250000,\r
                 49920000,\r
-                54213470,\r
+                54212650,\r
             }\r
         }\r
         PY{\r
@@ -30993,9 +29973,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49800000}\r
             }\r
             territoryF:intvector{\r
-                60641200,\r
+                60584900,\r
                 49939000,\r
-                56686281,\r
+                56678327,\r
             }\r
         }\r
         QA{\r
@@ -31007,12 +29987,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49110000}\r
             }\r
             ml{\r
-                populationShareF:int{47290000}\r
+                populationShareF:int{47300000}\r
             }\r
             territoryF:intvector{\r
-                61334500,\r
+                61306600,\r
                 49963000,\r
-                56225828,\r
+                56219482,\r
             }\r
         }\r
         RE{\r
@@ -31045,12 +30025,6 @@ supplementalData:table(nofallback){
             en{\r
                 populationShareF:int{49310000}\r
             }\r
-            es{\r
-                populationShareF:int{49100000}\r
-            }\r
-            fr{\r
-                populationShareF:int{49170000}\r
-            }\r
             hu{\r
                 populationShareF:int{48660000}\r
             }\r
@@ -31065,9 +30039,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47120000}\r
             }\r
             territoryF:intvector{\r
-                61441000,\r
+                61393800,\r
                 49977000,\r
-                57215997,\r
+                57216664,\r
             }\r
             tr{\r
                 populationShareF:int{47130000}\r
@@ -31093,7 +30067,7 @@ supplementalData:table(nofallback){
             sq{\r
                 populationShareF:int{49190000}\r
             }\r
-            sr{\r
+            sr_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49990000}\r
             }\r
@@ -31103,9 +30077,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                61101500,\r
+                60958400,\r
                 49980000,\r
-                56714392,\r
+                56717679,\r
             }\r
             uk{\r
                 officialStatus{"official_regional"}\r
@@ -31155,8 +30129,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{46120000}\r
             }\r
             hy{\r
-                literacyShareF:int{49500000}\r
                 populationShareF:int{47840000}\r
+                writingShareF:int{49500000}\r
             }\r
             inh{\r
                 officialStatus{"official_regional"}\r
@@ -31200,7 +30174,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47210000}\r
             }\r
-            mn{\r
+            mn_Cyrl{\r
                 populationShareF:int{45150000}\r
             }\r
             mrj{\r
@@ -31225,9 +30199,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{45350000}\r
             }\r
             territoryF:intvector{\r
-                62374500,\r
+                62357700,\r
                 49997000,\r
-                58142355,\r
+                58142424,\r
             }\r
             tt{\r
                 officialStatus{"official_regional"}\r
@@ -31262,9 +30236,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49770000}\r
             }\r
             territoryF:intvector{\r
-                60219700,\r
+                60189000,\r
                 49711000,\r
-                57129884,\r
+                57126617,\r
             }\r
         }\r
         SA{\r
@@ -31273,9 +30247,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                62173100,\r
+                62161000,\r
                 49872000,\r
-                57281603,\r
+                57277523,\r
             }\r
         }\r
         SB{\r
@@ -31287,9 +30261,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48160000}\r
             }\r
             territoryF:intvector{\r
-                59119800,\r
+                59109400,\r
                 49841000,\r
-                55635027,\r
+                55622469,\r
             }\r
         }\r
         SC{\r
@@ -31305,9 +30279,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49600000}\r
             }\r
             territoryF:intvector{\r
-                59260800,\r
+                59242400,\r
                 49918000,\r
-                54931860,\r
+                54924300,\r
             }\r
         }\r
         SD{\r
@@ -31335,9 +30309,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47990000}\r
             }\r
             territoryF:intvector{\r
-                61176300,\r
+                61160200,\r
                 49719000,\r
-                57367295,\r
+                57361089,\r
             }\r
             zag{\r
                 populationShareF:int{47510000}\r
@@ -31358,14 +30332,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{0}\r
             }\r
             rmu{\r
-                populationShareF:int{46960000}\r
+                populationShareF:int{46970000}\r
             }\r
             se{\r
                 populationShareF:int{47330000}\r
             }\r
             sma{\r
-                literacyShareF:int{49750000}\r
-                populationShareF:int{45300000}\r
+                populationShareF:int{45310000}\r
+                writingShareF:int{49750000}\r
             }\r
             smj{\r
                 populationShareF:int{46150000}\r
@@ -31375,12 +30349,12 @@ supplementalData:table(nofallback){
                 populationShareF:int{49950000}\r
             }\r
             territoryF:intvector{\r
-                61498100,\r
+                61450500,\r
                 49990000,\r
-                56988060,\r
+                56980162,\r
             }\r
             yi{\r
-                populationShareF:int{46300000}\r
+                populationShareF:int{46310000}\r
             }\r
         }\r
         SG{\r
@@ -31389,25 +30363,25 @@ supplementalData:table(nofallback){
                 populationShareF:int{49930000}\r
             }\r
             ml{\r
-                populationShareF:int{47170000}\r
+                populationShareF:int{47180000}\r
             }\r
-            ms{\r
+            ms_Latn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49140000}\r
             }\r
-            pa{\r
-                populationShareF:int{47160000}\r
+            pa_Guru{\r
+                populationShareF:int{47170000}\r
             }\r
             ta{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48210000}\r
             }\r
             territoryF:intvector{\r
-                61486900,\r
+                61454300,\r
                 49959000,\r
-                56578173,\r
+                56567447,\r
             }\r
-            zh{\r
+            zh_Hans{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49770000}\r
             }\r
@@ -31424,15 +30398,9 @@ supplementalData:table(nofallback){
             }\r
         }\r
         SI{\r
-            de{\r
-                populationShareF:int{49420000}\r
-            }\r
             en{\r
                 populationShareF:int{49590000}\r
             }\r
-            hr{\r
-                populationShareF:int{49610000}\r
-            }\r
             hu{\r
                 populationShareF:int{47470000}\r
             }\r
@@ -31444,9 +30412,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49870000}\r
             }\r
             territoryF:intvector{\r
-                60661300,\r
+                60615600,\r
                 49997000,\r
-                56197803,\r
+                56198341,\r
             }\r
         }\r
         SJ{\r
@@ -31458,17 +30426,14 @@ supplementalData:table(nofallback){
                 populationShareF:int{49640000}\r
             }\r
             territoryF:intvector{\r
-                58129700,\r
+                58124500,\r
                 50100000,\r
                 53187200,\r
             }\r
         }\r
         SK{\r
-            cs{\r
-                populationShareF:int{49470000}\r
-            }\r
             de{\r
-                populationShareF:int{49220000}\r
+                populationShareF:int{47280000}\r
             }\r
             en{\r
                 populationShareF:int{49260000}\r
@@ -31484,9 +30449,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                61169100,\r
+                61153200,\r
                 49996000,\r
-                56544580,\r
+                56544503,\r
             }\r
             uk{\r
                 populationShareF:int{48190000}\r
@@ -31504,91 +30469,91 @@ supplementalData:table(nofallback){
                 populationShareF:int{49270000}\r
             }\r
             tem{\r
-                literacyShareF:int{48600000}\r
                 populationShareF:int{49260000}\r
+                writingShareF:int{48600000}\r
             }\r
             territoryF:intvector{\r
-                60106400,\r
+                60128000,\r
                 49433000,\r
-                56601889,\r
+                56587910,\r
             }\r
         }\r
         SM{\r
             eo{\r
-                populationShareF:int{47900000}\r
+                populationShareF:int{47910000}\r
             }\r
             it{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49890000}\r
             }\r
             territoryF:intvector{\r
-                59202300,\r
+                59191400,\r
                 49960000,\r
-                54332850,\r
+                54330200,\r
             }\r
         }\r
         SN{\r
             bjt{\r
-                literacyShareF:int{50100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47610000}\r
+                writingShareF:int{50100000}\r
             }\r
             bsc{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46980000}\r
+                writingShareF:int{49100000}\r
             }\r
             dyo{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48260000}\r
+                writingShareF:int{49100000}\r
             }\r
             ff{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49210000}\r
             }\r
             fr{\r
-                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49390000}\r
+                writingShareF:int{50100000}\r
             }\r
             knf{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47210000}\r
+                writingShareF:int{49100000}\r
             }\r
             mey{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
-                populationShareF:int{46500000}\r
+                populationShareF:int{46510000}\r
+                writingShareF:int{49100000}\r
             }\r
             mfv{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47770000}\r
+                writingShareF:int{49100000}\r
             }\r
             sav{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48150000}\r
             }\r
             snf{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{47240000}\r
+                writingShareF:int{49100000}\r
             }\r
             srr{\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49110000}\r
             }\r
             territoryF:intvector{\r
-                60397200,\r
+                60342000,\r
                 49497000,\r
-                57143201,\r
+                57139758,\r
             }\r
             tnr{\r
-                literacyShareF:int{49100000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{46240000}\r
+                writingShareF:int{49100000}\r
             }\r
             wo{\r
                 officialStatus{"de_facto_official"}\r
@@ -31597,9 +30562,9 @@ supplementalData:table(nofallback){
         }\r
         SO{\r
             ar{\r
-                literacyShareF:int{49990000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49340000}\r
+                writingShareF:int{49990000}\r
             }\r
             om{\r
                 populationShareF:int{47420000}\r
@@ -31612,9 +30577,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48200000}\r
             }\r
             territoryF:intvector{\r
-                59443100,\r
+                59589600,\r
                 49378000,\r
-                57108174,\r
+                57106164,\r
             }\r
         }\r
         SR{\r
@@ -31623,13 +30588,13 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             srn{\r
-                literacyShareF:int{49750000}\r
                 populationShareF:int{49680000}\r
+                writingShareF:int{49750000}\r
             }\r
             territoryF:intvector{\r
-                59854700,\r
+                59898700,\r
                 49947000,\r
-                55585824,\r
+                55579633,\r
             }\r
             zh_Hant{\r
                 populationShareF:int{48120000}\r
@@ -31647,9 +30612,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48560000}\r
             }\r
             territoryF:intvector{\r
-                60208800,\r
+                60235000,\r
                 49270000,\r
-                57125307,\r
+                57120429,\r
             }\r
         }\r
         ST{\r
@@ -31658,9 +30623,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49850000}\r
             }\r
             territoryF:intvector{\r
-                58694000,\r
+                58626000,\r
                 49695000,\r
-                55197541,\r
+                55194006,\r
             }\r
         }\r
         SV{\r
@@ -31669,9 +30634,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49890000}\r
             }\r
             territoryF:intvector{\r
-                60547900,\r
+                60511900,\r
                 49845000,\r
-                56615667,\r
+                56614135,\r
             }\r
         }\r
         SX{\r
@@ -31684,15 +30649,15 @@ supplementalData:table(nofallback){
             }\r
             nl{\r
                 officialStatus{"official"}\r
-                populationShareF:int{48380000}\r
+                populationShareF:int{48400000}\r
             }\r
             territoryF:intvector{\r
                 58365800,\r
                 49990000,\r
-                54414860,\r
+                54396890,\r
             }\r
             vic{\r
-                populationShareF:int{48750000}\r
+                populationShareF:int{48780000}\r
             }\r
         }\r
         SY{\r
@@ -31707,7 +30672,7 @@ supplementalData:table(nofallback){
             hy{\r
                 populationShareF:int{48180000}\r
             }\r
-            ku{\r
+            ku_Latn{\r
                 populationShareF:int{48800000}\r
             }\r
             syr{\r
@@ -31715,9 +30680,9 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60558000,\r
+                61107600,\r
                 49841000,\r
-                57171852,\r
+                57170649,\r
             }\r
         }\r
         SZ{\r
@@ -31730,9 +30695,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49580000}\r
             }\r
             territoryF:intvector{\r
-                60110600,\r
+                60105600,\r
                 49878000,\r
-                56145143,\r
+                56143561,\r
             }\r
             ts{\r
                 populationShareF:int{48170000}\r
@@ -31746,7 +30711,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{49990000}\r
             }\r
             territoryF:intvector{\r
-                57119000,\r
+                57110200,\r
                 49990000,\r
                 52275000,\r
             }\r
@@ -31759,7 +30724,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58632000,\r
                 49980000,\r
-                54514300,\r
+                54502800,\r
             }\r
         }\r
         TD{\r
@@ -31772,18 +30737,18 @@ supplementalData:table(nofallback){
                 populationShareF:int{49260000}\r
             }\r
             territoryF:intvector{\r
-                60305900,\r
+                60296400,\r
                 49354000,\r
-                57118525,\r
+                57116315,\r
             }\r
         }\r
         TF{\r
             fr{\r
-                literacyShareF:int{50100000}\r
                 populationShareF:int{50100000}\r
+                writingShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                56573300,\r
+                56545000,\r
                 49990000,\r
                 52140000,\r
             }\r
@@ -31796,14 +30761,10 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49610000}\r
             }\r
-            ife{\r
-                literacyShareF:int{49150000}\r
-                populationShareF:int{48130000}\r
-            }\r
             territoryF:intvector{\r
-                60116100,\r
+                60101600,\r
                 49604000,\r
-                56775694,\r
+                56755232,\r
             }\r
         }\r
         TH{\r
@@ -31811,15 +30772,15 @@ supplementalData:table(nofallback){
                 populationShareF:int{49270000}\r
             }\r
             kdt{\r
-                literacyShareF:int{49500000}\r
                 populationShareF:int{47480000}\r
+                writingShareF:int{49500000}\r
             }\r
             kxm{\r
                 populationShareF:int{48170000}\r
             }\r
             lcp{\r
-                literacyShareF:int{49250000}\r
                 populationShareF:int{46100000}\r
+                writingShareF:int{49250000}\r
             }\r
             lwl{\r
                 populationShareF:int{46100000}\r
@@ -31842,14 +30803,14 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62116100,\r
+                62107000,\r
                 49935000,\r
-                57682008,\r
+                57679764,\r
             }\r
             th{\r
-                literacyShareF:int{49930000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49800000}\r
+                writingShareF:int{49930000}\r
             }\r
             tts{\r
                 populationShareF:int{49240000}\r
@@ -31870,11 +30831,11 @@ supplementalData:table(nofallback){
                 populationShareF:int{49120000}\r
             }\r
             territoryF:intvector{\r
-                60258100,\r
+                60224000,\r
                 49997000,\r
-                56833095,\r
+                56819196,\r
             }\r
-            tg{\r
+            tg_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{50100000}\r
             }\r
@@ -31897,14 +30858,14 @@ supplementalData:table(nofallback){
         }\r
         TL{\r
             pt{\r
-                literacyShareF:int{50100000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49590000}\r
+                writingShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59497500,\r
+                59674500,\r
                 49583000,\r
-                56126107,\r
+                56123112,\r
             }\r
             tet{\r
                 officialStatus{"official"}\r
@@ -31912,22 +30873,22 @@ supplementalData:table(nofallback){
             }\r
         }\r
         TM{\r
-            ku{\r
+            ku_Latn{\r
                 populationShareF:int{47410000}\r
             }\r
             ru{\r
                 populationShareF:int{49120000}\r
             }\r
             territoryF:intvector{\r
-                60947700,\r
+                60824000,\r
                 49996000,\r
-                56529132,\r
+                56523142,\r
             }\r
-            tk{\r
+            tk_Latn{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49700000}\r
             }\r
-            uz{\r
+            uz_Latn{\r
                 populationShareF:int{48900000}\r
             }\r
         }\r
@@ -31944,9 +30905,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49740000}\r
             }\r
             territoryF:intvector{\r
-                61130800,\r
+                61124700,\r
                 49791000,\r
-                57111346,\r
+                57110372,\r
             }\r
         }\r
         TO{\r
@@ -31955,9 +30916,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49280000}\r
             }\r
             territoryF:intvector{\r
-                58557000,\r
+                58502000,\r
                 49990000,\r
-                55106513,\r
+                55106501,\r
             }\r
             to{\r
                 officialStatus{"official"}\r
@@ -31974,12 +30935,12 @@ supplementalData:table(nofallback){
             ar{\r
                 populationShareF:int{47560000}\r
             }\r
-            az{\r
-                populationShareF:int{47740000}\r
-            }\r
             az_Arab{\r
                 populationShareF:int{47650000}\r
             }\r
+            az_Latn{\r
+                populationShareF:int{47740000}\r
+            }\r
             bg{\r
                 populationShareF:int{47420000}\r
             }\r
@@ -32004,16 +30965,16 @@ supplementalData:table(nofallback){
             kiu{\r
                 populationShareF:int{47190000}\r
             }\r
-            kk{\r
-                populationShareF:int{44700000}\r
+            kk_Cyrl{\r
+                populationShareF:int{44800000}\r
             }\r
-            ku{\r
+            ku_Latn{\r
                 populationShareF:int{48550000}\r
             }\r
             ky_Latn{\r
                 populationShareF:int{45140000}\r
             }\r
-            lzz{\r
+            lzz_Latn{\r
                 populationShareF:int{46280000}\r
             }\r
             sq{\r
@@ -32024,18 +30985,18 @@ supplementalData:table(nofallback){
                 writingShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                62167000,\r
+                62151500,\r
                 49941000,\r
-                57802746,\r
+                57794143,\r
             }\r
             tr{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49930000}\r
             }\r
             tru{\r
-                populationShareF:int{45370000}\r
+                populationShareF:int{45380000}\r
             }\r
-            uz{\r
+            uz_Latn{\r
                 populationShareF:int{45250000}\r
             }\r
             zza{\r
@@ -32051,9 +31012,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47340000}\r
             }\r
             territoryF:intvector{\r
-                60435700,\r
+                60434600,\r
                 49988000,\r
-                56122048,\r
+                56122236,\r
             }\r
         }\r
         TV{\r
@@ -32062,9 +31023,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48980000}\r
             }\r
             territoryF:intvector{\r
-                57390000,\r
+                57350000,\r
                 49950000,\r
-                54109590,\r
+                54108690,\r
             }\r
             tvl{\r
                 officialStatus{"official"}\r
@@ -32073,9 +31034,9 @@ supplementalData:table(nofallback){
         }\r
         TW{\r
             territoryF:intvector{\r
-                62112500,\r
+                62107900,\r
                 49961000,\r
-                57234648,\r
+                57234151,\r
             }\r
             trv{\r
                 populationShareF:int{46200000}\r
@@ -32109,8 +31070,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47870000}\r
             }\r
             mas{\r
-                literacyShareF:int{49500000}\r
                 populationShareF:int{48150000}\r
+                writingShareF:int{49500000}\r
             }\r
             mgy{\r
                 populationShareF:int{48140000}\r
@@ -32125,8 +31086,8 @@ supplementalData:table(nofallback){
                 populationShareF:int{47220000}\r
             }\r
             sbp{\r
-                literacyShareF:int{48100000}\r
                 populationShareF:int{47200000}\r
+                writingShareF:int{48100000}\r
             }\r
             suk{\r
                 populationShareF:int{48870000}\r
@@ -32136,9 +31097,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49900000}\r
             }\r
             territoryF:intvector{\r
-                61150600,\r
+                61128200,\r
                 49678000,\r
-                57524827,\r
+                57510459,\r
             }\r
             vun{\r
                 populationShareF:int{47750000}\r
@@ -32151,9 +31112,6 @@ supplementalData:table(nofallback){
             bg{\r
                 populationShareF:int{47490000}\r
             }\r
-            crh{\r
-                populationShareF:int{47560000}\r
-            }\r
             el{\r
                 populationShareF:int{46160000}\r
             }\r
@@ -32174,9 +31132,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48120000}\r
             }\r
             territoryF:intvector{\r
-                61349800,\r
+                61371800,\r
                 49997000,\r
-                57442097,\r
+                57444295,\r
             }\r
             tr{\r
                 populationShareF:int{47420000}\r
@@ -32201,7 +31159,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{48390000}\r
             }\r
             hi{\r
-                populationShareF:int{45570000}\r
+                populationShareF:int{45590000}\r
             }\r
             laj{\r
                 populationShareF:int{48380000}\r
@@ -32226,9 +31184,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48390000}\r
             }\r
             territoryF:intvector{\r
-                60849300,\r
+                60750800,\r
                 49732000,\r
-                57383192,\r
+                57371017,\r
             }\r
             ttj{\r
                 populationShareF:int{48190000}\r
@@ -32243,7 +31201,7 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                57181000,\r
+                57170600,\r
                 49990000,\r
                 52316000,\r
             }\r
@@ -32312,9 +31270,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{47240000}\r
             }\r
             territoryF:intvector{\r
-                63185600,\r
+                63173500,\r
                 49990000,\r
-                58323996,\r
+                58321369,\r
             }\r
             vi{\r
                 populationShareF:int{47340000}\r
@@ -32332,9 +31290,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49880000}\r
             }\r
             territoryF:intvector{\r
-                60739300,\r
+                60716800,\r
                 49981000,\r
-                56335102,\r
+                56334189,\r
             }\r
         }\r
         UZ{\r
@@ -32345,34 +31303,33 @@ supplementalData:table(nofallback){
                 populationShareF:int{49140000}\r
             }\r
             territoryF:intvector{\r
-                61202300,\r
+                61172300,\r
                 49994000,\r
-                57294736,\r
+                57291999,\r
             }\r
             tr{\r
                 populationShareF:int{47760000}\r
             }\r
-            uz{\r
-                officialStatus{"official"}\r
-                populationShareF:int{49850000}\r
-            }\r
             uz_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{49150000}\r
             }\r
+            uz_Latn{\r
+                officialStatus{"official"}\r
+                populationShareF:int{49850000}\r
+            }\r
         }\r
         VA{\r
             it{\r
-                officialStatus{"de_facto_official"}\r
-                populationShareF:int{49820000}\r
+                populationShareF:int{49980000}\r
             }\r
             la{\r
-                populationShareF:int{49820000}\r
+                populationShareF:int{49980000}\r
             }\r
             territoryF:intvector{\r
-                57358200,\r
+                57290600,\r
                 50100000,\r
-                53100000,\r
+                52842000,\r
             }\r
         }\r
         VC{\r
@@ -32381,9 +31338,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49960000}\r
             }\r
             territoryF:intvector{\r
-                59124100,\r
+                59117400,\r
                 49960000,\r
-                55102350,\r
+                55102627,\r
             }\r
         }\r
         VE{\r
@@ -32392,9 +31349,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49820000}\r
             }\r
             territoryF:intvector{\r
-                61468600,\r
+                61540900,\r
                 49955000,\r
-                57309123,\r
+                57292755,\r
             }\r
         }\r
         VG{\r
@@ -32405,7 +31362,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 58500000,\r
                 49978000,\r
-                54342320,\r
+                54334540,\r
             }\r
         }\r
         VI{\r
@@ -32416,18 +31373,18 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 59379200,\r
                 49990000,\r
-                55102951,\r
+                55103574,\r
             }\r
         }\r
         VN{\r
             cjm{\r
-                literacyShareF:int{49600000}\r
                 populationShareF:int{46890000}\r
+                writingShareF:int{49600000}\r
             }\r
             territoryF:intvector{\r
-                61594900,\r
+                61512600,\r
                 49934000,\r
-                57952610,\r
+                57943488,\r
             }\r
             vi{\r
                 officialStatus{"official"}\r
@@ -32451,9 +31408,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49500000}\r
             }\r
             territoryF:intvector{\r
-                58723000,\r
+                58683000,\r
                 49832000,\r
-                55277554,\r
+                55272264,\r
             }\r
         }\r
         WF{\r
@@ -32467,7 +31424,7 @@ supplementalData:table(nofallback){
             territoryF:intvector{\r
                 57600000,\r
                 49500000,\r
-                54156640,\r
+                54156130,\r
             }\r
             wls{\r
                 populationShareF:int{49600000}\r
@@ -32483,9 +31440,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{50100000}\r
             }\r
             territoryF:intvector{\r
-                59104600,\r
+                58997000,\r
                 49988000,\r
-                55198926,\r
+                55197773,\r
             }\r
         }\r
         XK{\r
@@ -32496,7 +31453,7 @@ supplementalData:table(nofallback){
                 officialStatus{"official"}\r
                 populationShareF:int{49920000}\r
             }\r
-            sr{\r
+            sr_Cyrl{\r
                 officialStatus{"official"}\r
                 populationShareF:int{48500000}\r
             }\r
@@ -32505,9 +31462,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48500000}\r
             }\r
             territoryF:intvector{\r
-                60184900,\r
+                60169200,\r
                 49919000,\r
-                56188302,\r
+                56187098,\r
             }\r
         }\r
         YE{\r
@@ -32519,9 +31476,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{48900000}\r
             }\r
             territoryF:intvector{\r
-                60734500,\r
+                61104000,\r
                 49653000,\r
-                57273928,\r
+                57267373,\r
             }\r
         }\r
         YT{\r
@@ -32546,72 +31503,72 @@ supplementalData:table(nofallback){
         }\r
         ZA{\r
             af{\r
-                literacyShareF:int{49990000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49130000}\r
+                writingShareF:int{49990000}\r
             }\r
             en{\r
-                literacyShareF:int{49990000}\r
                 officialStatus{"official"}\r
                 populationShareF:int{49310000}\r
+                writingShareF:int{49990000}\r
             }\r
             hi{\r
-                literacyShareF:int{49690000}\r
                 populationShareF:int{48200000}\r
+                writingShareF:int{49690000}\r
             }\r
             nr{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48160000}\r
+                writingShareF:int{49500000}\r
             }\r
             nso{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48940000}\r
+                writingShareF:int{49500000}\r
             }\r
             ss{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48270000}\r
+                writingShareF:int{49500000}\r
             }\r
             st{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48790000}\r
+                writingShareF:int{49500000}\r
             }\r
             sw{\r
-                literacyShareF:int{49500000}\r
-                populationShareF:int{45180000}\r
+                populationShareF:int{45190000}\r
+                writingShareF:int{49500000}\r
             }\r
             territoryF:intvector{\r
-                61736300,\r
+                61707100,\r
                 49930000,\r
-                57543007,\r
+                57536756,\r
             }\r
             tn{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48820000}\r
+                writingShareF:int{49500000}\r
             }\r
             ts{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48440000}\r
+                writingShareF:int{49500000}\r
             }\r
             ve{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{48230000}\r
+                writingShareF:int{49500000}\r
             }\r
             xh{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49180000}\r
+                writingShareF:int{49500000}\r
             }\r
             zu{\r
-                literacyShareF:int{49500000}\r
                 officialStatus{"official_regional"}\r
                 populationShareF:int{49240000}\r
+                writingShareF:int{49500000}\r
             }\r
         }\r
         ZM{\r
@@ -32629,9 +31586,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49150000}\r
             }\r
             territoryF:intvector{\r
-                60651700,\r
+                60613900,\r
                 49614000,\r
-                57155107,\r
+                57150663,\r
             }\r
         }\r
         ZW{\r
@@ -32660,9 +31617,9 @@ supplementalData:table(nofallback){
                 populationShareF:int{49810000}\r
             }\r
             territoryF:intvector{\r
-                60283300,\r
+                60272600,\r
                 49836000,\r
-                57145470,\r
+                57142295,\r
             }\r
             tn{\r
                 populationShareF:int{47220000}\r
index c85fd3d..af9e67d 100644 (file)
@@ -80,9 +80,10 @@ timezoneTypes:table(nofallback){
             "Etc:GMT-0"{"Etc/GMT"}\r
             "Etc:GMT0"{"Etc/GMT"}\r
             "Etc:Greenwich"{"Etc/GMT"}\r
-            "Etc:UCT"{"Etc/UTC"}\r
-            "Etc:Universal"{"Etc/UTC"}\r
-            "Etc:Zulu"{"Etc/UTC"}\r
+            "Etc:UCT"{"Etc/GMT"}\r
+            "Etc:UTC"{"Etc/GMT"}\r
+            "Etc:Universal"{"Etc/GMT"}\r
+            "Etc:Zulu"{"Etc/GMT"}\r
             "Europe:Belfast"{"Europe/London"}\r
             "Europe:Nicosia"{"Asia/Nicosia"}\r
             "Europe:Tiraspol"{"Europe/Chisinau"}\r
@@ -137,11 +138,11 @@ timezoneTypes:table(nofallback){
             ROK{"Asia/Seoul"}\r
             Singapore{"Asia/Singapore"}\r
             Turkey{"Europe/Istanbul"}\r
-            UCT{"Etc/UTC"}\r
-            UTC{"Etc/UTC"}\r
-            Universal{"Etc/UTC"}\r
+            UCT{"Etc/GMT"}\r
+            UTC{"Etc/GMT"}\r
+            Universal{"Etc/GMT"}\r
             W-SU{"Europe/Moscow"}\r
-            Zulu{"Etc/UTC"}\r
+            Zulu{"Etc/GMT"}\r
         }\r
     }\r
     typeMap{\r
@@ -315,7 +316,6 @@ timezoneTypes:table(nofallback){
             "America:Port_of_Spain"{"ttpos"}\r
             "America:Porto_Velho"{"brpvh"}\r
             "America:Puerto_Rico"{"prsju"}\r
-            "America:Punta_Arenas"{"clpuq"}\r
             "America:Rainy_River"{"caffs"}\r
             "America:Rankin_Inlet"{"cayek"}\r
             "America:Recife"{"brrec"}\r
@@ -463,7 +463,7 @@ timezoneTypes:table(nofallback){
             "Australia:Melbourne"{"aumel"}\r
             "Australia:Perth"{"auper"}\r
             "Australia:Sydney"{"ausyd"}\r
-            "Etc:GMT"{"gmt"}\r
+            "Etc:GMT"{"utc"}\r
             "Etc:GMT+1"{"utcw01"}\r
             "Etc:GMT+10"{"utcw10"}\r
             "Etc:GMT+11"{"utcw11"}\r
@@ -490,7 +490,6 @@ timezoneTypes:table(nofallback){
             "Etc:GMT-7"{"utce07"}\r
             "Etc:GMT-8"{"utce08"}\r
             "Etc:GMT-9"{"utce09"}\r
-            "Etc:UTC"{"utc"}\r
             "Etc:Unknown"{"unk"}\r
             "Europe:Amsterdam"{"nlams"}\r
             "Europe:Andorra"{"adalv"}\r
index ca49b9e..12cb9f7 100644 (file)
@@ -457,6 +457,7 @@ windowsZones:table(nofallback){
         }\r
         "Pacific SA Standard Time"{\r
             001{"America/Santiago"}\r
+            AQ{"Antarctica/Palmer"}\r
             CL{"America/Santiago"}\r
         }\r
         "Pacific Standard Time (Mexico)"{\r
@@ -503,12 +504,11 @@ windowsZones:table(nofallback){
         }\r
         "SA Eastern Standard Time"{\r
             001{"America/Cayenne"}\r
-            AQ{"Antarctica/Rothera Antarctica/Palmer"}\r
+            AQ{"Antarctica/Rothera"}\r
             BR{\r
                 "America/Fortaleza America/Belem America/Maceio America/Recife Americ"\r
                 "a/Santarem"\r
             }\r
-            CL{"America/Punta_Arenas"}\r
             FK{"Atlantic/Stanley"}\r
             GF{"America/Cayenne"}\r
             SR{"America/Paramaribo"}\r
@@ -648,7 +648,6 @@ windowsZones:table(nofallback){
         }\r
         "Turkey Standard Time"{\r
             001{"Europe/Istanbul"}\r
-            CY{"Asia/Famagusta"}\r
             TR{"Europe/Istanbul"}\r
         }\r
         "Turks And Caicos Standard Time"{\r
@@ -669,7 +668,7 @@ windowsZones:table(nofallback){
         "UTC"{\r
             001{"Etc/GMT"}\r
             GL{"America/Danmarkshavn"}\r
-            ZZ{"Etc/GMT Etc/UTC"}\r
+            ZZ{"Etc/GMT"}\r
         }\r
         "UTC+12"{\r
             001{"Etc/GMT-12"}\r
index 41aa2ad..c7d846b 100644 (file)
@@ -3,20 +3,20 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 //---------------------------------------------------------\r
 // Build tool:  tz2icu\r
-// Build date:  Mon Mar 20 17:49:58 2017\r
+// Build date:  Tue Nov 29 01:50:23 2016\r
 // tz database: ftp://ftp.iana.org/tz/\r
-// tz version:  2017b\r
-// ICU version: 59.1\r
+// tz version:  2016j\r
+// ICU version: 58.1\r
 //---------------------------------------------------------\r
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<\r
 // >> !!! >>>            DO NOT EDIT             <<< !!! <<\r
 //---------------------------------------------------------\r
 \r
 zoneinfo64:table(nofallback) {\r
- TZVersion { "2017b" }\r
+ TZVersion { "2016j" }\r
  Zones:array { \r
-  /* ACT */ :int { 354 } //Z#0\r
-  /* AET */ :int { 366 } //Z#1\r
+  /* ACT */ :int { 353 } //Z#0\r
+  /* AET */ :int { 365 } //Z#1\r
   /* AGT */ :int { 64 } //Z#2\r
   /* ART */ :int { 18 } //Z#3\r
   /* AST */ :int { 60 } //Z#4\r
@@ -24,7 +24,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1830383032 }\r
     typeOffsets:intvector { -968, 0, 0, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 54, 55, 346 }\r
+    links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 54, 55, 345 }\r
   } //Z#5\r
   /* Africa/Accra */ :table {\r
     trans:intvector { -1640995148, -1556841600, -1546388400, -1525305600, -1514852400, -1493769600, -1483316400, -1462233600, -1451780400, -1430611200, -1420158000, -1399075200, -1388622000, -1367539200, -1357086000, -1336003200, -1325550000, -1304380800, -1293927600, -1272844800, -1262391600, -1241308800, -1230855600, -1209772800, -1199319600, -1178150400, -1167697200, -1146614400, -1136161200, -1115078400, -1104625200, -1083542400, -1073089200, -1051920000, -1041466800, -1020384000, -1009930800, -988848000, -978394800, -957312000, -946858800, -925689600, -915236400, -894153600, -883700400, -862617600, -852164400 }\r
@@ -56,7 +56,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -929844000, -923108400, -906170400, -892868400, -875844000, -857790000, -844308000, -825822000, -812685600, -794199600, -779853600, -762663600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -71107200, -52707600, -39484800, -21171600, -7948800, 10364400, 23587200, 41900400, 55123200, 73522800, 86745600, 105058800, 118281600, 136594800, 149817600, 168130800, 181353600, 199753200, 212976000, 231289200, 244512000, 262825200, 276048000, 294361200, 307584000, 325983600, 339206400, 357519600, 370742400, 396399600, 402278400, 426812400, 433814400, 452214000, 465436800, 483750000, 496972800, 515286000, 528508800, 546822000, 560044800, 578444400, 591667200, 610412400, 623203200, 641516400, 654739200, 673052400, 686275200, 704674800, 717897600, 736210800, 749433600, 767746800, 780969600, 799020000, 812322000, 830469600, 843771600, 861919200, 875221200, 893368800, 906670800, 925423200, 938725200, 956872800, 970174800, 988322400, 1001624400, 1019772000, 1033074000, 1051221600, 1064523600, 1083276000, 1096578000, 1114725600, 1128027600, 1146175200, 1158872400, 1177624800, 1189112400, 1209074400, 1219957200, 1240524000, 1250802000, 1272578400, 1281474000, 1284069600, 1285880400, 1400191200, 1403816400, 1406844000, 1411678800 }\r
     typeOffsets:intvector { 7509, 0, 7200, 0, 7200, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 3, 18, 400 }\r
+    links:intvector { 3, 18, 399 }\r
   } //Z#18\r
   /* Africa/Casablanca */ :table {\r
     trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1540692000, 1553997600, 1557021600, 1560045600, 1572141600, 1585447200, 1587261600, 1590285600, 1603591200, 1616896800, 1618106400, 1621130400, 1635645600, 1651975200, 1667095200, 1682215200, 1698544800, 1713060000, 1729994400, 1743904800, 1761444000, 1774749600, 1792893600, 1806199200, 1824948000, 1837648800, 1856397600, 1869098400, 1887847200, 1901152800, 1919296800, 1932602400, 1950746400, 1964052000, 1982800800, 1995501600, 2014250400, 2026951200, 2045700000, 2058400800, 2077149600, 2090455200, 2107994400, 2121904800, 2138234400 }\r
@@ -68,8 +68,8 @@ zoneinfo64:table(nofallback) {
     finalYear:int { 2039 }\r
   } //Z#19\r
   /* Africa/Ceuta */ :table {\r
-    transPre32:intvector { -1, 2117514496 }\r
-    trans:intvector { -1630112400, -1616810400, -1442451600, -1427673600, -1379293200, -1364774400, -1348448400, -1333324800, -1316390400, -1301270400, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
+    transPre32:intvector { -1, 2117515772 }\r
+    trans:intvector { -1630112400, -1616810400, -1442451600, -1427677200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -1276, 0, 0, 0, 0, 3600, 3600, 0, 3600, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010304030403040304030403040304030403040304030403" }\r
     finalRule { "EU" }\r
@@ -126,13 +126,13 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -2109291020 }\r
     typeOffsets:intvector { 7820, 0, 7200, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 377 }\r
+    links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 376 }\r
   } //Z#43\r
   /* Africa/Maseru */ :int { 30 } //Z#44\r
   /* Africa/Mbabane */ :int { 30 } //Z#45\r
   /* Africa/Mogadishu */ :int { 48 } //Z#46\r
   /* Africa/Monrovia */ :table {\r
-    trans:intvector { -1604359012, 63593070 }\r
+    trans:intvector { -1604359012, 73529070 }\r
     typeOffsets:intvector { -2588, 0, -2670, 0, 0, 0 }\r
     typeMap:bin { "0102" }\r
   } //Z#47\r
@@ -140,7 +140,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1309746436, -1262314800, -946780200, -315629100 }\r
     typeOffsets:intvector { 8836, 0, 9000, 0, 9900, 0, 10800, 0 }\r
     typeMap:bin { "03010203" }\r
-    links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 395, 514, 518, 523 }\r
+    links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 394, 513, 517, 522 }\r
   } //Z#48\r
   /* Africa/Ndjamena */ :table {\r
     trans:intvector { -1830387612, 308703600, 321314400 }\r
@@ -157,7 +157,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1577926364, -574902000, -568087200, -512175600, -504928800, -449888400, -441856800, -347158800, 378684000, 386463600, 402271200, 417999600, 433807200, 449622000, 465429600, 481590000, 496965600, 512953200, 528674400, 544230000, 560037600, 575852400, 591660000, 607388400, 623196000, 641775600, 844034400, 860108400, 875916000, 1352505600, 1364515200, 1382659200 }\r
     typeOffsets:intvector { 3164, 0, 3600, 0, 3600, 3600, 7200, 0 }\r
     typeMap:bin { "0102010201020103010201020102010201020102010201020103010203010203" }\r
-    links:intvector { 56, 531 }\r
+    links:intvector { 56, 530 }\r
   } //Z#56\r
   /* Africa/Tunis */ :table {\r
     transPre32:intvector { -1, 1497764852 }\r
@@ -182,7 +182,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -36000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 59, 80, 615 }\r
+    links:intvector { 59, 80, 614 }\r
   } //Z#59\r
   /* America/Anchorage */ :table {\r
     transPre32:intvector { -1, 1069604872, -1, 2106016072 }\r
@@ -192,7 +192,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 4, 60, 614 }\r
+    links:intvector { 4, 60, 613 }\r
   } //Z#60\r
   /* America/Anguilla */ :int { 186 } //Z#61\r
   /* America/Antigua */ :int { 186 } //Z#62\r
@@ -220,7 +220,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1224385200, 1237082400 }\r
     typeOffsets:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030403040104030403020304030403" }\r
-    links:intvector { 67, 101, 197 }\r
+    links:intvector { 67, 101, 196 }\r
   } //Z#67\r
   /* America/Argentina/Jujuy */ :table {\r
     transPre32:intvector { -1, 1922870968 }\r
@@ -392,7 +392,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 98, 380, 617 }\r
+    links:intvector { 98, 379, 616 }\r
   } //Z#98\r
   /* America/Chihuahua */ :table {\r
     trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 }\r
@@ -458,7 +458,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 109, 204, 543, 623 }\r
+    links:intvector { 109, 203, 542, 622 }\r
   } //Z#109\r
   /* America/Detroit */ :table {\r
     trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, -80499600, -68666400, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -467,7 +467,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 110, 622 }\r
+    links:intvector { 110, 621 }\r
   } //Z#110\r
   /* America/Dominica */ :int { 186 } //Z#111\r
   /* America/Edmonton */ :table {\r
@@ -477,7 +477,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 112, 387 }\r
+    links:intvector { 112, 386 }\r
   } //Z#112\r
   /* America/Eirunepe */ :table {\r
     trans:intvector { -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800, 1214283600, 1384056000 }\r
@@ -489,7 +489,7 @@ zoneinfo64:table(nofallback) {
     typeOffsets:intvector { -21408, 0, -21600, 0, -21600, 3600 }\r
     typeMap:bin { "0102010201" }\r
   } //Z#114\r
-  /* America/Ensenada */ :int { 216 } //Z#115\r
+  /* America/Ensenada */ :int { 215 } //Z#115\r
   /* America/Fort_Nelson */ :table {\r
     transPre32:intvector { -1, 1581086343 }\r
     trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800 }\r
@@ -542,9 +542,9 @@ zoneinfo64:table(nofallback) {
   } //Z#125\r
   /* America/Guayaquil */ :table {\r
     transPre32:intvector { -1, 1770464856 }\r
-    trans:intvector { -1230749160, 722926800, 728884800 }\r
-    typeOffsets:intvector { -19160, 0, -18840, 0, -18000, 0, -18000, 3600 }\r
-    typeMap:bin { "01020302" }\r
+    trans:intvector { -1230749160 }\r
+    typeOffsets:intvector { -19160, 0, -18840, 0, -18000, 0 }\r
+    typeMap:bin { "0102" }\r
   } //Z#126\r
   /* America/Guyana */ :table {\r
     trans:intvector { -1730578040, 176010300, 662698800 }\r
@@ -558,7 +558,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 128, 383 }\r
+    links:intvector { 128, 382 }\r
   } //Z#128\r
   /* America/Havana */ :table {\r
     transPre32:intvector { -1, 1770465464 }\r
@@ -568,7 +568,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Cuba" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2014 }\r
-    links:intvector { 129, 394 }\r
+    links:intvector { 129, 393 }\r
   } //Z#129\r
   /* America/Hermosillo */ :table {\r
     trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400 }\r
@@ -583,7 +583,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 117, 131, 139, 511, 618 }\r
+    links:intvector { 117, 131, 139, 510, 617 }\r
   } //Z#131\r
   /* America/Indiana/Knox */ :table {\r
     transPre32:intvector { -1, 1577320096 }\r
@@ -593,7 +593,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 132, 147, 621 }\r
+    links:intvector { 132, 147, 620 }\r
   } //Z#132\r
   /* America/Indiana/Marengo */ :table {\r
     transPre32:intvector { -1, 1577320096 }\r
@@ -670,7 +670,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1827687169, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 }\r
     typeOffsets:intvector { -18431, 0, -18000, 0, -18000, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201" }\r
-    links:intvector { 142, 528 }\r
+    links:intvector { 142, 527 }\r
   } //Z#142\r
   /* America/Jujuy */ :int { 68 } //Z#143\r
   /* America/Juneau */ :table {\r
@@ -722,7 +722,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 151, 548, 624, 625 }\r
+    links:intvector { 151, 547, 623, 624 }\r
   } //Z#151\r
   /* America/Louisville */ :int { 145 } //Z#152\r
   /* America/Lower_Princes */ :int { 105 } //Z#153\r
@@ -741,7 +741,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1767211196, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 750830400, 761713200 }\r
     typeOffsets:intvector { -14404, 0, -14400, 0, -14400, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 156, 376 }\r
+    links:intvector { 156, 375 }\r
   } //Z#156\r
   /* America/Marigot */ :int { 186 } //Z#157\r
   /* America/Martinique */ :table {\r
@@ -764,7 +764,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Mexico" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2003 }\r
-    links:intvector { 160, 537 }\r
+    links:intvector { 160, 536 }\r
   } //Z#160\r
   /* America/Mendoza */ :int { 70 } //Z#161\r
   /* America/Menominee */ :table {\r
@@ -800,7 +800,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Mexico" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2003 }\r
-    links:intvector { 165, 538 }\r
+    links:intvector { 165, 537 }\r
   } //Z#165\r
   /* America/Miquelon */ :table {\r
     trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }\r
@@ -832,7 +832,7 @@ zoneinfo64:table(nofallback) {
     typeOffsets:intvector { -13484, 0, -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010201020105030503050305030503050304030403040305030405030503050305030503050305030503050305030503050305030503050305030503050305030503" }\r
   } //Z#169\r
-  /* America/Montreal */ :int { 217 } //Z#170\r
+  /* America/Montreal */ :int { 216 } //Z#170\r
   /* America/Montserrat */ :int { 186 } //Z#171\r
   /* America/Nassau */ :table {\r
     trans:intvector { -1825095030, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -850,7 +850,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 173, 619 }\r
+    links:intvector { 173, 618 }\r
   } //Z#173\r
   /* America/Nipigon */ :table {\r
     transPre32:intvector { -1, 1928233280 }\r
@@ -874,7 +874,7 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1767217820, -1206961200, -1191366000, -1175378400, -1159830000, -633823200, -622072800, -602287200, -591836400, -570751200, -560214000, -539128800, -531356400, -191368800, -184201200, -155167200, -150073200, -128901600, -121129200, -99957600, -89593200, -68421600, -57970800, 499744800, 511232400, 530589600, 540262800, 562125600, 571194000, 592970400, 602038800, 624420000, 634698000, 938916000, 951613200, 970970400, 971571600, 1003024800, 1013907600 }\r
     typeOffsets:intvector { -7780, 0, -7200, 0, -7200, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 176, 374 }\r
+    links:intvector { 176, 373 }\r
   } //Z#176\r
   /* America/North_Dakota/Beulah */ :table {\r
     transPre32:intvector { -1, 1577323696 }\r
@@ -936,24 +936,21 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 }\r
     typeOffsets:intvector { -26898, 0, -25200, 0, -25200, 3600 }\r
     typeMap:bin { "0102010201020102010201" }\r
-    links:intvector { 184, 545, 616 }\r
+    links:intvector { 184, 544, 615 }\r
   } //Z#184\r
   /* America/Port-au-Prince */ :table {\r
     transPre32:intvector { -1, 1770463056 }\r
-    trans:intvector { -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600, 1112504400, 1130644800, 1143954000, 1162094400, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1489302000, 1509861600 }\r
+    trans:intvector { -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600, 1112504400, 1130644800, 1143954000, 1162094400, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600 }\r
     typeOffsets:intvector { -17360, 0, -18000, 0, -18000, 3600, -17340, 0 }\r
-    typeMap:bin { "03010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    finalRule { "Haiti" }\r
-    finalRaw:int { -18000 }\r
-    finalYear:int { 2018 }\r
+    typeMap:bin { "0301020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
   } //Z#185\r
   /* America/Port_of_Spain */ :table {\r
     trans:intvector { -1825098836 }\r
     typeOffsets:intvector { -14764, 0, -14400, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 61, 62, 111, 123, 124, 157, 171, 186, 206, 208, 209, 210, 211, 218, 220 }\r
+    links:intvector { 61, 62, 111, 123, 124, 157, 171, 186, 205, 207, 208, 209, 210, 217, 219 }\r
   } //Z#186\r
-  /* America/Porto_Acre */ :int { 196 } //Z#187\r
+  /* America/Porto_Acre */ :int { 195 } //Z#187\r
   /* America/Porto_Velho */ :table {\r
     trans:intvector { -1767210264, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200 }\r
     typeOffsets:intvector { -15336, 0, -14400, 0, -14400, 3600 }\r
@@ -964,14 +961,8 @@ zoneinfo64:table(nofallback) {
     trans:intvector { -873057600, -765399600 }\r
     typeOffsets:intvector { -15865, 0, -14400, 0, -14400, 3600 }\r
     typeMap:bin { "010201" }\r
-    links:intvector { 189, 547 }\r
+    links:intvector { 189, 546 }\r
   } //Z#189\r
-  /* America/Punta_Arenas */ :table {\r
-    transPre32:intvector { -1, 1770462716 }\r
-    trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }\r
-    typeOffsets:intvector { -17020, 0, -18000, 0, -18000, 3600, -16966, 0, -14400, 0, -14400, 3600, -10800, 0 }\r
-    typeMap:bin { "0301030403020102010201020102010401040104050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040506" }\r
-  } //Z#190\r
   /* America/Rainy_River */ :table {\r
     transPre32:intvector { -1, 1928234792 }\r
     trans:intvector { -1632067200, -1615136400, -923248800, -765392400, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
@@ -980,7 +971,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#191\r
+  } //Z#190\r
   /* America/Rankin_Inlet */ :table {\r
     trans:intvector { -410227200, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
     typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 }\r
@@ -988,18 +979,18 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#192\r
+  } //Z#191\r
   /* America/Recife */ :table {\r
     trans:intvector { -1767217224, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 971575200, 1003028400, 1013911200 }\r
     typeOffsets:intvector { -8376, 0, -10800, 0, -10800, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-  } //Z#193\r
+  } //Z#192\r
   /* America/Regina */ :table {\r
     trans:intvector { -2030202084, -1632063600, -1615132800, -1251651600, -1238349600, -1220202000, -1206900000, -1188752400, -1175450400, -1156698000, -1144000800, -1125248400, -1111946400, -1032714000, -1016992800, -1001264400, -986148000, -969814800, -954093600, -937760400, -922039200, -906310800, -890589600, -880210800, -765388800, -748450800, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -620838000, -608140800, -589388400, -576086400, -557938800, -544636800, -526489200, -513187200, -495039600, -481737600, -463590000, -450288000, -431535600, -418233600, -400086000, -386784000, -337186800, -321465600, -305737200 }\r
     typeOffsets:intvector { -25116, 0, -25200, 0, -25200, 3600, -21600, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }\r
-    links:intvector { 194, 385, 390 }\r
-  } //Z#194\r
+    links:intvector { 193, 384, 389 }\r
+  } //Z#193\r
   /* America/Resolute */ :table {\r
     trans:intvector { -704937600, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
     typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 }\r
@@ -1007,20 +998,20 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#195\r
+  } //Z#194\r
   /* America/Rio_Branco */ :table {\r
     trans:intvector { -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 1214283600, 1384056000 }\r
     typeOffsets:intvector { -16272, 0, -18000, 0, -18000, 3600, -14400, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010301" }\r
-    links:intvector { 187, 196, 373 }\r
-  } //Z#196\r
-  /* America/Rosario */ :int { 67 } //Z#197\r
-  /* America/Santa_Isabel */ :int { 216 } //Z#198\r
+    links:intvector { 187, 195, 372 }\r
+  } //Z#195\r
+  /* America/Rosario */ :int { 67 } //Z#196\r
+  /* America/Santa_Isabel */ :int { 215 } //Z#197\r
   /* America/Santarem */ :table {\r
     trans:intvector { -1767212472, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 1214280000 }\r
     typeOffsets:intvector { -13128, 0, -14400, 0, -14400, 3600, -10800, 0 }\r
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020103" }\r
-  } //Z#199\r
+  } //Z#198\r
   /* America/Santiago */ :table {\r
     trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736376400, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }\r
     typeOffsets:intvector { -16966, 0, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 }\r
@@ -1028,14 +1019,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "Chile" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2017 }\r
-    links:intvector { 200, 392 }\r
-  } //Z#200\r
+    links:intvector { 199, 391 }\r
+  } //Z#199\r
   /* America/Santo_Domingo */ :table {\r
     transPre32:intvector { -1, 1770462472 }\r
     trans:intvector { -1159773600, -100119600, -89668800, -5770800, 4422600, 25678800, 33193800, 57733200, 64816200, 89182800, 96438600, 120632400, 127974600, 152082000, 972799200, 975823200 }\r
     typeOffsets:intvector { -16776, 0, -18000, 0, -18000, 1800, -18000, 3600, -16800, 0, -14400, 0 }\r
     typeMap:bin { "0401030102010201020102010201050105" }\r
-  } //Z#201\r
+  } //Z#200\r
   /* America/Sao_Paulo */ :table {\r
     trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1540090800, 1550368800, 1571540400, 1581818400, 1602990000, 1613872800, 1634439600, 1645322400, 1665889200, 1677376800, 1697338800, 1708221600, 1729393200, 1739671200, 1760842800, 1771725600, 1792292400, 1803175200, 1823742000, 1834624800, 1855191600, 1866074400, 1887246000, 1897524000, 1918695600, 1928973600, 1950145200, 1960423200, 1981594800, 1992477600, 2013044400, 2024532000, 2044494000, 2055376800, 2076548400, 2086826400, 2107998000, 2118880800, 2139447600 }\r
     transPost32:intvector { 0, -2144636896, 0, -2124070096 }\r
@@ -1044,8 +1035,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Brazil" }\r
     finalRaw:int { -10800 }\r
     finalYear:int { 2039 }\r
-    links:intvector { 202, 371, 375 }\r
-  } //Z#202\r
+    links:intvector { 201, 370, 374 }\r
+  } //Z#201\r
   /* America/Scoresbysund */ :table {\r
     trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -5272, 0, -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 }\r
@@ -1053,8 +1044,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { -3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#203\r
-  /* America/Shiprock */ :int { 109 } //Z#204\r
+  } //Z#202\r
+  /* America/Shiprock */ :int { 109 } //Z#203\r
   /* America/Sitka */ :table {\r
     transPre32:intvector { -1, 1069601369, -1, 2106012569 }\r
     trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }\r
@@ -1063,8 +1054,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 2008 }\r
-  } //Z#205\r
-  /* America/St_Barthelemy */ :int { 186 } //Z#206\r
+  } //Z#204\r
+  /* America/St_Barthelemy */ :int { 186 } //Z#205\r
   /* America/St_Johns */ :table {\r
     trans:intvector { -1664130548, -1650137348, -1632076148, -1615145348, -1598650148, -1590100148, -1567286948, -1551565748, -1535837348, -1520116148, -1503782948, -1488666548, -1472333348, -1457216948, -1440883748, -1425767348, -1409434148, -1394317748, -1377984548, -1362263348, -1346534948, -1330813748, -1314480548, -1299364148, -1283030948, -1267914548, -1251581348, -1236464948, -1220131748, -1205015348, -1188682148, -1172960948, -1156627748, -1141511348, -1125178148, -1110061748, -1096921748, -1093728600, -1078612200, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -116447400, -100121400, -84393000, -68671800, -52943400, -37222200, -21493800, -5772600, 9955800, 25677000, 41405400, 57731400, 73459800, 89181000, 104909400, 120630600, 136359000, 152080200, 167808600, 183529800, 199258200, 215584200, 230707800, 247033800, 262762200, 278483400, 294211800, 309933000, 325661400, 341382600, 357111000, 372832200, 388560600, 404886600, 420010200, 436336200, 452064600, 467785800, 483514200, 499235400, 514963800, 530685000, 544591860, 562127460, 576041460, 594178260, 607491060, 625631460, 638940660, 657081060, 670995060, 688530660, 702444660, 719980260, 733894260, 752034660, 765343860, 783484260, 796793460, 814933860, 828847860, 846383460, 860297460, 877833060, 891747060, 909282660, 923196660, 941337060, 954646260, 972786660, 986095860, 1004236260, 1018150260, 1035685860, 1049599860, 1067135460, 1081049460, 1099189860, 1112499060, 1130639460, 1143948660, 1162089060, 1173583860, 1194143460, 1205033460, 1225593060, 1236483060, 1257042660, 1268537460, 1289097060, 1299987060, 1320553800, 1331443800, 1352003400 }\r
     typeOffsets:intvector { -12652, 0, -12652, 3600, -12600, 0, -12600, 3600, -12600, 7200 }\r
@@ -1072,22 +1063,22 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -12600 }\r
     finalYear:int { 2013 }\r
-    links:intvector { 207, 379, 388 }\r
-  } //Z#207\r
-  /* America/St_Kitts */ :int { 186 } //Z#208\r
-  /* America/St_Lucia */ :int { 186 } //Z#209\r
-  /* America/St_Thomas */ :int { 186 } //Z#210\r
-  /* America/St_Vincent */ :int { 186 } //Z#211\r
+    links:intvector { 206, 378, 387 }\r
+  } //Z#206\r
+  /* America/St_Kitts */ :int { 186 } //Z#207\r
+  /* America/St_Lucia */ :int { 186 } //Z#208\r
+  /* America/St_Thomas */ :int { 186 } //Z#209\r
+  /* America/St_Vincent */ :int { 186 } //Z#210\r
   /* America/Swift_Current */ :table {\r
     trans:intvector { -2030201320, -1632063600, -1615132800, -880210800, -765388800, -747241200, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -400086000, -384364800, -337186800, -321465600, -305737200, -292435200, -273682800, -260985600, 73472400 }\r
     typeOffsets:intvector { -25880, 0, -25200, 0, -25200, 3600, -21600, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020103" }\r
-  } //Z#212\r
+  } //Z#211\r
   /* America/Tegucigalpa */ :table {\r
     trans:intvector { -1538503868, 547020000, 559717200, 578469600, 591166800, 1146981600, 1154926800 }\r
     typeOffsets:intvector { -20932, 0, -21600, 0, -21600, 3600 }\r
     typeMap:bin { "01020102010201" }\r
-  } //Z#213\r
+  } //Z#212\r
   /* America/Thule */ :table {\r
     trans:intvector { -1686079492, 670399200, 686120400, 701848800, 717570000, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }\r
     typeOffsets:intvector { -16508, 0, -14400, 0, -14400, 3600 }\r
@@ -1095,7 +1086,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Thule" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
-  } //Z#214\r
+  } //Z#213\r
   /* America/Thunder_Bay */ :table {\r
     transPre32:intvector { -1, 1928233516 }\r
     trans:intvector { -1893434400, -880218000, -765396000, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -1104,7 +1095,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-  } //Z#215\r
+  } //Z#214\r
   /* America/Tijuana */ :table {\r
     trans:intvector { -1514736000, -1451667600, -1343062800, -1234803600, -1222963200, -1207242000, -873820800, -761677200, -686073600, -661539600, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1175421600, 1193562000, 1207476000, 1225011600, 1238925600, 1256461200, 1268560800, 1289120400 }\r
     typeOffsets:intvector { -28084, 0, -28800, 0, -28800, 3600, -25200, 0 }\r
@@ -1112,8 +1103,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2011 }\r
-    links:intvector { 115, 198, 216, 536 }\r
-  } //Z#216\r
+    links:intvector { 115, 197, 215, 535 }\r
+  } //Z#215\r
   /* America/Toronto */ :table {\r
     transPre32:intvector { -1, 1928231148 }\r
     trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
@@ -1122,9 +1113,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 170, 217, 386 }\r
-  } //Z#217\r
-  /* America/Tortola */ :int { 186 } //Z#218\r
+    links:intvector { 170, 216, 385 }\r
+  } //Z#216\r
+  /* America/Tortola */ :int { 186 } //Z#217\r
   /* America/Vancouver */ :table {\r
     transPre32:intvector { -1, 1581086444 }\r
     trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -732726000, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }\r
@@ -1133,9 +1124,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 219, 389 }\r
-  } //Z#219\r
-  /* America/Virgin */ :int { 186 } //Z#220\r
+    links:intvector { 218, 388 }\r
+  } //Z#218\r
+  /* America/Virgin */ :int { 186 } //Z#219\r
   /* America/Whitehorse */ :table {\r
     transPre32:intvector { -1, 2105969308 }\r
     trans:intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -765381600, -147884400, -131554800, -81961200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }\r
@@ -1144,8 +1135,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 221, 391 }\r
-  } //Z#221\r
+    links:intvector { 220, 390 }\r
+  } //Z#220\r
   /* America/Winnipeg */ :table {\r
     transPre32:intvector { -1, 1692709012 }\r
     trans:intvector { -1694368800, -1681671600, -1632067200, -1615136400, -1029686400, -1018198800, -880214400, -765392400, -746035200, -732733200, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620755200, -607626000, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -292438800, -210787200, -198090000, -116438400, -100108800, -84384000, -68659200, -52934400, -37209600, -21484800, -5760000, 9964800, 25689600, 41414400, 57744000, 73468800, 89193600, 104918400, 120643200, 136368000, 152092800, 167817600, 183542400, 199267200, 215596800, 230716800, 247046400, 262771200, 278496000, 294220800, 309945600, 325670400, 341395200, 357120000, 372844800, 388569600, 404899200, 420019200, 436348800, 452073600, 467798400, 483523200, 499248000, 514972800, 530697600, 544608000, 562147200, 576057600, 594201600, 607507200, 625651200, 638956800, 657100800, 671011200, 688550400, 702460800, 720000000, 733910400, 752054400, 765360000, 783504000, 796809600, 814953600, 828864000, 846403200, 860313600, 877852800, 891763200, 909302400, 923212800, 941356800, 954662400, 972806400, 986112000, 1004256000, 1018166400, 1035705600, 1049616000, 1067155200, 1081065600, 1099209600, 1112515200, 1130659200, 1143964800, 1162105200, 1173600000, 1194159600 }\r
@@ -1154,8 +1145,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-    links:intvector { 222, 384 }\r
-  } //Z#222\r
+    links:intvector { 221, 383 }\r
+  } //Z#221\r
   /* America/Yakutat */ :table {\r
     transPre32:intvector { -1, 1069602431, -1, 2106013631 }\r
     trans:intvector { -880203600, -765381600, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 152100000, 162385200, 183549600, 199278000, 215604000, 230727600, 247053600, 262782000, 278503200, 294231600, 309952800, 325681200, 341402400, 357130800, 372852000, 388580400, 404906400, 420030000, 436356000, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }\r
@@ -1164,7 +1155,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 2008 }\r
-  } //Z#223\r
+  } //Z#222\r
   /* America/Yellowknife */ :table {\r
     trans:intvector { -1104537600, -880210800, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }\r
     typeOffsets:intvector { 0, 0, -25200, 0, -25200, 3600, -25200, 7200 }\r
@@ -1172,50 +1163,53 @@ zoneinfo64:table(nofallback) {
     finalRule { "Canada" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-  } //Z#224\r
+  } //Z#223\r
   /* Antarctica/Casey */ :table {\r
     trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600 }\r
     typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 }\r
     typeMap:bin { "010201020102" }\r
-  } //Z#225\r
+  } //Z#224\r
   /* Antarctica/Davis */ :table {\r
     trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 }\r
     typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 }\r
     typeMap:bin { "02000201020102" }\r
-  } //Z#226\r
+  } //Z#225\r
   /* Antarctica/DumontDUrville */ :table {\r
     trans:intvector { -725846400, -566992800, -415497600 }\r
     typeOffsets:intvector { 0, 0, 36000, 0 }\r
     typeMap:bin { "010001" }\r
-  } //Z#227\r
+  } //Z#226\r
   /* Antarctica/Macquarie */ :table {\r
     transPre32:intvector { -1, 2080708096 }\r
     trans:intvector { -1680508800, -1665392400, -1601719200, -687052800, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000, 1238860800, 1254585600, 1270310400 }\r
     typeOffsets:intvector { 0, 0, 36000, 0, 36000, 3600, 39600, 0 }\r
     typeMap:bin { "01020100010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#228\r
+  } //Z#227\r
   /* Antarctica/Mawson */ :table {\r
     trans:intvector { -501206400, 1255809600 }\r
     typeOffsets:intvector { 0, 0, 18000, 0, 21600, 0 }\r
     typeMap:bin { "0201" }\r
-  } //Z#229\r
-  /* Antarctica/McMurdo */ :int { 551 } //Z#230\r
+  } //Z#228\r
+  /* Antarctica/McMurdo */ :int { 550 } //Z#229\r
   /* Antarctica/Palmer */ :table {\r
-    trans:intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }\r
+    trans:intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }\r
     typeOffsets:intvector { 0, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }\r
-    typeMap:bin { "02010201020102010201030403010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#231\r
+    typeMap:bin { "020102010201020102010304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }\r
+    finalRule { "Chile" }\r
+    finalRaw:int { -14400 }\r
+    finalYear:int { 2017 }\r
+  } //Z#230\r
   /* Antarctica/Rothera */ :table {\r
     trans:intvector { 218246400 }\r
     typeOffsets:intvector { 0, 0, -10800, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#232\r
-  /* Antarctica/South_Pole */ :int { 551 } //Z#233\r
+  } //Z#231\r
+  /* Antarctica/South_Pole */ :int { 550 } //Z#232\r
   /* Antarctica/Syowa */ :table {\r
     trans:intvector { -407808000 }\r
     typeOffsets:intvector { 0, 0, 10800, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#234\r
+  } //Z#233\r
   /* Antarctica/Troll */ :table {\r
     trans:intvector { 1111885200, 1130634000 }\r
     typeOffsets:intvector { 0, 0, 0, 7200 }\r
@@ -1223,19 +1217,19 @@ zoneinfo64:table(nofallback) {
     finalRule { "Troll" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 2006 }\r
-  } //Z#235\r
+  } //Z#234\r
   /* Antarctica/Vostok */ :table {\r
     trans:intvector { -380073600 }\r
     typeOffsets:intvector { 0, 0, 21600, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#236\r
-  /* Arctic/Longyearbyen */ :int { 473 } //Z#237\r
-  /* Asia/Aden */ :int { 308 } //Z#238\r
+  } //Z#235\r
+  /* Arctic/Longyearbyen */ :int { 472 } //Z#236\r
+  /* Asia/Aden */ :int { 307 } //Z#237\r
   /* Asia/Almaty */ :table {\r
     trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 }\r
     typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" }\r
-  } //Z#239\r
+  } //Z#238\r
   /* Asia/Amman */ :table {\r
     trans:intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938124000, 954367200, 970178400, 985816800, 1001628000, 1017352800, 1033077600, 1048802400, 1066946400, 1080252000, 1097791200, 1112306400, 1128031200, 1143756000, 1161900000, 1175205600, 1193349600, 1206655200, 1225404000, 1238104800, 1256853600, 1269554400, 1288303200, 1301608800, 1319752800, 1333058400, 1387486800, 1395957600, 1414706400 }\r
     typeOffsets:intvector { 8624, 0, 7200, 0, 7200, 3600 }\r
@@ -1243,57 +1237,57 @@ zoneinfo64:table(nofallback) {
     finalRule { "Jordan" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2015 }\r
-  } //Z#240\r
+  } //Z#239\r
   /* Asia/Anadyr */ :table {\r
     trans:intvector { -1441194596, -1247572800, 354884400, 370692000, 386420400, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701791200, 717516000, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400, 859644000, 877788000, 891093600, 909237600, 922543200, 941292000, 953992800, 972741600, 985442400, 1004191200, 1017496800, 1035640800, 1048946400, 1067090400, 1080396000, 1099144800, 1111845600, 1130594400, 1143295200, 1162044000, 1174744800, 1193493600, 1206799200, 1224943200, 1238248800, 1256392800, 1269698400, 1288450800, 1301151600 }\r
     typeOffsets:intvector { 42596, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600, 46800, 0, 46800, 3600 }\r
     typeMap:bin { "03050605040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" }\r
-  } //Z#241\r
+  } //Z#240\r
   /* Asia/Aqtau */ :table {\r
     trans:intvector { -1441164064, -1247544000, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
     typeOffsets:intvector { 12064, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "0103050403040304030403040304030403040304030201030403040304010201020102010201020102010201020102010203" }\r
-  } //Z#242\r
+  } //Z#241\r
   /* Asia/Aqtobe */ :table {\r
     trans:intvector { -1441165720, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }\r
     typeOffsets:intvector { 13720, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" }\r
-  } //Z#243\r
+  } //Z#242\r
   /* Asia/Ashgabat */ :table {\r
     trans:intvector { -1441166012, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000 }\r
     typeOffsets:intvector { 14012, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103" }\r
-    links:intvector { 244, 245 }\r
-  } //Z#244\r
-  /* Asia/Ashkhabad */ :int { 244 } //Z#245\r
+    links:intvector { 243, 244 }\r
+  } //Z#243\r
+  /* Asia/Ashkhabad */ :int { 243 } //Z#244\r
   /* Asia/Atyrau */ :table {\r
-    trans:intvector { -1441164464, -1247540400, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
-    typeOffsets:intvector { 12464, 0, 10800, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
-    typeMap:bin { "0104060504050405040504050405040504050405040302040504050405040504050405040504030203020302030203020304" }\r
-  } //Z#246\r
+    trans:intvector { -1441164464, -1247544000, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
+    typeOffsets:intvector { 12464, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
+    typeMap:bin { "0103050403040304030403040304030403040304030201030403040304030403040304030403020102010201020102010203" }\r
+  } //Z#245\r
   /* Asia/Baghdad */ :table {\r
     transPre32:intvector { -1, 1770435036 }\r
     trans:intvector { -1641005856, 389048400, 402264000, 417906000, 433800000, 449614800, 465422400, 481150800, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670464000, 686275200, 702086400, 717897600, 733622400, 749433600, 765158400, 780969600, 796694400, 812505600, 828316800, 844128000, 859852800, 875664000, 891388800, 907200000, 922924800, 938736000, 954547200, 970358400, 986083200, 1001894400, 1017619200, 1033430400, 1049155200, 1064966400, 1080777600, 1096588800, 1112313600, 1128124800, 1143849600, 1159660800, 1175385600, 1191196800 }\r
     typeOffsets:intvector { 10660, 0, 10656, 0, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
-  } //Z#247\r
-  /* Asia/Bahrain */ :int { 305 } //Z#248\r
+  } //Z#246\r
+  /* Asia/Bahrain */ :int { 304 } //Z#247\r
   /* Asia/Baku */ :table {\r
     trans:intvector { -1441163964, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 828234000, 846378000, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1319932800, 1332633600, 1351382400, 1364688000, 1382832000, 1396137600, 1414281600, 1427587200, 1445731200 }\r
     typeOffsets:intvector { 11964, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201020304030403040304030403040304030403040304030403040304030403040304030403040304030403" }\r
-  } //Z#249\r
+  } //Z#248\r
   /* Asia/Bangkok */ :table {\r
     trans:intvector { -1570084924 }\r
     typeOffsets:intvector { 24124, 0, 25200, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 250, 302, 330 }\r
-  } //Z#250\r
+    links:intvector { 249, 301, 329 }\r
+  } //Z#249\r
   /* Asia/Barnaul */ :table {\r
     trans:intvector { -1579844100, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 801590400, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1459022400 }\r
     typeOffsets:intvector { 20100, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#251\r
+  } //Z#250\r
   /* Asia/Beirut */ :table {\r
     transPre32:intvector { -1, 1454817976 }\r
     trans:intvector { -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1473645600, -1460948400, -399866400, -386650800, -368330400, -355114800, -336794400, -323578800, -305172000, -291956400, -273636000, -260420400, 78012000, 86734800, 105055200, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 212965200, 231285600, 244501200, 262735200, 275950800, 452210400, 466722000, 483746400, 498258000, 515282400, 529794000, 546818400, 561330000, 581119200, 592952400, 610754400, 624488400, 641512800, 656024400, 673048800, 687560400, 704671200, 718146000, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 906843600, 922572000, 941317200 }\r
@@ -1302,37 +1296,40 @@ zoneinfo64:table(nofallback) {
     finalRule { "Lebanon" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2000 }\r
-  } //Z#252\r
+  } //Z#251\r
   /* Asia/Bishkek */ :table {\r
     trans:intvector { -1441169904, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683582400, 703018800, 717530400, 734468400, 748980000, 765918000, 780429600, 797367600, 811879200, 828817200, 843933600, 859671000, 877811400, 891120600, 909261000, 922570200, 941315400, 954019800, 972765000, 985469400, 1004214600, 1017523800, 1035664200, 1048973400, 1067113800, 1080423000, 1099168200, 1111872600, 1123783200 }\r
     typeOffsets:intvector { 17904, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#253\r
+  } //Z#252\r
   /* Asia/Brunei */ :table {\r
     trans:intvector { -1383464380, -1167636600 }\r
     typeOffsets:intvector { 27580, 0, 27000, 0, 28800, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#254\r
-  /* Asia/Calcutta */ :int { 286 } //Z#255\r
+  } //Z#253\r
+  /* Asia/Calcutta */ :int { 285 } //Z#254\r
   /* Asia/Chita */ :table {\r
     trans:intvector { -1579419232, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800, 1459015200 }\r
     typeOffsets:intvector { 27232, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050103" }\r
-  } //Z#256\r
+  } //Z#255\r
   /* Asia/Choibalsan */ :table {\r
-    trans:intvector { -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800, 1017421200, 1033142400, 1048870800, 1064592000, 1080320400, 1096041600, 1111770000, 1127491200, 1143219600, 1159545600, 1206889200, 1427479200, 1443193200, 1458928800, 1474642800 }\r
+    trans:intvector { -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800, 1017421200, 1033142400, 1048870800, 1064592000, 1080320400, 1096041600, 1111770000, 1127491200, 1143219600, 1159545600, 1206889200, 1427479200, 1443193200 }\r
     typeOffsets:intvector { 27480, 0, 25200, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 }\r
-    typeMap:bin { "010205040504050405040504050405040504050405040504050405040504050405040504050405040504050405040203020302" }\r
-  } //Z#257\r
-  /* Asia/Chongqing */ :int { 313 } //Z#258\r
-  /* Asia/Chungking */ :int { 313 } //Z#259\r
+    typeMap:bin { "01020504050405040504050405040504050405040504050405040504050405040504050405040504050405040504020302" }\r
+    finalRule { "Mongol" }\r
+    finalRaw:int { 28800 }\r
+    finalYear:int { 2016 }\r
+  } //Z#256\r
+  /* Asia/Chongqing */ :int { 312 } //Z#257\r
+  /* Asia/Chungking */ :int { 312 } //Z#258\r
   /* Asia/Colombo */ :table {\r
     transPre32:intvector { -1, 1454807332 }\r
     trans:intvector { -2019705572, -883287000, -862639200, -764051400, 832962600, 846266400, 1145039400 }\r
     typeOffsets:intvector { 19164, 0, 19172, 0, 19800, 0, 19800, 1800, 19800, 3600, 21600, 0, 23400, 0 }\r
     typeMap:bin { "0102030402060502" }\r
-  } //Z#260\r
-  /* Asia/Dacca */ :int { 263 } //Z#261\r
+  } //Z#259\r
+  /* Asia/Dacca */ :int { 262 } //Z#260\r
   /* Asia/Damascus */ :table {\r
     trans:intvector { -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200, 922917600, 938725200, 954540000, 970347600, 986076000, 1001883600, 1017612000, 1033419600, 1049148000, 1064955600, 1080770400, 1096578000, 1112306400, 1128114000, 1143842400, 1158872400, 1175205600, 1193950800, 1207260000, 1225486800, 1238104800, 1256850000, 1270159200, 1288299600, 1301608800, 1319749200, 1333058400, 1351198800 }\r
     typeOffsets:intvector { 8712, 0, 7200, 0, 7200, 3600 }\r
@@ -1340,35 +1337,35 @@ zoneinfo64:table(nofallback) {
     finalRule { "Syria" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2013 }\r
-  } //Z#262\r
+  } //Z#261\r
   /* Asia/Dhaka */ :table {\r
     transPre32:intvector { -1, 1770423996 }\r
     trans:intvector { -891582800, -872058600, -862637400, -576138600, 1245430800, 1262278800 }\r
     typeOffsets:intvector { 21700, 0, 19800, 0, 21200, 0, 21600, 0, 21600, 3600, 23400, 0 }\r
     typeMap:bin { "02050105030403" }\r
-    links:intvector { 261, 263, 372 }\r
-  } //Z#263\r
+    links:intvector { 260, 262, 371 }\r
+  } //Z#262\r
   /* Asia/Dili */ :table {\r
     trans:intvector { -1830414140, -879152400, 199897200, 969120000 }\r
     typeOffsets:intvector { 30140, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "01020102" }\r
-  } //Z#264\r
+  } //Z#263\r
   /* Asia/Dubai */ :table {\r
     trans:intvector { -1577936472 }\r
     typeOffsets:intvector { 13272, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 265, 296 }\r
-  } //Z#265\r
+    links:intvector { 264, 295 }\r
+  } //Z#264\r
   /* Asia/Dushanbe */ :table {\r
     trans:intvector { -1441168512, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 684363600 }\r
     typeOffsets:intvector { 16512, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201" }\r
-  } //Z#266\r
+  } //Z#265\r
   /* Asia/Famagusta */ :table {\r
     trans:intvector { -1518920148, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1473282000 }\r
     typeOffsets:intvector { 8148, 0, 7200, 0, 7200, 3600, 10800, 0 }\r
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }\r
-  } //Z#267\r
+  } //Z#266\r
   /* Asia/Gaza */ :table {\r
     transPre32:intvector { -1, 2109557424 }\r
     trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }\r
@@ -1377,8 +1374,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Palestine" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2017 }\r
-  } //Z#268\r
-  /* Asia/Harbin */ :int { 313 } //Z#269\r
+  } //Z#267\r
+  /* Asia/Harbin */ :int { 312 } //Z#268\r
   /* Asia/Hebron */ :table {\r
     transPre32:intvector { -1, 2109557273 }\r
     trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }\r
@@ -1387,40 +1384,43 @@ zoneinfo64:table(nofallback) {
     finalRule { "Palestine" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2017 }\r
-  } //Z#270\r
+  } //Z#269\r
   /* Asia/Ho_Chi_Minh */ :table {\r
     trans:intvector { -2004073600, -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }\r
     typeOffsets:intvector { 25600, 0, 25200, 0, 25590, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "020103040103010301" }\r
-    links:intvector { 271, 309, 629 }\r
-  } //Z#271\r
+    links:intvector { 270, 308, 628 }\r
+  } //Z#270\r
   /* Asia/Hong_Kong */ :table {\r
     trans:intvector { -2056693002, -907389000, -891667800, -884246400, -766746000, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -542352600, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }\r
     typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 3600, 32400, 0 }\r
     typeMap:bin { "010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 272, 510 }\r
-  } //Z#272\r
+    links:intvector { 271, 509 }\r
+  } //Z#271\r
   /* Asia/Hovd */ :table {\r
-    trans:intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800, 1427482800, 1443196800, 1458932400, 1474646400 }\r
+    trans:intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800, 1427482800, 1443196800 }\r
     typeOffsets:intvector { 21996, 0, 21600, 0, 25200, 0, 25200, 3600 }\r
-    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
-  } //Z#273\r
+    typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
+    finalRule { "Mongol" }\r
+    finalRaw:int { 25200 }\r
+    finalYear:int { 2016 }\r
+  } //Z#272\r
   /* Asia/Irkutsk */ :table {\r
     trans:intvector { -1575874625, -1247554800, 354902400, 370710000, 386438400, 402246000, 417974400, 433782000, 449596800, 465328800, 481053600, 496778400, 512503200, 528228000, 543952800, 559677600, 575402400, 591127200, 606852000, 622576800, 638301600, 654631200, 670356000, 686084400, 695761200, 701805600, 717530400, 733255200, 748980000, 764704800, 780429600, 796154400, 811879200, 828208800, 846352800, 859658400, 877802400, 891108000, 909252000, 922557600, 941306400, 954007200, 972756000, 985456800, 1004205600, 1017511200, 1035655200, 1048960800, 1067104800, 1080410400, 1099159200, 1111860000, 1130608800, 1143309600, 1162058400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200, 1256407200, 1269712800, 1288461600, 1301162400, 1414256400 }\r
     typeOffsets:intvector { 25025, 0, 25200, 0, 25200, 3600, 28800, 0, 28800, 3600, 32400, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#274\r
-  /* Asia/Istanbul */ :int { 457 } //Z#275\r
+  } //Z#273\r
+  /* Asia/Istanbul */ :int { 456 } //Z#274\r
   /* Asia/Jakarta */ :table {\r
     trans:intvector { -1451719200, -1172906400, -876641400, -766054800, -683883000, -620812800, -189415800 }\r
     typeOffsets:intvector { 25632, 0, 25200, 0, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "02030503040301" }\r
-  } //Z#276\r
+  } //Z#275\r
   /* Asia/Jayapura */ :table {\r
     trans:intvector { -1172913768, -799491600, -189423000 }\r
     typeOffsets:intvector { 33768, 0, 32400, 0, 34200, 0 }\r
     typeMap:bin { "010201" }\r
-  } //Z#277\r
+  } //Z#276\r
   /* Asia/Jerusalem */ :table {\r
     transPre32:intvector { -1, 1454818042 }\r
     trans:intvector { -1641003640, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -681962400, -673243200, -667962000, -652327200, -636426000, -622087200, -608947200, -591847200, -572486400, -558576000, -542851200, -527731200, -514425600, -490845600, -482986800, -459475200, -451537200, -428551200, -418262400, -400032000, -387428400, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1382828400 }\r
@@ -1429,87 +1429,87 @@ zoneinfo64:table(nofallback) {
     finalRule { "Zion" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2014 }\r
-    links:intvector { 278, 320, 526 }\r
-  } //Z#278\r
+    links:intvector { 277, 319, 525 }\r
+  } //Z#277\r
   /* Asia/Kabul */ :table {\r
     transPre32:intvector { -1, 1770429088 }\r
     trans:intvector { -788932800 }\r
     typeOffsets:intvector { 16608, 0, 14400, 0, 16200, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#279\r
+  } //Z#278\r
   /* Asia/Kamchatka */ :table {\r
     trans:intvector { -1487759676, -1247569200, 354888000, 370695600, 386424000, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701791200, 717516000, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400, 859644000, 877788000, 891093600, 909237600, 922543200, 941292000, 953992800, 972741600, 985442400, 1004191200, 1017496800, 1035640800, 1048946400, 1067090400, 1080396000, 1099144800, 1111845600, 1130594400, 1143295200, 1162044000, 1174744800, 1193493600, 1206799200, 1224943200, 1238248800, 1256392800, 1269698400, 1288450800, 1301151600 }\r
     typeOffsets:intvector { 38076, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" }\r
-  } //Z#280\r
+  } //Z#279\r
   /* Asia/Karachi */ :table {\r
     trans:intvector { -1988166492, -862637400, -764145000, -576135000, 1018119600, 1033840800, 1212260400, 1225476000, 1239735600, 1257012000 }\r
     typeOffsets:intvector { 16092, 0, 18000, 0, 18000, 3600, 19800, 0, 19800, 3600 }\r
     typeMap:bin { "03040301020102010201" }\r
-    links:intvector { 281, 544 }\r
-  } //Z#281\r
-  /* Asia/Kashgar */ :int { 328 } //Z#282\r
+    links:intvector { 280, 543 }\r
+  } //Z#280\r
+  /* Asia/Kashgar */ :int { 327 } //Z#281\r
   /* Asia/Kathmandu */ :table {\r
     trans:intvector { -1577943676, 504901800 }\r
     typeOffsets:intvector { 20476, 0, 19800, 0, 20700, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 283, 284 }\r
-  } //Z#283\r
-  /* Asia/Katmandu */ :int { 283 } //Z#284\r
+    links:intvector { 282, 283 }\r
+  } //Z#282\r
+  /* Asia/Katmandu */ :int { 282 } //Z#283\r
   /* Asia/Khandyga */ :table {\r
     trans:intvector { -1579424533, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1072882800, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1315832400, 1414252800 }\r
     typeOffsets:intvector { 32533, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403050605060506050605060506050605070503" }\r
-  } //Z#285\r
+  } //Z#284\r
   /* Asia/Kolkata */ :table {\r
     transPre32:intvector { -1, 1454805288 }\r
     trans:intvector { -891582800, -872058600, -862637400, -764145000 }\r
     typeOffsets:intvector { 21208, 0, 19800, 0, 19800, 3600, 21200, 0, 23400, 0 }\r
     typeMap:bin { "0304010201" }\r
-    links:intvector { 255, 286, 512 }\r
-  } //Z#286\r
+    links:intvector { 254, 285, 511 }\r
+  } //Z#285\r
   /* Asia/Krasnoyarsk */ :table {\r
     trans:intvector { -1577513486, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288465200, 1301166000, 1414260000 }\r
     typeOffsets:intvector { 22286, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600, 28800, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#287\r
+  } //Z#286\r
   /* Asia/Kuala_Lumpur */ :table {\r
     transPre32:intvector { -1, 2117490090 }\r
     trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }\r
     typeOffsets:intvector { 24406, 0, 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "0102030405070506" }\r
-  } //Z#288\r
+  } //Z#287\r
   /* Asia/Kuching */ :table {\r
     trans:intvector { -1383463280, -1167636600, -1082448000, -1074586800, -1050825600, -1042964400, -1019289600, -1011428400, -987753600, -979892400, -956217600, -948356400, -924595200, -916734000, -893059200, -885198000, -879667200, -767005200 }\r
     typeOffsets:intvector { 26480, 0, 27000, 0, 28800, 0, 28800, 1200, 32400, 0 }\r
     typeMap:bin { "010203020302030203020302030203020402" }\r
-  } //Z#289\r
-  /* Asia/Kuwait */ :int { 308 } //Z#290\r
-  /* Asia/Macao */ :int { 292 } //Z#291\r
+  } //Z#288\r
+  /* Asia/Kuwait */ :int { 307 } //Z#289\r
+  /* Asia/Macao */ :int { 291 } //Z#290\r
   /* Asia/Macau */ :table {\r
     trans:intvector { -1830411260, -277360200, -257405400, -245910600, -225955800, -214473600, -194506200, -182406600, -163056600, -150969600, -131619600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72201600, 87922800, 103651200, 119977200, 135705600, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 261504000, 277225200, 292953600, 309279600, 325008000, 340729200 }\r
     typeOffsets:intvector { 27260, 0, 28800, 0, 28800, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 291, 292 }\r
-  } //Z#292\r
+    links:intvector { 290, 291 }\r
+  } //Z#291\r
   /* Asia/Magadan */ :table {\r
     trans:intvector { -1441188192, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600, 1461427200 }\r
     typeOffsets:intvector { 36192, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050103" }\r
-  } //Z#293\r
+  } //Z#292\r
   /* Asia/Makassar */ :table {\r
     trans:intvector { -1172908656, -880272000, -766054800 }\r
     typeOffsets:intvector { 28656, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "010201" }\r
-    links:intvector { 294, 325 }\r
-  } //Z#294\r
+    links:intvector { 293, 324 }\r
+  } //Z#293\r
   /* Asia/Manila */ :table {\r
     transPre32:intvector { -1, 350346256, -1, 2065645456 }\r
     trans:intvector { -1046678400, -1038733200, -873273600, -794221200, -496224000, -489315600, 259344000, 275151600 }\r
     typeOffsets:intvector { -57360, 0, 28800, 0, 28800, 3600, 29040, 0, 32400, 0 }\r
     typeMap:bin { "03010201040102010201" }\r
-  } //Z#295\r
-  /* Asia/Muscat */ :int { 265 } //Z#296\r
+  } //Z#294\r
+  /* Asia/Muscat */ :int { 264 } //Z#295\r
   /* Asia/Nicosia */ :table {\r
     trans:intvector { -1518920008, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600 }\r
     typeOffsets:intvector { 8008, 0, 7200, 0, 7200, 3600 }\r
@@ -1517,109 +1517,109 @@ zoneinfo64:table(nofallback) {
     finalRule { "EUAsia" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2000 }\r
-    links:intvector { 297, 472 }\r
-  } //Z#297\r
+    links:intvector { 296, 471 }\r
+  } //Z#296\r
   /* Asia/Novokuznetsk */ :table {\r
     trans:intvector { -1441259328, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288468800, 1301169600 }\r
     typeOffsets:intvector { 20928, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" }\r
-  } //Z#298\r
+  } //Z#297\r
   /* Asia/Novosibirsk */ :table {\r
     trans:intvector { -1579476700, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 738086400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1469304000 }\r
     typeOffsets:intvector { 19900, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#299\r
+  } //Z#298\r
   /* Asia/Omsk */ :table {\r
     trans:intvector { -1582088010, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600 }\r
     typeOffsets:intvector { 17610, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600, 25200, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#300\r
+  } //Z#299\r
   /* Asia/Oral */ :table {\r
-    trans:intvector { -1441164324, -1247540400, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 670370400, 686095200, 695772000, 701816400, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
-    typeOffsets:intvector { 12324, 0, 10800, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
-    typeMap:bin { "010405060504050405040504050405040504030203020302040302030203020302030203020302030203020302030203020304" }\r
-  } //Z#301\r
-  /* Asia/Phnom_Penh */ :int { 250 } //Z#302\r
+    trans:intvector { -1441164324, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 670370400, 686095200, 695772000, 701816400, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 }\r
+    typeOffsets:intvector { 12324, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
+    typeMap:bin { "010304050403040304030403040304030403020102010201030201020102010201020102010201020102010201020102010203" }\r
+  } //Z#300\r
+  /* Asia/Phnom_Penh */ :int { 249 } //Z#301\r
   /* Asia/Pontianak */ :table {\r
     trans:intvector { -1172906240, -881220600, -766054800, -683883000, -620812800, -189415800, 567964800 }\r
     typeOffsets:intvector { 26240, 0, 25200, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "02040203020301" }\r
-  } //Z#303\r
+  } //Z#302\r
   /* Asia/Pyongyang */ :table {\r
     trans:intvector { -1948782180, -1830414600, 1439564400 }\r
     typeOffsets:intvector { 30180, 0, 30600, 0, 32400, 0 }\r
     typeMap:bin { "010201" }\r
-  } //Z#304\r
+  } //Z#303\r
   /* Asia/Qatar */ :table {\r
     trans:intvector { -1577935568, 76190400 }\r
     typeOffsets:intvector { 12368, 0, 10800, 0, 14400, 0 }\r
     typeMap:bin { "0201" }\r
-    links:intvector { 248, 305 }\r
-  } //Z#305\r
+    links:intvector { 247, 304 }\r
+  } //Z#304\r
   /* Asia/Qyzylorda */ :table {\r
     trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }\r
     typeOffsets:intvector { 15712, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010304050403040304030403040304030403040304030203050403040304030403040304030403040304030403040304030405" }\r
-  } //Z#306\r
-  /* Asia/Rangoon */ :int { 333 } //Z#307\r
+  } //Z#305\r
+  /* Asia/Rangoon */ :int { 332 } //Z#306\r
   /* Asia/Riyadh */ :table {\r
     trans:intvector { -719636812 }\r
     typeOffsets:intvector { 11212, 0, 10800, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 238, 290, 308 }\r
-  } //Z#308\r
-  /* Asia/Saigon */ :int { 271 } //Z#309\r
+    links:intvector { 237, 289, 307 }\r
+  } //Z#307\r
+  /* Asia/Saigon */ :int { 270 } //Z#308\r
   /* Asia/Sakhalin */ :table {\r
     trans:intvector { -2031039048, -768560400, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200, 1459008000 }\r
     typeOffsets:intvector { 34248, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 }\r
     typeMap:bin { "010405040504050405040504050405040504050405040302040504050405040504050403020302030203020302030203020302030203020302030203020302040204" }\r
-  } //Z#310\r
+  } //Z#309\r
   /* Asia/Samarkand */ :table {\r
     trans:intvector { -1441168073, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686091600 }\r
     typeOffsets:intvector { 16073, 0, 14400, 0, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010203040302030203020302030203020302030203020302" }\r
-  } //Z#311\r
+  } //Z#310\r
   /* Asia/Seoul */ :table {\r
     trans:intvector { -1948782472, -1830414600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 }\r
     typeOffsets:intvector { 30472, 0, 30600, 0, 30600, 3600, 32400, 0, 32400, 3600 }\r
     typeMap:bin { "0103010201020102010201020102010304030403" }\r
-    links:intvector { 312, 596 }\r
-  } //Z#312\r
+    links:intvector { 311, 595 }\r
+  } //Z#311\r
   /* Asia/Shanghai */ :table {\r
     transPre32:intvector { -1, 2117485353 }\r
     trans:intvector { -933494400, -923130000, -908784000, -891594000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }\r
     typeOffsets:intvector { 29143, 0, 28800, 0, 28800, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201" }\r
-    links:intvector { 258, 259, 269, 313, 382, 546 }\r
-  } //Z#313\r
+    links:intvector { 257, 258, 268, 312, 381, 545 }\r
+  } //Z#312\r
   /* Asia/Singapore */ :table {\r
     trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }\r
     typeOffsets:intvector { 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }\r
     typeMap:bin { "01020304060405" }\r
-    links:intvector { 314, 598 }\r
-  } //Z#314\r
+    links:intvector { 313, 597 }\r
+  } //Z#313\r
   /* Asia/Srednekolymsk */ :table {\r
     trans:intvector { -1441188892, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600 }\r
     typeOffsets:intvector { 36892, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#315\r
+  } //Z#314\r
   /* Asia/Taipei */ :table {\r
     transPre32:intvector { -1, 1959718936 }\r
     trans:intvector { -1017820800, -766224000, -745833600, -733827600, -716889600, -699613200, -683884800, -670669200, -652348800, -639133200, -620812800, -607597200, -589276800, -576061200, -562924800, -541760400, -528710400, -510224400, -497174400, -478688400, -465638400, -449830800, -434016000, -418208400, -402480000, -386672400, -370944000, -355136400, -339408000, -323600400, -302515200, -291978000, -270979200, -260442000, 133977600, 149785200, 165513600, 181321200, 299606400, 307551600 }\r
     typeOffsets:intvector { 29160, 0, 28800, 0, 28800, 3600, 32400, 0 }\r
     typeMap:bin { "0103010201020102010201020102010201020102010201020102010201020102010201020102010201" }\r
-    links:intvector { 316, 595 }\r
-  } //Z#316\r
+    links:intvector { 315, 594 }\r
+  } //Z#315\r
   /* Asia/Tashkent */ :table {\r
     trans:intvector { -1441168631, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600 }\r
     typeOffsets:intvector { 16631, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403040304030201" }\r
-  } //Z#317\r
+  } //Z#316\r
   /* Asia/Tbilisi */ :table {\r
     trans:intvector { -1441162751, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701816400, 717537600, 733266000, 748987200, 764715600, 780436800, 796161600, 811882800, 828216000, 877806000, 891115200, 909255600, 922564800, 941310000, 954014400, 972759600, 985464000, 1004209200, 1017518400, 1035658800, 1048968000, 1067108400, 1080417600, 1088276400, 1099177200, 1111878000 }\r
     typeOffsets:intvector { 10751, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010201020102030403040304030403040304030403040304020103" }\r
-  } //Z#318\r
+  } //Z#317\r
   /* Asia/Tehran */ :table {\r
     trans:intvector { -757394744, 247177800, 259272000, 277758000, 283982400, 290809800, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000, 1206045000, 1221939000, 1237667400, 1253561400, 1269203400, 1285097400, 1300739400, 1316633400, 1332275400, 1348169400, 1363897800, 1379791800, 1395433800, 1411327800, 1426969800, 1442863800, 1458505800, 1474399800, 1490128200, 1506022200, 1521664200, 1537558200, 1553200200, 1569094200, 1584736200, 1600630200, 1616358600, 1632252600, 1647894600, 1663788600, 1679430600, 1695324600, 1710966600, 1726860600, 1742589000, 1758483000, 1774125000, 1790019000, 1805661000, 1821555000, 1837197000, 1853091000, 1868733000, 1884627000, 1900355400, 1916249400, 1931891400, 1947785400, 1963427400, 1979321400, 1994963400, 2010857400, 2026585800, 2042479800, 2058121800, 2074015800, 2089657800, 2105551800 }\r
     typeOffsets:intvector { 12344, 0, 12600, 0, 12600, 3600, 14400, 0, 14400, 3600 }\r
@@ -1627,75 +1627,78 @@ zoneinfo64:table(nofallback) {
     finalRule { "Iran" }\r
     finalRaw:int { 12600 }\r
     finalYear:int { 2037 }\r
-    links:intvector { 319, 525 }\r
-  } //Z#319\r
-  /* Asia/Tel_Aviv */ :int { 278 } //Z#320\r
-  /* Asia/Thimbu */ :int { 322 } //Z#321\r
+    links:intvector { 318, 524 }\r
+  } //Z#318\r
+  /* Asia/Tel_Aviv */ :int { 277 } //Z#319\r
+  /* Asia/Thimbu */ :int { 321 } //Z#320\r
   /* Asia/Thimphu */ :table {\r
     trans:intvector { -706341516, 560025000 }\r
     typeOffsets:intvector { 21516, 0, 19800, 0, 21600, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 321, 322 }\r
-  } //Z#322\r
+    links:intvector { 320, 321 }\r
+  } //Z#321\r
   /* Asia/Tokyo */ :table {\r
     transPre32:intvector { -1, 1707254896 }\r
     trans:intvector { -683794800, -672393600, -654764400, -640944000, -620290800, -609494400, -588841200, -578044800 }\r
     typeOffsets:intvector { 33539, 0, 32400, 0, 32400, 3600 }\r
     typeMap:bin { "010201020102010201" }\r
-    links:intvector { 323, 527, 529 }\r
-  } //Z#323\r
+    links:intvector { 322, 526, 528 }\r
+  } //Z#322\r
   /* Asia/Tomsk */ :table {\r
     trans:intvector { -1578807591, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1020193200, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1464465600 }\r
     typeOffsets:intvector { 20391, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304020102010201020102010201020102010201030103" }\r
-  } //Z#324\r
-  /* Asia/Ujung_Pandang */ :int { 294 } //Z#325\r
+  } //Z#323\r
+  /* Asia/Ujung_Pandang */ :int { 293 } //Z#324\r
   /* Asia/Ulaanbaatar */ :table {\r
-    trans:intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200, 1427479200, 1443193200, 1458928800, 1474642800 }\r
+    trans:intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200, 1427479200, 1443193200 }\r
     typeOffsets:intvector { 25652, 0, 25200, 0, 28800, 0, 28800, 3600 }\r
-    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
-    links:intvector { 326, 327 }\r
-  } //Z#326\r
-  /* Asia/Ulan_Bator */ :int { 326 } //Z#327\r
+    typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }\r
+    finalRule { "Mongol" }\r
+    finalRaw:int { 28800 }\r
+    finalYear:int { 2016 }\r
+    links:intvector { 325, 326 }\r
+  } //Z#325\r
+  /* Asia/Ulan_Bator */ :int { 325 } //Z#326\r
   /* Asia/Urumqi */ :table {\r
     trans:intvector { -1325483420 }\r
     typeOffsets:intvector { 21020, 0, 21600, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 282, 328 }\r
-  } //Z#328\r
+    links:intvector { 281, 327 }\r
+  } //Z#327\r
   /* Asia/Ust-Nera */ :table {\r
     trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 }\r
     typeOffsets:intvector { 34374, 0, 28800, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 }\r
     typeMap:bin { "010206050605060506050605060506050605060506050403050605060506050605060506050605060506050605060506050605060506050605060506050605070503" }\r
-  } //Z#329\r
-  /* Asia/Vientiane */ :int { 250 } //Z#330\r
+  } //Z#328\r
+  /* Asia/Vientiane */ :int { 249 } //Z#329\r
   /* Asia/Vladivostok */ :table {\r
     trans:intvector { -1487321251, -1247562000, 354895200, 370702800, 386431200, 402238800, 417967200, 433774800, 449589600, 465321600, 481046400, 496771200, 512496000, 528220800, 543945600, 559670400, 575395200, 591120000, 606844800, 622569600, 638294400, 654624000, 670348800, 686077200, 695754000, 701798400, 717523200, 733248000, 748972800, 764697600, 780422400, 796147200, 811872000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200 }\r
     typeOffsets:intvector { 31651, 0, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#331\r
+  } //Z#330\r
   /* Asia/Yakutsk */ :table {\r
     trans:intvector { -1579423138, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800 }\r
     typeOffsets:intvector { 31138, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#332\r
+  } //Z#331\r
   /* Asia/Yangon */ :table {\r
     trans:intvector { -1577946280, -873268200, -778410000 }\r
     typeOffsets:intvector { 23080, 0, 23400, 0, 32400, 0 }\r
     typeMap:bin { "010201" }\r
-    links:intvector { 307, 333 }\r
-  } //Z#333\r
+    links:intvector { 306, 332 }\r
+  } //Z#332\r
   /* Asia/Yekaterinburg */ :table {\r
     trans:intvector { -1688270553, -1592610305, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1111870800, 1130619600, 1143320400, 1162069200, 1174770000, 1193518800, 1206824400, 1224968400, 1238274000, 1256418000, 1269723600, 1288472400, 1301173200, 1414267200 }\r
     typeOffsets:intvector { 14553, 0, 13505, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }\r
     typeMap:bin { "010204050405040504050405040504050405040504050403020405040504050405040504050405040504050405040504050405040504050405040504050405040604" }\r
-  } //Z#334\r
+  } //Z#333\r
   /* Asia/Yerevan */ :table {\r
     trans:intvector { -1441162680, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288476000, 1301176800, 1319925600 }\r
     typeOffsets:intvector { 10680, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "0103040304030403040304030403040304030403040302010201020102010203040304030403040304030403040304030403040304030403040304030403" }\r
-    links:intvector { 335, 539 }\r
-  } //Z#335\r
+    links:intvector { 334, 538 }\r
+  } //Z#334\r
   /* Atlantic/Azores */ :table {\r
     transPre32:intvector { -1, 1581063056 }\r
     trans:intvector { -1830377128, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -1704,7 +1707,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { -3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#336\r
+  } //Z#335\r
   /* Atlantic/Bermuda */ :table {\r
     trans:intvector { -1262281242, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }\r
     typeOffsets:intvector { -15558, 0, -14400, 0, -14400, 3600 }\r
@@ -1712,7 +1715,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 2008 }\r
-  } //Z#337\r
+  } //Z#336\r
   /* Atlantic/Canary */ :table {\r
     trans:intvector { -1509663504, -733874400, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -3696, 0, -3600, 0, 0, 0, 0, 3600 }\r
@@ -1720,13 +1723,13 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-  } //Z#338\r
+  } //Z#337\r
   /* Atlantic/Cape_Verde */ :table {\r
     trans:intvector { -1988144756, -862610400, -764118000, 186120000 }\r
     typeOffsets:intvector { -5644, 0, -7200, 0, -7200, 3600, -3600, 0 }\r
     typeMap:bin { "01020103" }\r
-  } //Z#339\r
-  /* Atlantic/Faeroe */ :int { 341 } //Z#340\r
+  } //Z#338\r
+  /* Atlantic/Faeroe */ :int { 340 } //Z#339\r
   /* Atlantic/Faroe */ :table {\r
     trans:intvector { -1955748776, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -1624, 0, 0, 0, 0, 3600 }\r
@@ -1734,9 +1737,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 340, 341 }\r
-  } //Z#341\r
-  /* Atlantic/Jan_Mayen */ :int { 473 } //Z#342\r
+    links:intvector { 339, 340 }\r
+  } //Z#340\r
+  /* Atlantic/Jan_Mayen */ :int { 472 } //Z#341\r
   /* Atlantic/Madeira */ :table {\r
     trans:intvector { -1830379944, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -4056, 0, -3600, 0, -3600, 3600, -3600, 7200, 0, 0, 0, 3600 }\r
@@ -1744,25 +1747,25 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-  } //Z#343\r
+  } //Z#342\r
   /* Atlantic/Reykjavik */ :table {\r
     trans:intvector { -1956609120, -1668211200, -1647212400, -1636675200, -1613430000, -1605139200, -1581894000, -1539561600, -1531350000, -968025600, -952293600, -942008400, -920239200, -909957600, -888789600, -877903200, -857944800, -846453600, -826495200, -815004000, -795045600, -783554400, -762991200, -752104800, -731541600, -717631200, -700092000, -686181600, -668642400, -654732000, -636588000, -623282400, -605743200, -591832800, -573688800, -559778400, -542239200, -528328800, -510789600, -496879200, -479340000, -465429600, -447890400, -433980000, -415836000, -401925600, -384386400, -370476000, -352936800, -339026400, -321487200, -307576800, -290037600, -276127200, -258588000, -244677600, -226533600, -212623200, -195084000, -181173600, -163634400, -149724000, -132184800, -118274400, -100735200, -86824800, -68680800, -54770400 }\r
     typeOffsets:intvector { -5280, 0, -3600, 0, -3600, 3600, 0, 0 }\r
     typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }\r
-    links:intvector { 344, 513 }\r
-  } //Z#344\r
+    links:intvector { 343, 512 }\r
+  } //Z#343\r
   /* Atlantic/South_Georgia */ :table {\r
     transPre32:intvector { -1, 1770454464 }\r
     typeOffsets:intvector { -8768, 0, -7200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#345\r
-  /* Atlantic/St_Helena */ :int { 5 } //Z#346\r
+  } //Z#344\r
+  /* Atlantic/St_Helena */ :int { 5 } //Z#345\r
   /* Atlantic/Stanley */ :table {\r
     trans:intvector { -1824235716, -1018209600, -1003093200, -986760000, -971643600, -954705600, -939589200, -923256000, -908139600, -891806400, -876690000, -860356800, -852066000, 420609600, 433306800, 452052000, 464151600, 483501600, 495601200, 514350000, 527054400, 545799600, 558504000, 577249200, 589953600, 608698800, 621403200, 640753200, 652852800, 672202800, 684907200, 703652400, 716356800, 735102000, 747806400, 766551600, 779256000, 798001200, 810705600, 830055600, 842760000, 861505200, 874209600, 892954800, 905659200, 924404400, 937108800, 955854000, 968558400, 987310800, 999410400, 1019365200, 1030860000, 1050814800, 1062914400, 1082264400, 1094364000, 1113714000, 1125813600, 1145163600, 1157263200, 1176613200, 1188712800, 1208667600, 1220767200, 1240117200, 1252216800, 1271566800, 1283666400 }\r
     typeOffsets:intvector { -13884, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }\r
     typeMap:bin { "010201020102010201020102010304030403020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }\r
-  } //Z#347\r
-  /* Australia/ACT */ :int { 366 } //Z#348\r
+  } //Z#346\r
+  /* Australia/ACT */ :int { 365 } //Z#347\r
   /* Australia/Adelaide */ :table {\r
     transPre32:intvector { -1, 1930857236, -1, 2064778096 }\r
     trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 384280200, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 637691400, 657045000, 667931400, 688494600, 701195400, 719944200, 731435400, 751998600, 764094600, 783448200, 796149000, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }\r
@@ -1771,15 +1774,15 @@ zoneinfo64:table(nofallback) {
     finalRule { "AS" }\r
     finalRaw:int { 34200 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 349, 365 }\r
-  } //Z#349\r
+    links:intvector { 348, 364 }\r
+  } //Z#348\r
   /* Australia/Brisbane */ :table {\r
     transPre32:intvector { -1, 1928175368 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 }\r
     typeOffsets:intvector { 36728, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "0102010201020102010201020102010201" }\r
-    links:intvector { 350, 364 }\r
-  } //Z#350\r
+    links:intvector { 349, 363 }\r
+  } //Z#349\r
   /* Australia/Broken_Hill */ :table {\r
     transPre32:intvector { -1, 1930856548, -1, 1980016096, -1, 2064778096 }\r
     trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 386699400, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 636481800, 657045000, 667931400, 688494600, 699381000, 719944200, 731435400, 751998600, 762885000, 783448200, 794334600, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }\r
@@ -1788,9 +1791,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "AS" }\r
     finalRaw:int { 34200 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 351, 370 }\r
-  } //Z#351\r
-  /* Australia/Canberra */ :int { 366 } //Z#352\r
+    links:intvector { 350, 369 }\r
+  } //Z#350\r
+  /* Australia/Canberra */ :int { 365 } //Z#351\r
   /* Australia/Currie */ :table {\r
     transPre32:intvector { -1, 1949172768 }\r
     trans:intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }\r
@@ -1799,20 +1802,20 @@ zoneinfo64:table(nofallback) {
     finalRule { "AT" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-  } //Z#353\r
+  } //Z#352\r
   /* Australia/Darwin */ :table {\r
     transPre32:intvector { -1, 1930859096, -1, 2064778096 }\r
     trans:intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400 }\r
     typeOffsets:intvector { 31400, 0, 32400, 0, 34200, 0, 34200, 3600 }\r
     typeMap:bin { "01020302030203020302" }\r
-    links:intvector { 0, 354, 362 }\r
-  } //Z#354\r
+    links:intvector { 0, 353, 361 }\r
+  } //Z#353\r
   /* Australia/Eucla */ :table {\r
     transPre32:intvector { -1, 1957038768 }\r
     trans:intvector { -1672562640, -1665387900, -883637100, -876123900, -860395500, -844674300, 152039700, 162926100, 436295700, 447182100, 690311700, 699383700, 1165079700, 1174756500, 1193505300, 1206810900, 1224954900, 1238260500 }\r
     typeOffsets:intvector { 30928, 0, 31500, 0, 31500, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201" }\r
-  } //Z#355\r
+  } //Z#354\r
   /* Australia/Hobart */ :table {\r
     transPre32:intvector { -1, 1949171940 }\r
     trans:intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }\r
@@ -1821,15 +1824,15 @@ zoneinfo64:table(nofallback) {
     finalRule { "AT" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 356, 367 }\r
-  } //Z#356\r
-  /* Australia/LHI */ :int { 359 } //Z#357\r
+    links:intvector { 355, 366 }\r
+  } //Z#355\r
+  /* Australia/LHI */ :int { 358 } //Z#356\r
   /* Australia/Lindeman */ :table {\r
     transPre32:intvector { -1, 1928176340 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200 }\r
     typeOffsets:intvector { 35756, 0, 36000, 0, 36000, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201" }\r
-  } //Z#358\r
+  } //Z#357\r
   /* Australia/Lord_Howe */ :table {\r
     transPre32:intvector { -1, 1930852316 }\r
     trans:intvector { 352216800, 372785400, 384273000, 404839800, 415722600, 436289400, 447172200, 467739000, 478621800, 499188600, 511282800, 530033400, 542732400, 562087800, 574786800, 594142200, 606236400, 625591800, 636476400, 657041400, 667926000, 688491000, 699375600, 719940600, 731430000, 751995000, 762879600, 783444600, 794329200, 814894200, 828198000, 846343800, 859647600, 877793400, 891097200, 909243000, 922546800, 941297400, 953996400, 967303800, 985446000, 1004196600, 1017500400, 1035646200, 1048950000, 1067095800, 1080399600, 1099150200, 1111849200, 1130599800, 1143903600, 1162049400, 1174748400, 1193499000, 1207407600, 1223134200 }\r
@@ -1838,8 +1841,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "LH" }\r
     finalRaw:int { 37800 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 357, 359 }\r
-  } //Z#359\r
+    links:intvector { 356, 358 }\r
+  } //Z#358\r
   /* Australia/Melbourne */ :table {\r
     transPre32:intvector { -1, 1930855704 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 384278400, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 561484800, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 796147200, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }\r
@@ -1848,19 +1851,19 @@ zoneinfo64:table(nofallback) {
     finalRule { "AV" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 360, 368 }\r
-  } //Z#360\r
-  /* Australia/NSW */ :int { 366 } //Z#361\r
-  /* Australia/North */ :int { 354 } //Z#362\r
+    links:intvector { 359, 367 }\r
+  } //Z#359\r
+  /* Australia/NSW */ :int { 365 } //Z#360\r
+  /* Australia/North */ :int { 353 } //Z#361\r
   /* Australia/Perth */ :table {\r
     transPre32:intvector { -1, 1957041892 }\r
     trans:intvector { -1672559940, -1665385200, -883634400, -876121200, -860392800, -844671600, 152042400, 162928800, 436298400, 447184800, 690314400, 699386400, 1165082400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200 }\r
     typeOffsets:intvector { 27804, 0, 28800, 0, 28800, 3600 }\r
     typeMap:bin { "01020102010201020102010201020102010201" }\r
-    links:intvector { 363, 369 }\r
-  } //Z#363\r
-  /* Australia/Queensland */ :int { 350 } //Z#364\r
-  /* Australia/South */ :int { 349 } //Z#365\r
+    links:intvector { 362, 368 }\r
+  } //Z#362\r
+  /* Australia/Queensland */ :int { 349 } //Z#363\r
+  /* Australia/South */ :int { 348 } //Z#364\r
   /* Australia/Sydney */ :table {\r
     transPre32:intvector { -1, 1930854204 }\r
     trans:intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386697600, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 794332800, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }\r
@@ -1869,19 +1872,19 @@ zoneinfo64:table(nofallback) {
     finalRule { "AN" }\r
     finalRaw:int { 36000 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 1, 348, 352, 361, 366 }\r
-  } //Z#366\r
-  /* Australia/Tasmania */ :int { 356 } //Z#367\r
-  /* Australia/Victoria */ :int { 360 } //Z#368\r
-  /* Australia/West */ :int { 363 } //Z#369\r
-  /* Australia/Yancowinna */ :int { 351 } //Z#370\r
-  /* BET */ :int { 202 } //Z#371\r
-  /* BST */ :int { 263 } //Z#372\r
-  /* Brazil/Acre */ :int { 196 } //Z#373\r
-  /* Brazil/DeNoronha */ :int { 176 } //Z#374\r
-  /* Brazil/East */ :int { 202 } //Z#375\r
-  /* Brazil/West */ :int { 156 } //Z#376\r
-  /* CAT */ :int { 43 } //Z#377\r
+    links:intvector { 1, 347, 351, 360, 365 }\r
+  } //Z#365\r
+  /* Australia/Tasmania */ :int { 355 } //Z#366\r
+  /* Australia/Victoria */ :int { 359 } //Z#367\r
+  /* Australia/West */ :int { 362 } //Z#368\r
+  /* Australia/Yancowinna */ :int { 350 } //Z#369\r
+  /* BET */ :int { 201 } //Z#370\r
+  /* BST */ :int { 262 } //Z#371\r
+  /* Brazil/Acre */ :int { 195 } //Z#372\r
+  /* Brazil/DeNoronha */ :int { 176 } //Z#373\r
+  /* Brazil/East */ :int { 201 } //Z#374\r
+  /* Brazil/West */ :int { 156 } //Z#375\r
+  /* CAT */ :int { 43 } //Z#376\r
   /* CET */ :table {\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 3600, 0, 3600, 3600 }\r
@@ -1889,9 +1892,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "C-Eur" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#378\r
-  /* CNT */ :int { 207 } //Z#379\r
-  /* CST */ :int { 98 } //Z#380\r
+  } //Z#377\r
+  /* CNT */ :int { 206 } //Z#378\r
+  /* CST */ :int { 98 } //Z#379\r
   /* CST6CDT */ :table {\r
     trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }\r
     typeOffsets:intvector { -21600, 0, -21600, 3600 }\r
@@ -1899,22 +1902,22 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2008 }\r
-  } //Z#381\r
-  /* CTT */ :int { 313 } //Z#382\r
-  /* Canada/Atlantic */ :int { 128 } //Z#383\r
-  /* Canada/Central */ :int { 222 } //Z#384\r
-  /* Canada/East-Saskatchewan */ :int { 194 } //Z#385\r
-  /* Canada/Eastern */ :int { 217 } //Z#386\r
-  /* Canada/Mountain */ :int { 112 } //Z#387\r
-  /* Canada/Newfoundland */ :int { 207 } //Z#388\r
-  /* Canada/Pacific */ :int { 219 } //Z#389\r
-  /* Canada/Saskatchewan */ :int { 194 } //Z#390\r
-  /* Canada/Yukon */ :int { 221 } //Z#391\r
-  /* Chile/Continental */ :int { 200 } //Z#392\r
-  /* Chile/EasterIsland */ :int { 555 } //Z#393\r
-  /* Cuba */ :int { 129 } //Z#394\r
-  /* EAT */ :int { 48 } //Z#395\r
-  /* ECT */ :int { 474 } //Z#396\r
+  } //Z#380\r
+  /* CTT */ :int { 312 } //Z#381\r
+  /* Canada/Atlantic */ :int { 128 } //Z#382\r
+  /* Canada/Central */ :int { 221 } //Z#383\r
+  /* Canada/East-Saskatchewan */ :int { 193 } //Z#384\r
+  /* Canada/Eastern */ :int { 216 } //Z#385\r
+  /* Canada/Mountain */ :int { 112 } //Z#386\r
+  /* Canada/Newfoundland */ :int { 206 } //Z#387\r
+  /* Canada/Pacific */ :int { 218 } //Z#388\r
+  /* Canada/Saskatchewan */ :int { 193 } //Z#389\r
+  /* Canada/Yukon */ :int { 220 } //Z#390\r
+  /* Chile/Continental */ :int { 199 } //Z#391\r
+  /* Chile/EasterIsland */ :int { 554 } //Z#392\r
+  /* Cuba */ :int { 129 } //Z#393\r
+  /* EAT */ :int { 48 } //Z#394\r
+  /* ECT */ :int { 473 } //Z#395\r
   /* EET */ :table {\r
     trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 7200, 0, 7200, 3600 }\r
@@ -1922,10 +1925,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#397\r
+  } //Z#396\r
   /* EST */ :table {\r
     typeOffsets:intvector { -18000, 0 }\r
-  } //Z#398\r
+  } //Z#397\r
   /* EST5EDT */ :table {\r
     trans:intvector { -1633280400, -1615140000, -1601830800, -1583690400, -880218000, -765396000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }\r
     typeOffsets:intvector { -18000, 0, -18000, 3600 }\r
@@ -1933,108 +1936,108 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 2008 }\r
-  } //Z#399\r
-  /* Egypt */ :int { 18 } //Z#400\r
-  /* Eire */ :int { 452 } //Z#401\r
+  } //Z#398\r
+  /* Egypt */ :int { 18 } //Z#399\r
+  /* Eire */ :int { 451 } //Z#400\r
   /* Etc/GMT */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-    links:intvector { 402, 403, 416, 431, 432, 504, 505, 506, 507, 508 }\r
-  } //Z#402\r
-  /* Etc/GMT+0 */ :int { 402 } //Z#403\r
+    links:intvector { 401, 402, 415, 430, 431, 503, 504, 505, 506, 507 }\r
+  } //Z#401\r
+  /* Etc/GMT+0 */ :int { 401 } //Z#402\r
   /* Etc/GMT+1 */ :table {\r
     typeOffsets:intvector { -3600, 0 }\r
-  } //Z#404\r
+  } //Z#403\r
   /* Etc/GMT+10 */ :table {\r
     typeOffsets:intvector { -36000, 0 }\r
-  } //Z#405\r
+  } //Z#404\r
   /* Etc/GMT+11 */ :table {\r
     typeOffsets:intvector { -39600, 0 }\r
-  } //Z#406\r
+  } //Z#405\r
   /* Etc/GMT+12 */ :table {\r
     typeOffsets:intvector { -43200, 0 }\r
-  } //Z#407\r
+  } //Z#406\r
   /* Etc/GMT+2 */ :table {\r
     typeOffsets:intvector { -7200, 0 }\r
-  } //Z#408\r
+  } //Z#407\r
   /* Etc/GMT+3 */ :table {\r
     typeOffsets:intvector { -10800, 0 }\r
-  } //Z#409\r
+  } //Z#408\r
   /* Etc/GMT+4 */ :table {\r
     typeOffsets:intvector { -14400, 0 }\r
-  } //Z#410\r
+  } //Z#409\r
   /* Etc/GMT+5 */ :table {\r
     typeOffsets:intvector { -18000, 0 }\r
-  } //Z#411\r
+  } //Z#410\r
   /* Etc/GMT+6 */ :table {\r
     typeOffsets:intvector { -21600, 0 }\r
-  } //Z#412\r
+  } //Z#411\r
   /* Etc/GMT+7 */ :table {\r
     typeOffsets:intvector { -25200, 0 }\r
-  } //Z#413\r
+  } //Z#412\r
   /* Etc/GMT+8 */ :table {\r
     typeOffsets:intvector { -28800, 0 }\r
-  } //Z#414\r
+  } //Z#413\r
   /* Etc/GMT+9 */ :table {\r
     typeOffsets:intvector { -32400, 0 }\r
-  } //Z#415\r
-  /* Etc/GMT-0 */ :int { 402 } //Z#416\r
+  } //Z#414\r
+  /* Etc/GMT-0 */ :int { 401 } //Z#415\r
   /* Etc/GMT-1 */ :table {\r
     typeOffsets:intvector { 3600, 0 }\r
-  } //Z#417\r
+  } //Z#416\r
   /* Etc/GMT-10 */ :table {\r
     typeOffsets:intvector { 36000, 0 }\r
-  } //Z#418\r
+  } //Z#417\r
   /* Etc/GMT-11 */ :table {\r
     typeOffsets:intvector { 39600, 0 }\r
-  } //Z#419\r
+  } //Z#418\r
   /* Etc/GMT-12 */ :table {\r
     typeOffsets:intvector { 43200, 0 }\r
-  } //Z#420\r
+  } //Z#419\r
   /* Etc/GMT-13 */ :table {\r
     typeOffsets:intvector { 46800, 0 }\r
-  } //Z#421\r
+  } //Z#420\r
   /* Etc/GMT-14 */ :table {\r
     typeOffsets:intvector { 50400, 0 }\r
-  } //Z#422\r
+  } //Z#421\r
   /* Etc/GMT-2 */ :table {\r
     typeOffsets:intvector { 7200, 0 }\r
-  } //Z#423\r
+  } //Z#422\r
   /* Etc/GMT-3 */ :table {\r
     typeOffsets:intvector { 10800, 0 }\r
-  } //Z#424\r
+  } //Z#423\r
   /* Etc/GMT-4 */ :table {\r
     typeOffsets:intvector { 14400, 0 }\r
-  } //Z#425\r
+  } //Z#424\r
   /* Etc/GMT-5 */ :table {\r
     typeOffsets:intvector { 18000, 0 }\r
-  } //Z#426\r
+  } //Z#425\r
   /* Etc/GMT-6 */ :table {\r
     typeOffsets:intvector { 21600, 0 }\r
-  } //Z#427\r
+  } //Z#426\r
   /* Etc/GMT-7 */ :table {\r
     typeOffsets:intvector { 25200, 0 }\r
-  } //Z#428\r
+  } //Z#427\r
   /* Etc/GMT-8 */ :table {\r
     typeOffsets:intvector { 28800, 0 }\r
-  } //Z#429\r
+  } //Z#428\r
   /* Etc/GMT-9 */ :table {\r
     typeOffsets:intvector { 32400, 0 }\r
-  } //Z#430\r
-  /* Etc/GMT0 */ :int { 402 } //Z#431\r
-  /* Etc/Greenwich */ :int { 402 } //Z#432\r
+  } //Z#429\r
+  /* Etc/GMT0 */ :int { 401 } //Z#430\r
+  /* Etc/Greenwich */ :int { 401 } //Z#431\r
   /* Etc/UCT */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-    links:intvector { 433, 613 }\r
-  } //Z#433\r
+    links:intvector { 432, 612 }\r
+  } //Z#432\r
   /* Etc/UTC */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-    links:intvector { 434, 435, 437, 627, 628, 632 }\r
-  } //Z#434\r
-  /* Etc/Universal */ :int { 434 } //Z#435\r
+    links:intvector { 433, 434, 436, 626, 627, 631 }\r
+  } //Z#433\r
+  /* Etc/Universal */ :int { 433 } //Z#434\r
   /* Etc/Unknown */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-  } //Z#436\r
-  /* Etc/Zulu */ :int { 434 } //Z#437\r
+  } //Z#435\r
+  /* Etc/Zulu */ :int { 433 } //Z#436\r
   /* Europe/Amsterdam */ :table {\r
     trans:intvector { -1693700372, -1680484772, -1663453172, -1650147572, -1633213172, -1617488372, -1601158772, -1586038772, -1569709172, -1554589172, -1538259572, -1523139572, -1507501172, -1490566772, -1470176372, -1459117172, -1443997172, -1427667572, -1406672372, -1396217972, -1376950772, -1364768372, -1345414772, -1333318772, -1313792372, -1301264372, -1282256372, -1269814772, -1250720372, -1238365172, -1219184372, -1206915572, -1186957172, -1175465972, -1156025972, -1143411572, -1124489972, -1111961972, -1092953972, -1080512372, -1061331572, -1049062772, -1029190772, -1025745572, -1017613200, -998259600, -986163600, -966723600, -954109200, -935022000, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 1172, 0, 1172, 3600, 1200, 0, 1200, 3600, 3600, 0, 3600, 3600 }\r
@@ -2042,7 +2045,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#438\r
+  } //Z#437\r
   /* Europe/Andorra */ :table {\r
     transPre32:intvector { -1, 2117514132 }\r
     trans:intvector { -733881600, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2051,12 +2054,12 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#439\r
+  } //Z#438\r
   /* Europe/Astrakhan */ :table {\r
     trans:intvector { -1441249932, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 }\r
     typeOffsets:intvector { 11532, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403040302010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#440\r
+  } //Z#439\r
   /* Europe/Athens */ :table {\r
     trans:intvector { -1686101632, -1182996000, -1178161200, -906861600, -904878000, -857257200, -844477200, -828237600, -812422800, -552362400, -541652400, 166485600, 186184800, 198028800, 213753600, 228873600, 244080000, 260323200, 275446800, 291798000, 307407600, 323388000, 338936400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 5692, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }\r
@@ -2064,8 +2067,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#441\r
-  /* Europe/Belfast */ :int { 464 } //Z#442\r
+  } //Z#440\r
+  /* Europe/Belfast */ :int { 463 } //Z#441\r
   /* Europe/Belgrade */ :table {\r
     transPre32:intvector { -1, 1581051976 }\r
     trans:intvector { -905824800, -857257200, -844556400, -828226800, -812502000, -796777200, -777942000, -766623600, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2074,8 +2077,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 443, 463, 475, 481, 484, 498 }\r
-  } //Z#443\r
+    links:intvector { 442, 462, 474, 480, 483, 497 }\r
+  } //Z#442\r
   /* Europe/Berlin */ :table {\r
     transPre32:intvector { -1, 1872912888 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -776563200, -765936000, -761180400, -748479600, -733273200, -717631200, -714610800, -710380800, -701910000, -684975600, -670460400, -654130800, -639010800, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2084,8 +2087,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#444\r
-  /* Europe/Bratislava */ :int { 476 } //Z#445\r
+  } //Z#443\r
+  /* Europe/Bratislava */ :int { 475 } //Z#444\r
   /* Europe/Brussels */ :table {\r
     transPre32:intvector { -1, 1844014246 }\r
     trans:intvector { -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2094,7 +2097,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#446\r
+  } //Z#445\r
   /* Europe/Bucharest */ :table {\r
     trans:intvector { -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, 296604000, 307486800, 323816400, 338940000, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670370400, 686095200, 701820000, 717544800, 733269600, 748994400, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }\r
     typeOffsets:intvector { 6264, 0, 7200, 0, 7200, 3600 }\r
@@ -2102,7 +2105,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1998 }\r
-  } //Z#447\r
+  } //Z#446\r
   /* Europe/Budapest */ :table {\r
     transPre32:intvector { -1, 1794028316 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1633212000, -1618700400, -1600466400, -1581202800, -906771600, -857257200, -844556400, -828226800, -812502000, -796777200, -778471200, -762660000, -749689200, -733359600, -717634800, -701910000, -686185200, -670460400, -654130800, -639010800, -621990000, -605660400, -492656400, -481168800, -461120400, -449632800, -428547600, -418269600, -397094400, -386809200, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2111,8 +2114,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#448\r
-  /* Europe/Busingen */ :int { 500 } //Z#449\r
+  } //Z#447\r
+  /* Europe/Busingen */ :int { 499 } //Z#448\r
   /* Europe/Chisinau */ :table {\r
     transPre32:intvector { -1, 1454819576 }\r
     trans:intvector { -1637114100, -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, -927165600, -898138800, -857257200, -844556400, -828226800, -812502000, -800157600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 641944800, 654652800, 670377600, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859680000, 877824000 }\r
@@ -2121,8 +2124,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "Moldova" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1998 }\r
-    links:intvector { 450, 489 }\r
-  } //Z#450\r
+    links:intvector { 449, 488 }\r
+  } //Z#449\r
   /* Europe/Copenhagen */ :table {\r
     transPre32:intvector { -1, 1896673076 }\r
     trans:intvector { -1692496800, -1680490800, -935110800, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -769388400, -747010800, -736383600, -715215600, -706748400, -683161200, -675298800, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2131,7 +2134,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#451\r
+  } //Z#450\r
   /* Europe/Dublin */ :table {\r
     transPre32:intvector { -1, 1473317596 }\r
     trans:intvector { -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -733359600, -719445600, -699490800, -684972000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 }\r
@@ -2140,8 +2143,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 401, 452 }\r
-  } //Z#452\r
+    links:intvector { 400, 451 }\r
+  } //Z#451\r
   /* Europe/Gibraltar */ :table {\r
     transPre32:intvector { -1, 1473317380 }\r
     trans:intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2150,8 +2153,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#453\r
-  /* Europe/Guernsey */ :int { 464 } //Z#454\r
+  } //Z#452\r
+  /* Europe/Guernsey */ :int { 463 } //Z#453\r
   /* Europe/Helsinki */ :table {\r
     trans:intvector { -1535938789, -875671200, -859773600, 354672000, 370396800, 386121600, 401846400, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 5989, 0, 7200, 0, 7200, 3600 }\r
@@ -2159,23 +2162,23 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 455, 468 }\r
-  } //Z#455\r
-  /* Europe/Isle_of_Man */ :int { 464 } //Z#456\r
+    links:intvector { 454, 467 }\r
+  } //Z#454\r
+  /* Europe/Isle_of_Man */ :int { 463 } //Z#455\r
   /* Europe/Istanbul */ :table {\r
     transPre32:intvector { -1, 1454819544 }\r
     trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931140000, -922762800, -917834400, -892436400, -875844000, -857358000, -781063200, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -621828000, -606970800, -590032800, -575434800, -235620000, -228279600, -177732000, -165726000, 10533600, 23835600, 41983200, 55285200, 74037600, 87339600, 107910000, 121219200, 133920000, 152676000, 165362400, 183502800, 202428000, 215557200, 228866400, 245797200, 260316000, 277246800, 308779200, 323827200, 340228800, 354672000, 371678400, 386121600, 403128000, 428446800, 433886400, 482792400, 496702800, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 }\r
     typeOffsets:intvector { 6952, 0, 7016, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030504050405040504050403020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" }\r
-    links:intvector { 275, 457, 612 }\r
-  } //Z#457\r
-  /* Europe/Jersey */ :int { 464 } //Z#458\r
+    links:intvector { 274, 456, 611 }\r
+  } //Z#456\r
+  /* Europe/Jersey */ :int { 463 } //Z#457\r
   /* Europe/Kaliningrad */ :table {\r
     transPre32:intvector { -1, 1872911176 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778730400, -762663600, -757389600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 }\r
     typeOffsets:intvector { 4920, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "01020102010201020102010201030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" }\r
-  } //Z#459\r
+  } //Z#458\r
   /* Europe/Kiev */ :table {\r
     trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 7324, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
@@ -2183,12 +2186,12 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#460\r
+  } //Z#459\r
   /* Europe/Kirov */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }\r
     typeOffsets:intvector { 11928, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030403020102010302010201020102010201020102010201020102010201020102010201020102010201020102010301" }\r
-  } //Z#461\r
+  } //Z#460\r
   /* Europe/Lisbon */ :table {\r
     trans:intvector { -1830381795, -1689555600, -1677801600, -1667437200, -1647738000, -1635814800, -1616202000, -1604365200, -1584666000, -1572742800, -1553043600, -1541206800, -1521507600, -1442451600, -1426813200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1221440400, -1206925200, -1191200400, -1175475600, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942022800, -922669200, -906944400, -891133200, -877309200, -873684000, -864007200, -857955600, -845859600, -842839200, -831348000, -825901200, -814410000, -810784800, -799898400, -794451600, -782960400, -779335200, -768448800, -763002000, -749091600, -733366800, -717631200, -701906400, -686181600, -670456800, -654732000, -639007200, -591832800, -575503200, -559778400, -544053600, -528328800, -512604000, -496879200, -481154400, -465429600, -449704800, -433980000, -417650400, -401925600, -386200800, -370476000, -354751200, -339026400, -323301600, -307576800, -291852000, -276127200, -260402400, -244677600, -228348000, -212623200, -196898400, -181173600, -165448800, -149724000, -133999200, -118274400, 212544000, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -2205, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }\r
@@ -2196,9 +2199,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 462, 594 }\r
-  } //Z#462\r
-  /* Europe/Ljubljana */ :int { 443 } //Z#463\r
+    links:intvector { 461, 593 }\r
+  } //Z#461\r
+  /* Europe/Ljubljana */ :int { 442 } //Z#462\r
   /* Europe/London */ :table {\r
     transPre32:intvector { -1, 442304971 }\r
     trans:intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 }\r
@@ -2207,8 +2210,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 442, 454, 456, 458, 464, 502, 503 }\r
-  } //Z#464\r
+    links:intvector { 441, 453, 455, 457, 463, 501, 502 }\r
+  } //Z#463\r
   /* Europe/Luxembourg */ :table {\r
     trans:intvector { -2069713476, -1692496800, -1680483600, -1662343200, -1650157200, -1632006000, -1618700400, -1612659600, -1604278800, -1585519200, -1574038800, -1552258800, -1539997200, -1520550000, -1507510800, -1490572800, -1473642000, -1459119600, -1444006800, -1427673600, -1411866000, -1396224000, -1379293200, -1364774400, -1348448400, -1333324800, -1316394000, -1301270400, -1284339600, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -935186400, -857257200, -844556400, -828226800, -812502000, -797986800, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 1476, 0, 0, 0, 0, 3600, 3600, 0, 3600, 3600 }\r
@@ -2216,16 +2219,16 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#465\r
+  } //Z#464\r
   /* Europe/Madrid */ :table {\r
-    transPre32:intvector { -1, 2117514496 }\r
-    trans:intvector { -1631926800, -1616889600, -1601168400, -1585353600, -1442451600, -1427673600, -1379293200, -1364774400, -1348448400, -1333324800, -1316390400, -1301270400, -1284339600, -1269820800, -1026954000, -1017619200, -1001898000, -999482400, -986090400, -954115200, -940208400, -873079200, -862621200, -842839200, -828320400, -811389600, -796870800, -779940000, -765421200, -748490400, -733971600, -652327200, -639018000, 135122400, 150246000, 166572000, 181695600, 196812000, 212540400, 228866400, 243990000, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
+    transPre32:intvector { -1, 2117515380 }\r
+    trans:intvector { -1661734800, -1648429200, -1631926800, -1616893200, -1601254800, -1585357200, -1442451600, -1427677200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1029114000, -1017622800, -1002848400, -986173200, -969238800, -954118800, -940208400, -873079200, -862538400, -842839200, -828237600, -811389600, -796010400, -779940000, -765421200, -748490400, -733888800, -652327200, -639190800, 135122400, 150246000, 167176800, 181695600, 196812000, 212540400, 228866400, 243990000, 260402400, 276044400, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { -884, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }\r
-    typeMap:bin { "0102010201020102010201020102010201020302010405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }\r
+    typeMap:bin { "01020102010201020102010201020102010201020102010203020302030203020304050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }\r
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#466\r
+  } //Z#465\r
   /* Europe/Malta */ :table {\r
     transPre32:intvector { -1, 1891488612 }\r
     trans:intvector { -1690765200, -1680487200, -1664758800, -1648951200, -1635123600, -1616896800, -1604278800, -1585533600, -1571014800, -1555293600, -932432400, -857257200, -844556400, -828226800, -812588400, -798073200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71715600, -50547600, -40266000, -18493200, -8211600, 12956400, 23238000, 43801200, 54687600, 75855600, 86742000, 102380400, 118105200, 135730800, 148518000, 167187600, 180489600, 198637200, 211939200, 230086800, 243388800, 261536400, 274838400, 292986000, 306288000, 323312400, 338342400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2234,14 +2237,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#467\r
-  /* Europe/Mariehamn */ :int { 455 } //Z#468\r
+  } //Z#466\r
+  /* Europe/Mariehamn */ :int { 454 } //Z#467\r
   /* Europe/Minsk */ :table {\r
     transPre32:intvector { -1, 1454819880 }\r
     trans:intvector { -1441158600, -1247536800, -899780400, -857257200, -844556400, -828226800, -812502000, -804650400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 670374000, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000 }\r
     typeOffsets:intvector { 6616, 0, 3600, 0, 3600, 3600, 6600, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
     typeMap:bin { "0304060201020102060706070607060706070607060706070607060504050405040504050405040504050405040504050405040504050405040504050405040504050406" }\r
-  } //Z#469\r
+  } //Z#468\r
   /* Europe/Monaco */ :table {\r
     transPre32:intvector { -1, 1808287124 }\r
     trans:intvector { -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -904438800, -891136800, -877827600, -857257200, -844556400, -828226800, -812502000, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2250,14 +2253,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#470\r
+  } //Z#469\r
   /* Europe/Moscow */ :table {\r
     trans:intvector { -1688265017, -1656819079, -1641353479, -1627965079, -1618716679, -1596429079, -1593820800, -1589860800, -1542427200, -1539493200, -1525323600, -1522728000, -1491188400, -1247536800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }\r
     typeOffsets:intvector { 9017, 0, 7200, 0, 7200, 3600, 9079, 0, 9079, 3600, 9079, 7200, 10800, 0, 10800, 3600, 10800, 7200, 14400, 0 }\r
     typeMap:bin { "0304030504050706070807060106070607060706070607060706070607060706070602010607060706070607060706070607060706070607060706070607060706070607060706070607060906" }\r
-    links:intvector { 471, 630 }\r
-  } //Z#471\r
-  /* Europe/Nicosia */ :int { 297 } //Z#472\r
+    links:intvector { 470, 629 }\r
+  } //Z#470\r
+  /* Europe/Nicosia */ :int { 296 } //Z#471\r
   /* Europe/Oslo */ :table {\r
     transPre32:intvector { -1, 1928209516 }\r
     trans:intvector { -1691884800, -1680573600, -927511200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -765327600, -340844400, -324514800, -308790000, -293065200, -277340400, -261615600, -245890800, -230166000, -214441200, -198716400, -182991600, -166662000, -147913200, -135212400, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2266,8 +2269,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 237, 342, 473 }\r
-  } //Z#473\r
+    links:intvector { 236, 341, 472 }\r
+  } //Z#472\r
   /* Europe/Paris */ :table {\r
     trans:intvector { -1855958901, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -932436000, -857257200, -844556400, -828226800, -812502000, -800071200, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 561, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }\r
@@ -2275,9 +2278,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 396, 474 }\r
-  } //Z#474\r
-  /* Europe/Podgorica */ :int { 443 } //Z#475\r
+    links:intvector { 395, 473 }\r
+  } //Z#473\r
+  /* Europe/Podgorica */ :int { 442 } //Z#474\r
   /* Europe/Prague */ :table {\r
     transPre32:intvector { -1, 1825565432 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -798073200, -780534000, -761180400, -746578800, -733359600, -716425200, -701910000, -684975600, -670460400, -654217200, -639010800, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2286,8 +2289,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 445, 476 }\r
-  } //Z#476\r
+    links:intvector { 444, 475 }\r
+  } //Z#475\r
   /* Europe/Riga */ :table {\r
     trans:intvector { -1632008194, -1618702594, -1601681794, -1597275394, -1377308194, -928029600, -899521200, -857257200, -844556400, -828226800, -812502000, -796777200, -795834000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 843955200, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 985482000, 1004230800 }\r
     typeOffsets:intvector { 5794, 0, 3600, 0, 3600, 3600, 5794, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
@@ -2295,7 +2298,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2002 }\r
-  } //Z#477\r
+  } //Z#476\r
   /* Europe/Rome */ :table {\r
     transPre32:intvector { -1, 1891402096 }\r
     trans:intvector { -1690765200, -1680487200, -1664758800, -1648951200, -1635123600, -1616896800, -1604278800, -1585533600, -1571014800, -1555293600, -932432400, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71715600, -50547600, -40266000, -18493200, -8211600, 12956400, 23238000, 43801200, 54687600, 75855600, 86742000, 107910000, 118191600, 138754800, 149641200, 170809200, 181090800, 202258800, 212540400, 233103600, 243990000, 265158000, 276044400, 296607600, 307494000, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2304,27 +2307,27 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 478, 480, 493 }\r
-  } //Z#478\r
+    links:intvector { 477, 479, 492 }\r
+  } //Z#477\r
   /* Europe/Samara */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 687916800, 701820000, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288479600, 1301180400 }\r
     typeOffsets:intvector { 12020, 0, 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "02040504050405040504050405040504050403020302010204050405040504050405040504050405040504050405040504050405040504050405040504030204" }\r
-  } //Z#479\r
-  /* Europe/San_Marino */ :int { 478 } //Z#480\r
-  /* Europe/Sarajevo */ :int { 443 } //Z#481\r
+  } //Z#478\r
+  /* Europe/San_Marino */ :int { 477 } //Z#479\r
+  /* Europe/Sarajevo */ :int { 442 } //Z#480\r
   /* Europe/Saratov */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1480806000 }\r
     typeOffsets:intvector { 11058, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "01030403040304030403040304030403020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" }\r
-  } //Z#482\r
+  } //Z#481\r
   /* Europe/Simferopol */ :table {\r
     transPre32:intvector { -1, 1454818312 }\r
     trans:intvector { -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 767739600, 780436800, 796165200, 811886400, 828219600, 846374400, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396137600, 1414274400 }\r
     typeOffsets:intvector { 8184, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8160, 0, 10800, 0, 10800, 3600, 14400, 0 }\r
     typeMap:bin { "050306020102010206070607060706070607060706070607060706030403040304070607060706040304030403040304030403040304030403040304030403040304030403040304030806" }\r
-  } //Z#483\r
-  /* Europe/Skopje */ :int { 443 } //Z#484\r
+  } //Z#482\r
+  /* Europe/Skopje */ :int { 442 } //Z#483\r
   /* Europe/Sofia */ :table {\r
     transPre32:intvector { -1, 1454820900, -1, 1925440280 }\r
     trans:intvector { -857257200, -844556400, -828226800, -812502000, -796777200, -781048800, 291762000, 307576800, 323816400, 339026400, 355266000, 370393200, 386715600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }\r
@@ -2333,7 +2336,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1998 }\r
-  } //Z#485\r
+  } //Z#484\r
   /* Europe/Stockholm */ :table {\r
     transPre32:intvector { -1, 1423286164, -1, 2085974882 }\r
     trans:intvector { -1692496800, -1680483600, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2342,7 +2345,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#486\r
+  } //Z#485\r
   /* Europe/Tallinn */ :table {\r
     trans:intvector { -1638322740, -1632006000, -1618700400, -1593824400, -1535938740, -927943200, -892954800, -857257200, -844556400, -828226800, -812502000, -797652000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909277200, 922582800, 941331600, 1017536400, 1035680400 }\r
     typeOffsets:intvector { 5940, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }\r
@@ -2350,7 +2353,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2003 }\r
-  } //Z#487\r
+  } //Z#486\r
   /* Europe/Tirane */ :table {\r
     trans:intvector { -1767230360, -932346000, -857257200, -844556400, -843519600, 136854000, 149896800, 168130800, 181432800, 199839600, 213141600, 231894000, 244591200, 263257200, 276040800, 294706800, 307490400, 326156400, 339458400, 357087600, 370389600, 389142000, 402444000, 419468400, 433807200, 449622000, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 4760, 0, 3600, 0, 3600, 3600 }\r
@@ -2358,13 +2361,13 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#488\r
-  /* Europe/Tiraspol */ :int { 450 } //Z#489\r
+  } //Z#487\r
+  /* Europe/Tiraspol */ :int { 449 } //Z#488\r
   /* Europe/Ulyanovsk */ :table {\r
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 }\r
     typeOffsets:intvector { 11616, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "030506050605060506050605060506050605040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050305" }\r
-  } //Z#490\r
+  } //Z#489\r
   /* Europe/Uzhgorod */ :table {\r
     transPre32:intvector { -1, 1794027544 }\r
     trans:intvector { -938905200, -857257200, -844556400, -828226800, -812502000, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 670384800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2373,9 +2376,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#491\r
-  /* Europe/Vaduz */ :int { 500 } //Z#492\r
-  /* Europe/Vatican */ :int { 478 } //Z#493\r
+  } //Z#490\r
+  /* Europe/Vaduz */ :int { 499 } //Z#491\r
+  /* Europe/Vatican */ :int { 477 } //Z#492\r
   /* Europe/Vienna */ :table {\r
     transPre32:intvector { -1, 1872912175 }\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733359600, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2384,7 +2387,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#494\r
+  } //Z#493\r
   /* Europe/Vilnius */ :table {\r
     transPre32:intvector { -1, 1454820420 }\r
     trans:intvector { -1672536240, -1585100136, -1561251600, -1553565600, -928198800, -900126000, -857257200, -844556400, -828226800, -812502000, -802144800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891133200, 909277200, 922582800, 941331600, 1048986000, 1067130000 }\r
@@ -2393,12 +2396,12 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 2004 }\r
-  } //Z#495\r
+  } //Z#494\r
   /* Europe/Volgograd */ :table {\r
     trans:intvector { -1577761060, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }\r
     typeOffsets:intvector { 10660, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "010304030403040304030403040304030201020102010302010201020102010201020102010201020102010201020102010201020102010201020102010301" }\r
-  } //Z#496\r
+  } //Z#495\r
   /* Europe/Warsaw */ :table {\r
     trans:intvector { -1717032240, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1600473600, -1587168000, -1501725600, -931734000, -857257200, -844556400, -828226800, -812502000, -796608000, -778726800, -762660000, -748486800, -733273200, -715215600, -701910000, -684975600, -670460400, -654130800, -639010800, -397094400, -386812800, -371088000, -355363200, -334195200, -323308800, -307584000, -291859200, -271296000, -260409600, -239846400, -228960000, -208396800, -197510400, -176342400, -166060800, 228873600, 243993600, 260323200, 276048000, 291772800, 307497600, 323827200, 338947200, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 5040, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }\r
@@ -2406,9 +2409,9 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 497, 593 }\r
-  } //Z#497\r
-  /* Europe/Zagreb */ :int { 443 } //Z#498\r
+    links:intvector { 496, 592 }\r
+  } //Z#496\r
+  /* Europe/Zagreb */ :int { 442 } //Z#497\r
   /* Europe/Zaporozhye */ :table {\r
     transPre32:intvector { -1, 1454818056 }\r
     trans:intvector { -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2417,7 +2420,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 7200 }\r
     finalYear:int { 1997 }\r
-  } //Z#499\r
+  } //Z#498\r
   /* Europe/Zurich */ :table {\r
     transPre32:intvector { -1, 619768448, -1, 1909720710 }\r
     trans:intvector { -904435200, -891129600, -872985600, -859680000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
@@ -2426,75 +2429,75 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-    links:intvector { 449, 492, 500 }\r
-  } //Z#500\r
+    links:intvector { 448, 491, 499 }\r
+  } //Z#499\r
   /* Factory */ :table {\r
     typeOffsets:intvector { 0, 0 }\r
-  } //Z#501\r
-  /* GB */ :int { 464 } //Z#502\r
-  /* GB-Eire */ :int { 464 } //Z#503\r
-  /* GMT */ :int { 402 } //Z#504\r
-  /* GMT+0 */ :int { 402 } //Z#505\r
-  /* GMT-0 */ :int { 402 } //Z#506\r
-  /* GMT0 */ :int { 402 } //Z#507\r
-  /* Greenwich */ :int { 402 } //Z#508\r
+  } //Z#500\r
+  /* GB */ :int { 463 } //Z#501\r
+  /* GB-Eire */ :int { 463 } //Z#502\r
+  /* GMT */ :int { 401 } //Z#503\r
+  /* GMT+0 */ :int { 401 } //Z#504\r
+  /* GMT-0 */ :int { 401 } //Z#505\r
+  /* GMT0 */ :int { 401 } //Z#506\r
+  /* Greenwich */ :int { 401 } //Z#507\r
   /* HST */ :table {\r
     typeOffsets:intvector { -36000, 0 }\r
-  } //Z#509\r
-  /* Hongkong */ :int { 272 } //Z#510\r
-  /* IET */ :int { 131 } //Z#511\r
-  /* IST */ :int { 286 } //Z#512\r
-  /* Iceland */ :int { 344 } //Z#513\r
-  /* Indian/Antananarivo */ :int { 48 } //Z#514\r
+  } //Z#508\r
+  /* Hongkong */ :int { 271 } //Z#509\r
+  /* IET */ :int { 131 } //Z#510\r
+  /* IST */ :int { 285 } //Z#511\r
+  /* Iceland */ :int { 343 } //Z#512\r
+  /* Indian/Antananarivo */ :int { 48 } //Z#513\r
   /* Indian/Chagos */ :table {\r
     trans:intvector { -1988167780, 820436400 }\r
     typeOffsets:intvector { 17380, 0, 18000, 0, 21600, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#515\r
+  } //Z#514\r
   /* Indian/Christmas */ :table {\r
     transPre32:intvector { -1, 1930865124 }\r
     typeOffsets:intvector { 25372, 0, 25200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#516\r
+  } //Z#515\r
   /* Indian/Cocos */ :table {\r
     transPre32:intvector { -1, 2085955236 }\r
     typeOffsets:intvector { 23260, 0, 23400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#517\r
-  /* Indian/Comoro */ :int { 48 } //Z#518\r
+  } //Z#516\r
+  /* Indian/Comoro */ :int { 48 } //Z#517\r
   /* Indian/Kerguelen */ :table {\r
     trans:intvector { -631152000 }\r
     typeOffsets:intvector { 0, 0, 18000, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#519\r
+  } //Z#518\r
   /* Indian/Mahe */ :table {\r
     trans:intvector { -2006653308 }\r
     typeOffsets:intvector { 13308, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#520\r
+  } //Z#519\r
   /* Indian/Maldives */ :table {\r
     trans:intvector { -315636840 }\r
     typeOffsets:intvector { 17640, 0, 18000, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#521\r
+  } //Z#520\r
   /* Indian/Mauritius */ :table {\r
     trans:intvector { -1988164200, 403041600, 417034800, 1224972000, 1238274000 }\r
     typeOffsets:intvector { 13800, 0, 14400, 0, 14400, 3600 }\r
     typeMap:bin { "0102010201" }\r
-  } //Z#522\r
-  /* Indian/Mayotte */ :int { 48 } //Z#523\r
+  } //Z#521\r
+  /* Indian/Mayotte */ :int { 48 } //Z#522\r
   /* Indian/Reunion */ :table {\r
     trans:intvector { -1848886912 }\r
     typeOffsets:intvector { 13312, 0, 14400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#524\r
-  /* Iran */ :int { 319 } //Z#525\r
-  /* Israel */ :int { 278 } //Z#526\r
-  /* JST */ :int { 323 } //Z#527\r
-  /* Jamaica */ :int { 142 } //Z#528\r
-  /* Japan */ :int { 323 } //Z#529\r
-  /* Kwajalein */ :int { 569 } //Z#530\r
-  /* Libya */ :int { 56 } //Z#531\r
+  } //Z#523\r
+  /* Iran */ :int { 318 } //Z#524\r
+  /* Israel */ :int { 277 } //Z#525\r
+  /* JST */ :int { 322 } //Z#526\r
+  /* Jamaica */ :int { 142 } //Z#527\r
+  /* Japan */ :int { 322 } //Z#528\r
+  /* Kwajalein */ :int { 568 } //Z#529\r
+  /* Libya */ :int { 56 } //Z#530\r
   /* MET */ :table {\r
     trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 3600, 0, 3600, 3600 }\r
@@ -2502,11 +2505,11 @@ zoneinfo64:table(nofallback) {
     finalRule { "C-Eur" }\r
     finalRaw:int { 3600 }\r
     finalYear:int { 1997 }\r
-  } //Z#532\r
-  /* MIT */ :int { 550 } //Z#533\r
+  } //Z#531\r
+  /* MIT */ :int { 549 } //Z#532\r
   /* MST */ :table {\r
     typeOffsets:intvector { -25200, 0 }\r
-  } //Z#534\r
+  } //Z#533\r
   /* MST7MDT */ :table {\r
     trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }\r
     typeOffsets:intvector { -25200, 0, -25200, 3600 }\r
@@ -2514,20 +2517,20 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 2008 }\r
-  } //Z#535\r
-  /* Mexico/BajaNorte */ :int { 216 } //Z#536\r
-  /* Mexico/BajaSur */ :int { 160 } //Z#537\r
-  /* Mexico/General */ :int { 165 } //Z#538\r
-  /* NET */ :int { 335 } //Z#539\r
-  /* NST */ :int { 551 } //Z#540\r
-  /* NZ */ :int { 551 } //Z#541\r
-  /* NZ-CHAT */ :int { 553 } //Z#542\r
-  /* Navajo */ :int { 109 } //Z#543\r
-  /* PLT */ :int { 281 } //Z#544\r
-  /* PNT */ :int { 184 } //Z#545\r
-  /* PRC */ :int { 313 } //Z#546\r
-  /* PRT */ :int { 189 } //Z#547\r
-  /* PST */ :int { 151 } //Z#548\r
+  } //Z#534\r
+  /* Mexico/BajaNorte */ :int { 215 } //Z#535\r
+  /* Mexico/BajaSur */ :int { 160 } //Z#536\r
+  /* Mexico/General */ :int { 165 } //Z#537\r
+  /* NET */ :int { 334 } //Z#538\r
+  /* NST */ :int { 550 } //Z#539\r
+  /* NZ */ :int { 550 } //Z#540\r
+  /* NZ-CHAT */ :int { 552 } //Z#541\r
+  /* Navajo */ :int { 109 } //Z#542\r
+  /* PLT */ :int { 280 } //Z#543\r
+  /* PNT */ :int { 184 } //Z#544\r
+  /* PRC */ :int { 312 } //Z#545\r
+  /* PRT */ :int { 189 } //Z#546\r
+  /* PST */ :int { 151 } //Z#547\r
   /* PST8PDT */ :table {\r
     trans:intvector { -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -765385200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }\r
     typeOffsets:intvector { -28800, 0, -28800, 3600 }\r
@@ -2535,7 +2538,7 @@ zoneinfo64:table(nofallback) {
     finalRule { "US" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 2008 }\r
-  } //Z#549\r
+  } //Z#548\r
   /* Pacific/Apia */ :table {\r
     transPre32:intvector { -1, 1439229312 }\r
     trans:intvector { -1861878784, -631110600, 1285498800, 1301752800, 1316872800, 1325239200, 1333202400, 1348927200 }\r
@@ -2544,8 +2547,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "WS" }\r
     finalRaw:int { 46800 }\r
     finalYear:int { 2013 }\r
-    links:intvector { 533, 550 }\r
-  } //Z#550\r
+    links:intvector { 532, 549 }\r
+  } //Z#549\r
   /* Pacific/Auckland */ :table {\r
     transPre32:intvector { -1, 1102531752 }\r
     trans:intvector { -1330335000, -1320057000, -1300699800, -1287396000, -1269250200, -1255946400, -1237800600, -1224496800, -1206351000, -1192442400, -1174901400, -1160992800, -1143451800, -1125914400, -1112607000, -1094464800, -1081157400, -1063015200, -1049707800, -1031565600, -1018258200, -1000116000, -986808600, -968061600, -955359000, -936612000, -923304600, -757425600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }\r
@@ -2554,14 +2557,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "NZ" }\r
     finalRaw:int { 43200 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 230, 233, 540, 541, 551 }\r
-  } //Z#551\r
+    links:intvector { 229, 232, 539, 540, 550 }\r
+  } //Z#550\r
   /* Pacific/Bougainville */ :table {\r
     transPre32:intvector { -1, 1454789160, -1, 1928176784 }\r
     trans:intvector { -868010400, -768906000, 1419696000 }\r
     typeOffsets:intvector { 37336, 0, 32400, 0, 35312, 0, 36000, 0, 39600, 0 }\r
     typeMap:bin { "0203010304" }\r
-  } //Z#552\r
+  } //Z#551\r
   /* Pacific/Chatham */ :table {\r
     transPre32:intvector { -1, 1102529668 }\r
     trans:intvector { -757426500, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }\r
@@ -2570,14 +2573,14 @@ zoneinfo64:table(nofallback) {
     finalRule { "Chatham" }\r
     finalRaw:int { 45900 }\r
     finalYear:int { 2009 }\r
-    links:intvector { 542, 553 }\r
-  } //Z#553\r
+    links:intvector { 541, 552 }\r
+  } //Z#552\r
   /* Pacific/Chuuk */ :table {\r
     transPre32:intvector { -1, 2117478068 }\r
     typeOffsets:intvector { 36428, 0, 36000, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 554, 589, 592 }\r
-  } //Z#554\r
+    links:intvector { 553, 588, 591 }\r
+  } //Z#553\r
   /* Pacific/Easter */ :table {\r
     trans:intvector { -1178124152, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200 }\r
     typeOffsets:intvector { -26248, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }\r
@@ -2585,25 +2588,25 @@ zoneinfo64:table(nofallback) {
     finalRule { "Chile" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 2017 }\r
-    links:intvector { 393, 555 }\r
-  } //Z#555\r
+    links:intvector { 392, 554 }\r
+  } //Z#554\r
   /* Pacific/Efate */ :table {\r
     trans:intvector { -1829387596, 433256400, 448977600, 467298000, 480427200, 496760400, 511876800, 528210000, 543931200, 559659600, 575380800, 591109200, 606830400, 622558800, 638280000, 654008400, 669729600, 686062800, 696340800, 719931600, 727790400 }\r
     typeOffsets:intvector { 40396, 0, 39600, 0, 39600, 3600 }\r
     typeMap:bin { "010201020102010201020102010201020102010201" }\r
-  } //Z#556\r
+  } //Z#555\r
   /* Pacific/Enderbury */ :table {\r
     transPre32:intvector { -1, 2117555556 }\r
     trans:intvector { 307627200, 788958000 }\r
     typeOffsets:intvector { -41060, 0, -43200, 0, -39600, 0, 46800, 0 }\r
     typeMap:bin { "010203" }\r
-  } //Z#557\r
+  } //Z#556\r
   /* Pacific/Fakaofo */ :table {\r
     transPre32:intvector { -1, 2117555592 }\r
     trans:intvector { 1325242800 }\r
     typeOffsets:intvector { -41096, 0, -39600, 0, 46800, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#558\r
+  } //Z#557\r
   /* Pacific/Fiji */ :table {\r
     trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000 }\r
     typeOffsets:intvector { 42944, 0, 43200, 0, 43200, 3600 }\r
@@ -2611,143 +2614,143 @@ zoneinfo64:table(nofallback) {
     finalRule { "Fiji" }\r
     finalRaw:int { 43200 }\r
     finalYear:int { 2016 }\r
-  } //Z#559\r
+  } //Z#558\r
   /* Pacific/Funafuti */ :table {\r
     transPre32:intvector { -1, 2117471484 }\r
     typeOffsets:intvector { 43012, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#560\r
+  } //Z#559\r
   /* Pacific/Galapagos */ :table {\r
-    trans:intvector { -1230746496, 504939600, 722930400, 728888400 }\r
-    typeOffsets:intvector { -21504, 0, -21600, 0, -21600, 3600, -18000, 0 }\r
-    typeMap:bin { "03010201" }\r
-  } //Z#561\r
+    trans:intvector { -1230746496, 504939600 }\r
+    typeOffsets:intvector { -21504, 0, -21600, 0, -18000, 0 }\r
+    typeMap:bin { "0201" }\r
+  } //Z#560\r
   /* Pacific/Gambier */ :table {\r
     trans:intvector { -1806678012 }\r
     typeOffsets:intvector { -32388, 0, -32400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#562\r
+  } //Z#561\r
   /* Pacific/Guadalcanal */ :table {\r
     trans:intvector { -1806748788 }\r
     typeOffsets:intvector { 38388, 0, 39600, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 563, 597 }\r
-  } //Z#563\r
+    links:intvector { 562, 596 }\r
+  } //Z#562\r
   /* Pacific/Guam */ :table {\r
     transPre32:intvector { -1, 350340556, -1, 2117479756 }\r
     typeOffsets:intvector { -51660, 0, 34740, 0, 36000, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 564, 584 }\r
-  } //Z#564\r
+    links:intvector { 563, 583 }\r
+  } //Z#563\r
   /* Pacific/Honolulu */ :table {\r
     transPre32:intvector { -1, 1960865982 }\r
     trans:intvector { -1157283000, -1155436200, -880198200, -765376200, -712150200 }\r
     typeOffsets:intvector { -37886, 0, -37800, 0, -37800, 3600, -36000, 0 }\r
     typeMap:bin { "010201020103" }\r
-    links:intvector { 565, 566, 620 }\r
-  } //Z#565\r
-  /* Pacific/Johnston */ :int { 565 } //Z#566\r
+    links:intvector { 564, 565, 619 }\r
+  } //Z#564\r
+  /* Pacific/Johnston */ :int { 564 } //Z#565\r
   /* Pacific/Kiritimati */ :table {\r
     transPre32:intvector { -1, 2117552256 }\r
     trans:intvector { 307622400, 788954400 }\r
     typeOffsets:intvector { -37760, 0, -38400, 0, -36000, 0, 50400, 0 }\r
     typeMap:bin { "010203" }\r
-  } //Z#567\r
+  } //Z#566\r
   /* Pacific/Kosrae */ :table {\r
     transPre32:intvector { -1, 2117475380 }\r
     trans:intvector { -7988400, 915105600 }\r
     typeOffsets:intvector { 39116, 0, 39600, 0, 43200, 0 }\r
     typeMap:bin { "010201" }\r
-  } //Z#568\r
+  } //Z#567\r
   /* Pacific/Kwajalein */ :table {\r
     transPre32:intvector { -1, 2117474336 }\r
     trans:intvector { -7988400, 745848000 }\r
     typeOffsets:intvector { 40160, 0, -43200, 0, 39600, 0, 43200, 0 }\r
     typeMap:bin { "020103" }\r
-    links:intvector { 530, 569 }\r
-  } //Z#569\r
+    links:intvector { 529, 568 }\r
+  } //Z#568\r
   /* Pacific/Majuro */ :table {\r
     transPre32:intvector { -1, 2117473408 }\r
     trans:intvector { -7988400 }\r
     typeOffsets:intvector { 41088, 0, 39600, 0, 43200, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#570\r
+  } //Z#569\r
   /* Pacific/Marquesas */ :table {\r
     trans:intvector { -1806676920 }\r
     typeOffsets:intvector { -33480, 0, -34200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#571\r
-  /* Pacific/Midway */ :int { 577 } //Z#572\r
+  } //Z#570\r
+  /* Pacific/Midway */ :int { 576 } //Z#571\r
   /* Pacific/Nauru */ :table {\r
     trans:intvector { -1545131260, -877347000, -800960400, 294323400 }\r
     typeOffsets:intvector { 40060, 0, 32400, 0, 41400, 0, 43200, 0 }\r
     typeMap:bin { "02010203" }\r
-  } //Z#573\r
+  } //Z#572\r
   /* Pacific/Niue */ :table {\r
     transPre32:intvector { -1, 2117555276 }\r
     trans:intvector { -599575200, 276089400 }\r
     typeOffsets:intvector { -40780, 0, -41400, 0, -40800, 0, -39600, 0 }\r
     typeMap:bin { "020103" }\r
-  } //Z#574\r
+  } //Z#573\r
   /* Pacific/Norfolk */ :table {\r
     transPre32:intvector { -1, 2117474184 }\r
     trans:intvector { -599656320, 152029800, 162912600, 1443882600 }\r
     typeOffsets:intvector { 40312, 0, 39600, 0, 40320, 0, 41400, 0, 41400, 3600 }\r
     typeMap:bin { "0203040301" }\r
-  } //Z#575\r
+  } //Z#574\r
   /* Pacific/Noumea */ :table {\r
     trans:intvector { -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 }\r
     typeOffsets:intvector { 39948, 0, 39600, 0, 39600, 3600 }\r
     typeMap:bin { "01020102010201" }\r
-  } //Z#576\r
+  } //Z#575\r
   /* Pacific/Pago_Pago */ :table {\r
     transPre32:intvector { -1, 1439229064 }\r
     trans:intvector { -1861879032 }\r
     typeOffsets:intvector { 45432, 0, -40968, 0, -39600, 0 }\r
     typeMap:bin { "0102" }\r
-    links:intvector { 572, 577, 585, 626 }\r
-  } //Z#577\r
+    links:intvector { 571, 576, 584, 625 }\r
+  } //Z#576\r
   /* Pacific/Palau */ :table {\r
     transPre32:intvector { -1, 2117482220 }\r
     typeOffsets:intvector { 32276, 0, 32400, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#578\r
+  } //Z#577\r
   /* Pacific/Pitcairn */ :table {\r
     transPre32:intvector { -1, 2117545716 }\r
     trans:intvector { 893665800 }\r
     typeOffsets:intvector { -31220, 0, -30600, 0, -28800, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#579\r
+  } //Z#578\r
   /* Pacific/Pohnpei */ :table {\r
     transPre32:intvector { -1, 2117476524 }\r
     typeOffsets:intvector { 37972, 0, 39600, 0 }\r
     typeMap:bin { "01" }\r
-    links:intvector { 580, 581 }\r
-  } //Z#580\r
-  /* Pacific/Ponape */ :int { 580 } //Z#581\r
+    links:intvector { 579, 580 }\r
+  } //Z#579\r
+  /* Pacific/Ponape */ :int { 579 } //Z#580\r
   /* Pacific/Port_Moresby */ :table {\r
     transPre32:intvector { -1, 1454791176, -1, 1928176784 }\r
     typeOffsets:intvector { 35320, 0, 35312, 0, 36000, 0 }\r
     typeMap:bin { "0102" }\r
-  } //Z#582\r
+  } //Z#581\r
   /* Pacific/Rarotonga */ :table {\r
     transPre32:intvector { -1, 2117552840 }\r
     trans:intvector { 279714600, 289387800, 309952800, 320837400, 341402400, 352287000, 372852000, 384341400, 404906400, 415791000, 436356000, 447240600, 467805600, 478690200, 499255200, 510139800, 530704800, 541589400, 562154400, 573643800, 594208800, 605093400, 625658400, 636543000, 657108000, 667992600 }\r
     typeOffsets:intvector { -38344, 0, -37800, 0, -36000, 0, -36000, 1800 }\r
     typeMap:bin { "010302030203020302030203020302030203020302030203020302" }\r
-  } //Z#583\r
-  /* Pacific/Saipan */ :int { 564 } //Z#584\r
-  /* Pacific/Samoa */ :int { 577 } //Z#585\r
+  } //Z#582\r
+  /* Pacific/Saipan */ :int { 563 } //Z#583\r
+  /* Pacific/Samoa */ :int { 576 } //Z#584\r
   /* Pacific/Tahiti */ :table {\r
     trans:intvector { -1806674504 }\r
     typeOffsets:intvector { -35896, 0, -36000, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#586\r
+  } //Z#585\r
   /* Pacific/Tarawa */ :table {\r
     transPre32:intvector { -1, 2117472972 }\r
     typeOffsets:intvector { 41524, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#587\r
+  } //Z#586\r
   /* Pacific/Tongatapu */ :table {\r
     transPre32:intvector { -1, 2117470136 }\r
     trans:intvector { -915193200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400, 1478350800, 1484398800, 1509800400 }\r
@@ -2756,28 +2759,28 @@ zoneinfo64:table(nofallback) {
     finalRule { "Tonga" }\r
     finalRaw:int { 46800 }\r
     finalYear:int { 2018 }\r
-  } //Z#588\r
-  /* Pacific/Truk */ :int { 554 } //Z#589\r
+  } //Z#587\r
+  /* Pacific/Truk */ :int { 553 } //Z#588\r
   /* Pacific/Wake */ :table {\r
     transPre32:intvector { -1, 2117474508 }\r
     typeOffsets:intvector { 39988, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#590\r
+  } //Z#589\r
   /* Pacific/Wallis */ :table {\r
     transPre32:intvector { -1, 2117470376 }\r
     typeOffsets:intvector { 44120, 0, 43200, 0 }\r
     typeMap:bin { "01" }\r
-  } //Z#591\r
-  /* Pacific/Yap */ :int { 554 } //Z#592\r
-  /* Poland */ :int { 497 } //Z#593\r
-  /* Portugal */ :int { 462 } //Z#594\r
-  /* ROC */ :int { 316 } //Z#595\r
-  /* ROK */ :int { 312 } //Z#596\r
-  /* SST */ :int { 563 } //Z#597\r
-  /* Singapore */ :int { 314 } //Z#598\r
+  } //Z#590\r
+  /* Pacific/Yap */ :int { 553 } //Z#591\r
+  /* Poland */ :int { 496 } //Z#592\r
+  /* Portugal */ :int { 461 } //Z#593\r
+  /* ROC */ :int { 315 } //Z#594\r
+  /* ROK */ :int { 311 } //Z#595\r
+  /* SST */ :int { 562 } //Z#596\r
+  /* Singapore */ :int { 313 } //Z#597\r
   /* SystemV/AST4 */ :table {\r
     typeOffsets:intvector { -14400, 0 }\r
-  } //Z#599\r
+  } //Z#598\r
   /* SystemV/AST4ADT */ :table {\r
     transPre32:intvector { -1, 2096195296, -1, 2111916496, -1, 2127644896, -1, 2143366096 }\r
     trans:intvector { -2135872800, -2120151600, -2104423200, -2088702000, -2072973600, -2056647600, -2040919200, -2025198000, -2009469600, -1993748400, -1978020000, -1962298800, -1946570400, -1930849200, -1915120800, -1898794800, -1883671200, -1867345200, -1851616800, -1835895600, -1820167200, -1804446000, -1788717600, -1772996400, -1757268000, -1741546800, -1725818400, -1709492400, -1693764000, -1678042800, -1662314400, -1646593200, -1630864800, -1615143600, -1599415200, -1583694000, -1567965600, -1551639600, -1536516000, -1520190000, -1504461600, -1488740400, -1473012000, -1457290800, -1441562400, -1425841200, -1410112800, -1394391600, -1378663200, -1362337200, -1347213600, -1330887600, -1315159200, -1299438000, -1283709600, -1267988400, -1252260000, -1236538800, -1220810400, -1205089200, -1189360800, -1173034800, -1157306400, -1141585200, -1125856800, -1110135600, -1094407200, -1078686000, -1062957600, -1047236400, -1031508000, -1015182000, -1000058400, -983732400, -968004000, -952282800, -936554400, -920833200, -905104800, -889383600, -873655200, -857934000, -842205600, -825879600, -810151200, -794430000, -778701600, -762980400, -747252000, -731530800, -715802400, -700081200, -684352800, -668026800, -652903200, -636577200, -620848800, -605127600, -589399200, -573678000, -557949600, -542228400, -526500000, -510778800, -495050400, -478724400, -463600800, -447274800, -431546400, -415825200, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 126684000, 154501200, 162367200, 183531600, 199260000, 215586000 }\r
@@ -2786,10 +2789,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -14400 }\r
     finalYear:int { 1977 }\r
-  } //Z#600\r
+  } //Z#599\r
   /* SystemV/CST6 */ :table {\r
     typeOffsets:intvector { -21600, 0 }\r
-  } //Z#601\r
+  } //Z#600\r
   /* SystemV/CST6CDT */ :table {\r
     transPre32:intvector { -1, 2096202496, -1, 2111923696, -1, 2127652096, -1, 2143373296 }\r
     trans:intvector { -2135865600, -2120144400, -2104416000, -2088694800, -2072966400, -2056640400, -2040912000, -2025190800, -2009462400, -1993741200, -1978012800, -1962291600, -1946563200, -1930842000, -1915113600, -1898787600, -1883664000, -1867338000, -1851609600, -1835888400, -1820160000, -1804438800, -1788710400, -1772989200, -1757260800, -1741539600, -1725811200, -1709485200, -1693756800, -1678035600, -1662307200, -1646586000, -1630857600, -1615136400, -1599408000, -1583686800, -1567958400, -1551632400, -1536508800, -1520182800, -1504454400, -1488733200, -1473004800, -1457283600, -1441555200, -1425834000, -1410105600, -1394384400, -1378656000, -1362330000, -1347206400, -1330880400, -1315152000, -1299430800, -1283702400, -1267981200, -1252252800, -1236531600, -1220803200, -1205082000, -1189353600, -1173027600, -1157299200, -1141578000, -1125849600, -1110128400, -1094400000, -1078678800, -1062950400, -1047229200, -1031500800, -1015174800, -1000051200, -983725200, -967996800, -952275600, -936547200, -920826000, -905097600, -889376400, -873648000, -857926800, -842198400, -825872400, -810144000, -794422800, -778694400, -762973200, -747244800, -731523600, -715795200, -700074000, -684345600, -668019600, -652896000, -636570000, -620841600, -605120400, -589392000, -573670800, -557942400, -542221200, -526492800, -510771600, -495043200, -478717200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 154508400, 162374400, 183538800, 199267200, 215593200 }\r
@@ -2798,10 +2801,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -21600 }\r
     finalYear:int { 1977 }\r
-  } //Z#602\r
+  } //Z#601\r
   /* SystemV/EST5 */ :table {\r
     typeOffsets:intvector { -18000, 0 }\r
-  } //Z#603\r
+  } //Z#602\r
   /* SystemV/EST5EDT */ :table {\r
     transPre32:intvector { -1, 2096198896, -1, 2111920096, -1, 2127648496, -1, 2143369696 }\r
     trans:intvector { -2135869200, -2120148000, -2104419600, -2088698400, -2072970000, -2056644000, -2040915600, -2025194400, -2009466000, -1993744800, -1978016400, -1962295200, -1946566800, -1930845600, -1915117200, -1898791200, -1883667600, -1867341600, -1851613200, -1835892000, -1820163600, -1804442400, -1788714000, -1772992800, -1757264400, -1741543200, -1725814800, -1709488800, -1693760400, -1678039200, -1662310800, -1646589600, -1630861200, -1615140000, -1599411600, -1583690400, -1567962000, -1551636000, -1536512400, -1520186400, -1504458000, -1488736800, -1473008400, -1457287200, -1441558800, -1425837600, -1410109200, -1394388000, -1378659600, -1362333600, -1347210000, -1330884000, -1315155600, -1299434400, -1283706000, -1267984800, -1252256400, -1236535200, -1220806800, -1205085600, -1189357200, -1173031200, -1157302800, -1141581600, -1125853200, -1110132000, -1094403600, -1078682400, -1062954000, -1047232800, -1031504400, -1015178400, -1000054800, -983728800, -968000400, -952279200, -936550800, -920829600, -905101200, -889380000, -873651600, -857930400, -842202000, -825876000, -810147600, -794426400, -778698000, -762976800, -747248400, -731527200, -715798800, -700077600, -684349200, -668023200, -652899600, -636573600, -620845200, -605124000, -589395600, -573674400, -557946000, -542224800, -526496400, -510775200, -495046800, -478720800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 154504800, 162370800, 183535200, 199263600, 215589600 }\r
@@ -2810,13 +2813,13 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -18000 }\r
     finalYear:int { 1977 }\r
-  } //Z#604\r
+  } //Z#603\r
   /* SystemV/HST10 */ :table {\r
     typeOffsets:intvector { -36000, 0 }\r
-  } //Z#605\r
+  } //Z#604\r
   /* SystemV/MST7 */ :table {\r
     typeOffsets:intvector { -25200, 0 }\r
-  } //Z#606\r
+  } //Z#605\r
   /* SystemV/MST7MDT */ :table {\r
     transPre32:intvector { -1, 2096206096, -1, 2111927296, -1, 2127655696, -1, 2143376896 }\r
     trans:intvector { -2135862000, -2120140800, -2104412400, -2088691200, -2072962800, -2056636800, -2040908400, -2025187200, -2009458800, -1993737600, -1978009200, -1962288000, -1946559600, -1930838400, -1915110000, -1898784000, -1883660400, -1867334400, -1851606000, -1835884800, -1820156400, -1804435200, -1788706800, -1772985600, -1757257200, -1741536000, -1725807600, -1709481600, -1693753200, -1678032000, -1662303600, -1646582400, -1630854000, -1615132800, -1599404400, -1583683200, -1567954800, -1551628800, -1536505200, -1520179200, -1504450800, -1488729600, -1473001200, -1457280000, -1441551600, -1425830400, -1410102000, -1394380800, -1378652400, -1362326400, -1347202800, -1330876800, -1315148400, -1299427200, -1283698800, -1267977600, -1252249200, -1236528000, -1220799600, -1205078400, -1189350000, -1173024000, -1157295600, -1141574400, -1125846000, -1110124800, -1094396400, -1078675200, -1062946800, -1047225600, -1031497200, -1015171200, -1000047600, -983721600, -967993200, -952272000, -936543600, -920822400, -905094000, -889372800, -873644400, -857923200, -842194800, -825868800, -810140400, -794419200, -778690800, -762969600, -747241200, -731520000, -715791600, -700070400, -684342000, -668016000, -652892400, -636566400, -620838000, -605116800, -589388400, -573667200, -557938800, -542217600, -526489200, -510768000, -495039600, -478713600, -463590000, -447264000, -431535600, -415814400, -400086000, -384364800, -368636400, -352915200, -337186800, -321465600, -305737200, -289411200, -273682800, -257961600, -242233200, -226512000, -210783600, -195062400, -179334000, -163612800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 154512000, 162378000, 183542400, 199270800, 215596800 }\r
@@ -2825,10 +2828,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -25200 }\r
     finalYear:int { 1977 }\r
-  } //Z#607\r
+  } //Z#606\r
   /* SystemV/PST8 */ :table {\r
     typeOffsets:intvector { -28800, 0 }\r
-  } //Z#608\r
+  } //Z#607\r
   /* SystemV/PST8PDT */ :table {\r
     transPre32:intvector { -1, 2096209696, -1, 2111930896, -1, 2127659296, -1, 2143380496 }\r
     trans:intvector { -2135858400, -2120137200, -2104408800, -2088687600, -2072959200, -2056633200, -2040904800, -2025183600, -2009455200, -1993734000, -1978005600, -1962284400, -1946556000, -1930834800, -1915106400, -1898780400, -1883656800, -1867330800, -1851602400, -1835881200, -1820152800, -1804431600, -1788703200, -1772982000, -1757253600, -1741532400, -1725804000, -1709478000, -1693749600, -1678028400, -1662300000, -1646578800, -1630850400, -1615129200, -1599400800, -1583679600, -1567951200, -1551625200, -1536501600, -1520175600, -1504447200, -1488726000, -1472997600, -1457276400, -1441548000, -1425826800, -1410098400, -1394377200, -1378648800, -1362322800, -1347199200, -1330873200, -1315144800, -1299423600, -1283695200, -1267974000, -1252245600, -1236524400, -1220796000, -1205074800, -1189346400, -1173020400, -1157292000, -1141570800, -1125842400, -1110121200, -1094392800, -1078671600, -1062943200, -1047222000, -1031493600, -1015167600, -1000044000, -983718000, -967989600, -952268400, -936540000, -920818800, -905090400, -889369200, -873640800, -857919600, -842191200, -825865200, -810136800, -794415600, -778687200, -762966000, -747237600, -731516400, -715788000, -700066800, -684338400, -668012400, -652888800, -636562800, -620834400, -605113200, -589384800, -573663600, -557935200, -542214000, -526485600, -510764400, -495036000, -478710000, -463586400, -447260400, -431532000, -415810800, -400082400, -384361200, -368632800, -352911600, -337183200, -321462000, -305733600, -289407600, -273679200, -257958000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 154515600, 162381600, 183546000, 199274400, 215600400 }\r
@@ -2837,10 +2840,10 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -28800 }\r
     finalYear:int { 1977 }\r
-  } //Z#609\r
+  } //Z#608\r
   /* SystemV/YST9 */ :table {\r
     typeOffsets:intvector { -32400, 0 }\r
-  } //Z#610\r
+  } //Z#609\r
   /* SystemV/YST9YDT */ :table {\r
     transPre32:intvector { -1, 2096213296, -1, 2111934496, -1, 2127662896, -1, 2143384096 }\r
     trans:intvector { -2135854800, -2120133600, -2104405200, -2088684000, -2072955600, -2056629600, -2040901200, -2025180000, -2009451600, -1993730400, -1978002000, -1962280800, -1946552400, -1930831200, -1915102800, -1898776800, -1883653200, -1867327200, -1851598800, -1835877600, -1820149200, -1804428000, -1788699600, -1772978400, -1757250000, -1741528800, -1725800400, -1709474400, -1693746000, -1678024800, -1662296400, -1646575200, -1630846800, -1615125600, -1599397200, -1583676000, -1567947600, -1551621600, -1536498000, -1520172000, -1504443600, -1488722400, -1472994000, -1457272800, -1441544400, -1425823200, -1410094800, -1394373600, -1378645200, -1362319200, -1347195600, -1330869600, -1315141200, -1299420000, -1283691600, -1267970400, -1252242000, -1236520800, -1220792400, -1205071200, -1189342800, -1173016800, -1157288400, -1141567200, -1125838800, -1110117600, -1094389200, -1078668000, -1062939600, -1047218400, -1031490000, -1015164000, -1000040400, -983714400, -967986000, -952264800, -936536400, -920815200, -905086800, -889365600, -873637200, -857916000, -842187600, -825861600, -810133200, -794412000, -778683600, -762962400, -747234000, -731512800, -715784400, -700063200, -684334800, -668008800, -652885200, -636559200, -620830800, -605109600, -589381200, -573660000, -557931600, -542210400, -526482000, -510760800, -495032400, -478706400, -463582800, -447256800, -431528400, -415807200, -400078800, -384357600, -368629200, -352908000, -337179600, -321458400, -305730000, -289404000, -273675600, -257954400, -242226000, -226504800, -210776400, -195055200, -179326800, -163605600, -147877200, -131551200, -116427600, -100101600, -84373200, -68652000, -52923600, -37202400, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 154519200, 162385200, 183549600, 199278000, 215604000 }\r
@@ -2849,26 +2852,26 @@ zoneinfo64:table(nofallback) {
     finalRule { "SystemV" }\r
     finalRaw:int { -32400 }\r
     finalYear:int { 1977 }\r
-  } //Z#611\r
-  /* Turkey */ :int { 457 } //Z#612\r
-  /* UCT */ :int { 433 } //Z#613\r
-  /* US/Alaska */ :int { 60 } //Z#614\r
-  /* US/Aleutian */ :int { 59 } //Z#615\r
-  /* US/Arizona */ :int { 184 } //Z#616\r
-  /* US/Central */ :int { 98 } //Z#617\r
-  /* US/East-Indiana */ :int { 131 } //Z#618\r
-  /* US/Eastern */ :int { 173 } //Z#619\r
-  /* US/Hawaii */ :int { 565 } //Z#620\r
-  /* US/Indiana-Starke */ :int { 132 } //Z#621\r
-  /* US/Michigan */ :int { 110 } //Z#622\r
-  /* US/Mountain */ :int { 109 } //Z#623\r
-  /* US/Pacific */ :int { 151 } //Z#624\r
-  /* US/Pacific-New */ :int { 151 } //Z#625\r
-  /* US/Samoa */ :int { 577 } //Z#626\r
-  /* UTC */ :int { 434 } //Z#627\r
-  /* Universal */ :int { 434 } //Z#628\r
-  /* VST */ :int { 271 } //Z#629\r
-  /* W-SU */ :int { 471 } //Z#630\r
+  } //Z#610\r
+  /* Turkey */ :int { 456 } //Z#611\r
+  /* UCT */ :int { 432 } //Z#612\r
+  /* US/Alaska */ :int { 60 } //Z#613\r
+  /* US/Aleutian */ :int { 59 } //Z#614\r
+  /* US/Arizona */ :int { 184 } //Z#615\r
+  /* US/Central */ :int { 98 } //Z#616\r
+  /* US/East-Indiana */ :int { 131 } //Z#617\r
+  /* US/Eastern */ :int { 173 } //Z#618\r
+  /* US/Hawaii */ :int { 564 } //Z#619\r
+  /* US/Indiana-Starke */ :int { 132 } //Z#620\r
+  /* US/Michigan */ :int { 110 } //Z#621\r
+  /* US/Mountain */ :int { 109 } //Z#622\r
+  /* US/Pacific */ :int { 151 } //Z#623\r
+  /* US/Pacific-New */ :int { 151 } //Z#624\r
+  /* US/Samoa */ :int { 576 } //Z#625\r
+  /* UTC */ :int { 433 } //Z#626\r
+  /* Universal */ :int { 433 } //Z#627\r
+  /* VST */ :int { 270 } //Z#628\r
+  /* W-SU */ :int { 470 } //Z#629\r
   /* WET */ :table {\r
     trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }\r
     typeOffsets:intvector { 0, 0, 0, 3600 }\r
@@ -2876,8 +2879,8 @@ zoneinfo64:table(nofallback) {
     finalRule { "EU" }\r
     finalRaw:int { 0 }\r
     finalYear:int { 1997 }\r
-  } //Z#631\r
-  /* Zulu */ :int { 434 } //Z#632\r
+  } //Z#630\r
+  /* Zulu */ :int { 433 } //Z#631\r
  }\r
  Names {\r
     "ACT","AET","AGT","ART","AST","Africa/Abidjan","Africa/Accra" // 6\r
@@ -2945,126 +2948,126 @@ zoneinfo64:table(nofallback) {
     ,"America/Panama","America/Pangnirtung","America/Paramaribo" // 183\r
     ,"America/Phoenix","America/Port-au-Prince","America/Port_of_Spain" // 186\r
     ,"America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico" // 189\r
-    ,"America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet" // 192\r
-    ,"America/Recife","America/Regina","America/Resolute" // 195\r
-    ,"America/Rio_Branco","America/Rosario","America/Santa_Isabel" // 198\r
-    ,"America/Santarem","America/Santiago","America/Santo_Domingo" // 201\r
-    ,"America/Sao_Paulo","America/Scoresbysund","America/Shiprock" // 204\r
-    ,"America/Sitka","America/St_Barthelemy","America/St_Johns" // 207\r
-    ,"America/St_Kitts","America/St_Lucia","America/St_Thomas" // 210\r
-    ,"America/St_Vincent","America/Swift_Current","America/Tegucigalpa" // 213\r
-    ,"America/Thule","America/Thunder_Bay","America/Tijuana" // 216\r
-    ,"America/Toronto","America/Tortola","America/Vancouver" // 219\r
-    ,"America/Virgin","America/Whitehorse","America/Winnipeg" // 222\r
-    ,"America/Yakutat","America/Yellowknife","Antarctica/Casey" // 225\r
-    ,"Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie" // 228\r
-    ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 231\r
-    ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 234\r
-    ,"Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen" // 237\r
-    ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 241\r
-    ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 245\r
-    ,"Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 249\r
-    ,"Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek" // 253\r
-    ,"Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan" // 257\r
-    ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 261\r
-    ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 265\r
-    ,"Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin" // 269\r
-    ,"Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 272\r
-    ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 276\r
-    ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 280\r
-    ,"Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu" // 284\r
-    ,"Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk" // 287\r
-    ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 291\r
-    ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 295\r
-    ,"Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk" // 299\r
-    ,"Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak" // 303\r
-    ,"Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon" // 307\r
-    ,"Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand" // 311\r
-    ,"Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk" // 315\r
-    ,"Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran" // 319\r
-    ,"Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo" // 323\r
-    ,"Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 326\r
-    ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane" // 330\r
-    ,"Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg" // 334\r
-    ,"Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda" // 337\r
-    ,"Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe" // 340\r
-    ,"Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira" // 343\r
-    ,"Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena" // 346\r
-    ,"Atlantic/Stanley","Australia/ACT","Australia/Adelaide" // 349\r
-    ,"Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra" // 352\r
-    ,"Australia/Currie","Australia/Darwin","Australia/Eucla" // 355\r
-    ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 358\r
-    ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 361\r
-    ,"Australia/North","Australia/Perth","Australia/Queensland" // 364\r
-    ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 367\r
-    ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 370\r
-    ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 375\r
-    ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 382\r
-    ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 385\r
-    ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 388\r
-    ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 391\r
-    ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 395\r
-    ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 402\r
-    ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 406\r
-    ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 411\r
-    ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 416\r
-    ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 420\r
-    ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 424\r
-    ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 429\r
-    ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 434\r
-    ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 438\r
-    ,"Europe/Andorra","Europe/Astrakhan","Europe/Athens" // 441\r
-    ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 444\r
-    ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 447\r
-    ,"Europe/Budapest","Europe/Busingen","Europe/Chisinau" // 450\r
-    ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 453\r
-    ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 456\r
-    ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 459\r
-    ,"Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana" // 463\r
-    ,"Europe/London","Europe/Luxembourg","Europe/Madrid" // 466\r
-    ,"Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 470\r
-    ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 474\r
-    ,"Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome" // 478\r
-    ,"Europe/Samara","Europe/San_Marino","Europe/Sarajevo" // 481\r
-    ,"Europe/Saratov","Europe/Simferopol","Europe/Skopje" // 484\r
-    ,"Europe/Sofia","Europe/Stockholm","Europe/Tallinn" // 487\r
-    ,"Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk" // 490\r
-    ,"Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican" // 493\r
-    ,"Europe/Vienna","Europe/Vilnius","Europe/Volgograd" // 496\r
-    ,"Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye" // 499\r
-    ,"Europe/Zurich","Factory","GB","GB-Eire","GMT","GMT+0" // 505\r
-    ,"GMT-0","GMT0","Greenwich","HST","Hongkong","IET" // 511\r
-    ,"IST","Iceland","Indian/Antananarivo","Indian/Chagos" // 515\r
-    ,"Indian/Christmas","Indian/Cocos","Indian/Comoro" // 518\r
-    ,"Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 521\r
-    ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 524\r
-    ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 530\r
-    ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 536\r
-    ,"Mexico/BajaSur","Mexico/General","NET","NST","NZ" // 541\r
-    ,"NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST","PST8PDT" // 549\r
-    ,"Pacific/Apia","Pacific/Auckland","Pacific/Bougainville" // 552\r
-    ,"Pacific/Chatham","Pacific/Chuuk","Pacific/Easter" // 555\r
-    ,"Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo" // 558\r
-    ,"Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos" // 561\r
-    ,"Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam" // 564\r
-    ,"Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati" // 567\r
-    ,"Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro" // 570\r
-    ,"Pacific/Marquesas","Pacific/Midway","Pacific/Nauru" // 573\r
-    ,"Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 576\r
-    ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 579\r
-    ,"Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby" // 582\r
-    ,"Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa" // 585\r
-    ,"Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu" // 588\r
-    ,"Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap" // 592\r
-    ,"Poland","Portugal","ROC","ROK","SST","Singapore" // 598\r
-    ,"SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 602\r
-    ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 606\r
-    ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 609\r
-    ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 614\r
-    ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 618\r
-    ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 622\r
-    ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 626\r
-    ,"UTC","Universal","VST","W-SU","WET","Zulu" // 632\r
+    ,"America/Rainy_River","America/Rankin_Inlet","America/Recife" // 192\r
+    ,"America/Regina","America/Resolute","America/Rio_Branco" // 195\r
+    ,"America/Rosario","America/Santa_Isabel","America/Santarem" // 198\r
+    ,"America/Santiago","America/Santo_Domingo","America/Sao_Paulo" // 201\r
+    ,"America/Scoresbysund","America/Shiprock","America/Sitka" // 204\r
+    ,"America/St_Barthelemy","America/St_Johns","America/St_Kitts" // 207\r
+    ,"America/St_Lucia","America/St_Thomas","America/St_Vincent" // 210\r
+    ,"America/Swift_Current","America/Tegucigalpa","America/Thule" // 213\r
+    ,"America/Thunder_Bay","America/Tijuana","America/Toronto" // 216\r
+    ,"America/Tortola","America/Vancouver","America/Virgin" // 219\r
+    ,"America/Whitehorse","America/Winnipeg","America/Yakutat" // 222\r
+    ,"America/Yellowknife","Antarctica/Casey","Antarctica/Davis" // 225\r
+    ,"Antarctica/DumontDUrville","Antarctica/Macquarie" // 227\r
+    ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 230\r
+    ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 233\r
+    ,"Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen" // 236\r
+    ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 240\r
+    ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 244\r
+    ,"Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 248\r
+    ,"Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek" // 252\r
+    ,"Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan" // 256\r
+    ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 260\r
+    ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 264\r
+    ,"Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin" // 268\r
+    ,"Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 271\r
+    ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 275\r
+    ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 279\r
+    ,"Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu" // 283\r
+    ,"Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk" // 286\r
+    ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 290\r
+    ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 294\r
+    ,"Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk" // 298\r
+    ,"Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak" // 302\r
+    ,"Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon" // 306\r
+    ,"Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand" // 310\r
+    ,"Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk" // 314\r
+    ,"Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran" // 318\r
+    ,"Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo" // 322\r
+    ,"Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 325\r
+    ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane" // 329\r
+    ,"Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg" // 333\r
+    ,"Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda" // 336\r
+    ,"Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe" // 339\r
+    ,"Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira" // 342\r
+    ,"Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena" // 345\r
+    ,"Atlantic/Stanley","Australia/ACT","Australia/Adelaide" // 348\r
+    ,"Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra" // 351\r
+    ,"Australia/Currie","Australia/Darwin","Australia/Eucla" // 354\r
+    ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 357\r
+    ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 360\r
+    ,"Australia/North","Australia/Perth","Australia/Queensland" // 363\r
+    ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 366\r
+    ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 369\r
+    ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 374\r
+    ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 381\r
+    ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 384\r
+    ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 387\r
+    ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 390\r
+    ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 394\r
+    ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 401\r
+    ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 405\r
+    ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 410\r
+    ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 415\r
+    ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 419\r
+    ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 423\r
+    ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 428\r
+    ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 433\r
+    ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 437\r
+    ,"Europe/Andorra","Europe/Astrakhan","Europe/Athens" // 440\r
+    ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 443\r
+    ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 446\r
+    ,"Europe/Budapest","Europe/Busingen","Europe/Chisinau" // 449\r
+    ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 452\r
+    ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 455\r
+    ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 458\r
+    ,"Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana" // 462\r
+    ,"Europe/London","Europe/Luxembourg","Europe/Madrid" // 465\r
+    ,"Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 469\r
+    ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 473\r
+    ,"Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome" // 477\r
+    ,"Europe/Samara","Europe/San_Marino","Europe/Sarajevo" // 480\r
+    ,"Europe/Saratov","Europe/Simferopol","Europe/Skopje" // 483\r
+    ,"Europe/Sofia","Europe/Stockholm","Europe/Tallinn" // 486\r
+    ,"Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk" // 489\r
+    ,"Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican" // 492\r
+    ,"Europe/Vienna","Europe/Vilnius","Europe/Volgograd" // 495\r
+    ,"Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye" // 498\r
+    ,"Europe/Zurich","Factory","GB","GB-Eire","GMT","GMT+0" // 504\r
+    ,"GMT-0","GMT0","Greenwich","HST","Hongkong","IET" // 510\r
+    ,"IST","Iceland","Indian/Antananarivo","Indian/Chagos" // 514\r
+    ,"Indian/Christmas","Indian/Cocos","Indian/Comoro" // 517\r
+    ,"Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 520\r
+    ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 523\r
+    ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 529\r
+    ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 535\r
+    ,"Mexico/BajaSur","Mexico/General","NET","NST","NZ" // 540\r
+    ,"NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST","PST8PDT" // 548\r
+    ,"Pacific/Apia","Pacific/Auckland","Pacific/Bougainville" // 551\r
+    ,"Pacific/Chatham","Pacific/Chuuk","Pacific/Easter" // 554\r
+    ,"Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo" // 557\r
+    ,"Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos" // 560\r
+    ,"Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam" // 563\r
+    ,"Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati" // 566\r
+    ,"Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro" // 569\r
+    ,"Pacific/Marquesas","Pacific/Midway","Pacific/Nauru" // 572\r
+    ,"Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 575\r
+    ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 578\r
+    ,"Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby" // 581\r
+    ,"Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa" // 584\r
+    ,"Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu" // 587\r
+    ,"Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap" // 591\r
+    ,"Poland","Portugal","ROC","ROK","SST","Singapore" // 597\r
+    ,"SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 601\r
+    ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 605\r
+    ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 608\r
+    ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 613\r
+    ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 617\r
+    ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 621\r
+    ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 625\r
+    ,"UTC","Universal","VST","W-SU","WET","Zulu" // 631\r
  }\r
  Rules { \r
   AN:intvector {\r
@@ -3106,26 +3109,26 @@ zoneinfo64:table(nofallback) {
   Fiji:intvector {\r
     10, 1, -1, 7200, 0, 0, 15, -1, 10800, 0, 3600\r
   } //_#12\r
-  Haiti:intvector {\r
-    2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600\r
-  } //_#13\r
   Iran:intvector {\r
     2, 21, 0, 0, 0, 8, 21, 0, 0, 0, 3600\r
-  } //_#14\r
+  } //_#13\r
   Jordan:intvector {\r
     2, -31, -5, 86400, 0, 9, -31, -6, 0, 1, 3600\r
-  } //_#15\r
+  } //_#14\r
   LH:intvector {\r
     9, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 1800\r
-  } //_#16\r
+  } //_#15\r
   Lebanon:intvector {\r
     2, -31, -1, 0, 0, 9, -31, -1, 0, 0, 3600\r
-  } //_#17\r
+  } //_#16\r
   Mexico:intvector {\r
     3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600\r
-  } //_#18\r
+  } //_#17\r
   Moldova:intvector {\r
     2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600\r
+  } //_#18\r
+  Mongol:intvector {\r
+    2, -31, -7, 7200, 0, 8, -30, -7, 0, 0, 3600\r
   } //_#19\r
   Morocco:intvector {\r
     2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600\r
@@ -3358,448 +3361,447 @@ zoneinfo64:table(nofallback) {
   "BR", //Z#187 America/Porto_Acre\r
   "BR", //Z#188 America/Porto_Velho\r
   "PR", //Z#189 America/Puerto_Rico\r
-  "CL", //Z#190 America/Punta_Arenas\r
-  "CA", //Z#191 America/Rainy_River\r
-  "CA", //Z#192 America/Rankin_Inlet\r
-  "BR", //Z#193 America/Recife\r
-  "CA", //Z#194 America/Regina\r
-  "CA", //Z#195 America/Resolute\r
-  "BR", //Z#196 America/Rio_Branco\r
-  "AR", //Z#197 America/Rosario\r
-  "MX", //Z#198 America/Santa_Isabel\r
-  "BR", //Z#199 America/Santarem\r
-  "CL", //Z#200 America/Santiago\r
-  "DO", //Z#201 America/Santo_Domingo\r
-  "BR", //Z#202 America/Sao_Paulo\r
-  "GL", //Z#203 America/Scoresbysund\r
-  "US", //Z#204 America/Shiprock\r
-  "US", //Z#205 America/Sitka\r
-  "BL", //Z#206 America/St_Barthelemy\r
-  "CA", //Z#207 America/St_Johns\r
-  "KN", //Z#208 America/St_Kitts\r
-  "LC", //Z#209 America/St_Lucia\r
-  "VI", //Z#210 America/St_Thomas\r
-  "VC", //Z#211 America/St_Vincent\r
-  "CA", //Z#212 America/Swift_Current\r
-  "HN", //Z#213 America/Tegucigalpa\r
-  "GL", //Z#214 America/Thule\r
-  "CA", //Z#215 America/Thunder_Bay\r
-  "MX", //Z#216 America/Tijuana\r
-  "CA", //Z#217 America/Toronto\r
-  "VG", //Z#218 America/Tortola\r
-  "CA", //Z#219 America/Vancouver\r
-  "TT", //Z#220 America/Virgin\r
-  "CA", //Z#221 America/Whitehorse\r
-  "CA", //Z#222 America/Winnipeg\r
-  "US", //Z#223 America/Yakutat\r
-  "CA", //Z#224 America/Yellowknife\r
-  "AQ", //Z#225 Antarctica/Casey\r
-  "AQ", //Z#226 Antarctica/Davis\r
-  "AQ", //Z#227 Antarctica/DumontDUrville\r
-  "AU", //Z#228 Antarctica/Macquarie\r
-  "AQ", //Z#229 Antarctica/Mawson\r
-  "AQ", //Z#230 Antarctica/McMurdo\r
-  "AQ", //Z#231 Antarctica/Palmer\r
-  "AQ", //Z#232 Antarctica/Rothera\r
-  "NZ", //Z#233 Antarctica/South_Pole\r
-  "AQ", //Z#234 Antarctica/Syowa\r
-  "AQ", //Z#235 Antarctica/Troll\r
-  "AQ", //Z#236 Antarctica/Vostok\r
-  "SJ", //Z#237 Arctic/Longyearbyen\r
-  "YE", //Z#238 Asia/Aden\r
-  "KZ", //Z#239 Asia/Almaty\r
-  "JO", //Z#240 Asia/Amman\r
-  "RU", //Z#241 Asia/Anadyr\r
-  "KZ", //Z#242 Asia/Aqtau\r
-  "KZ", //Z#243 Asia/Aqtobe\r
-  "TM", //Z#244 Asia/Ashgabat\r
-  "TM", //Z#245 Asia/Ashkhabad\r
-  "KZ", //Z#246 Asia/Atyrau\r
-  "IQ", //Z#247 Asia/Baghdad\r
-  "BH", //Z#248 Asia/Bahrain\r
-  "AZ", //Z#249 Asia/Baku\r
-  "TH", //Z#250 Asia/Bangkok\r
-  "RU", //Z#251 Asia/Barnaul\r
-  "LB", //Z#252 Asia/Beirut\r
-  "KG", //Z#253 Asia/Bishkek\r
-  "BN", //Z#254 Asia/Brunei\r
-  "IN", //Z#255 Asia/Calcutta\r
-  "RU", //Z#256 Asia/Chita\r
-  "MN", //Z#257 Asia/Choibalsan\r
-  "CN", //Z#258 Asia/Chongqing\r
-  "CN", //Z#259 Asia/Chungking\r
-  "LK", //Z#260 Asia/Colombo\r
-  "BD", //Z#261 Asia/Dacca\r
-  "SY", //Z#262 Asia/Damascus\r
-  "BD", //Z#263 Asia/Dhaka\r
-  "TL", //Z#264 Asia/Dili\r
-  "AE", //Z#265 Asia/Dubai\r
-  "TJ", //Z#266 Asia/Dushanbe\r
-  "CY", //Z#267 Asia/Famagusta\r
-  "PS", //Z#268 Asia/Gaza\r
-  "CN", //Z#269 Asia/Harbin\r
-  "PS", //Z#270 Asia/Hebron\r
-  "VN", //Z#271 Asia/Ho_Chi_Minh\r
-  "HK", //Z#272 Asia/Hong_Kong\r
-  "MN", //Z#273 Asia/Hovd\r
-  "RU", //Z#274 Asia/Irkutsk\r
-  "TR", //Z#275 Asia/Istanbul\r
-  "ID", //Z#276 Asia/Jakarta\r
-  "ID", //Z#277 Asia/Jayapura\r
-  "IL", //Z#278 Asia/Jerusalem\r
-  "AF", //Z#279 Asia/Kabul\r
-  "RU", //Z#280 Asia/Kamchatka\r
-  "PK", //Z#281 Asia/Karachi\r
-  "CN", //Z#282 Asia/Kashgar\r
-  "NP", //Z#283 Asia/Kathmandu\r
-  "NP", //Z#284 Asia/Katmandu\r
-  "RU", //Z#285 Asia/Khandyga\r
-  "IN", //Z#286 Asia/Kolkata\r
-  "RU", //Z#287 Asia/Krasnoyarsk\r
-  "MY", //Z#288 Asia/Kuala_Lumpur\r
-  "MY", //Z#289 Asia/Kuching\r
-  "KW", //Z#290 Asia/Kuwait\r
-  "MO", //Z#291 Asia/Macao\r
-  "MO", //Z#292 Asia/Macau\r
-  "RU", //Z#293 Asia/Magadan\r
-  "ID", //Z#294 Asia/Makassar\r
-  "PH", //Z#295 Asia/Manila\r
-  "OM", //Z#296 Asia/Muscat\r
-  "CY", //Z#297 Asia/Nicosia\r
-  "RU", //Z#298 Asia/Novokuznetsk\r
-  "RU", //Z#299 Asia/Novosibirsk\r
-  "RU", //Z#300 Asia/Omsk\r
-  "KZ", //Z#301 Asia/Oral\r
-  "KH", //Z#302 Asia/Phnom_Penh\r
-  "ID", //Z#303 Asia/Pontianak\r
-  "KP", //Z#304 Asia/Pyongyang\r
-  "QA", //Z#305 Asia/Qatar\r
-  "KZ", //Z#306 Asia/Qyzylorda\r
-  "MM", //Z#307 Asia/Rangoon\r
-  "SA", //Z#308 Asia/Riyadh\r
-  "VN", //Z#309 Asia/Saigon\r
-  "RU", //Z#310 Asia/Sakhalin\r
-  "UZ", //Z#311 Asia/Samarkand\r
-  "KR", //Z#312 Asia/Seoul\r
-  "CN", //Z#313 Asia/Shanghai\r
-  "SG", //Z#314 Asia/Singapore\r
-  "RU", //Z#315 Asia/Srednekolymsk\r
-  "TW", //Z#316 Asia/Taipei\r
-  "UZ", //Z#317 Asia/Tashkent\r
-  "GE", //Z#318 Asia/Tbilisi\r
-  "IR", //Z#319 Asia/Tehran\r
-  "IL", //Z#320 Asia/Tel_Aviv\r
-  "BT", //Z#321 Asia/Thimbu\r
-  "BT", //Z#322 Asia/Thimphu\r
-  "JP", //Z#323 Asia/Tokyo\r
-  "RU", //Z#324 Asia/Tomsk\r
-  "ID", //Z#325 Asia/Ujung_Pandang\r
-  "MN", //Z#326 Asia/Ulaanbaatar\r
-  "MN", //Z#327 Asia/Ulan_Bator\r
-  "CN", //Z#328 Asia/Urumqi\r
-  "RU", //Z#329 Asia/Ust-Nera\r
-  "LA", //Z#330 Asia/Vientiane\r
-  "RU", //Z#331 Asia/Vladivostok\r
-  "RU", //Z#332 Asia/Yakutsk\r
-  "MM", //Z#333 Asia/Yangon\r
-  "RU", //Z#334 Asia/Yekaterinburg\r
-  "AM", //Z#335 Asia/Yerevan\r
-  "PT", //Z#336 Atlantic/Azores\r
-  "BM", //Z#337 Atlantic/Bermuda\r
-  "ES", //Z#338 Atlantic/Canary\r
-  "CV", //Z#339 Atlantic/Cape_Verde\r
-  "FO", //Z#340 Atlantic/Faeroe\r
-  "FO", //Z#341 Atlantic/Faroe\r
-  "NO", //Z#342 Atlantic/Jan_Mayen\r
-  "PT", //Z#343 Atlantic/Madeira\r
-  "IS", //Z#344 Atlantic/Reykjavik\r
-  "GS", //Z#345 Atlantic/South_Georgia\r
-  "SH", //Z#346 Atlantic/St_Helena\r
-  "FK", //Z#347 Atlantic/Stanley\r
-  "AU", //Z#348 Australia/ACT\r
-  "AU", //Z#349 Australia/Adelaide\r
-  "AU", //Z#350 Australia/Brisbane\r
-  "AU", //Z#351 Australia/Broken_Hill\r
-  "AU", //Z#352 Australia/Canberra\r
-  "AU", //Z#353 Australia/Currie\r
-  "AU", //Z#354 Australia/Darwin\r
-  "AU", //Z#355 Australia/Eucla\r
-  "AU", //Z#356 Australia/Hobart\r
-  "AU", //Z#357 Australia/LHI\r
-  "AU", //Z#358 Australia/Lindeman\r
-  "AU", //Z#359 Australia/Lord_Howe\r
-  "AU", //Z#360 Australia/Melbourne\r
-  "AU", //Z#361 Australia/NSW\r
-  "AU", //Z#362 Australia/North\r
-  "AU", //Z#363 Australia/Perth\r
-  "AU", //Z#364 Australia/Queensland\r
-  "AU", //Z#365 Australia/South\r
-  "AU", //Z#366 Australia/Sydney\r
-  "AU", //Z#367 Australia/Tasmania\r
-  "AU", //Z#368 Australia/Victoria\r
-  "AU", //Z#369 Australia/West\r
-  "AU", //Z#370 Australia/Yancowinna\r
-  "BR", //Z#371 BET\r
-  "BD", //Z#372 BST\r
-  "BR", //Z#373 Brazil/Acre\r
-  "BR", //Z#374 Brazil/DeNoronha\r
-  "BR", //Z#375 Brazil/East\r
-  "BR", //Z#376 Brazil/West\r
-  "MZ", //Z#377 CAT\r
-  "001",//Z#378 CET\r
-  "CA", //Z#379 CNT\r
-  "US", //Z#380 CST\r
-  "001",//Z#381 CST6CDT\r
-  "CN", //Z#382 CTT\r
-  "CA", //Z#383 Canada/Atlantic\r
-  "CA", //Z#384 Canada/Central\r
-  "CA", //Z#385 Canada/East-Saskatchewan\r
-  "CA", //Z#386 Canada/Eastern\r
-  "CA", //Z#387 Canada/Mountain\r
-  "CA", //Z#388 Canada/Newfoundland\r
-  "CA", //Z#389 Canada/Pacific\r
-  "CA", //Z#390 Canada/Saskatchewan\r
-  "CA", //Z#391 Canada/Yukon\r
-  "CL", //Z#392 Chile/Continental\r
-  "CL", //Z#393 Chile/EasterIsland\r
-  "CU", //Z#394 Cuba\r
-  "KE", //Z#395 EAT\r
-  "FR", //Z#396 ECT\r
-  "001",//Z#397 EET\r
-  "001",//Z#398 EST\r
-  "001",//Z#399 EST5EDT\r
-  "EG", //Z#400 Egypt\r
-  "IE", //Z#401 Eire\r
-  "001",//Z#402 Etc/GMT\r
-  "001",//Z#403 Etc/GMT+0\r
-  "001",//Z#404 Etc/GMT+1\r
-  "001",//Z#405 Etc/GMT+10\r
-  "001",//Z#406 Etc/GMT+11\r
-  "001",//Z#407 Etc/GMT+12\r
-  "001",//Z#408 Etc/GMT+2\r
-  "001",//Z#409 Etc/GMT+3\r
-  "001",//Z#410 Etc/GMT+4\r
-  "001",//Z#411 Etc/GMT+5\r
-  "001",//Z#412 Etc/GMT+6\r
-  "001",//Z#413 Etc/GMT+7\r
-  "001",//Z#414 Etc/GMT+8\r
-  "001",//Z#415 Etc/GMT+9\r
-  "001",//Z#416 Etc/GMT-0\r
-  "001",//Z#417 Etc/GMT-1\r
-  "001",//Z#418 Etc/GMT-10\r
-  "001",//Z#419 Etc/GMT-11\r
-  "001",//Z#420 Etc/GMT-12\r
-  "001",//Z#421 Etc/GMT-13\r
-  "001",//Z#422 Etc/GMT-14\r
-  "001",//Z#423 Etc/GMT-2\r
-  "001",//Z#424 Etc/GMT-3\r
-  "001",//Z#425 Etc/GMT-4\r
-  "001",//Z#426 Etc/GMT-5\r
-  "001",//Z#427 Etc/GMT-6\r
-  "001",//Z#428 Etc/GMT-7\r
-  "001",//Z#429 Etc/GMT-8\r
-  "001",//Z#430 Etc/GMT-9\r
-  "001",//Z#431 Etc/GMT0\r
-  "001",//Z#432 Etc/Greenwich\r
-  "001",//Z#433 Etc/UCT\r
-  "001",//Z#434 Etc/UTC\r
-  "001",//Z#435 Etc/Universal\r
-  "001",//Z#436 Etc/Unknown\r
-  "001",//Z#437 Etc/Zulu\r
-  "NL", //Z#438 Europe/Amsterdam\r
-  "AD", //Z#439 Europe/Andorra\r
-  "RU", //Z#440 Europe/Astrakhan\r
-  "GR", //Z#441 Europe/Athens\r
-  "GB", //Z#442 Europe/Belfast\r
-  "RS", //Z#443 Europe/Belgrade\r
-  "DE", //Z#444 Europe/Berlin\r
-  "SK", //Z#445 Europe/Bratislava\r
-  "BE", //Z#446 Europe/Brussels\r
-  "RO", //Z#447 Europe/Bucharest\r
-  "HU", //Z#448 Europe/Budapest\r
-  "DE", //Z#449 Europe/Busingen\r
-  "MD", //Z#450 Europe/Chisinau\r
-  "DK", //Z#451 Europe/Copenhagen\r
-  "IE", //Z#452 Europe/Dublin\r
-  "GI", //Z#453 Europe/Gibraltar\r
-  "GG", //Z#454 Europe/Guernsey\r
-  "FI", //Z#455 Europe/Helsinki\r
-  "IM", //Z#456 Europe/Isle_of_Man\r
-  "TR", //Z#457 Europe/Istanbul\r
-  "JE", //Z#458 Europe/Jersey\r
-  "RU", //Z#459 Europe/Kaliningrad\r
-  "UA", //Z#460 Europe/Kiev\r
-  "RU", //Z#461 Europe/Kirov\r
-  "PT", //Z#462 Europe/Lisbon\r
-  "SI", //Z#463 Europe/Ljubljana\r
-  "GB", //Z#464 Europe/London\r
-  "LU", //Z#465 Europe/Luxembourg\r
-  "ES", //Z#466 Europe/Madrid\r
-  "MT", //Z#467 Europe/Malta\r
-  "AX", //Z#468 Europe/Mariehamn\r
-  "BY", //Z#469 Europe/Minsk\r
-  "MC", //Z#470 Europe/Monaco\r
-  "RU", //Z#471 Europe/Moscow\r
-  "CY", //Z#472 Europe/Nicosia\r
-  "NO", //Z#473 Europe/Oslo\r
-  "FR", //Z#474 Europe/Paris\r
-  "ME", //Z#475 Europe/Podgorica\r
-  "CZ", //Z#476 Europe/Prague\r
-  "LV", //Z#477 Europe/Riga\r
-  "IT", //Z#478 Europe/Rome\r
-  "RU", //Z#479 Europe/Samara\r
-  "SM", //Z#480 Europe/San_Marino\r
-  "BA", //Z#481 Europe/Sarajevo\r
-  "RU", //Z#482 Europe/Saratov\r
-  "UA", //Z#483 Europe/Simferopol\r
-  "MK", //Z#484 Europe/Skopje\r
-  "BG", //Z#485 Europe/Sofia\r
-  "SE", //Z#486 Europe/Stockholm\r
-  "EE", //Z#487 Europe/Tallinn\r
-  "AL", //Z#488 Europe/Tirane\r
-  "MD", //Z#489 Europe/Tiraspol\r
-  "RU", //Z#490 Europe/Ulyanovsk\r
-  "UA", //Z#491 Europe/Uzhgorod\r
-  "LI", //Z#492 Europe/Vaduz\r
-  "VA", //Z#493 Europe/Vatican\r
-  "AT", //Z#494 Europe/Vienna\r
-  "LT", //Z#495 Europe/Vilnius\r
-  "RU", //Z#496 Europe/Volgograd\r
-  "PL", //Z#497 Europe/Warsaw\r
-  "HR", //Z#498 Europe/Zagreb\r
-  "UA", //Z#499 Europe/Zaporozhye\r
-  "CH", //Z#500 Europe/Zurich\r
-  "001",//Z#501 Factory\r
-  "GB", //Z#502 GB\r
-  "GB", //Z#503 GB-Eire\r
-  "001",//Z#504 GMT\r
-  "001",//Z#505 GMT+0\r
-  "001",//Z#506 GMT-0\r
-  "001",//Z#507 GMT0\r
-  "001",//Z#508 Greenwich\r
-  "001",//Z#509 HST\r
-  "HK", //Z#510 Hongkong\r
-  "US", //Z#511 IET\r
-  "IN", //Z#512 IST\r
-  "IS", //Z#513 Iceland\r
-  "MG", //Z#514 Indian/Antananarivo\r
-  "IO", //Z#515 Indian/Chagos\r
-  "CX", //Z#516 Indian/Christmas\r
-  "CC", //Z#517 Indian/Cocos\r
-  "KM", //Z#518 Indian/Comoro\r
-  "TF", //Z#519 Indian/Kerguelen\r
-  "SC", //Z#520 Indian/Mahe\r
-  "MV", //Z#521 Indian/Maldives\r
-  "MU", //Z#522 Indian/Mauritius\r
-  "YT", //Z#523 Indian/Mayotte\r
-  "RE", //Z#524 Indian/Reunion\r
-  "IR", //Z#525 Iran\r
-  "IL", //Z#526 Israel\r
-  "JP", //Z#527 JST\r
-  "JM", //Z#528 Jamaica\r
-  "JP", //Z#529 Japan\r
-  "MH", //Z#530 Kwajalein\r
-  "LY", //Z#531 Libya\r
-  "001",//Z#532 MET\r
-  "WS", //Z#533 MIT\r
-  "001",//Z#534 MST\r
-  "001",//Z#535 MST7MDT\r
-  "MX", //Z#536 Mexico/BajaNorte\r
-  "MX", //Z#537 Mexico/BajaSur\r
-  "MX", //Z#538 Mexico/General\r
-  "AM", //Z#539 NET\r
-  "NZ", //Z#540 NST\r
-  "NZ", //Z#541 NZ\r
-  "NZ", //Z#542 NZ-CHAT\r
-  "US", //Z#543 Navajo\r
-  "PK", //Z#544 PLT\r
-  "US", //Z#545 PNT\r
-  "CN", //Z#546 PRC\r
-  "PR", //Z#547 PRT\r
-  "US", //Z#548 PST\r
-  "001",//Z#549 PST8PDT\r
-  "WS", //Z#550 Pacific/Apia\r
-  "NZ", //Z#551 Pacific/Auckland\r
-  "PG", //Z#552 Pacific/Bougainville\r
-  "NZ", //Z#553 Pacific/Chatham\r
-  "FM", //Z#554 Pacific/Chuuk\r
-  "CL", //Z#555 Pacific/Easter\r
-  "VU", //Z#556 Pacific/Efate\r
-  "KI", //Z#557 Pacific/Enderbury\r
-  "TK", //Z#558 Pacific/Fakaofo\r
-  "FJ", //Z#559 Pacific/Fiji\r
-  "TV", //Z#560 Pacific/Funafuti\r
-  "EC", //Z#561 Pacific/Galapagos\r
-  "PF", //Z#562 Pacific/Gambier\r
-  "SB", //Z#563 Pacific/Guadalcanal\r
-  "GU", //Z#564 Pacific/Guam\r
-  "US", //Z#565 Pacific/Honolulu\r
-  "UM", //Z#566 Pacific/Johnston\r
-  "KI", //Z#567 Pacific/Kiritimati\r
-  "FM", //Z#568 Pacific/Kosrae\r
-  "MH", //Z#569 Pacific/Kwajalein\r
-  "MH", //Z#570 Pacific/Majuro\r
-  "PF", //Z#571 Pacific/Marquesas\r
-  "UM", //Z#572 Pacific/Midway\r
-  "NR", //Z#573 Pacific/Nauru\r
-  "NU", //Z#574 Pacific/Niue\r
-  "NF", //Z#575 Pacific/Norfolk\r
-  "NC", //Z#576 Pacific/Noumea\r
-  "AS", //Z#577 Pacific/Pago_Pago\r
-  "PW", //Z#578 Pacific/Palau\r
-  "PN", //Z#579 Pacific/Pitcairn\r
-  "FM", //Z#580 Pacific/Pohnpei\r
-  "FM", //Z#581 Pacific/Ponape\r
-  "PG", //Z#582 Pacific/Port_Moresby\r
-  "CK", //Z#583 Pacific/Rarotonga\r
-  "MP", //Z#584 Pacific/Saipan\r
-  "AS", //Z#585 Pacific/Samoa\r
-  "PF", //Z#586 Pacific/Tahiti\r
-  "KI", //Z#587 Pacific/Tarawa\r
-  "TO", //Z#588 Pacific/Tongatapu\r
-  "FM", //Z#589 Pacific/Truk\r
-  "UM", //Z#590 Pacific/Wake\r
-  "WF", //Z#591 Pacific/Wallis\r
-  "FM", //Z#592 Pacific/Yap\r
-  "PL", //Z#593 Poland\r
-  "PT", //Z#594 Portugal\r
-  "TW", //Z#595 ROC\r
-  "KR", //Z#596 ROK\r
-  "SB", //Z#597 SST\r
-  "SG", //Z#598 Singapore\r
-  "001",//Z#599 SystemV/AST4\r
-  "001",//Z#600 SystemV/AST4ADT\r
-  "001",//Z#601 SystemV/CST6\r
-  "001",//Z#602 SystemV/CST6CDT\r
-  "001",//Z#603 SystemV/EST5\r
-  "001",//Z#604 SystemV/EST5EDT\r
-  "001",//Z#605 SystemV/HST10\r
-  "001",//Z#606 SystemV/MST7\r
-  "001",//Z#607 SystemV/MST7MDT\r
-  "001",//Z#608 SystemV/PST8\r
-  "001",//Z#609 SystemV/PST8PDT\r
-  "001",//Z#610 SystemV/YST9\r
-  "001",//Z#611 SystemV/YST9YDT\r
-  "TR", //Z#612 Turkey\r
-  "001",//Z#613 UCT\r
-  "US", //Z#614 US/Alaska\r
-  "US", //Z#615 US/Aleutian\r
-  "US", //Z#616 US/Arizona\r
-  "US", //Z#617 US/Central\r
-  "US", //Z#618 US/East-Indiana\r
-  "US", //Z#619 US/Eastern\r
-  "US", //Z#620 US/Hawaii\r
-  "US", //Z#621 US/Indiana-Starke\r
-  "US", //Z#622 US/Michigan\r
-  "US", //Z#623 US/Mountain\r
-  "US", //Z#624 US/Pacific\r
-  "US", //Z#625 US/Pacific-New\r
-  "AS", //Z#626 US/Samoa\r
-  "001",//Z#627 UTC\r
-  "001",//Z#628 Universal\r
-  "VN", //Z#629 VST\r
-  "RU", //Z#630 W-SU\r
-  "001",//Z#631 WET\r
-  "001",//Z#632 Zulu\r
+  "CA", //Z#190 America/Rainy_River\r
+  "CA", //Z#191 America/Rankin_Inlet\r
+  "BR", //Z#192 America/Recife\r
+  "CA", //Z#193 America/Regina\r
+  "CA", //Z#194 America/Resolute\r
+  "BR", //Z#195 America/Rio_Branco\r
+  "AR", //Z#196 America/Rosario\r
+  "MX", //Z#197 America/Santa_Isabel\r
+  "BR", //Z#198 America/Santarem\r
+  "CL", //Z#199 America/Santiago\r
+  "DO", //Z#200 America/Santo_Domingo\r
+  "BR", //Z#201 America/Sao_Paulo\r
+  "GL", //Z#202 America/Scoresbysund\r
+  "US", //Z#203 America/Shiprock\r
+  "US", //Z#204 America/Sitka\r
+  "BL", //Z#205 America/St_Barthelemy\r
+  "CA", //Z#206 America/St_Johns\r
+  "KN", //Z#207 America/St_Kitts\r
+  "LC", //Z#208 America/St_Lucia\r
+  "VI", //Z#209 America/St_Thomas\r
+  "VC", //Z#210 America/St_Vincent\r
+  "CA", //Z#211 America/Swift_Current\r
+  "HN", //Z#212 America/Tegucigalpa\r
+  "GL", //Z#213 America/Thule\r
+  "CA", //Z#214 America/Thunder_Bay\r
+  "MX", //Z#215 America/Tijuana\r
+  "CA", //Z#216 America/Toronto\r
+  "VG", //Z#217 America/Tortola\r
+  "CA", //Z#218 America/Vancouver\r
+  "TT", //Z#219 America/Virgin\r
+  "CA", //Z#220 America/Whitehorse\r
+  "CA", //Z#221 America/Winnipeg\r
+  "US", //Z#222 America/Yakutat\r
+  "CA", //Z#223 America/Yellowknife\r
+  "AQ", //Z#224 Antarctica/Casey\r
+  "AQ", //Z#225 Antarctica/Davis\r
+  "AQ", //Z#226 Antarctica/DumontDUrville\r
+  "AU", //Z#227 Antarctica/Macquarie\r
+  "AQ", //Z#228 Antarctica/Mawson\r
+  "AQ", //Z#229 Antarctica/McMurdo\r
+  "AQ", //Z#230 Antarctica/Palmer\r
+  "AQ", //Z#231 Antarctica/Rothera\r
+  "NZ", //Z#232 Antarctica/South_Pole\r
+  "AQ", //Z#233 Antarctica/Syowa\r
+  "AQ", //Z#234 Antarctica/Troll\r
+  "AQ", //Z#235 Antarctica/Vostok\r
+  "SJ", //Z#236 Arctic/Longyearbyen\r
+  "YE", //Z#237 Asia/Aden\r
+  "KZ", //Z#238 Asia/Almaty\r
+  "JO", //Z#239 Asia/Amman\r
+  "RU", //Z#240 Asia/Anadyr\r
+  "KZ", //Z#241 Asia/Aqtau\r
+  "KZ", //Z#242 Asia/Aqtobe\r
+  "TM", //Z#243 Asia/Ashgabat\r
+  "TM", //Z#244 Asia/Ashkhabad\r
+  "KZ", //Z#245 Asia/Atyrau\r
+  "IQ", //Z#246 Asia/Baghdad\r
+  "BH", //Z#247 Asia/Bahrain\r
+  "AZ", //Z#248 Asia/Baku\r
+  "TH", //Z#249 Asia/Bangkok\r
+  "RU", //Z#250 Asia/Barnaul\r
+  "LB", //Z#251 Asia/Beirut\r
+  "KG", //Z#252 Asia/Bishkek\r
+  "BN", //Z#253 Asia/Brunei\r
+  "IN", //Z#254 Asia/Calcutta\r
+  "RU", //Z#255 Asia/Chita\r
+  "MN", //Z#256 Asia/Choibalsan\r
+  "CN", //Z#257 Asia/Chongqing\r
+  "CN", //Z#258 Asia/Chungking\r
+  "LK", //Z#259 Asia/Colombo\r
+  "BD", //Z#260 Asia/Dacca\r
+  "SY", //Z#261 Asia/Damascus\r
+  "BD", //Z#262 Asia/Dhaka\r
+  "TL", //Z#263 Asia/Dili\r
+  "AE", //Z#264 Asia/Dubai\r
+  "TJ", //Z#265 Asia/Dushanbe\r
+  "CY", //Z#266 Asia/Famagusta\r
+  "PS", //Z#267 Asia/Gaza\r
+  "CN", //Z#268 Asia/Harbin\r
+  "PS", //Z#269 Asia/Hebron\r
+  "VN", //Z#270 Asia/Ho_Chi_Minh\r
+  "HK", //Z#271 Asia/Hong_Kong\r
+  "MN", //Z#272 Asia/Hovd\r
+  "RU", //Z#273 Asia/Irkutsk\r
+  "TR", //Z#274 Asia/Istanbul\r
+  "ID", //Z#275 Asia/Jakarta\r
+  "ID", //Z#276 Asia/Jayapura\r
+  "IL", //Z#277 Asia/Jerusalem\r
+  "AF", //Z#278 Asia/Kabul\r
+  "RU", //Z#279 Asia/Kamchatka\r
+  "PK", //Z#280 Asia/Karachi\r
+  "CN", //Z#281 Asia/Kashgar\r
+  "NP", //Z#282 Asia/Kathmandu\r
+  "NP", //Z#283 Asia/Katmandu\r
+  "RU", //Z#284 Asia/Khandyga\r
+  "IN", //Z#285 Asia/Kolkata\r
+  "RU", //Z#286 Asia/Krasnoyarsk\r
+  "MY", //Z#287 Asia/Kuala_Lumpur\r
+  "MY", //Z#288 Asia/Kuching\r
+  "KW", //Z#289 Asia/Kuwait\r
+  "MO", //Z#290 Asia/Macao\r
+  "MO", //Z#291 Asia/Macau\r
+  "RU", //Z#292 Asia/Magadan\r
+  "ID", //Z#293 Asia/Makassar\r
+  "PH", //Z#294 Asia/Manila\r
+  "OM", //Z#295 Asia/Muscat\r
+  "CY", //Z#296 Asia/Nicosia\r
+  "RU", //Z#297 Asia/Novokuznetsk\r
+  "RU", //Z#298 Asia/Novosibirsk\r
+  "RU", //Z#299 Asia/Omsk\r
+  "KZ", //Z#300 Asia/Oral\r
+  "KH", //Z#301 Asia/Phnom_Penh\r
+  "ID", //Z#302 Asia/Pontianak\r
+  "KP", //Z#303 Asia/Pyongyang\r
+  "QA", //Z#304 Asia/Qatar\r
+  "KZ", //Z#305 Asia/Qyzylorda\r
+  "MM", //Z#306 Asia/Rangoon\r
+  "SA", //Z#307 Asia/Riyadh\r
+  "VN", //Z#308 Asia/Saigon\r
+  "RU", //Z#309 Asia/Sakhalin\r
+  "UZ", //Z#310 Asia/Samarkand\r
+  "KR", //Z#311 Asia/Seoul\r
+  "CN", //Z#312 Asia/Shanghai\r
+  "SG", //Z#313 Asia/Singapore\r
+  "RU", //Z#314 Asia/Srednekolymsk\r
+  "TW", //Z#315 Asia/Taipei\r
+  "UZ", //Z#316 Asia/Tashkent\r
+  "GE", //Z#317 Asia/Tbilisi\r
+  "IR", //Z#318 Asia/Tehran\r
+  "IL", //Z#319 Asia/Tel_Aviv\r
+  "BT", //Z#320 Asia/Thimbu\r
+  "BT", //Z#321 Asia/Thimphu\r
+  "JP", //Z#322 Asia/Tokyo\r
+  "RU", //Z#323 Asia/Tomsk\r
+  "ID", //Z#324 Asia/Ujung_Pandang\r
+  "MN", //Z#325 Asia/Ulaanbaatar\r
+  "MN", //Z#326 Asia/Ulan_Bator\r
+  "CN", //Z#327 Asia/Urumqi\r
+  "RU", //Z#328 Asia/Ust-Nera\r
+  "LA", //Z#329 Asia/Vientiane\r
+  "RU", //Z#330 Asia/Vladivostok\r
+  "RU", //Z#331 Asia/Yakutsk\r
+  "MM", //Z#332 Asia/Yangon\r
+  "RU", //Z#333 Asia/Yekaterinburg\r
+  "AM", //Z#334 Asia/Yerevan\r
+  "PT", //Z#335 Atlantic/Azores\r
+  "BM", //Z#336 Atlantic/Bermuda\r
+  "ES", //Z#337 Atlantic/Canary\r
+  "CV", //Z#338 Atlantic/Cape_Verde\r
+  "FO", //Z#339 Atlantic/Faeroe\r
+  "FO", //Z#340 Atlantic/Faroe\r
+  "NO", //Z#341 Atlantic/Jan_Mayen\r
+  "PT", //Z#342 Atlantic/Madeira\r
+  "IS", //Z#343 Atlantic/Reykjavik\r
+  "GS", //Z#344 Atlantic/South_Georgia\r
+  "SH", //Z#345 Atlantic/St_Helena\r
+  "FK", //Z#346 Atlantic/Stanley\r
+  "AU", //Z#347 Australia/ACT\r
+  "AU", //Z#348 Australia/Adelaide\r
+  "AU", //Z#349 Australia/Brisbane\r
+  "AU", //Z#350 Australia/Broken_Hill\r
+  "AU", //Z#351 Australia/Canberra\r
+  "AU", //Z#352 Australia/Currie\r
+  "AU", //Z#353 Australia/Darwin\r
+  "AU", //Z#354 Australia/Eucla\r
+  "AU", //Z#355 Australia/Hobart\r
+  "AU", //Z#356 Australia/LHI\r
+  "AU", //Z#357 Australia/Lindeman\r
+  "AU", //Z#358 Australia/Lord_Howe\r
+  "AU", //Z#359 Australia/Melbourne\r
+  "AU", //Z#360 Australia/NSW\r
+  "AU", //Z#361 Australia/North\r
+  "AU", //Z#362 Australia/Perth\r
+  "AU", //Z#363 Australia/Queensland\r
+  "AU", //Z#364 Australia/South\r
+  "AU", //Z#365 Australia/Sydney\r
+  "AU", //Z#366 Australia/Tasmania\r
+  "AU", //Z#367 Australia/Victoria\r
+  "AU", //Z#368 Australia/West\r
+  "AU", //Z#369 Australia/Yancowinna\r
+  "BR", //Z#370 BET\r
+  "BD", //Z#371 BST\r
+  "BR", //Z#372 Brazil/Acre\r
+  "BR", //Z#373 Brazil/DeNoronha\r
+  "BR", //Z#374 Brazil/East\r
+  "BR", //Z#375 Brazil/West\r
+  "MZ", //Z#376 CAT\r
+  "001",//Z#377 CET\r
+  "CA", //Z#378 CNT\r
+  "US", //Z#379 CST\r
+  "001",//Z#380 CST6CDT\r
+  "CN", //Z#381 CTT\r
+  "CA", //Z#382 Canada/Atlantic\r
+  "CA", //Z#383 Canada/Central\r
+  "CA", //Z#384 Canada/East-Saskatchewan\r
+  "CA", //Z#385 Canada/Eastern\r
+  "CA", //Z#386 Canada/Mountain\r
+  "CA", //Z#387 Canada/Newfoundland\r
+  "CA", //Z#388 Canada/Pacific\r
+  "CA", //Z#389 Canada/Saskatchewan\r
+  "CA", //Z#390 Canada/Yukon\r
+  "CL", //Z#391 Chile/Continental\r
+  "CL", //Z#392 Chile/EasterIsland\r
+  "CU", //Z#393 Cuba\r
+  "KE", //Z#394 EAT\r
+  "FR", //Z#395 ECT\r
+  "001",//Z#396 EET\r
+  "001",//Z#397 EST\r
+  "001",//Z#398 EST5EDT\r
+  "EG", //Z#399 Egypt\r
+  "IE", //Z#400 Eire\r
+  "001",//Z#401 Etc/GMT\r
+  "001",//Z#402 Etc/GMT+0\r
+  "001",//Z#403 Etc/GMT+1\r
+  "001",//Z#404 Etc/GMT+10\r
+  "001",//Z#405 Etc/GMT+11\r
+  "001",//Z#406 Etc/GMT+12\r
+  "001",//Z#407 Etc/GMT+2\r
+  "001",//Z#408 Etc/GMT+3\r
+  "001",//Z#409 Etc/GMT+4\r
+  "001",//Z#410 Etc/GMT+5\r
+  "001",//Z#411 Etc/GMT+6\r
+  "001",//Z#412 Etc/GMT+7\r
+  "001",//Z#413 Etc/GMT+8\r
+  "001",//Z#414 Etc/GMT+9\r
+  "001",//Z#415 Etc/GMT-0\r
+  "001",//Z#416 Etc/GMT-1\r
+  "001",//Z#417 Etc/GMT-10\r
+  "001",//Z#418 Etc/GMT-11\r
+  "001",//Z#419 Etc/GMT-12\r
+  "001",//Z#420 Etc/GMT-13\r
+  "001",//Z#421 Etc/GMT-14\r
+  "001",//Z#422 Etc/GMT-2\r
+  "001",//Z#423 Etc/GMT-3\r
+  "001",//Z#424 Etc/GMT-4\r
+  "001",//Z#425 Etc/GMT-5\r
+  "001",//Z#426 Etc/GMT-6\r
+  "001",//Z#427 Etc/GMT-7\r
+  "001",//Z#428 Etc/GMT-8\r
+  "001",//Z#429 Etc/GMT-9\r
+  "001",//Z#430 Etc/GMT0\r
+  "001",//Z#431 Etc/Greenwich\r
+  "001",//Z#432 Etc/UCT\r
+  "001",//Z#433 Etc/UTC\r
+  "001",//Z#434 Etc/Universal\r
+  "001",//Z#435 Etc/Unknown\r
+  "001",//Z#436 Etc/Zulu\r
+  "NL", //Z#437 Europe/Amsterdam\r
+  "AD", //Z#438 Europe/Andorra\r
+  "RU", //Z#439 Europe/Astrakhan\r
+  "GR", //Z#440 Europe/Athens\r
+  "GB", //Z#441 Europe/Belfast\r
+  "RS", //Z#442 Europe/Belgrade\r
+  "DE", //Z#443 Europe/Berlin\r
+  "SK", //Z#444 Europe/Bratislava\r
+  "BE", //Z#445 Europe/Brussels\r
+  "RO", //Z#446 Europe/Bucharest\r
+  "HU", //Z#447 Europe/Budapest\r
+  "DE", //Z#448 Europe/Busingen\r
+  "MD", //Z#449 Europe/Chisinau\r
+  "DK", //Z#450 Europe/Copenhagen\r
+  "IE", //Z#451 Europe/Dublin\r
+  "GI", //Z#452 Europe/Gibraltar\r
+  "GG", //Z#453 Europe/Guernsey\r
+  "FI", //Z#454 Europe/Helsinki\r
+  "IM", //Z#455 Europe/Isle_of_Man\r
+  "TR", //Z#456 Europe/Istanbul\r
+  "JE", //Z#457 Europe/Jersey\r
+  "RU", //Z#458 Europe/Kaliningrad\r
+  "UA", //Z#459 Europe/Kiev\r
+  "RU", //Z#460 Europe/Kirov\r
+  "PT", //Z#461 Europe/Lisbon\r
+  "SI", //Z#462 Europe/Ljubljana\r
+  "GB", //Z#463 Europe/London\r
+  "LU", //Z#464 Europe/Luxembourg\r
+  "ES", //Z#465 Europe/Madrid\r
+  "MT", //Z#466 Europe/Malta\r
+  "AX", //Z#467 Europe/Mariehamn\r
+  "BY", //Z#468 Europe/Minsk\r
+  "MC", //Z#469 Europe/Monaco\r
+  "RU", //Z#470 Europe/Moscow\r
+  "CY", //Z#471 Europe/Nicosia\r
+  "NO", //Z#472 Europe/Oslo\r
+  "FR", //Z#473 Europe/Paris\r
+  "ME", //Z#474 Europe/Podgorica\r
+  "CZ", //Z#475 Europe/Prague\r
+  "LV", //Z#476 Europe/Riga\r
+  "IT", //Z#477 Europe/Rome\r
+  "RU", //Z#478 Europe/Samara\r
+  "SM", //Z#479 Europe/San_Marino\r
+  "BA", //Z#480 Europe/Sarajevo\r
+  "RU", //Z#481 Europe/Saratov\r
+  "UA", //Z#482 Europe/Simferopol\r
+  "MK", //Z#483 Europe/Skopje\r
+  "BG", //Z#484 Europe/Sofia\r
+  "SE", //Z#485 Europe/Stockholm\r
+  "EE", //Z#486 Europe/Tallinn\r
+  "AL", //Z#487 Europe/Tirane\r
+  "MD", //Z#488 Europe/Tiraspol\r
+  "RU", //Z#489 Europe/Ulyanovsk\r
+  "UA", //Z#490 Europe/Uzhgorod\r
+  "LI", //Z#491 Europe/Vaduz\r
+  "VA", //Z#492 Europe/Vatican\r
+  "AT", //Z#493 Europe/Vienna\r
+  "LT", //Z#494 Europe/Vilnius\r
+  "RU", //Z#495 Europe/Volgograd\r
+  "PL", //Z#496 Europe/Warsaw\r
+  "HR", //Z#497 Europe/Zagreb\r
+  "UA", //Z#498 Europe/Zaporozhye\r
+  "CH", //Z#499 Europe/Zurich\r
+  "001",//Z#500 Factory\r
+  "GB", //Z#501 GB\r
+  "GB", //Z#502 GB-Eire\r
+  "001",//Z#503 GMT\r
+  "001",//Z#504 GMT+0\r
+  "001",//Z#505 GMT-0\r
+  "001",//Z#506 GMT0\r
+  "001",//Z#507 Greenwich\r
+  "001",//Z#508 HST\r
+  "HK", //Z#509 Hongkong\r
+  "US", //Z#510 IET\r
+  "IN", //Z#511 IST\r
+  "IS", //Z#512 Iceland\r
+  "MG", //Z#513 Indian/Antananarivo\r
+  "IO", //Z#514 Indian/Chagos\r
+  "CX", //Z#515 Indian/Christmas\r
+  "CC", //Z#516 Indian/Cocos\r
+  "KM", //Z#517 Indian/Comoro\r
+  "TF", //Z#518 Indian/Kerguelen\r
+  "SC", //Z#519 Indian/Mahe\r
+  "MV", //Z#520 Indian/Maldives\r
+  "MU", //Z#521 Indian/Mauritius\r
+  "YT", //Z#522 Indian/Mayotte\r
+  "RE", //Z#523 Indian/Reunion\r
+  "IR", //Z#524 Iran\r
+  "IL", //Z#525 Israel\r
+  "JP", //Z#526 JST\r
+  "JM", //Z#527 Jamaica\r
+  "JP", //Z#528 Japan\r
+  "MH", //Z#529 Kwajalein\r
+  "LY", //Z#530 Libya\r
+  "001",//Z#531 MET\r
+  "WS", //Z#532 MIT\r
+  "001",//Z#533 MST\r
+  "001",//Z#534 MST7MDT\r
+  "MX", //Z#535 Mexico/BajaNorte\r
+  "MX", //Z#536 Mexico/BajaSur\r
+  "MX", //Z#537 Mexico/General\r
+  "AM", //Z#538 NET\r
+  "NZ", //Z#539 NST\r
+  "NZ", //Z#540 NZ\r
+  "NZ", //Z#541 NZ-CHAT\r
+  "US", //Z#542 Navajo\r
+  "PK", //Z#543 PLT\r
+  "US", //Z#544 PNT\r
+  "CN", //Z#545 PRC\r
+  "PR", //Z#546 PRT\r
+  "US", //Z#547 PST\r
+  "001",//Z#548 PST8PDT\r
+  "WS", //Z#549 Pacific/Apia\r
+  "NZ", //Z#550 Pacific/Auckland\r
+  "PG", //Z#551 Pacific/Bougainville\r
+  "NZ", //Z#552 Pacific/Chatham\r
+  "FM", //Z#553 Pacific/Chuuk\r
+  "CL", //Z#554 Pacific/Easter\r
+  "VU", //Z#555 Pacific/Efate\r
+  "KI", //Z#556 Pacific/Enderbury\r
+  "TK", //Z#557 Pacific/Fakaofo\r
+  "FJ", //Z#558 Pacific/Fiji\r
+  "TV", //Z#559 Pacific/Funafuti\r
+  "EC", //Z#560 Pacific/Galapagos\r
+  "PF", //Z#561 Pacific/Gambier\r
+  "SB", //Z#562 Pacific/Guadalcanal\r
+  "GU", //Z#563 Pacific/Guam\r
+  "US", //Z#564 Pacific/Honolulu\r
+  "UM", //Z#565 Pacific/Johnston\r
+  "KI", //Z#566 Pacific/Kiritimati\r
+  "FM", //Z#567 Pacific/Kosrae\r
+  "MH", //Z#568 Pacific/Kwajalein\r
+  "MH", //Z#569 Pacific/Majuro\r
+  "PF", //Z#570 Pacific/Marquesas\r
+  "UM", //Z#571 Pacific/Midway\r
+  "NR", //Z#572 Pacific/Nauru\r
+  "NU", //Z#573 Pacific/Niue\r
+  "NF", //Z#574 Pacific/Norfolk\r
+  "NC", //Z#575 Pacific/Noumea\r
+  "AS", //Z#576 Pacific/Pago_Pago\r
+  "PW", //Z#577 Pacific/Palau\r
+  "PN", //Z#578 Pacific/Pitcairn\r
+  "FM", //Z#579 Pacific/Pohnpei\r
+  "FM", //Z#580 Pacific/Ponape\r
+  "PG", //Z#581 Pacific/Port_Moresby\r
+  "CK", //Z#582 Pacific/Rarotonga\r
+  "MP", //Z#583 Pacific/Saipan\r
+  "AS", //Z#584 Pacific/Samoa\r
+  "PF", //Z#585 Pacific/Tahiti\r
+  "KI", //Z#586 Pacific/Tarawa\r
+  "TO", //Z#587 Pacific/Tongatapu\r
+  "FM", //Z#588 Pacific/Truk\r
+  "UM", //Z#589 Pacific/Wake\r
+  "WF", //Z#590 Pacific/Wallis\r
+  "FM", //Z#591 Pacific/Yap\r
+  "PL", //Z#592 Poland\r
+  "PT", //Z#593 Portugal\r
+  "TW", //Z#594 ROC\r
+  "KR", //Z#595 ROK\r
+  "SB", //Z#596 SST\r
+  "SG", //Z#597 Singapore\r
+  "001",//Z#598 SystemV/AST4\r
+  "001",//Z#599 SystemV/AST4ADT\r
+  "001",//Z#600 SystemV/CST6\r
+  "001",//Z#601 SystemV/CST6CDT\r
+  "001",//Z#602 SystemV/EST5\r
+  "001",//Z#603 SystemV/EST5EDT\r
+  "001",//Z#604 SystemV/HST10\r
+  "001",//Z#605 SystemV/MST7\r
+  "001",//Z#606 SystemV/MST7MDT\r
+  "001",//Z#607 SystemV/PST8\r
+  "001",//Z#608 SystemV/PST8PDT\r
+  "001",//Z#609 SystemV/YST9\r
+  "001",//Z#610 SystemV/YST9YDT\r
+  "TR", //Z#611 Turkey\r
+  "001",//Z#612 UCT\r
+  "US", //Z#613 US/Alaska\r
+  "US", //Z#614 US/Aleutian\r
+  "US", //Z#615 US/Arizona\r
+  "US", //Z#616 US/Central\r
+  "US", //Z#617 US/East-Indiana\r
+  "US", //Z#618 US/Eastern\r
+  "US", //Z#619 US/Hawaii\r
+  "US", //Z#620 US/Indiana-Starke\r
+  "US", //Z#621 US/Michigan\r
+  "US", //Z#622 US/Mountain\r
+  "US", //Z#623 US/Pacific\r
+  "US", //Z#624 US/Pacific-New\r
+  "AS", //Z#625 US/Samoa\r
+  "001",//Z#626 UTC\r
+  "001",//Z#627 Universal\r
+  "VN", //Z#628 VST\r
+  "RU", //Z#629 W-SU\r
+  "001",//Z#630 WET\r
+  "001",//Z#631 Zulu\r
  }\r
 }\r
diff --git a/source/data/rbnf/ars.txt b/source/data/rbnf/ars.txt
deleted file mode 100644 (file)
index 8de1f41..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar"}\r
-}\r
index 0215fe6..44b49fa 100644 (file)
@@ -4,8 +4,8 @@ id{
     RBNFRules{\r
         OrdinalRules{\r
             "%digits-ordinal:",\r
-            "-x: \u2212ke->#,##0>;",\r
-            "0: ke-=#,##0=;",\r
+            "-x: ke\u2212>#,##0>;",\r
+            "0: ke=#,##0=;",\r
         }\r
         SpelloutRules{\r
             "%spellout-numbering-year:",\r
@@ -45,5 +45,5 @@ id{
             "0: ke=%spellout-cardinal=;",\r
         }\r
     }\r
-    Version{"2.1.32.38"}\r
+    Version{"2.1.27.22"}\r
 }\r
index 3c40cba..35a5711 100644 (file)
@@ -4,8 +4,8 @@ ms{
     RBNFRules{\r
         OrdinalRules{\r
             "%digits-ordinal:",\r
-            "-x: \u2212ke->#,##0>;",\r
-            "0: ke-=#,##0=;",\r
+            "-x: ke\u2212>#,##0>;",\r
+            "0: ke=#,##0=;",\r
         }\r
         SpelloutRules{\r
             "%spellout-numbering-year:",\r
@@ -47,5 +47,5 @@ ms{
             "2: ke=%spellout-cardinal=;",\r
         }\r
     }\r
-    Version{"2.1.31.40"}\r
+    Version{"2.1.27.22"}\r
 }\r
index db913a0..730707a 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-RBNF_CLDR_VERSION = 31.0.1\r
+RBNF_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'rbnflocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'rbnflocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,10 +26,10 @@ RBNF_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-RBNF_SYNTHETIC_ALIAS = ars.txt es_DO.txt es_GT.txt es_HN.txt\\r
- es_MX.txt es_NI.txt es_PA.txt es_PR.txt es_SV.txt\\r
es_US.txt in.txt iw.txt no.txt sh.txt\\r
- zh_HK.txt zh_Hant_HK.txt zh_MO.txt zh_TW.txt\r
+RBNF_SYNTHETIC_ALIAS = es_DO.txt es_GT.txt es_HN.txt es_MX.txt\\r
+ es_NI.txt es_PA.txt es_PR.txt es_SV.txt es_US.txt\\r
in.txt iw.txt no.txt sh.txt zh_HK.txt\\r
+ zh_Hant_HK.txt zh_MO.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
index 3df423e..5a85cbd 100644 (file)
@@ -53,11 +53,21 @@ uk{
             "700: \u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "800: \u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "900: \u0434\u0435\u0432\u02BC\u044F\u0442\u0441\u043E\u0442[ >>];",\r
-            "1000: <%spellout-cardinal-feminine< $(cardinal,one{\u0442\u0438\u0441\u044F\u0447\u0430}few{\u0442\u0438\u0441\u044F\u0447\u0456}other{\u0442\u0438\u0441\u044F\u0447})$[ >>];",\r
-            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u0439\u043E\u043D}few{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
-            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u044F\u0440\u0434}few{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
-            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u0439\u043E\u043D}few{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
-            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u044F\u0440\u0434}few{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
+            "1000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0430[ >>];",\r
+            "2000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0456[ >>];",\r
+            "5000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
+            "2000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
+            "5000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
+            "2000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
+            "5000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
+            "2000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
+            "5000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
+            "2000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
+            "5000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
             "%spellout-cardinal-neuter:",\r
             "-x: \u043C\u0456\u043D\u0443\u0441 >>;",\r
@@ -83,11 +93,21 @@ uk{
             "700: \u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "800: \u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "900: \u0434\u0435\u0432\u02BC\u044F\u0442\u0441\u043E\u0442[ >>];",\r
-            "1000: <%spellout-cardinal-feminine< $(cardinal,one{\u0442\u0438\u0441\u044F\u0447\u0430}few{\u0442\u0438\u0441\u044F\u0447\u0456}other{\u0442\u0438\u0441\u044F\u0447})$[ >>];",\r
-            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u0439\u043E\u043D}few{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
-            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u044F\u0440\u0434}few{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
-            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u0439\u043E\u043D}few{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
-            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u044F\u0440\u0434}few{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
+            "1000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0430[ >>];",\r
+            "2000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0456[ >>];",\r
+            "5000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
+            "2000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
+            "5000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
+            "2000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
+            "5000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
+            "2000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
+            "5000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
+            "2000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
+            "5000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
             "%spellout-cardinal-feminine:",\r
             "-x: \u043C\u0456\u043D\u0443\u0441 >>;",\r
@@ -113,13 +133,23 @@ uk{
             "700: \u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "800: \u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442[ >>];",\r
             "900: \u0434\u0435\u0432\u02BC\u044F\u0442\u0441\u043E\u0442[ >>];",\r
-            "1000: <%spellout-cardinal-feminine< $(cardinal,one{\u0442\u0438\u0441\u044F\u0447\u0430}few{\u0442\u0438\u0441\u044F\u0447\u0456}other{\u0442\u0438\u0441\u044F\u0447})$[ >>];",\r
-            "1000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u0439\u043E\u043D}few{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
-            "1000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u043C\u0456\u043B\u044C\u044F\u0440\u0434}few{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
-            "1000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u0439\u043E\u043D}few{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438}other{\u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432})$[ >>];",\r
-            "1000000000000000: <%spellout-cardinal-masculine< $(cardinal,one{\u0431\u0456\u043B\u044C\u044F\u0440\u0434}few{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438}other{\u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432})$[ >>];",\r
+            "1000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0430[ >>];",\r
+            "2000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447\u0456[ >>];",\r
+            "5000: <%spellout-cardinal-feminine< \u0442\u0438\u0441\u044F\u0447[ >>];",\r
+            "1000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
+            "2000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
+            "5000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
+            "1000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
+            "2000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
+            "5000000000: <%spellout-cardinal-masculine< \u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
+            "1000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D[ >>];",\r
+            "2000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0438[ >>];",\r
+            "5000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432[ >>];",\r
+            "1000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434[ >>];",\r
+            "2000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0438[ >>];",\r
+            "5000000000000000: <%spellout-cardinal-masculine< \u0431\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432[ >>];",\r
             "1000000000000000000: =#,##0=;",\r
         }\r
     }\r
-    Version{"2.1.30.62"}\r
+    Version{"2.1.27.22"}\r
 }\r
index d830ebd..60fd2ea 100644 (file)
@@ -89,7 +89,7 @@ af{
         CW{"Curaçao"}\r
         CX{"Kerseiland"}\r
         CY{"Siprus"}\r
-        CZ{"Tjeggië"}\r
+        CZ{"Tjeggiese Republiek"}\r
         DE{"Duitsland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djiboeti"}\r
@@ -304,9 +304,9 @@ af{
     Countries%variant{\r
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (Republiek die)"}\r
-        CZ{"Tjeggiese Republiek"}\r
+        CZ{"Tjeggië"}\r
         FK{"Falklandeilande (Malvinas)"}\r
         MK{"Macedonië (VJRM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
 }\r
index 0d92238..621d854 100644 (file)
@@ -227,5 +227,5 @@ agq{
         ZM{"Zambìa"}\r
         ZW{"Zìmbagbɛ̀"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4410df3..672bb38 100644 (file)
@@ -227,5 +227,5 @@ ak{
         ZM{"Zambia"}\r
         ZW{"Zembabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7932595..340f19b 100644 (file)
@@ -89,7 +89,7 @@ am{
         CW{"ኩራሳዎ"}\r
         CX{"የገና ደሴት"}\r
         CY{"ሳይፕረስ"}\r
-        CZ{"á\89¼á\89ºá\8b«"}\r
+        CZ{"á\89¼á\8a­ á\88ªá\8d\91á\89¥á\88\8aá\8a­"}\r
         DE{"ጀርመን"}\r
         DG{"ዲዬጎ ጋርሺያ"}\r
         DJ{"ጂቡቲ"}\r
@@ -305,10 +305,10 @@ am{
         CD{"ኮንጎ (የዲሞክራቲክ ሪፐብሊክ ኮንጎ)"}\r
         CG{"ኮንጎ (ሪፐብሊክ)"}\r
         CI{"አይቮሪኮስት"}\r
-        CZ{"á\89¼á\8a­ á\88ªá\8d\91á\89¥á\88\8aá\8a­"}\r
+        CZ{"á\89¼á\89ºá\8b«"}\r
         FK{"ፎክላንድ ደሴቶች (ኢስላስ ማልቪናስ)"}\r
         MK{"መቄዶንያ (የቀድሞ የዩጎስላቭ መቄዶንያ ሪፐብሊክ)"}\r
         TL{"ምስራቅ ቲሞር"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 4f90ee9..b43ea03 100644 (file)
@@ -89,7 +89,7 @@ ar{
         CW{"كوراساو"}\r
         CX{"جزيرة الكريسماس"}\r
         CY{"قبرص"}\r
-        CZ{"التشيك"}\r
+        CZ{"جÙ\85Ù\87Ù\88رÙ\8aØ© Ø§Ù\84تشÙ\8aÙ\83"}\r
         DE{"ألمانيا"}\r
         DG{"دييغو غارسيا"}\r
         DJ{"جيبوتي"}\r
@@ -304,10 +304,10 @@ ar{
     Countries%variant{\r
         CD{"جمهورية الكونغو الديمقراطية"}\r
         CG{"جمهورية الكونغو"}\r
-        CZ{"جÙ\85Ù\87Ù\88رÙ\8aØ© Ø§Ù\84تشÙ\8aÙ\83"}\r
+        CZ{"التشيك"}\r
         FK{"جزر فوكلاند - جزر مالفيناس"}\r
         MK{"مقدونيا- جمهورية مقدونيا اليوغسلافية السابقة"}\r
         TL{"تيمور الشرقية"}\r
     }\r
-    Version{"2.1.32.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 176ea9f..6b21071 100644 (file)
@@ -5,5 +5,5 @@ ar_AE{
         CI{"ساحل العاج"}\r
         TL{"التيمور الشرقية"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5b710fc..4a6ffeb 100644 (file)
@@ -6,5 +6,5 @@ ar_LY{
         MS{"مونتيسيرات"}\r
         UY{"أوروغواي"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 667126e..7cebbac 100644 (file)
@@ -8,5 +8,5 @@ ar_SA{
         PM{"سان بيير وميكولون"}\r
         UY{"أوروغواي"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
diff --git a/source/data/region/ars.txt b/source/data/region/ars.txt
deleted file mode 100644 (file)
index 9bb22b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar_SA"}\r
-}\r
index 7219b1d..5be0362 100644 (file)
@@ -20,5 +20,5 @@ as{
         US{"যুক্তৰাষ্ট্ৰ"}\r
         ZZ{"অজ্ঞাত বা অবৈধ অঞ্চল"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cd52694..133ddbe 100644 (file)
@@ -225,5 +225,5 @@ asa{
         ZM{"Dhambia"}\r
         ZW{"Dhimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 98f82fe..2a8b465 100644 (file)
@@ -307,5 +307,5 @@ ast{
         MK{"Macedonia (ARYDM)"}\r
         TL{"Timor Este"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 596e885..3971f01 100644 (file)
@@ -89,7 +89,7 @@ az{
         CW{"Kurasao"}\r
         CX{"Milad adası"}\r
         CY{"Kipr"}\r
-        CZ{"Çexiya"}\r
+        CZ{"Çex Respublikası"}\r
         DE{"Almaniya"}\r
         DG{"Dieqo Qarsiya"}\r
         DJ{"Cibuti"}\r
@@ -305,10 +305,10 @@ az{
         CD{"Konqo (KDR)"}\r
         CG{"Konqo (Respublika)"}\r
         CI{"Fil Dişi Sahili"}\r
-        CZ{"Çex Respublikası"}\r
+        CZ{"Çexiya"}\r
         FK{"Folklend adaları (Malvin adaları)"}\r
         MK{"Makedoniya (KYRM)"}\r
         TL{"Doğu Timor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 7b1151d..d9c81b8 100644 (file)
@@ -89,7 +89,7 @@ az_Cyrl{
         CW{"Курасао"}\r
         CX{"Милад адасы"}\r
         CY{"Кипр"}\r
-        CZ{"Чехија"}\r
+        CZ{"Чех Республикасы"}\r
         DE{"Алманија"}\r
         DG{"Диего Гарсија"}\r
         DJ{"Ҹибути"}\r
@@ -298,9 +298,9 @@ az_Cyrl{
     Countries%variant{\r
         CD{"Конго (КДР)"}\r
         CG{"Конго (Республика)"}\r
-        CZ{"Чех Республикасы"}\r
+        CZ{"Чехија"}\r
         FK{"Фолкленд адалары (Малвин адалары)"}\r
         MK{"Македонија (КЈРМ)"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c0b75a..4ce2adb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2f25c0f..511a656 100644 (file)
@@ -224,5 +224,5 @@ bas{
         ZM{"Zàmbià"}\r
         ZW{"Zìmbàbwê"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f40a05e..731660f 100644 (file)
@@ -307,5 +307,5 @@ be{
         MK{"Македонія (БЮРМ)"}\r
         TL{"Усходні Тымор"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.66"}\r
 }\r
index f8a8172..f3b3946 100644 (file)
@@ -4,5 +4,5 @@ bem{
     Countries{\r
         ZM{"Zambia"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cdf822f..bdf1864 100644 (file)
@@ -227,5 +227,5 @@ bez{
         ZM{"Huzambia"}\r
         ZW{"Huzimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d3deeee..3f7ee9c 100644 (file)
@@ -89,7 +89,7 @@ bg{
         CW{"Кюрасао"}\r
         CX{"остров Рождество"}\r
         CY{"Кипър"}\r
-        CZ{"ЧеÑ\85иÑ\8f"}\r
+        CZ{"ЧеÑ\88ка Ñ\80епÑ\83блика"}\r
         DE{"Германия"}\r
         DG{"Диего Гарсия"}\r
         DJ{"Джибути"}\r
@@ -304,9 +304,9 @@ bg{
         CD{"Конго (ДРК)"}\r
         CG{"Конго (Република)"}\r
         CI{"Бряг на слоновата кост"}\r
-        CZ{"ЧеÑ\88ка Ñ\80епÑ\83блика"}\r
+        CZ{"ЧеÑ\85иÑ\8f"}\r
         FK{"Фолклендски острови (Малвински острови)"}\r
         MK{"Бивша югославска република Македония"}\r
     }\r
-    Version{"2.1.33.75"}\r
+    Version{"2.1.30.6"}\r
 }\r
index 4ae88f5..6fa71d9 100644 (file)
@@ -227,5 +227,5 @@ bm{
         ZM{"Zanbi"}\r
         ZW{"Zimbabuwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc0c411..112221f 100644 (file)
@@ -89,7 +89,7 @@ bn{
         CW{"কিউরাসাও"}\r
         CX{"ক্রিসমাস দ্বীপ"}\r
         CY{"সাইপ্রাস"}\r
-        CZ{"à¦\9aà§\87à¦\9aিয়া"}\r
+        CZ{"à¦\9aà§\87à¦\95 à¦ªà§\8dরà¦\9cাতনà§\8dতà§\8dর"}\r
         DE{"জার্মানি"}\r
         DG{"দিয়েগো গার্সিয়া"}\r
         DJ{"জিবুতি"}\r
@@ -305,10 +305,10 @@ bn{
         CD{"কঙ্গো(DRC)"}\r
         CG{"কঙ্গো (প্রজাতন্ত্র)"}\r
         CI{"আই ভরি"}\r
-        CZ{"à¦\9aà§\87à¦\95 à¦ªà§\8dরà¦\9cাতনà§\8dতà§\8dর"}\r
+        CZ{"à¦\9aà§\87à¦\9aিয়া"}\r
         FK{"ফকল্যান্ড আইল্যান্ড ( ইসল্যাস মাসভেনিস)"}\r
         MK{"মেসিডোনিয়া(FYROM)"}\r
         TL{"পূর্ব তিমুর"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
 }\r
index f2de4fe..af9e16d 100644 (file)
@@ -9,5 +9,5 @@ bn_IN{
     Countries%variant{\r
         CD{"কঙ্গো (DRC)"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 164bb5b..25a58e2 100644 (file)
@@ -15,5 +15,5 @@ bo{
         US{"ཨ་མེ་རི་ཀ།"}\r
         ZZ{"མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུག"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c031e66..2e8b7d5 100644 (file)
@@ -4,5 +4,5 @@ bo_IN{
     Countries{\r
         009{"ཨོཤི་ཡཱན་ན།"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 393d593..623adb3 100644 (file)
@@ -307,5 +307,5 @@ br{
         MK{"Makedonia (RYKM)"}\r
         TL{"Timor ar Reter"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 0727e4f..9582e55 100644 (file)
@@ -281,5 +281,5 @@ brx{
         ZW{"ज़ीम्बाब्वे"}\r
         ZZ{"अज्ञात या अवैध प्रदेश"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index ac00271..4f220a2 100644 (file)
@@ -89,7 +89,7 @@ bs{
         CW{"Kurasao"}\r
         CX{"Božićna Ostrva"}\r
         CY{"Kipar"}\r
-        CZ{"Češka"}\r
+        CZ{"Češka Republika"}\r
         DE{"Njemačka"}\r
         DG{"Dijego Garsija"}\r
         DJ{"Džibuti"}\r
@@ -305,9 +305,9 @@ bs{
         CD{"Kongo (DRC)"}\r
         CG{"Republika Kongo"}\r
         CI{"Obala Bjelokosti"}\r
-        CZ{"Češka Republika"}\r
+        CZ{"Češka"}\r
         FK{"Folklandska Ostrva (Malvinska Ostrva)"}\r
         MK{"Makedonija (BJR)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 3f2548c..e10e5b1 100644 (file)
@@ -297,5 +297,5 @@ bs_Cyrl{
         CG{"Конго (Република)"}\r
         FK{"Фокландска (Малвинска) острва"}\r
     }\r
-    Version{"2.1.32.72"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 972dc01..20b4126 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c97fd69..54a27eb 100644 (file)
@@ -89,7 +89,7 @@ ca{
         CW{"Curaçao"}\r
         CX{"Illa Christmas"}\r
         CY{"Xipre"}\r
-        CZ{"Txèquia"}\r
+        CZ{"República Txeca"}\r
         DE{"Alemanya"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,9 +304,9 @@ ca{
     Countries%variant{\r
         CD{"Congo (República Democràtica del Congo)"}\r
         CG{"Congo (República del Congo)"}\r
-        CZ{"República Txeca"}\r
+        CZ{"Txèquia"}\r
         FK{"Illes Malvines (Illes Falkland)"}\r
         MK{"Macedònia (Antiga República Iugoslava de Macedònia)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 36f9ef1..ade7c2e 100644 (file)
@@ -303,5 +303,5 @@ ce{
         CD{"Конго (ДРК)"}\r
         FK{"Фолклендан гӀайренаш (Мальвинаш)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index a0a7352..a10602f 100644 (file)
@@ -225,5 +225,5 @@ cgg{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 26a3384..c942b3f 100644 (file)
@@ -89,7 +89,7 @@ chr{
         CW{"ᎫᎳᎨᎣ"}\r
         CX{"ᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢ"}\r
         CY{"ᏌᎢᏆᏍ"}\r
-        CZ{"ᏤᎩ"}\r
+        CZ{"ᏤᎩ ᏍᎦᏚᎩ"}\r
         DE{"ᎠᏂᏛᏥ"}\r
         DG{"ᏗᏰᎪ ᎦᏏᏯ"}\r
         DJ{"ᏥᏊᏗ"}\r
@@ -302,10 +302,10 @@ chr{
     Countries%variant{\r
         CD{"ᎧᏂᎪ (DRC)"}\r
         CG{"ᎧᏂᎪ (ᏍᎦᏚᎩ)"}\r
-        CZ{"ᏤᎩ ᏍᎦᏚᎩ"}\r
+        CZ{"ᏤᎩ"}\r
         FK{"ᏩᎩ ᏚᎦᏚᏛᎢ (ᎢᏍᎳᏍ ᎹᎸᏫᎾᏍ)"}\r
         MK{"ᎹᏎᏙᏂᏯ (FYROM)"}\r
         TL{"ᏗᎧᎸᎬᎢ ᏘᎼᎵ"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 1be8c06..43e9803 100644 (file)
@@ -196,5 +196,5 @@ ckb{
         CD{"کۆماری دیموکراتیکی کۆنگۆ"}\r
         CG{"کۆماری کۆنگۆ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 18e61df..d1c9af1 100644 (file)
@@ -89,7 +89,7 @@ cs{
         CW{"Curaçao"}\r
         CX{"Vánoční ostrov"}\r
         CY{"Kypr"}\r
-        CZ{"Česko"}\r
+        CZ{"Česká republika"}\r
         DE{"Německo"}\r
         DG{"Diego García"}\r
         DJ{"Džibutsko"}\r
@@ -305,9 +305,9 @@ cs{
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (republika)"}\r
         CI{"Côte d’Ivoire"}\r
-        CZ{"Česká republika"}\r
+        CZ{"Česko"}\r
         FK{"Falklandské ostrovy (Malvíny)"}\r
         MK{"Makedonie (FYROM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 617e23e..b4d26c2 100644 (file)
@@ -89,7 +89,7 @@ cy{
         CW{"Curaçao"}\r
         CX{"Ynys y Nadolig"}\r
         CY{"Cyprus"}\r
-        CZ{"Tsiecia"}\r
+        CZ{"Gweriniaeth Tsiec"}\r
         DE{"Yr Almaen"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ cy{
         CD{"Y Congo (G.Dd.C.)"}\r
         CG{"Y Congo (Gweriniaeth)"}\r
         CI{"Arfordir Ifori"}\r
-        CZ{"Gweriniaeth Tsiec"}\r
+        CZ{"Tsiecia"}\r
         FK{"Ynysoedd y Falkland (Ynysoedd y Malfinas)"}\r
         MK{"Macedonia (CWIM)"}\r
         TL{"Dwyrain Timor"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
 }\r
index bb6c165..9e84d7c 100644 (file)
@@ -308,5 +308,5 @@ da{
         MK{"Den tidligere jugoslaviske republik Makedonien"}\r
         TL{"Østtimor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 678345d..b45564d 100644 (file)
@@ -227,5 +227,5 @@ dav{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e96c3b8..053e660 100644 (file)
@@ -89,7 +89,7 @@ de{
         CW{"Curaçao"}\r
         CX{"Weihnachtsinsel"}\r
         CY{"Zypern"}\r
-        CZ{"Tschechien"}\r
+        CZ{"Tschechische Republik"}\r
         DE{"Deutschland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Dschibuti"}\r
@@ -305,9 +305,9 @@ de{
         CD{"Kongo (Demokratische Republik)"}\r
         CG{"Kongo (Republik)"}\r
         CI{"Elfenbeinküste"}\r
-        CZ{"Tschechische Republik"}\r
+        CZ{"Tschechien"}\r
         FK{"Falklandinseln (Malwinen)"}\r
         MK{"Mazedonien (EJR)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 32a6e2e..d66970e 100644 (file)
@@ -4,5 +4,5 @@ de_AT{
     Countries{\r
         SJ{"Svalbard und Jan Mayen"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.73"}\r
 }\r
index 8b9f599..fb84a03 100644 (file)
@@ -11,5 +11,5 @@ de_CH{
         SB{"Salomon-Inseln"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index efc132c..e902bed 100644 (file)
@@ -226,5 +226,5 @@ dje{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fda82f0..7e546ed 100644 (file)
@@ -307,5 +307,5 @@ dsb{
         MK{"Makedońska (PRJ)"}\r
         TL{"Pódzajtšny Timor"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 4b08de6..4f53263 100644 (file)
@@ -4,5 +4,5 @@ dua{
     Countries{\r
         CM{"Cameroun"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2e29c8e..0036f6b 100644 (file)
@@ -111,5 +111,5 @@ dyo{
         TG{"Togo"}\r
         TH{"Tailand"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4fd909..5650543 100644 (file)
@@ -303,5 +303,5 @@ dz{
         MK{"མ་སེ་ཌོ་ནི་ཡ་ (ཡུ་གོ་སླཱ་བི་ཡ)"}\r
         TL{"ཤར་ཕྱོགས་ཏི་་མོར"}\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.29.61"}\r
 }\r
index 655d40f..1833461 100644 (file)
@@ -227,5 +227,5 @@ ebu{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c1f772f..86b92f4 100644 (file)
@@ -298,5 +298,5 @@ ee{
         MK{"Makedonia (FYROM) nutome"}\r
         TL{"Ɣedzeƒe Timɔ nutome"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index d8a886a..a824069 100644 (file)
@@ -89,7 +89,7 @@ el{
         CW{"Κουρασάο"}\r
         CX{"Νήσος των Χριστουγέννων"}\r
         CY{"Κύπρος"}\r
-        CZ{"Τσεχία"}\r
+        CZ{"ΤÏ\83εÏ\87ική Î\94ημοκÏ\81αÏ\84ία"}\r
         DE{"Γερμανία"}\r
         DG{"Ντιέγκο Γκαρσία"}\r
         DJ{"Τζιμπουτί"}\r
@@ -304,10 +304,10 @@ el{
     Countries%variant{\r
         CD{"Κονγκό"}\r
         CG{"Κονγκό (Δημοκρατία)"}\r
-        CZ{"ΤÏ\83εÏ\87ική Î\94ημοκÏ\81αÏ\84ία"}\r
+        CZ{"Τσεχία"}\r
         FK{"Νήσοι Φόκλαντ (Νήσοι Μαλβίνας)"}\r
         MK{"Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας (ΠΓΔΜ)"}\r
         TL{"Ανατολικό Τιμόρ"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 9caa96d..5e36c04 100644 (file)
@@ -89,7 +89,7 @@ en{
         CW{"Curaçao"}\r
         CX{"Christmas Island"}\r
         CY{"Cyprus"}\r
-        CZ{"Czechia"}\r
+        CZ{"Czech Republic"}\r
         DE{"Germany"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -308,10 +308,10 @@ en{
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republic)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Czech Republic"}\r
+        CZ{"Czechia"}\r
         FK{"Falkland Islands (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"East Timor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.50"}\r
 }\r
index 78561e0..249596a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a0d454..93d0c87 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 07cb4ef..d55549d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09171c4..b4edb3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8dff34f..1bfc3f0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.32.62"}\r
+    Version{"2.1.30.50"}\r
 }\r
index 84a0efd..7083244 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7065545..c967ad1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a3b9186..17ad945 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 95e82b5..03e7849 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a73b7bc..d4c98cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 5891076..13545f6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2fe08f5..095353c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index a54c911..a2871e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f2d948..d055587 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f59d92a..8bd2eba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5aacc7b..e0ae421 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c9c483..a5c8744 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46da087..81d8657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d2d71a..a91a9c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d758dd..af3ee11 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5a92d6b..55574ee 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b548583..4eaa7dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7fd2c9a..228a8a8 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f699cc1..12aebe3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 86f8e9d..c439098 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5df30b2..21a12bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eab91ca..78ffc47 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a57c80..d57d893 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.24"}\r
 }\r
index 7921b24..ab0594c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0d3839..8474cce 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b66f585..33fc5d4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fe0d68..46d28cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1a05f40..e0d4e60 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7397d6..dec9373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a04a10..7c42f22 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 18bb2f3..acfab3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 76bee45..1500279 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66ecc0..b5e5329 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0ae302f..1c73a40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2b8ba3f..73736a0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c47ce4e..f31e9bf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d812c18..67edbc7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b11b581..26213f7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 899b1ea..3f8c7e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35fb03c..f755a2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bd356e9..e26f444 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bfd0689..7abb21b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3fc63c0..07b6a83 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b723857..b5123bd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f967e69..9eafad7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f6dfb6a..0b1b6a5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a027fc6..df8f657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8464a2e..23b6896 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 890b025..bb0cc54 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 873b8e1..58ee57a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b36d9ba..064aa6e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5f0af42..26854fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 358d626..0a360ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 745a114..5038494 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d0d0cd..21bbdc9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 165856c..039e457 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 266914a..eb82604 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c56ed84..0dd2106 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6aa4d92..c1792a4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 080d0e6..0ca66f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fef2013..ccbdf7f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4094568..5bf94f0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30541dc..0af3d13 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 76b4d89..7bb21c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2de69a..cb507b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 77c65fa..699d679 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87a33e2..6206b27 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 31f586b..d7fa572 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5250ec4..66e6ec7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index cf6ab49..968da99 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a259492..fedf1c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3e61485..4005802 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2b3a430..002988b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ec1778f..9862443 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cc8b6f1..47c792d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 852eb0f..eaabbe1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 020c31b..797d773 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d27b6ec..f1697f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21b8b30..599a8fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ebd07d..a2c5021 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5e30f2b..c0c2960 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eaac010..3b6c1e4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12317cf..de17869 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba6619b..e6a295b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12b8824..2cecbf4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c90fd7..a3f70e3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0461373..d528625 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.64"}\r
 }\r
index 19ed0d0..05bb346 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bb5dbed..e725848 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 2f32876..582d65f 100644 (file)
@@ -226,5 +226,5 @@ eo{
         ZM{"Zambio"}\r
         ZW{"Zimbabvo"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 52f9575..c924983 100644 (file)
@@ -89,7 +89,7 @@ es{
         CW{"Curazao"}\r
         CX{"Isla de Navidad"}\r
         CY{"Chipre"}\r
-        CZ{"Chequia"}\r
+        CZ{"República Checa"}\r
         DE{"Alemania"}\r
         DG{"Diego García"}\r
         DJ{"Yibuti"}\r
@@ -303,10 +303,10 @@ es{
         CD{"Congo (República Democrática del Congo)"}\r
         CG{"Congo (República)"}\r
         CI{"Costa de Marfil"}\r
-        CZ{"República Checa"}\r
+        CZ{"Chequia"}\r
         FK{"Islas Malvinas (Islas Falkland)"}\r
         MK{"Macedonia (ERYM)"}\r
         TL{"Timor Oriental"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.80"}\r
 }\r
index aa63c34..7dfefa4 100644 (file)
@@ -14,5 +14,5 @@ es_419{
         GB{"R. U."}\r
         US{"EE.UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 293c27f..e3c763f 100644 (file)
@@ -12,5 +12,5 @@ es_AR{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 24baf97..7eb5ebe 100644 (file)
@@ -12,5 +12,5 @@ es_BO{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e68498b..2f5e37a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/region/es_BZ.txt b/source/data/region/es_BZ.txt
deleted file mode 100644 (file)
index aa10911..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-es_BZ{\r
-    %%Parent{"es_419"}\r
-    Version{"2.1.32.37"}\r
-}\r
index 9104a11..3c62984 100644 (file)
@@ -13,5 +13,5 @@ es_CL{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 64bcdd0..2ea330a 100644 (file)
@@ -12,5 +12,5 @@ es_CO{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e73da32..8247d05 100644 (file)
@@ -12,5 +12,5 @@ es_CR{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 66f010e..791d7f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 45336fb..a11127d 100644 (file)
@@ -12,5 +12,5 @@ es_DO{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2d3caa0..4028cf1 100644 (file)
@@ -12,5 +12,5 @@ es_EC{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index daafd97..b61e070 100644 (file)
@@ -12,5 +12,5 @@ es_GT{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index dd708f6..4ba6c66 100644 (file)
@@ -12,5 +12,5 @@ es_HN{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 588ce58..93cf5a3 100644 (file)
@@ -26,5 +26,5 @@ es_MX{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 6e0a645..e7fc82c 100644 (file)
@@ -12,5 +12,5 @@ es_NI{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index c249131..1bfc637 100644 (file)
@@ -12,5 +12,5 @@ es_PA{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index b548efb..c896ee0 100644 (file)
@@ -12,5 +12,5 @@ es_PE{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 3ffe260..73516e3 100644 (file)
@@ -8,5 +8,5 @@ es_PR{
     Countries%short{\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 07b7357..461674c 100644 (file)
@@ -12,5 +12,5 @@ es_PY{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 18fdab9..1ebef4b 100644 (file)
@@ -8,5 +8,5 @@ es_SV{
     Countries%short{\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 3fe422f..16019af 100644 (file)
@@ -10,7 +10,8 @@ es_US{
     }\r
     Countries%variant{\r
         CI{"CI"}\r
+        CZ{"CZ"}\r
         TL{"TL"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 38b881e..2344e94 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5c8f409..eb0b019 100644 (file)
@@ -12,5 +12,5 @@ es_VE{
         GB{"RU"}\r
         US{"EE. UU."}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 9c6bfa5..453e35a 100644 (file)
@@ -89,7 +89,7 @@ et{
         CW{"Curaçao"}\r
         CX{"Jõulusaar"}\r
         CY{"Küpros"}\r
-        CZ{"Tšehhia"}\r
+        CZ{"Tšehhi"}\r
         DE{"Saksamaa"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ et{
         CD{"Kongo-Kinshasa"}\r
         CG{"Kongo-Brazzaville"}\r
         CI{"Elevandiluurannik"}\r
-        CZ{"Tšehhi"}\r
+        CZ{"Tšehhia"}\r
         FK{"Malviini saared"}\r
         MK{"Makedoonia Vabariik"}\r
         TL{"Timor-Leste"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 8e9040f..d156698 100644 (file)
@@ -89,7 +89,7 @@ eu{
         CW{"Curaçao"}\r
         CX{"Christmas uhartea"}\r
         CY{"Zipre"}\r
-        CZ{"Txekia"}\r
+        CZ{"Txekiar Errepublika"}\r
         DE{"Alemania"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibuti"}\r
@@ -302,10 +302,10 @@ eu{
     Countries%variant{\r
         CD{"Kongo (KED)"}\r
         CG{"Kongo (errepublika)"}\r
-        CZ{"Txekiar Errepublika"}\r
+        CZ{"Txekia"}\r
         FK{"Falkland uharteak (Malvina uharteak)"}\r
         MK{"Mazedonia (Mazedoniako Yugoslaviar Errepublika ohia)"}\r
         TL{"Timor ekialdea"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index b56eb02..17aec91 100644 (file)
@@ -227,5 +227,5 @@ ewo{
         ZM{"Zambí"}\r
         ZW{"Zimbabwé"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8623b37..1c5a4ff 100644 (file)
@@ -305,9 +305,10 @@ fa{
     Countries%variant{\r
         CD{"کنگو (جمهوری دموکراتیک)"}\r
         CG{"کنگو (جمهوری)"}\r
+        CZ{"CZ"}\r
         FK{"جزایر فالکلند (ایسلاس مالویناس)"}\r
         MK{"مقدونیه (جمهوری سابقاً یوگسلاو)"}\r
         TL{"تیمور شرقی"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
 }\r
index b621eae..142a46a 100644 (file)
@@ -95,5 +95,5 @@ fa_AF{
         XK{"کوسوا"}\r
         ZW{"زیمبابوی"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.44"}\r
 }\r
index a7a6e74..5e712ac 100644 (file)
@@ -227,5 +227,5 @@ ff{
         ZM{"Sammbi"}\r
         ZW{"Simbaabuwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 51e642f..24824c2 100644 (file)
@@ -89,7 +89,7 @@ fi{
         CW{"Curaçao"}\r
         CX{"Joulusaari"}\r
         CY{"Kypros"}\r
-        CZ{"Tšekinmaa"}\r
+        CZ{"Tšekki"}\r
         DE{"Saksa"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ fi{
         CD{"Kongo-Kinshasa"}\r
         CG{"Kongo-Brazzaville"}\r
         CI{"Côte d’Ivoire"}\r
-        CZ{"Tšekki"}\r
+        CZ{"Tšekinmaa"}\r
         FK{"Falklandinsaaret (Malvinassaaret)"}\r
         MK{"EJT Makedonia"}\r
         TL{"Timor-Leste"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.88"}\r
 }\r
index 6cdf951..d442b36 100644 (file)
@@ -89,7 +89,7 @@ fil{
         CW{"Curaçao"}\r
         CX{"Christmas Island"}\r
         CY{"Cyprus"}\r
-        CZ{"Czechia"}\r
+        CZ{"Czech Republic"}\r
         DE{"Germany"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ fil{
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republika)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Czech Republic"}\r
+        CZ{"Czechia"}\r
         FK{"Falkland Islands (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"East Timor"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 3263714..0c99fc4 100644 (file)
@@ -302,5 +302,5 @@ fo{
     Countries%variant{\r
         MK{"Makedónia (FJM)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 448e823..3089740 100644 (file)
@@ -89,7 +89,7 @@ fr{
         CW{"Curaçao"}\r
         CX{"Île Christmas"}\r
         CY{"Chypre"}\r
-        CZ{"Tchéquie"}\r
+        CZ{"République tchèque"}\r
         DE{"Allemagne"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,10 +304,10 @@ fr{
     Countries%variant{\r
         CD{"Congo (RDC)"}\r
         CG{"République du Congo"}\r
-        CZ{"République tchèque"}\r
+        CZ{"Tchéquie"}\r
         FK{"Îles Falkland"}\r
         MK{"Macédoine (ARYM)"}\r
         TL{"Timor-Oriental"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index b8a4a42..e3f61ce 100644 (file)
@@ -5,5 +5,5 @@ fr_BE{
         BN{"Brunei"}\r
         GS{"Îles Géorgie du Sud et Sandwich du Sud"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 932bea5..073680c 100644 (file)
@@ -38,5 +38,5 @@ fr_CA{
         FK{"îles Falkland (Malouines)"}\r
         TL{"Timor oriental"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 9b5b763..9719858 100644 (file)
@@ -296,5 +296,5 @@ fur{
         FK{"Isulis Falkland (Isulis Malvinas)"}\r
         MK{"Macedonie (FYROM)"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
 }\r
index c1ce596..e0b871e 100644 (file)
@@ -305,5 +305,5 @@ fy{
         FK{"Falklâneilannen (Islas Malvinas)"}\r
         MK{"Macedonië (FYROM)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.44"}\r
 }\r
index a2c9478..49210b7 100644 (file)
@@ -307,5 +307,5 @@ ga{
         FK{"Oileáin Fháclainne (Islas Malvinas)"}\r
         MK{"An Mhacadóin (PIIM)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 494f06a..a56add5 100644 (file)
@@ -89,7 +89,7 @@ gd{
         CW{"Curaçao"}\r
         CX{"Eilean na Nollaig"}\r
         CY{"Cìopras"}\r
-        CZ{"An t-Seic"}\r
+        CZ{"Poblachd na Seice"}\r
         DE{"A’ Ghearmailt"}\r
         DG{"Diego Garcia"}\r
         DJ{"Diobùtaidh"}\r
@@ -303,10 +303,10 @@ gd{
         CD{"A’ Chongo (PDC)"}\r
         CG{"A’ Chongo"}\r
         CI{"An Costa Ìbhri"}\r
-        CZ{"Poblachd na Seice"}\r
+        CZ{"An t-Seic"}\r
         FK{"Na h-Eileanan Fàclannach (Islas Malvinas)"}\r
         MK{"A’ Mhasadon (FYROM)"}\r
         TL{"Tìomor an Ear"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 473ce43..ecec12e 100644 (file)
@@ -89,7 +89,7 @@ gl{
         CW{"Curaçao"}\r
         CX{"Illa de Nadal"}\r
         CY{"Chipre"}\r
-        CZ{"Chequia"}\r
+        CZ{"República Checa"}\r
         DE{"Alemaña"}\r
         DG{"Diego García"}\r
         DJ{"Djibuti"}\r
@@ -304,9 +304,9 @@ gl{
     Countries%variant{\r
         CD{"Congo (RDC)"}\r
         CG{"Congo (RC)"}\r
-        CZ{"República Checa"}\r
+        CZ{"Chequia"}\r
         FK{"Illas Malvinas (Falkland)"}\r
         MK{"Macedonia (ARIM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index b48b3ac..6fb0ce2 100644 (file)
@@ -288,5 +288,5 @@ gsw{
     Countries%variant{\r
         MK{"Mazedoonie (EJRM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 3f55fea..755be95 100644 (file)
@@ -89,7 +89,7 @@ gu{
         CW{"ક્યુરાસાઓ"}\r
         CX{"ક્રિસમસ આઇલેન્ડ"}\r
         CY{"સાયપ્રસ"}\r
-        CZ{"ચેકીયા"}\r
+        CZ{"ચેક રીપબ્લિક"}\r
         DE{"જર્મની"}\r
         DG{"ડિએગો ગારસિઆ"}\r
         DJ{"જીબૌટી"}\r
@@ -305,10 +305,10 @@ gu{
         CD{"કોંગો (ડીઆરસી)"}\r
         CG{"કોંગો (પ્રજાસત્તાક)"}\r
         CI{"આઇવરી કોસ્ટ"}\r
-        CZ{"ચેક રીપબ્લિક"}\r
+        CZ{"ચેકીયા"}\r
         FK{"ફૉકલેન્ડ ટાપુઓ (ઇસ્લાસ માલવિનસ)"}\r
         MK{"મેસેડોનિયા (FYROM)"}\r
         TL{"પૂર્વ તિમોર"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2b2155c..1d78bc0 100644 (file)
@@ -227,5 +227,5 @@ guz{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bdc266c..9cbf1f6 100644 (file)
@@ -5,5 +5,5 @@ gv{
         GB{"Rywvaneth Unys"}\r
         IM{"Ellan Vannin"}\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 418c438..7c69a2c 100644 (file)
@@ -227,5 +227,5 @@ ha{
         ZM{"Zambiya"}\r
         ZW{"Zimbabuwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bcd00e6..0f75608 100644 (file)
@@ -23,5 +23,5 @@ haw{
         RU{"Lūkia"}\r
         US{"ʻAmelika Hui Pū ʻIa"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 3d51601..2c68a73 100644 (file)
@@ -89,7 +89,7 @@ he{
         CW{"קוראסאו"}\r
         CX{"האי כריסטמס"}\r
         CY{"קפריסין"}\r
-        CZ{"צ׳×\9b×\99×\94"}\r
+        CZ{"×\94רפ×\95×\91×\9c×\99ק×\94 ×\94צ׳×\9b×\99ת"}\r
         DE{"גרמניה"}\r
         DG{"דייגו גרסיה"}\r
         DJ{"ג׳יבוטי"}\r
@@ -303,10 +303,10 @@ he{
     Countries%variant{\r
         CD{"קונגו (הרפובליקה הדמוקרטית של קונגו)"}\r
         CG{"קונגו (רפובליקה)"}\r
-        CZ{"×\94רפ×\95×\91×\9c×\99ק×\94 ×\94צ׳×\9b×\99ת"}\r
+        CZ{"צ׳×\9b×\99×\94"}\r
         FK{"איי פוקלנד (איי מלווינס)"}\r
         MK{"מקדוניה (הרפובליקה היוגוסלבית לשעבר מקדוניה)"}\r
         TL{"מזרח טימור"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.27"}\r
 }\r
index 8c3c620..35b405d 100644 (file)
@@ -89,7 +89,7 @@ hi{
         CW{"क्यूरासाओ"}\r
         CX{"क्रिसमस द्वीप"}\r
         CY{"साइप्रस"}\r
-        CZ{"चेकिया"}\r
+        CZ{"चेक गणराज्य"}\r
         DE{"जर्मनी"}\r
         DG{"डिएगो गार्सिया"}\r
         DJ{"जिबूती"}\r
@@ -305,10 +305,10 @@ hi{
         CD{"कांगो (डीआरसी)"}\r
         CG{"कांगो (गणराज्य)"}\r
         CI{"आइवरी कोस्ट"}\r
-        CZ{"चेक गणराज्य"}\r
+        CZ{"चेकिया"}\r
         FK{"फ़ॉकलैंड द्वीपसमूह (इज़्लास माल्विनास)"}\r
         MK{"मैसिडोनिया (FYROM)"}\r
         TL{"पूर्वी तिमोर"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index c775f73..fcdf380 100644 (file)
@@ -89,7 +89,7 @@ hr{
         CW{"Curaçao"}\r
         CX{"Božićni otok"}\r
         CY{"Cipar"}\r
-        CZ{"Češka"}\r
+        CZ{"Češka Republika"}\r
         DE{"Njemačka"}\r
         DG{"Diego Garcia"}\r
         DJ{"Džibuti"}\r
@@ -305,10 +305,10 @@ hr{
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (RK)"}\r
         CI{"Bjelokosna Obala"}\r
-        CZ{"Češka Republika"}\r
+        CZ{"Češka"}\r
         FK{"Falklandski otoci (Malvini)"}\r
         MK{"Makedonija (BJRM)"}\r
         TL{"Istočni Timor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 0843b57..c627b2e 100644 (file)
@@ -307,5 +307,5 @@ hsb{
         MK{"Makedonska (FYROM)"}\r
         TL{"Wuchodny Timor"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index fe01bfe..cc3c23b 100644 (file)
@@ -307,5 +307,5 @@ hu{
         FK{"Falkland-szigetek (Malvin-szigetek)"}\r
         MK{"Macedónia (MVJK)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ff562e3..da7b507 100644 (file)
@@ -309,5 +309,5 @@ hy{
         MK{"Մակեդոնիա (ՄՆՀՀ)"}\r
         TL{"Արևելյան Թիմոր"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 50e78f2..2477fa4 100644 (file)
@@ -89,7 +89,7 @@ id{
         CW{"Curaçao"}\r
         CX{"Pulau Christmas"}\r
         CY{"Siprus"}\r
-        CZ{"Cheska"}\r
+        CZ{"Republik Cheska"}\r
         DE{"Jerman"}\r
         DG{"Diego Garcia"}\r
         DJ{"Jibuti"}\r
@@ -305,10 +305,10 @@ id{
         CD{"Kongo (RDK)"}\r
         CG{"Kongo (Republik)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Republik Cheska"}\r
+        CZ{"Cheska"}\r
         FK{"Kepulauan Malvinas (Falkland)"}\r
         MK{"Makedonia (BRY)"}\r
         TL{"Timor Timur"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 4bbba32..3d50137 100644 (file)
@@ -11,5 +11,5 @@ ig{
         MV{"Maldivesa"}\r
         NG{"Nigeria"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 76b95fc..0811ac4 100644 (file)
@@ -14,5 +14,5 @@ ii{
         US{"ꂰꇩ"}\r
         ZZ{"ꃅꄷꅉꀋꐚꌠ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7dcb596..38b18b4 100644 (file)
@@ -308,5 +308,5 @@ is{
         MK{"Makedónía (Fyrrverandi lýðveldi Júgóslavíu)"}\r
         TL{"Austur-Tímor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.65"}\r
 }\r
index ab3a845..0157280 100644 (file)
@@ -89,7 +89,7 @@ it{
         CW{"Curaçao"}\r
         CX{"Isola Christmas"}\r
         CY{"Cipro"}\r
-        CZ{"Cèchia"}\r
+        CZ{"Repubblica Ceca"}\r
         DE{"Germania"}\r
         DG{"Diego Garcia"}\r
         DJ{"Gibuti"}\r
@@ -260,7 +260,7 @@ it{
         TH{"Thailandia"}\r
         TJ{"Tagikistan"}\r
         TK{"Tokelau"}\r
-        TL{"Timor Est"}\r
+        TL{"Timor Leste"}\r
         TM{"Turkmenistan"}\r
         TN{"Tunisia"}\r
         TO{"Tonga"}\r
@@ -305,10 +305,10 @@ it{
         CD{"Congo (RDC)"}\r
         CG{"Congo (Repubblica)"}\r
         CI{"Côte d’Ivoire"}\r
-        CZ{"Repubblica Ceca"}\r
+        CZ{"Cèchia"}\r
         FK{"Isole Falkland (Isole Malvine)"}\r
         MK{"Ex Repubblica Jugoslava di Macedonia"}\r
-        TL{"Timor Leste"}\r
+        TL{"Timor Est"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ee9aa5c..dd775e8 100644 (file)
@@ -89,7 +89,7 @@ ja{
         CW{"キュラソー"}\r
         CX{"クリスマス島"}\r
         CY{"キプロス"}\r
-        CZ{"チェコ"}\r
+        CZ{"チェコ共和国"}\r
         DE{"ドイツ"}\r
         DG{"ディエゴガルシア島"}\r
         DJ{"ジブチ"}\r
@@ -305,10 +305,10 @@ ja{
         CD{"コンゴ民主共和国"}\r
         CG{"コンゴ共和国"}\r
         CI{"象牙海岸"}\r
-        CZ{"チェコ共和国"}\r
+        CZ{"チェコ"}\r
         FK{"フォークランド諸島 (マルビーナス諸島)"}\r
         MK{"マケドニア(旧ユーゴスラビア共和国)"}\r
         TL{"東チモール"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 4548daa..6ba5569 100644 (file)
@@ -85,5 +85,5 @@ jgo{
         ZW{"Zimbámbwɛ"}\r
         ZZ{"ŋgɔŋ yi pɛ́ ká kɛ́ jʉɔ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 29f4ac5..9e38105 100644 (file)
@@ -227,5 +227,5 @@ jmc{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ddd2fe6..c6fea5a 100644 (file)
@@ -89,7 +89,7 @@ ka{
         CW{"კიურასაო"}\r
         CX{"შობის კუნძული"}\r
         CY{"კვიპროსი"}\r
-        CZ{"ჩეხეთი"}\r
+        CZ{"ჩეხეთის რესპუბლიკა"}\r
         DE{"გერმანია"}\r
         DG{"დიეგო-გარსია"}\r
         DJ{"ჯიბუტი"}\r
@@ -305,9 +305,9 @@ ka{
         CD{"კონგო (კონგოს დემოკრატიული რესპუბლიკა)"}\r
         CG{"კონგო (რესპუბლიკა)"}\r
         CI{"სპილოს ძვლის სანაპირო"}\r
-        CZ{"ჩეხეთის რესპუბლიკა"}\r
+        CZ{"ჩეხეთი"}\r
         FK{"ფოლკლენდის კუნძულები (მალვინის კუნძულები)"}\r
         MK{"მაკედონია (ყოფილი იუგოსლავიის რესპუბლიკა მაკედონია)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index c15dca7..e2c1404 100644 (file)
@@ -227,5 +227,5 @@ kab{
         ZM{"Zambya"}\r
         ZW{"Zimbabwi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8f6f695..87b0391 100644 (file)
@@ -227,5 +227,5 @@ kam{
         ZM{"Nzambia"}\r
         ZW{"Nzimbambwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7bf80a0..40d56d8 100644 (file)
@@ -227,5 +227,5 @@ kde{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0d9f6da..c8d5483 100644 (file)
@@ -89,7 +89,7 @@ kea{
         CW{"Kurasau"}\r
         CX{"Ilha di Natal"}\r
         CY{"Xipri"}\r
-        CZ{"Txékia"}\r
+        CZ{"Repúblika Txeka"}\r
         DE{"Alimanha"}\r
         DG{"Diegu Garsia"}\r
         DJ{"Djibuti"}\r
@@ -302,9 +302,9 @@ kea{
         CD{"Repúblika Dimokrátika di Kongu"}\r
         CG{"Repúblika di Kongu"}\r
         CI{"Kosta di Marfin (Côte d’Ivoire)"}\r
-        CZ{"Repúblika Txeka"}\r
+        CZ{"Txékia"}\r
         FK{"Ilhas Falkland (Ilhas Malvinas)"}\r
         MK{"Masidónia (FYROM)"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.46"}\r
 }\r
index 21f940e..40397f3 100644 (file)
@@ -227,5 +227,5 @@ khq{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8f3c350..99bb8f2 100644 (file)
@@ -227,5 +227,5 @@ ki{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 70d0713..2e1f7a2 100644 (file)
@@ -89,7 +89,7 @@ kk{
         CW{"Кюрасао"}\r
         CX{"Рождество аралы"}\r
         CY{"Кипр"}\r
-        CZ{"Чехия"}\r
+        CZ{"Чех Республикасы"}\r
         DE{"Германия"}\r
         DG{"Диего-Гарсия"}\r
         DJ{"Джибути"}\r
@@ -305,10 +305,10 @@ kk{
         CD{"Конго Демократиялық Республикасы"}\r
         CG{"Конго Республикасы"}\r
         CI{"Піл Сүйегі Жағалауы"}\r
-        CZ{"Чех Республикасы"}\r
+        CZ{"Чехия"}\r
         FK{"Фолкленд аралдары (Мальвин аралдары)"}\r
         MK{"Македония Республикасы"}\r
         TL{"Шығыс Тимор"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ad3242f..fbc4635 100644 (file)
@@ -4,5 +4,5 @@ kkj{
     Countries{\r
         CM{"Kamɛrun"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b75bd6f..acee845 100644 (file)
@@ -4,5 +4,5 @@ kl{
     Countries{\r
         GL{"Kalaallit Nunaat"}\r
     }\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6086e4f..3177d51 100644 (file)
@@ -227,5 +227,5 @@ kln{
         ZM{"Emetab Zambia"}\r
         ZW{"Emetab Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 59a31f3..be968fc 100644 (file)
@@ -89,7 +89,7 @@ km{
         CW{"កូរ៉ាកៅ"}\r
         CX{"កោះ​គ្រីស្មាស"}\r
         CY{"ស៊ីប"}\r
-        CZ{"á\9e\86á\9f\81á\9e\82á\9e"}\r
+        CZ{"á\9e\9fá\9e¶á\9e\92á\9e¶á\9e\9aá\9e\8eá\9e\9aá\9e\8aá\9f\92á\9e\8bá\9e\86á\9f\81á\9e\80"}\r
         DE{"អាល្លឺម៉ង់"}\r
         DG{"ឌៀហ្គោហ្គាស៊ី"}\r
         DJ{"ជីប៊ូទី"}\r
@@ -305,10 +305,10 @@ km{
         CD{"កុងហ្គោ (សាធារណរដ្ឋ​ប្រជាធិបតេយ្យ)"}\r
         CG{"កុងហ្គោ (សធារណៈរដ្ឋ)"}\r
         CI{"កូតឌីវ័រ"}\r
-        CZ{"á\9e\9fá\9e¶á\9e\92á\9e¶á\9e\9aá\9e\8eá\9e\9aá\9e\8aá\9f\92á\9e\8bá\9e\86á\9f\81á\9e\80"}\r
+        CZ{"á\9e\86á\9f\81á\9e\82á\9e"}\r
         FK{"កោះ​ហ្វក់ឡែន (Islas Malvinas)"}\r
         MK{"ម៉ាសេដូនា (FYROM)"}\r
         TL{"ទីម័រ​ខាង​កើត"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 8d363d3..2889b65 100644 (file)
@@ -89,7 +89,7 @@ kn{
         CW{"ಕುರಾಕಾವ್"}\r
         CX{"ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ"}\r
         CY{"ಸೈಪ್ರಸ್"}\r
-        CZ{"à²\9dà³\86à²\95ಿಯಾ"}\r
+        CZ{"à²\9dà³\86à²\95à³\8d à²°à²¿à²ªà²¬à³\8dಲಿà²\95à³\8d"}\r
         DE{"ಜರ್ಮನಿ"}\r
         DG{"ಡೈಗೋ ಗಾರ್ಸಿಯ"}\r
         DJ{"ಜಿಬೋಟಿ"}\r
@@ -305,10 +305,10 @@ kn{
         CD{"ಕಾಂಗೋ (DRC)"}\r
         CG{"ಕಾಂಗೋ (ಗಣರಾಜ್ಯ)"}\r
         CI{"ಐವರಿ ಕೋಸ್ಟ್"}\r
-        CZ{"à²\9dà³\86à²\95à³\8d à²°à²¿à²ªà²¬à³\8dಲಿà²\95à³\8d"}\r
+        CZ{"à²\9dà³\86à²\95ಿಯಾ"}\r
         FK{"ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು (ಇಸ್ಲಾಸ್ ಮಾಲ್ವಿನಸ್)"}\r
         MK{"ಮ್ಯಾಸಿಡೋನಿಯ (FYROM)"}\r
         TL{"ಪೂರ್ವ ಟಿಮೋರ್"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 754db1c..db4d589 100644 (file)
@@ -308,5 +308,5 @@ ko{
         FK{"포클랜드 제도(말비나스 군도)"}\r
         MK{"마케도니아(FYROM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.22"}\r
 }\r
index 2a4e3e2..235fed5 100644 (file)
@@ -4,5 +4,5 @@ ko_KP{
     Countries{\r
         KP{"조선민주주의인민공화국"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9dc1337..eb74e2d 100644 (file)
@@ -4,5 +4,5 @@ kok{
     Countries{\r
         IN{"भारत"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2a9b9ff..3712f0c 100644 (file)
@@ -278,5 +278,5 @@ ks{
         ZW{"زِمبابے"}\r
         ZZ{"نامعلوٗم تہٕ نالَگہار عَلاقہٕ"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
 }\r
index d4bbdf9..436ada1 100644 (file)
@@ -226,5 +226,5 @@ ksb{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9c923cb..367bbd6 100644 (file)
@@ -227,5 +227,5 @@ ksf{
         ZM{"zambí"}\r
         ZW{"zimbabwɛ́"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b95d923..1b1c501 100644 (file)
@@ -305,5 +305,5 @@ ksh{
         FK{"de malleviinesche Enselle"}\r
         MK{"de vörmaals ens jugoßlaawesch jewääse Republik Mazedoonije"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 104e225..87fa5b3 100644 (file)
@@ -4,5 +4,5 @@ kw{
     Countries{\r
         GB{"Rywvaneth Unys"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 303c3d9..114bea4 100644 (file)
@@ -89,7 +89,7 @@ ky{
         CW{"Кюрасао"}\r
         CX{"Крисмас аралы"}\r
         CY{"Кипр"}\r
-        CZ{"Чехия"}\r
+        CZ{"Чех Республикасы"}\r
         DE{"Германия"}\r
         DG{"Диего Гарсия"}\r
         DJ{"Джибути"}\r
@@ -304,10 +304,10 @@ ky{
         CD{"Конго (КДР)"}\r
         CG{"Конго (Республикасы)"}\r
         CI{"Кот-д’Ивуар (вариант)"}\r
-        CZ{"Чех Республикасы"}\r
+        CZ{"Чехия"}\r
         FK{"Фолклэнд (Малвина) аралдары"}\r
         MK{"Македония (Мур. Югосл.)"}\r
         TL{"Чыгыш Тимор"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ca0120e..b49b249 100644 (file)
@@ -227,5 +227,5 @@ lag{
         ZM{"Sámbia"}\r
         ZW{"Simbáabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c86abe..c14e795 100644 (file)
@@ -305,5 +305,5 @@ lb{
         CI{"Elfebeeküst"}\r
         MK{"Mazedonien (EJR)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 8788c88..7d15b65 100644 (file)
@@ -227,5 +227,5 @@ lg{
         ZM{"Zambya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ffcfe48..f72d558 100644 (file)
@@ -15,5 +15,5 @@ lkt{
         MX{"Spayóla Makȟóčhe"}\r
         US{"Mílahaŋska Tȟamákȟočhe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a5c4c5f..9c7243a 100644 (file)
@@ -50,7 +50,7 @@ ln{
         CU{"Kiba"}\r
         CV{"Bisanga bya Kapevɛrɛ"}\r
         CY{"Sípɛlɛ"}\r
-        CZ{"Shekia"}\r
+        CZ{"Repibiki Tsekɛ"}\r
         DE{"Alemani"}\r
         DJ{"Dzibuti"}\r
         DK{"Danɛmarike"}\r
@@ -234,8 +234,5 @@ ln{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Countries%variant{\r
-        CZ{"Repibiki Tsekɛ"}\r
-    }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
 }\r
index ba59577..30566d6 100644 (file)
@@ -88,7 +88,7 @@ lo{
         CW{"ຄູຣາຊາວ"}\r
         CX{"ເກາະຄຣິສມາດ"}\r
         CY{"ໄຊປຣັສ"}\r
-        CZ{"à»\80àº\8aັàº\81à»\80àº\8aàº\8d"}\r
+        CZ{"ສາàº\97າລະàº\99ະລັàº\94à»\80àº\8aັàº\81"}\r
         DE{"ເຢຍລະມັນ"}\r
         DG{"ດິເອໂກ ກາເຊຍ"}\r
         DJ{"ຈິບູຕິ"}\r
@@ -304,10 +304,10 @@ lo{
         CD{"ຄອງໂກ (ສາທາລະນະລັດປະຊາທິປະໄຕ)"}\r
         CG{"ສາທາລະນະລັດຄອງໂກ"}\r
         CI{"ໄອໂວຣີ ໂຄທ"}\r
-        CZ{"ສາàº\97າລະàº\99ະລັàº\94à»\80àº\8aັàº\81"}\r
+        CZ{"à»\80àº\8aັàº\81à»\80àº\8aàº\8d"}\r
         FK{"ໝູ່ເກາະຟອກແລນ (ອິສລາສ ມາວິນນາສ)"}\r
         MK{"ແມຊິໂດເນຍ (FYROM)"}\r
         TL{"ທິມໍ ຕາເວັນອອກ"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index efdf119..c5efdaf 100644 (file)
@@ -26,5 +26,5 @@ lrc{
         US{"ڤولاتیا یأکاگئرتە"}\r
         ZZ{"راساگە نادیار"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5831ae4..f3465cb 100644 (file)
@@ -308,5 +308,5 @@ lt{
         FK{"Folklando (Malvinų) Salos"}\r
         MK{"Makedonijos Respublika"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2ab71e0..494f69c 100644 (file)
@@ -227,5 +227,5 @@ lu{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 19593a0..fd5e769 100644 (file)
@@ -227,5 +227,5 @@ luo{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 90a1c00..6c0db0d 100644 (file)
@@ -227,5 +227,5 @@ luy{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 40715cf..58f1536 100644 (file)
@@ -89,7 +89,7 @@ lv{
         CW{"Kirasao"}\r
         CX{"Ziemsvētku sala"}\r
         CY{"Kipra"}\r
-        CZ{"Čehija"}\r
+        CZ{"Čehijas Republika"}\r
         DE{"Vācija"}\r
         DG{"Djego Garsijas atols"}\r
         DJ{"Džibutija"}\r
@@ -146,7 +146,7 @@ lv{
         IO{"Indijas okeāna Britu teritorija"}\r
         IQ{"Irāka"}\r
         IR{"Irāna"}\r
-        IS{"Islande"}\r
+        IS{"Īslande"}\r
         IT{"Itālija"}\r
         JE{"Džērsija"}\r
         JM{"Jamaika"}\r
@@ -305,9 +305,9 @@ lv{
         CD{"Kongo Demokrātiskā Republika"}\r
         CG{"Kongo (Republika)"}\r
         CI{"Ziloņkaula krasts"}\r
-        CZ{"Čehijas Republika"}\r
+        CZ{"Čehija"}\r
         FK{"Folklenda (Malvinu) salas"}\r
         MK{"bijusī Dienvidslāvijas Maķedonijas Republika"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 13da70a..dda125a 100644 (file)
@@ -227,5 +227,5 @@ mas{
         ZM{"Sambia"}\r
         ZW{"Simbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d633b53..b473154 100644 (file)
@@ -227,5 +227,5 @@ mer{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e41c0a5..5fab51d 100644 (file)
@@ -227,5 +227,5 @@ mfe{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c8119ff..9ddf37d 100644 (file)
@@ -227,5 +227,5 @@ mg{
         ZM{"Zambia"}\r
         ZW{"Zimbaboe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a53b753..06f3139 100644 (file)
@@ -140,5 +140,5 @@ mgh{
         ZM{"Uzambia"}\r
         ZW{"Uzimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0405209..9c4aef4 100644 (file)
@@ -5,5 +5,5 @@ mgo{
         CM{"Kamalun"}\r
         ZZ{"aba aben tisɔ̀"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a67e6c5..a72800e 100644 (file)
@@ -89,7 +89,7 @@ mk{
         CW{"Курасао"}\r
         CX{"Божиќен Остров"}\r
         CY{"Кипар"}\r
-        CZ{"Чешка"}\r
+        CZ{"РепÑ\83блика Ð§ÐµÑ\88ка"}\r
         DE{"Германија"}\r
         DG{"Диего Гарсија"}\r
         DJ{"Џибути"}\r
@@ -305,10 +305,10 @@ mk{
         CD{"Конго (Демократска Република Конго)"}\r
         CG{"Конго (Република)"}\r
         CI{"Брег на Слоновата Коска"}\r
-        CZ{"РепÑ\83блика Ð§ÐµÑ\88ка"}\r
+        CZ{"Чешка"}\r
         FK{"Фолкландски Острови (Малвински Острови)"}\r
         MK{"Република Македонија"}\r
         TL{"Источен Тимор"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 0bbbb98..a4b5000 100644 (file)
@@ -89,7 +89,7 @@ ml{
         CW{"കുറാകാവോ"}\r
         CX{"ക്രിസ്മസ് ദ്വീപ്"}\r
         CY{"സൈപ്രസ്"}\r
-        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95à´¿à´¯"}\r
+        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95àµ\8d à´±à´¿à´ªàµ\8dപബàµ\8dലിà´\95àµ\8d"}\r
         DE{"ജർമനി"}\r
         DG{"ഡീഗോ ഗ്രാഷ്യ"}\r
         DJ{"ദിജിബൗട്ടി"}\r
@@ -305,10 +305,10 @@ ml{
         CD{"കോംഗോ (DRC)"}\r
         CG{"കോംഗോ (റിപ്പബ്ലിക്ക്)"}\r
         CI{"ഐവറി കോസ്റ്റ്"}\r
-        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95àµ\8d à´±à´¿à´ªàµ\8dപബàµ\8dലിà´\95àµ\8d"}\r
+        CZ{"à´\9aàµ\86à´\95àµ\8dà´\95à´¿à´¯"}\r
         FK{"ഫോക്ക്‌ലാൻഡ് ദ്വീപുകൾ (ഐലാസ് മാൽവിനാസ്)"}\r
         MK{"മാസിഡോണിയ (FYROM)"}\r
         TL{"കിഴക്കൻ തിമോർ"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index a708952..0eb1d83 100644 (file)
@@ -89,7 +89,7 @@ mn{
         CW{"Куракао"}\r
         CX{"Зул сарын арал"}\r
         CY{"Кипр"}\r
-        CZ{"ЧеÑ\85"}\r
+        CZ{"Ð\91үгд Ð\9dайÑ\80амдаÑ\85 Ð§ÐµÑ\85 Ð£Ð»Ñ\81"}\r
         DE{"Герман"}\r
         DG{"Диего Гарсиа"}\r
         DJ{"Джибути"}\r
@@ -305,10 +305,10 @@ mn{
         CD{"Конго (БНУ)"}\r
         CG{"Конго (Бүгд Найрамдах улс)"}\r
         CI{"Зааны ясан эрэг"}\r
-        CZ{"Ð\91үгд Ð\9dайÑ\80амдаÑ\85 Ð§ÐµÑ\85 Ð£Ð»Ñ\81"}\r
+        CZ{"ЧеÑ\85"}\r
         FK{"Фолькландын Арлууд (Ислас Мальвинас)"}\r
         MK{"Македон (Хуучин Югославын бүрэлдэхүүний Македон)"}\r
         TL{"Зүүн Тимор"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2860f05..1cbb82a 100644 (file)
@@ -89,7 +89,7 @@ mr{
         CW{"क्युरासाओ"}\r
         CX{"ख्रिसमस बेट"}\r
         CY{"सायप्रस"}\r
-        CZ{"झेकिया"}\r
+        CZ{"झेक प्रजासत्ताक"}\r
         DE{"जर्मनी"}\r
         DG{"दिएगो गार्सिया"}\r
         DJ{"जिबौटी"}\r
@@ -304,10 +304,10 @@ mr{
     Countries%variant{\r
         CD{"काँगो (डीआरसी)"}\r
         CG{"काँगो (प्रजासत्ताक)"}\r
-        CZ{"झेक प्रजासत्ताक"}\r
+        CZ{"झेकिया"}\r
         FK{"फॉकलंड बेटे (इस्लास मालविनास)"}\r
         MK{"मॅसेडोनिया (FYROM)"}\r
         TL{"पूर्व तिमोर"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 08cfaaf..bc53159 100644 (file)
@@ -89,7 +89,7 @@ ms{
         CW{"Curacao"}\r
         CX{"Pulau Krismas"}\r
         CY{"Cyprus"}\r
-        CZ{"Czechia"}\r
+        CZ{"Republik Czech"}\r
         DE{"Jerman"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ ms{
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republik)"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Republik Czech"}\r
+        CZ{"Czechia"}\r
         FK{"Kepulauan Falkland (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"Timor Timur"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 8d8c388..09ed472 100644 (file)
@@ -308,5 +308,5 @@ mt{
         FK{"Il-Gżejjer Falkland (il-Gżejjer Malvinas)"}\r
         TL{"Timor tal-Lvant"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 86de11b..a934d6d 100644 (file)
@@ -227,5 +227,5 @@ mua{
         ZM{"Zambiya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cbef743..8f47eca 100644 (file)
@@ -89,7 +89,7 @@ my{
         CW{"ကျူရေးကိုးစ်"}\r
         CX{"ခရစ်စမတ် ကျွန်း"}\r
         CY{"ဆိုက်ပရပ်စ်"}\r
-        CZ{"ချက်ကီယား"}\r
+        CZ{"ချက် ပြည်ထောင်စု"}\r
         DE{"ဂျာမဏီ"}\r
         DG{"ဒီအဲဂိုဂါစီရာ"}\r
         DJ{"ဂျီဘူတီ"}\r
@@ -305,9 +305,9 @@ my{
         CD{"ကွန်ဂို ဒီမိုကရက်တစ် သမ္မတနိုင်ငံ"}\r
         CG{"ကွန်ဂို သမ္မတနိုင်ငံ"}\r
         CI{"အိုင်ဗရီကို့စ်"}\r
-        CZ{"ချက် ပြည်ထောင်စု"}\r
+        CZ{"ချက်ကီယား"}\r
         FK{"ဖော့ကလန် ကျွန်းစု (အီလားစ် မောလ်ဗီနာစ်)"}\r
         MK{"မက်စီဒိုးနီးယား (ယခင် ယူဂိုစလားဗီးယား မက်စီဒိုးနီးယားပြည်ထောင်စု)"}\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.30.50"}\r
 }\r
index feb2ae1..84ca385 100644 (file)
@@ -307,5 +307,5 @@ mzn{
         MK{"مقدونیه جمهوری"}\r
         TL{"شرقی تیمور"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index b10bacf..4e8b9f1 100644 (file)
@@ -227,5 +227,5 @@ naq{
         ZM{"Zambiab"}\r
         ZW{"Zimbabweb"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4143d29..107fb07 100644 (file)
@@ -89,7 +89,7 @@ nb{
         CW{"Curaçao"}\r
         CX{"Christmasøya"}\r
         CY{"Kypros"}\r
-        CZ{"Tsjekkia"}\r
+        CZ{"Den tsjekkiske republikk"}\r
         DE{"Tyskland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,9 +304,9 @@ nb{
     Countries%variant{\r
         CD{"Den demokratiske republikken Kongo"}\r
         CG{"Republikken Kongo"}\r
-        CZ{"Den tsjekkiske republikk"}\r
+        CZ{"Tsjekkia"}\r
         FK{"Falklandsøyene (Islas Malvinas)"}\r
         MK{"Den tidligere jugoslaviske republikk Makedonia"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
 }\r
index e13b891..c09f54b 100644 (file)
@@ -227,5 +227,5 @@ nd{
         ZM{"Zambiya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 7874b05..e395563 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index 8a080b4..181521d 100644 (file)
@@ -89,7 +89,7 @@ ne{
         CW{"कुराकाओ"}\r
         CX{"क्रिष्टमस टापु"}\r
         CY{"साइप्रस"}\r
-        CZ{"à¤\9aà¥\87à¤\9aिया"}\r
+        CZ{"à¤\9aà¥\87à¤\95 à¤\97णतनà¥\8dतà¥\8dर"}\r
         DE{"जर्मनी"}\r
         DG{"डियगो गार्सिया"}\r
         DJ{"डिजिबुटी"}\r
@@ -304,10 +304,10 @@ ne{
     Countries%variant{\r
         CD{"कङ्गो (डीआर्‌सी)"}\r
         CG{"कङ्गो (गणतन्त्र)"}\r
-        CZ{"à¤\9aà¥\87à¤\95 à¤\97णतनà¥\8dतà¥\8dर"}\r
+        CZ{"à¤\9aà¥\87à¤\9aिया"}\r
         FK{"फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास)"}\r
         MK{"म्याकेडोनिया (फाइरम)"}\r
         TL{"पृर्वी टीमोर"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index 4e051df..fa6b4d7 100644 (file)
@@ -89,7 +89,7 @@ nl{
         CW{"Curaçao"}\r
         CX{"Christmaseiland"}\r
         CY{"Cyprus"}\r
-        CZ{"Tsjechische Republiek"}\r
+        CZ{"Tsjechië"}\r
         DE{"Duitsland"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -304,9 +304,9 @@ nl{
     Countries%variant{\r
         CD{"Congo (DRC)"}\r
         CG{"Congo (Republiek)"}\r
-        CZ{"Tsjechië"}\r
+        CZ{"Tsjechische Republiek"}\r
         FK{"Falklandeilanden (Islas Malvinas)"}\r
         MK{"Macedonië (FYROM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index d17cb3f..27dfb05 100644 (file)
@@ -227,5 +227,5 @@ nmg{
         ZM{"Zambia"}\r
         ZW{"Zimbabwǝ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 594c600..12ab053 100644 (file)
@@ -303,5 +303,5 @@ nn{
         FK{"Falklandsøyane (Islas Malvinas)"}\r
         MK{"Den tidlegare jugoslaviske republikken Makedonia"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 09de8e4..67f3c16 100644 (file)
@@ -4,5 +4,5 @@ nnh{
     Countries{\r
         CM{"Kàmalûm"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a1b69e1..13a60f2 100644 (file)
@@ -54,5 +54,5 @@ nus{
         TD{"Ca̱d"}\r
         VG{"Burutic dhuɔ̱ɔ̱l be̱rgin"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 57dd8cf..66c7f81 100644 (file)
@@ -227,5 +227,5 @@ nyn{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e320f58..2cc7259 100644 (file)
@@ -15,5 +15,5 @@ om{
         RU{"Russia"}\r
         US{"United States"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index d1cba97..ace7789 100644 (file)
@@ -281,5 +281,5 @@ or{
         ZW{"ଜିମ୍ବାୱେ"}\r
         ZZ{"ଅଜଣା କିମ୍ବା ଅବୈଧ ପ୍ରଦେଶ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
 }\r
index cdc2071..33fc895 100644 (file)
@@ -21,5 +21,5 @@ os{
         US{"АИШ"}\r
         ZZ{"Нӕзонгӕ бӕстӕ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c39c690..14c20c0 100644 (file)
@@ -89,7 +89,7 @@ pa{
         CW{"ਕੁਰਾਕਾਓ"}\r
         CX{"ਕ੍ਰਿਸਮਿਸ ਟਾਪੂ"}\r
         CY{"ਸਾਇਪ੍ਰਸ"}\r
-        CZ{"à¨\9aà©\88à¨\95à©\80à¨\86"}\r
+        CZ{"à¨\9aà©\88ੱà¨\95 à¨\97ਣਰਾà¨\9c"}\r
         DE{"ਜਰਮਨੀ"}\r
         DG{"ਡੀਇਗੋ ਗਾਰਸੀਆ"}\r
         DJ{"ਜ਼ੀਬੂਤੀ"}\r
@@ -305,10 +305,10 @@ pa{
         CD{"ਕਾਂਗੋ ਲੋਕਤੰਤਰੀ ਗਣਰਾਜ"}\r
         CG{"ਕਾਂਗੋ ਗਣਰਾਜ"}\r
         CI{"ਆਇਵਰੀ ਕੋਸਟ"}\r
-        CZ{"à¨\9aà©\88ੱà¨\95 à¨\97ਣਰਾà¨\9c"}\r
+        CZ{"à¨\9aà©\88à¨\95à©\80à¨\86"}\r
         FK{"ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ (ਆਈਲਾਸ ਮਾਲਵਿਨਾਸ)"}\r
         MK{"ਮੈਕਡੋਨੀਆ (ਪੂਰਵ ਯੂਗੋਸਲਾਵ ਮੈਕਡੋਨੀਆਈ ਗਣਰਾਜ)"}\r
         TL{"ਪੂਰਬ ਤਿਮੋਰ"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 07d1daf..4ce5008 100644 (file)
@@ -5,5 +5,5 @@ pa_Arab{
     Countries{\r
         PK{"پاکستان"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc1602d..dca680f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 896832d..c9537a9 100644 (file)
@@ -309,5 +309,5 @@ pl{
         MK{"Była Jugosłowiańska Republika Macedonii"}\r
         TL{"Timor-Leste"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 567ea80..c7df177 100644 (file)
Binary files a/source/data/region/pool.res and b/source/data/region/pool.res differ
index f7d7825..2f08a77 100644 (file)
@@ -66,5 +66,5 @@ ps{
         UY{"یوروګوای"}\r
         YE{"یمن"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2acac45..a51f3c6 100644 (file)
@@ -89,7 +89,7 @@ pt{
         CW{"Curaçao"}\r
         CX{"Ilha Christmas"}\r
         CY{"Chipre"}\r
-        CZ{"Tchéquia"}\r
+        CZ{"República Tcheca"}\r
         DE{"Alemanha"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibuti"}\r
@@ -304,10 +304,10 @@ pt{
     Countries%variant{\r
         CD{"República Democrática do Congo"}\r
         CG{"Congo"}\r
-        CZ{"República Tcheca"}\r
+        CZ{"Tchéquia"}\r
         FK{"Ilhas Falkland (Ilhas Malvinas)"}\r
         MK{"Macedônia (ARIM)"}\r
         TL{"República Democrática de Timor-Leste"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index a385088..2e783ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ee7339..a4226b1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed8f313..829f400 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f6e235..fd432f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4cd124..75c5d9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b5a1669..b5eca2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d30b2ff..c47efaa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 060a5fc..9878c5a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fc59731..c7e0396 100644 (file)
@@ -74,5 +74,5 @@ pt_PT{
         FK{"Ilhas Malvinas"}\r
         MK{"Macedónia (ARJM)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.54"}\r
 }\r
index e3f0965..fcc981b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8cb201..8bbbc3d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0dcd5d0..b874ea4 100644 (file)
@@ -193,5 +193,5 @@ qu{
         ZM{"Zambia"}\r
         ZW{"Zimbabue"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index f61eb66..e4eb147 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-REGION_CLDR_VERSION = 31.0.1\r
+REGION_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'reslocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'reslocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,19 +26,19 @@ REGION_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-REGION_SYNTHETIC_ALIAS = ars.txt az_AZ.txt az_Latn_AZ.txt bs_BA.txt\\r
bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt he_IL.txt\\r
- id_ID.txt in.txt in_ID.txt iw.txt iw_IL.txt\\r
- ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt\\r
- no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt\\r
- pa_IN.txt pa_PK.txt sh.txt sh_BA.txt sh_CS.txt\\r
- sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt\\r
- sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt\\r
- sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
- th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
- uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
- zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt\\r
- zh_MO.txt zh_SG.txt zh_TW.txt\r
+REGION_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
+ in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
+ ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
+ no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
+ pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
+ shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\\r
+ sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt sr_Latn_YU.txt\\r
+ sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\\r
+ th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\\r
+ uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\\r
+ zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt zh_MO.txt\\r
+ zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,47 +76,47 @@ REGION_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\\r
  en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\\r
  eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\\r
- es_BR.txt es_BZ.txt es_CL.txt es_CO.txt es_CR.txt\\r
- es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\\r
- es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\\r
- es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\\r
- et.txt eu.txt ewo.txt fa.txt fa_AF.txt\\r
- ff.txt fi.txt fil.txt fo.txt fr.txt\\r
- fr_BE.txt fr_CA.txt fur.txt fy.txt ga.txt\\r
- gd.txt gl.txt gsw.txt gu.txt guz.txt\\r
gv.txt ha.txt haw.txt he.txt hi.txt\\r
- hr.txt hsb.txt hu.txt hy.txt id.txt\\r
- ig.txt ii.txt is.txt it.txt ja.txt\\r
- jgo.txt jmc.txt ka.txt kab.txt kam.txt\\r
- kde.txt kea.txt khq.txt ki.txt kk.txt\\r
- kkj.txt kl.txt kln.txt km.txt kn.txt\\r
- ko.txt ko_KP.txt kok.txt ks.txt ksb.txt\\r
- ksf.txt ksh.txt kw.txt ky.txt lag.txt\\r
- lb.txt lg.txt lkt.txt ln.txt lo.txt\\r
- lrc.txt lt.txt lu.txt luo.txt luy.txt\\r
lv.txt mas.txt mer.txt mfe.txt mg.txt\\r
- mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
- mr.txt ms.txt mt.txt mua.txt my.txt\\r
mzn.txt naq.txt nb.txt nd.txt nds.txt\\r
- ne.txt nl.txt nmg.txt nn.txt nnh.txt\\r
- nus.txt nyn.txt om.txt or.txt os.txt\\r
- pa.txt pa_Arab.txt pa_Guru.txt pl.txt ps.txt\\r
- pt.txt pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt\\r
- pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt\\r
- pt_ST.txt pt_TL.txt qu.txt rm.txt rn.txt\\r
- ro.txt ro_MD.txt rof.txt ru.txt ru_UA.txt\\r
- rw.txt rwk.txt sah.txt saq.txt sbp.txt\\r
- se.txt se_FI.txt seh.txt ses.txt sg.txt\\r
- shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\\r
- sl.txt smn.txt sn.txt so.txt sq.txt\\r
- sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt\\r
- sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt\\r
- sw.txt sw_CD.txt sw_KE.txt ta.txt te.txt\\r
- teo.txt th.txt ti.txt to.txt tr.txt\\r
- twq.txt tzm.txt ug.txt uk.txt ur.txt\\r
- ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\\r
- vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\\r
wae.txt xog.txt yav.txt yi.txt yo.txt\\r
- yo_BJ.txt yue.txt zgh.txt zh.txt zh_Hans.txt\\r
- zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_BR.txt es_CL.txt es_CO.txt es_CR.txt es_CU.txt\\r
+ es_DO.txt es_EC.txt es_GT.txt es_HN.txt es_MX.txt\\r
+ es_NI.txt es_PA.txt es_PE.txt es_PR.txt es_PY.txt\\r
+ es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\\r
+ eu.txt ewo.txt fa.txt fa_AF.txt ff.txt\\r
+ fi.txt fil.txt fo.txt fr.txt fr_BE.txt\\r
+ fr_CA.txt fur.txt fy.txt ga.txt gd.txt\\r
+ gl.txt gsw.txt gu.txt guz.txt gv.txt\\r
ha.txt haw.txt he.txt hi.txt hr.txt\\r
+ hsb.txt hu.txt hy.txt id.txt ig.txt\\r
+ ii.txt is.txt it.txt ja.txt jgo.txt\\r
+ jmc.txt ka.txt kab.txt kam.txt kde.txt\\r
+ kea.txt khq.txt ki.txt kk.txt kkj.txt\\r
+ kl.txt kln.txt km.txt kn.txt ko.txt\\r
+ ko_KP.txt kok.txt ks.txt ksb.txt ksf.txt\\r
+ ksh.txt kw.txt ky.txt lag.txt lb.txt\\r
+ lg.txt lkt.txt ln.txt lo.txt lrc.txt\\r
+ lt.txt lu.txt luo.txt luy.txt lv.txt\\r
mas.txt mer.txt mfe.txt mg.txt mgh.txt\\r
+ mgo.txt mk.txt ml.txt mn.txt mr.txt\\r
+ ms.txt mt.txt mua.txt my.txt mzn.txt\\r
naq.txt nb.txt nd.txt nds.txt ne.txt\\r
+ nl.txt nmg.txt nn.txt nnh.txt nus.txt\\r
+ nyn.txt om.txt or.txt os.txt pa.txt\\r
+ pa_Arab.txt pa_Guru.txt pl.txt ps.txt pt.txt\\r
+ pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\\r
+ pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\\r
+ pt_TL.txt qu.txt rm.txt rn.txt ro.txt\\r
+ ro_MD.txt rof.txt ru.txt ru_UA.txt rw.txt\\r
+ rwk.txt sah.txt saq.txt sbp.txt se.txt\\r
+ se_FI.txt seh.txt ses.txt sg.txt shi.txt\\r
+ shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\\r
+ smn.txt sn.txt so.txt sq.txt sr.txt\\r
+ sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt\\r
+ sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sw.txt\\r
+ sw_CD.txt sw_KE.txt ta.txt te.txt teo.txt\\r
+ th.txt ti.txt to.txt tr.txt twq.txt\\r
+ tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\\r
+ uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\\r
+ vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\\r
xog.txt yav.txt yi.txt yo.txt yo_BJ.txt\\r
+ yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hant.txt\\r
+ zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index 9656f93..f964379 100644 (file)
@@ -280,5 +280,5 @@ rm{
         ZW{"Simbabwe"}\r
         ZZ{"Regiun betg encouschenta u nunvalaivla"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index e088dbe..dfe849f 100644 (file)
@@ -227,5 +227,5 @@ rn{
         ZM{"Zambiya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 18430c5..420f4b5 100644 (file)
@@ -89,7 +89,7 @@ ro{
         CW{"Curaçao"}\r
         CX{"Insula Christmas"}\r
         CY{"Cipru"}\r
-        CZ{"Cehia"}\r
+        CZ{"Republica Cehă"}\r
         DE{"Germania"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,9 +305,9 @@ ro{
         CD{"Congo (Republica Democrată Congo)"}\r
         CG{"Congo (Republica)"}\r
         CI{"Coasta de Fildeș"}\r
-        CZ{"Republica Cehă"}\r
+        CZ{"Cehia"}\r
         FK{"Insulele Falkland (Insulele Malvine)"}\r
         MK{"Republica Macedonia (FRIM)"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 08cade9..d6c40c4 100644 (file)
@@ -4,5 +4,5 @@ ro_MD{
     Countries{\r
         MM{"Myanmar"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 4d4dfbc..9a6795a 100644 (file)
@@ -227,5 +227,5 @@ rof{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 664b849..a22c443 100644 (file)
@@ -4,5 +4,5 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.58"}\r
 }\r
index aa987c5..79ad48d 100644 (file)
@@ -309,5 +309,5 @@ ru{
         MK{"Македония (БЮРМ)"}\r
         TL{"Тимор-Лесте"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
 }\r
index 95bb3bf..e4f26ab 100644 (file)
@@ -14,5 +14,5 @@ ru_UA{
         TL{"Тимор-Лесте"}\r
         UM{"Малые Тихоокеанские Отдаленные Острова США"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 6b0b17a..44b0454 100644 (file)
@@ -5,5 +5,5 @@ rw{
         RW{"Rwanda"}\r
         TO{"Igitonga"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 6d11a9c..db5b3f3 100644 (file)
@@ -227,5 +227,5 @@ rwk{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09987ba..ca79d30 100644 (file)
@@ -31,5 +31,5 @@ sah{
     Countries%short{\r
         US{"АХШ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.87"}\r
 }\r
index 49d1cd3..f9c5dfc 100644 (file)
@@ -227,5 +227,5 @@ saq{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 85d9b2b..8456202 100644 (file)
@@ -227,5 +227,5 @@ sbp{
         ZM{"Sambiya"}\r
         ZW{"Simbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed7cb4d..b1d294f 100644 (file)
@@ -294,5 +294,5 @@ se{
         PS{"Palestina"}\r
         US{"USA"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index d5b8ba6..e26dc36 100644 (file)
@@ -15,5 +15,5 @@ se_FI{
     Countries%variant{\r
         CI{"Côte d’Ivoire"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
 }\r
index 2571e4b..4a816be 100644 (file)
@@ -226,5 +226,5 @@ seh{
         ZM{"Zâmbia"}\r
         ZW{"Zimbábue"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index be8d987..ea6e373 100644 (file)
@@ -227,5 +227,5 @@ ses{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e811e61..bc9052b 100644 (file)
@@ -227,5 +227,5 @@ sg{
         ZM{"Zambïi"}\r
         ZW{"Zimbäbwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f09cac..a343151 100644 (file)
@@ -227,5 +227,5 @@ shi{
         ZM{"ⵣⴰⵎⴱⵢⴰ"}\r
         ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 352696d..b885e77 100644 (file)
@@ -228,5 +228,5 @@ shi_Latn{
         ZM{"zambya"}\r
         ZW{"zimbabwi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2db194b..22785f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 50724e5..8cf9132 100644 (file)
@@ -89,7 +89,7 @@ si{
         CW{"කුරකාවෝ"}\r
         CX{"ක්‍රිස්මස් දූපත"}\r
         CY{"සයිප්‍රසය"}\r
-        CZ{"චෙක්"}\r
+        CZ{"චෙක් ජනරජය"}\r
         DE{"ජර්මනිය"}\r
         DG{"දියාගෝ ගාර්සියා"}\r
         DJ{"ජිබුටි"}\r
@@ -305,10 +305,10 @@ si{
         CD{"කොංගෝව"}\r
         CG{"කොංගෝ (ජනරජය)"}\r
         CI{"අයිවරි කෝස්ට්"}\r
-        CZ{"චෙක් ජනරජය"}\r
+        CZ{"චෙක්"}\r
         FK{"ෆෝක්ලන්ත දූපත් (අයිලස් මල්වියනාස්)"}\r
         MK{"මැසිඩෝනියාව (FYROM)"}\r
         TL{"නැගෙනහිර ටිමෝරය"}\r
     }\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.28.79"}\r
 }\r
index bb653b9..5f80df1 100644 (file)
@@ -89,7 +89,7 @@ sk{
         CW{"Curaçao"}\r
         CX{"Vianočný ostrov"}\r
         CY{"Cyprus"}\r
-        CZ{"Česko"}\r
+        CZ{"Česká republika"}\r
         DE{"Nemecko"}\r
         DG{"Diego Garcia"}\r
         DJ{"Džibutsko"}\r
@@ -302,8 +302,8 @@ sk{
         US{"USA"}\r
     }\r
     Countries%variant{\r
-        CZ{"Česká republika"}\r
+        CZ{"Česko"}\r
         MK{"Macedónsko (BJRM)"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 6c61c8d..6a0e963 100644 (file)
@@ -309,5 +309,5 @@ sl{
         MK{"Makedonija (FYROM)"}\r
         TL{"Vzhodni Timor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index c0e6222..a6da9ca 100644 (file)
@@ -265,5 +265,5 @@ smn{
         FK{"Falklandsuolluuh (Malvinassuolluuh)"}\r
         MK{"OJT Makedonia"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f23f91..8e56c5a 100644 (file)
@@ -226,5 +226,5 @@ sn{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 19345c9..67f1499 100644 (file)
@@ -228,5 +228,5 @@ so{
         ZW{"Simbaabwe"}\r
         ZZ{"Far aan la aqoon amase aan saxnayn"}\r
     }\r
-    Version{"2.1.33.76"}\r
+    Version{"2.1.27.78"}\r
 }\r
index c697d9d..f12c87f 100644 (file)
@@ -89,7 +89,7 @@ sq{
         CW{"Kuraçao"}\r
         CX{"Ishulli i Krishtlindjes"}\r
         CY{"Qipro"}\r
-        CZ{"Çeki"}\r
+        CZ{"Republika Çeke"}\r
         DE{"Gjermani"}\r
         DG{"Diego-Garsia"}\r
         DJ{"Xhibuti"}\r
@@ -305,10 +305,10 @@ sq{
         CD{"Kongo (RDK)"}\r
         CG{"Kongo (Republika)"}\r
         CI{"Bregu i Fildishtë"}\r
-        CZ{"Republika Çeke"}\r
+        CZ{"Çeki"}\r
         FK{"Ishujt Falkland (Malvine)"}\r
         MK{"Maqedoni (IRJM)"}\r
         TL{"Timori Lindor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index ce02908..4a24a3d 100644 (file)
@@ -304,8 +304,9 @@ sr{
     Countries%variant{\r
         CD{"Конго (ДРК)"}\r
         CG{"Конго (Република)"}\r
+        CZ{"CZ"}\r
         FK{"Фокландска (Малвинска) острва"}\r
         MK{"Македонија (БЈРМ)"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 2e18268..0b50a55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0c1f5c3..2cab989 100644 (file)
@@ -21,5 +21,5 @@ sr_Cyrl_BA{
     Countries%variant{\r
         MK{"БЈР Македонија"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 5ff5187..d7f09a4 100644 (file)
@@ -19,5 +19,5 @@ sr_Cyrl_ME{
     Countries%variant{\r
         MK{"БЈР Македонија"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index ef2159b..e577b1b 100644 (file)
@@ -18,5 +18,5 @@ sr_Cyrl_XK{
     Countries%variant{\r
         MK{"БЈР Македонија"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index faf7f1e..27ef48f 100644 (file)
@@ -305,8 +305,9 @@ sr_Latn{
     Countries%variant{\r
         CD{"Kongo (DRK)"}\r
         CG{"Kongo (Republika)"}\r
+        CZ{"CZ"}\r
         FK{"Foklandska (Malvinska) ostrva"}\r
         MK{"Makedonija (BJRM)"}\r
     }\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 175bee9..26e8724 100644 (file)
@@ -21,5 +21,5 @@ sr_Latn_BA{
     Countries%variant{\r
         MK{"BJR Makedonija"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index 7077d34..f268278 100644 (file)
@@ -19,5 +19,5 @@ sr_Latn_ME{
     Countries%variant{\r
         MK{"BJR Makedonija"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index aed66be..6a0d253 100644 (file)
@@ -18,5 +18,5 @@ sr_Latn_XK{
     Countries%variant{\r
         MK{"BJR Makedonija"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
 }\r
index d9a621b..f87afd5 100644 (file)
@@ -306,5 +306,5 @@ sv{
         CG{"Republiken Kongo"}\r
         MK{"f.d. jugoslaviska republiken Makedonien"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
 }\r
index 5b39892..16eb7c1 100644 (file)
@@ -89,7 +89,7 @@ sw{
         CW{"Kurakao"}\r
         CX{"Kisiwa cha Krismasi"}\r
         CY{"Cyprus"}\r
-        CZ{"Chechia"}\r
+        CZ{"Jamhuri ya Cheki"}\r
         DE{"Ujerumani"}\r
         DG{"Diego Garcia"}\r
         DJ{"Jibuti"}\r
@@ -305,10 +305,9 @@ sw{
         CD{"Kongo (DRC)"}\r
         CG{"Jamhuri ya Kongo"}\r
         CI{"Ivory Coast"}\r
-        CZ{"Jamhuri ya Cheki"}\r
         FK{"Visiwa vya Falkland (Islas Malvinas)"}\r
         MK{"Masedonia (FYROM)"}\r
         TL{"Timor ya Mashariki"}\r
     }\r
-    Version{"2.1.33.73"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 1d22fb9..90b12ae 100644 (file)
@@ -32,5 +32,5 @@ sw_CD{
         TL{"Timori ya Mashariki"}\r
         VN{"Vietnamu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 7a3f62b..c652d75 100644 (file)
@@ -26,5 +26,5 @@ sw_KE{
         TD{"Chadi"}\r
         VN{"Vietnamu"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index ca9b654..76a4fff 100644 (file)
@@ -89,7 +89,7 @@ ta{
         CW{"குராகவ்"}\r
         CX{"கிறிஸ்துமஸ் தீவு"}\r
         CY{"சைப்ரஸ்"}\r
-        CZ{"à®\9aà¯\86à®\9aியா"}\r
+        CZ{"à®\9aà¯\86à®\95à¯\8d à®\95à¯\81à®\9fியரà®\9aà¯\81"}\r
         DE{"ஜெர்மனி"}\r
         DG{"டியகோ கார்ஷியா"}\r
         DJ{"ஜிபௌட்டி"}\r
@@ -305,10 +305,10 @@ ta{
         CD{"காங்கோ (டிஆர்சி)"}\r
         CG{"காங்கோ (குடியரசு)"}\r
         CI{"ஐவரி கோஸ்ட்"}\r
-        CZ{"à®\9aà¯\86à®\95à¯\8d à®\95à¯\81à®\9fியரà®\9aà¯\81"}\r
+        CZ{"à®\9aà¯\86à®\9aியா"}\r
         FK{"ஃபாக்லாந்து தீவுகள் (இஸ்லாஸ் மால்வினஸ்)"}\r
         MK{"மாசிடோனியா (ஃபைரோம்)"}\r
         TL{"கிழக்கு தைமூர்"}\r
     }\r
-    Version{"2.1.32.4"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 5800a07..b995ea5 100644 (file)
@@ -89,7 +89,7 @@ te{
         CW{"కురాకవో"}\r
         CX{"క్రిస్మస్ దీవి"}\r
         CY{"సైప్రస్"}\r
-        CZ{"చెక్‌చియ"}\r
+        CZ{"చెక్ రిపబ్లిక్"}\r
         DE{"జర్మనీ"}\r
         DG{"డియాగో గార్సియా"}\r
         DJ{"జిబౌటి"}\r
@@ -305,10 +305,10 @@ te{
         CD{"కాంగో (DRC)"}\r
         CG{"కాంగో (రిపబ్లిక్)"}\r
         CI{"ఐవరీ కోస్ట్"}\r
-        CZ{"చెక్ రిపబ్లిక్"}\r
+        CZ{"చెక్‌చియ"}\r
         FK{"ఫాక్‌ల్యాండ్ దీవులు (ఇస్లాస్ మాల్వినాస్)"}\r
         MK{"మేసిడోనియా (FYROM)"}\r
         TL{"తూర్పు తైమూర్"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
 }\r
index afed4dd..038c6ad 100644 (file)
@@ -227,5 +227,5 @@ teo{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a605496..e6af07b 100644 (file)
@@ -89,7 +89,7 @@ th{
         CW{"คูราเซา"}\r
         CX{"เกาะคริสต์มาส"}\r
         CY{"ไซปรัส"}\r
-        CZ{"เช็ก"}\r
+        CZ{"สาà¸\98ารà¸\93รัà¸\90à¹\80à¸\8aà¹\87à¸\81"}\r
         DE{"เยอรมนี"}\r
         DG{"ดิเอโกการ์เซีย"}\r
         DJ{"จิบูตี"}\r
@@ -305,10 +305,10 @@ th{
         CD{"คองโก (สาธารณรัฐประชาธิปไตย)"}\r
         CG{"คองโก (สาธารณรัฐ)"}\r
         CI{"ไอวอรี่โคสต์"}\r
-        CZ{"สาà¸\98ารà¸\93รัà¸\90à¹\80à¸\8aà¹\87à¸\81"}\r
+        CZ{"เช็ก"}\r
         FK{"หมู่เกาะฟอล์กแลนด์ (อิสลาส มาลวินาส)"}\r
         MK{"มาซิโดเนีย (FYROM)"}\r
         TL{"ติมอร์ตะวันออก"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 1b95d45..5a0d407 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 924db5a..b43db7a 100644 (file)
@@ -89,7 +89,7 @@ to{
         CW{"Kulasao"}\r
         CX{"Motu Kilisimasi"}\r
         CY{"Saipalesi"}\r
-        CZ{"Sēkia"}\r
+        CZ{"Lipapilika Seki"}\r
         DE{"Siamane"}\r
         DG{"Tieko Kāsia"}\r
         DJ{"Siputi"}\r
@@ -302,8 +302,8 @@ to{
     Countries%variant{\r
         CD{"Kongo (LTK)"}\r
         CG{"Kongo (Lipapilika)"}\r
-        CZ{"Lipapilika Seki"}\r
+        CZ{"Sēkia"}\r
         MK{"Masetōnia (FYROM)"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.98"}\r
 }\r
index eb428da..91386a7 100644 (file)
@@ -89,7 +89,7 @@ tr{
         CW{"Curaçao"}\r
         CX{"Christmas Adası"}\r
         CY{"Kıbrıs"}\r
-        CZ{"Çekya"}\r
+        CZ{"Çek Cumhuriyeti"}\r
         DE{"Almanya"}\r
         DG{"Diego Garcia"}\r
         DJ{"Cibuti"}\r
@@ -304,9 +304,9 @@ tr{
     Countries%variant{\r
         CD{"Kongo Demokratik Cumhuriyeti"}\r
         CG{"Kongo Cumhuriyeti"}\r
-        CZ{"Çek Cumhuriyeti"}\r
+        CZ{"Çekya"}\r
         FK{"Falkland Adaları (Malvinas Adaları)"}\r
         TL{"Doğu Timor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 63c3e54..d711daa 100644 (file)
@@ -227,5 +227,5 @@ twq{
         ZM{"Zambi"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a8b619..71ca926 100644 (file)
@@ -227,5 +227,5 @@ tzm{
         ZM{"Zambya"}\r
         ZW{"Zimbabwi"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bc1ef6d..35b38c8 100644 (file)
@@ -306,5 +306,5 @@ ug{
         FK{"فالكلاند ئاراللىرى (ئىسلاس مالۋىناس)"}\r
         MK{"ماكېدونىيە (س ي م ج)"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 117af0d..c399979 100644 (file)
@@ -89,7 +89,7 @@ uk{
         CW{"Кюрасао"}\r
         CX{"Острів Різдва"}\r
         CY{"Кіпр"}\r
-        CZ{"ЧеÑ\85Ñ\96Ñ\8f"}\r
+        CZ{"ЧеÑ\81Ñ\8cка Ð ÐµÑ\81пÑ\83блÑ\96ка"}\r
         DE{"Німеччина"}\r
         DG{"Дієго-Гарсія"}\r
         DJ{"Джибуті"}\r
@@ -305,11 +305,11 @@ uk{
         CD{"Конго (ДРК)"}\r
         CG{"Конго (Республіка)"}\r
         CI{"Берег Слонової Кістки"}\r
-        CZ{"ЧеÑ\81Ñ\8cка Ð ÐµÑ\81пÑ\83блÑ\96ка"}\r
+        CZ{"ЧеÑ\85Ñ\96Ñ\8f"}\r
         FK{"Фолклендські (Мальвінські) острови"}\r
         FM{"Федеративні Штати Мікронезії"}\r
         MK{"Македонія (КЮРМ)"}\r
         TL{"Східний Тимор"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.38"}\r
 }\r
index b2b5968..571f4af 100644 (file)
@@ -89,7 +89,7 @@ ur{
         CW{"کیوراکاؤ"}\r
         CX{"جزیرہ کرسمس"}\r
         CY{"قبرص"}\r
-        CZ{"زکھیا"}\r
+        CZ{"چیک جمہوریہ"}\r
         DE{"جرمنی"}\r
         DG{"ڈائجو گارسیا"}\r
         DJ{"جبوتی"}\r
@@ -305,10 +305,10 @@ ur{
         CD{"کانگو (DRC)"}\r
         CG{"کانگو (جمہوریہ)"}\r
         CI{"آئیوری کوسٹ"}\r
-        CZ{"چیک جمہوریہ"}\r
+        CZ{"زکھیا"}\r
         FK{"فاکلینڈ جزائر (مالویناس)"}\r
         MK{"مقدونیہ (FYROM)"}\r
         TL{"مشرقی تیمور"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index c52086c..c8cd231 100644 (file)
@@ -29,5 +29,5 @@ ur_IN{
     Countries%variant{\r
         FK{"جزائر فاکلینڈ (اسلاس مالویناس)"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.79"}\r
 }\r
index 0bb95ac..d28b8df 100644 (file)
@@ -89,7 +89,7 @@ uz{
         CW{"Kyurasao"}\r
         CX{"Rojdestvo oroli"}\r
         CY{"Kipr"}\r
-        CZ{"Chexiya"}\r
+        CZ{"Chexiya Respublikasi"}\r
         DE{"Germaniya"}\r
         DG{"Diyego-Garsiya"}\r
         DJ{"Jibuti"}\r
@@ -305,10 +305,10 @@ uz{
         CD{"Kongo (KDR)"}\r
         CG{"Kongo (Respublika)"}\r
         CI{"Fil suyagi qirg‘og‘i"}\r
-        CZ{"Chexiya Respublikasi"}\r
+        CZ{"Chexiya"}\r
         FK{"Folklend (Malvin) orollari"}\r
         MK{"Makedoniya (SYRM)"}\r
         TL{"Sharqiy Timor"}\r
     }\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.44"}\r
 }\r
index 8d431e7..22724ba 100644 (file)
@@ -5,5 +5,5 @@ uz_Arab{
     Countries{\r
         AF{"افغانستان"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c38677c..4cb47f2 100644 (file)
@@ -90,7 +90,7 @@ uz_Cyrl{
         CW{"Кюрасао"}\r
         CX{"Рождество ороли"}\r
         CY{"Кипр"}\r
-        CZ{"Чехия"}\r
+        CZ{"Чехия Республикаси"}\r
         DE{"Германия"}\r
         DG{"Диего-Гарсия"}\r
         DJ{"Жибути"}\r
@@ -304,10 +304,10 @@ uz_Cyrl{
         CD{"Конго (КДР)"}\r
         CG{"Конго (Республика)"}\r
         CI{"Фил Суяги Қирғоғи"}\r
-        CZ{"Чехия Республикаси"}\r
+        CZ{"Чехия"}\r
         FK{"Фолкленд (Малвин) ороллари"}\r
         MK{"Македония (СЮРМ)"}\r
         TL{"Шарқий Тимор"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.27.98"}\r
 }\r
index fdd810c..bdf99c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0eac451..c0223a1 100644 (file)
@@ -226,5 +226,5 @@ vai{
         ZM{"ꕤꔭꕩ"}\r
         ZW{"ꔽꕓꖜꔃ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 80b4d72..2998b34 100644 (file)
@@ -227,5 +227,5 @@ vai_Latn{
         ZM{"Zambiya"}\r
         ZW{"Zimbabhuwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66f0f3..38872b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6cb4bb0..2b1c358 100644 (file)
@@ -89,7 +89,7 @@ vi{
         CW{"Curaçao"}\r
         CX{"Đảo Giáng Sinh"}\r
         CY{"Síp"}\r
-        CZ{"Czechia"}\r
+        CZ{"Cộng hòa Séc"}\r
         DE{"Đức"}\r
         DG{"Diego Garcia"}\r
         DJ{"Djibouti"}\r
@@ -305,10 +305,10 @@ vi{
         CD{"Cộng hòa Dân chủ Congo"}\r
         CG{"Cộng hòa Congo"}\r
         CI{"Bờ Biển Ngà"}\r
-        CZ{"Cộng hòa Séc"}\r
+        CZ{"Czechia"}\r
         FK{"Quần đảo Falkland (Islas Malvinas)"}\r
         MK{"Macedonia (FYROM)"}\r
         TL{"Đông Timor"}\r
     }\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
 }\r
index 9b7e2d7..2621321 100644 (file)
@@ -227,5 +227,5 @@ vun{
         ZM{"Zambia"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e1b1568..518c4f5 100644 (file)
@@ -299,5 +299,5 @@ wae{
         MK{"Mazedonie (EJR)"}\r
         TL{"Wešttimor"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3fcc097..5b3802d 100644 (file)
@@ -226,5 +226,5 @@ xog{
         ZM{"Zambya"}\r
         ZW{"Zimbabwe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index baa2caf..a812a40 100644 (file)
@@ -226,5 +226,5 @@ yav{
         ZM{"saambíi"}\r
         ZW{"simbapuwé"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6c066b4..7960510 100644 (file)
@@ -231,5 +231,5 @@ yi{
     Countries%variant{\r
         TL{"מזרח טימאר"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.97"}\r
 }\r
index 92f3145..30becb9 100644 (file)
@@ -227,5 +227,5 @@ yo{
         ZM{"Orílẹ́ède ṣamibia"}\r
         ZW{"Orílẹ́ède ṣimibabe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0d5a057..dcbd1a2 100644 (file)
@@ -227,5 +227,5 @@ yo_BJ{
         ZM{"Orílɛ́ède shamibia"}\r
         ZW{"Orílɛ́ède shimibabe"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 3aae584..8cf68bb 100644 (file)
@@ -89,7 +89,7 @@ yue{
         CW{"庫拉索"}\r
         CX{"聖誕島"}\r
         CY{"賽普勒斯"}\r
-        CZ{"捷克"}\r
+        CZ{"捷克共和國"}\r
         DE{"德國"}\r
         DG{"迪亞哥加西亞島"}\r
         DJ{"吉布地"}\r
@@ -302,9 +302,9 @@ yue{
     Countries%variant{\r
         CD{"剛果民主共和國"}\r
         CG{"剛果共和國"}\r
-        CZ{"捷克共和國"}\r
+        CZ{"捷克"}\r
         FK{"福克蘭群島 (馬爾維納斯群島)"}\r
         MK{"前南斯拉夫馬其頓共和國"}\r
     }\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 3ee7ed3..bcb2b3b 100644 (file)
@@ -230,5 +230,5 @@ zgh{
         ZM{"ⵣⴰⵎⴱⵢⴰ"}\r
         ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cfc9710..f40e343 100644 (file)
@@ -89,7 +89,7 @@ zh{
         CW{"库拉索"}\r
         CX{"圣诞岛"}\r
         CY{"塞浦路斯"}\r
-        CZ{"捷克"}\r
+        CZ{"捷克共和国"}\r
         DE{"德国"}\r
         DG{"迪戈加西亚岛"}\r
         DJ{"吉布提"}\r
@@ -305,9 +305,9 @@ zh{
         CD{"刚果民主共和国"}\r
         CG{"刚果共和国"}\r
         CI{"象牙海岸"}\r
-        CZ{"捷克共和国"}\r
+        CZ{"捷克"}\r
         FK{"福克兰群岛(马尔维纳斯群岛)"}\r
         MK{"马其顿(前南斯拉夫马其顿共和国)"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.29.84"}\r
 }\r
index 1e311fc..c64cac5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 668d07f..bc270d8 100644 (file)
@@ -90,7 +90,7 @@ zh_Hant{
         CW{"庫拉索"}\r
         CX{"聖誕島"}\r
         CY{"賽普勒斯"}\r
-        CZ{"捷克"}\r
+        CZ{"捷克共和國"}\r
         DE{"德國"}\r
         DG{"迪亞哥加西亞島"}\r
         DJ{"吉布地"}\r
@@ -305,9 +305,9 @@ zh_Hant{
     Countries%variant{\r
         CD{"剛果民主共和國"}\r
         CG{"剛果共和國"}\r
-        CZ{"捷克共和國"}\r
+        CZ{"捷克"}\r
         FK{"福克蘭群島(馬爾維納斯群島)"}\r
         MK{"前南斯拉夫馬其頓共和國"}\r
     }\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.28.79"}\r
 }\r
index b31dd67..49a7b80 100644 (file)
@@ -98,5 +98,5 @@ zh_Hant_HK{
     Countries%variant{\r
         CI{"象牙海岸"}\r
     }\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 9589854..9d2c5aa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20536cc..95e540b 100644 (file)
@@ -89,7 +89,7 @@ zu{
         CW{"i-Curaçao"}\r
         CX{"i-Christmas Island"}\r
         CY{"i-Cyprus"}\r
-        CZ{"i-Czechia"}\r
+        CZ{"i-Czech Republic"}\r
         DE{"i-Germany"}\r
         DG{"i-Diego Garcia"}\r
         DJ{"i-Djibouti"}\r
@@ -305,10 +305,10 @@ zu{
         CD{"i-Congo (DRC)"}\r
         CG{"i-Congo (Republic)"}\r
         CI{"i-Ivory Coast"}\r
-        CZ{"i-Czech Republic"}\r
+        CZ{"i-Czechia"}\r
         FK{"i-Falkland Islands (Islas Malvinas)"}\r
         MK{"i-Macedonia (FYROM)"}\r
         TL{"i-East Timor"}\r
     }\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.29.22"}\r
 }\r
index 50feb76..0e06a03 100644 (file)
@@ -6,7 +6,6 @@
 #\r
 \r
 $nonword = [^\uE000-\uE0FF];\r
-$wordBoundary = [^[:L:][:M:][:N:]];\r
 \uE015\uE03F\uE02F\uE03E } $nonword→كيا; # किया\r
 \uE026\uE03F\uE02F\uE03E } $nonword→ديا; # दिया\r
 \uE015\uE03F } $nonword→كي; # कि at word end\r
@@ -29,7 +28,6 @@ $wordBoundary = [^[:L:][:M:][:N:]];
 \uE00C→ل; # ऌ\r
 \uE00D→ا ي; # ऍ\r
 \uE00E→ي; # ऎ\r
-$wordBoundary {\uE00F} → إي; # word-initial ए\r
 \uE00F  } $nonword→ي; # ए use ي when at end\r
 \uE00F→ي; # ए use ي when not at end\r
 \uE010  } $nonword→ا ي; # ऐ use ي when at end\r
index b572070..66024b8 100644 (file)
@@ -26,7 +26,7 @@ $ukinzi = \u1004\u103A\u1039;  # Codepoints representing kinzi in Unicode
 # This character has multiple representations in the Zawgyi font.\r
 $zmedialra = [\u103B\u107E-\u1084];\r
 ####\r
-#### STAGE 1: CODEPOINT MAPPING FROM ZAWGYI TO UNICODE\r
+#### STAGE (1): CODEPOINT MAPPING FROM ZAWGYI TO UNICODE\r
 ####\r
 # Kinzi (predefined ligatures)\r
 # Move base character to the right\r
@@ -66,6 +66,8 @@ $zmedialra = [\u103B\u107E-\u1084];
 \u1087 → \u103E ;\r
 \u1088 → \u103E \u102F ;\r
 \u1089 → \u103E \u1030 ;\r
+# Single diacritics with space - use non-breaking\r
+# TODO(ccornelius): determine if this breaks transliteration\r
 # asat\r
 \u1039 → \u103A ;\r
 # Vowels\r
@@ -126,30 +128,26 @@ $zmedialra = [\u103B\u107E-\u1084];
 # yayit\r
 $zmedialra → \u103C ;\r
 ####\r
-#### STAGE 2: POST REORDERING RULES FOR UNICODE RENDERING\r
+#### STAGE (2): POST REORDERING RULES FOR UNICODE RENDERING\r
 #### Now every codepoint is Unicode.  This starts conversion\r
 #### from semi-visual order to logical order.\r
 ####\r
 ::Null;\r
 # Case of MYANMAR digit being used instead of a letter\r
-# Lone digit zero\r
-[$] \u1040 ($nondigits) → \u101D $1;\r
-([\u102b-\u103f]) \u1040 ($nondigits) → $1 \u101d $2;\r
-# Lone digit 4\r
-^ \u1044 ($nondigits) → | \u104E $1 ;\r
-([\u102b-\u103f]) \u1044 ($nondigits) → $1 \u104E $2;\r
-# Simpler replacements for Zawgyi 1025\r
+\u1044 \u103a → | \u104E \u103A ;\r
+# Lone zero with diacritic mark\r
+\u1031 \u1040 ($nondigits) → \u1031 \u101D $1;\r
+($nondigits) \u1040 ([\u102B-\u103F]) → $1 \u101D $2;\r
+# cwc: Simpler replacements for Zawgyi 1025\r
 \u1025 \u103A → \u1009 \u103A;\r
 \u1025 \u102E → \u1026;\r
-# Asat and dot below reordering, to Unicode NFC.\r
-\u103A\u1037 → \u1037\u103A;\r
+# Asat and dot below reordering.\r
+\u1037\u103A → \u103A\u1037;\r
 # Reorder some vowel signs\r
 \u1036 ($umedial*) ($vowelsign+) → $1 $2 \u1036 ;\r
 ([\u102B\u102C\u102F\u1030]) ([\u102D\u102E\u1032]) → $2 $1;\r
 # Move ra medial, but not others.\r
 \u103C ($consonant) → $1 \u103C;\r
-# Replace CA + YA with JHA\r
-\u1005\u103b → \u1008;\r
 ####\r
 #### Stage 3\r
 #### Move \u1031, \u1036, and \u103C after consonants.\r
@@ -195,21 +193,11 @@ $zmedialra → \u103C ;
 # Move visarga (\u1038) after other signs\r
 \u1038 ([$vowelmedial]) → $1 \u1038;\r
 \u1038 ([\u1036\u1037\u103A]) → $1 \u1038;\r
-# Reorder\r
-\u1036 \u102f → \u102f \u1036;\r
 ###\r
 ### Stage 6\r
 ### Finish medial sorting, fix conflicting and extra diacritics\r
 ###\r
 ::Null;\r
-# Fix duplicate and overlapping modifiers.\r
-\u102F \u102F+ → \u102F;\r
-\u102F \u1030 → \u102F;\r
-\u102F \u103A → \u102F;\r
-\u102D \u102E → \u102E;\r
-\u1036 \u1036+ → \u1036;\r
-# Remove space directly before diacritics.\r
-[:WSpace:] ([\u102b-\u1032\u1036-\u103e]) → $1;\r
 # Fix 103B/103A order for asat.\r
 ($consonant) \u103B \u103A → $1 \u103A \u103B;\r
 \r
index 76666da..02fdc66 100644 (file)
@@ -3793,16 +3793,6 @@ root {
             }\r
         }\r
 \r
-        ta-fonipa-t-ta {\r
-            alias {"ta-ta_FONIPA"}\r
-        }\r
-        ta-ta_FONIPA {\r
-            file {\r
-                resource:process(transliterator) {"ta_ta_FONIPA.txt"}\r
-                direction {"FORWARD"}\r
-            }\r
-        }\r
-\r
         am-t-tlh {\r
             alias {"tlh-am"}\r
         }\r
diff --git a/source/data/translit/ta_ta_FONIPA.txt b/source/data/translit/ta_ta_FONIPA.txt
deleted file mode 100644 (file)
index 2ded60e..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# © 2016 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html#License\r
-#\r
-# File: ta_ta_FONIPA.txt\r
-# Generated from CLDR\r
-#\r
-\r
-$c = [\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9];\r
-$v = [\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC];\r
-$nasal = [ŋɲɳnm];\r
-# Delete ZWNJ and ZWJ to simplify further processing.\r
-\u200C → ;\r
-\u200D → ;\r
-::NFC;\r
-# Manifest the implicit vowel after every consonant that is not followed by a\r
-# dependent vowel or virama.\r
-($c) } [^$v \u0BCD] → $1 a;\r
-::Null;\r
-ஃப → f;\r
-ஃ → x;\r
-அ → a;\r
-ஆ → aː;\r
-இ → i;\r
-ஈ → iː;\r
-உ → u;\r
-ஊ → uː;\r
-எ → e;\r
-ஏ → eː;\r
-ஐ → aɪ;\r
-ஒ → o;\r
-ஓ → oː;\r
-ஔ → aʊ;\r
-$nasal { க → g;\r
-க → k;\r
-ங → ŋ;\r
-$nasal { ச → d\u0361ʒ;\r
-ச\u0BCDச → t\u0361ʃ;\r
-[ʈr] { ச → t\u0361ʃ;\r
-ச → s \u02BC;\r
-ஜ → d\u0361ʒ;\r
-ஞ → ɲ;\r
-$nasal { ட → ɖ;\r
-ட → ʈ;\r
-ண → ɳ;\r
-$nasal { த → d\u032A;\r
-த → t\u032A;\r
-ந → n;\r
-ன → n;\r
-$nasal { ப → b;\r
-ப → p;\r
-ம → m;\r
-ய → j;\r
-ர → r;\r
-ற\u0BCDற → tʳ;\r
-ற } \u0BCD → tʳ;\r
-$nasal { ற → tʳ;\r
-ற → r;\r
-ல → l;\r
-ள → ɭ;\r
-ழ → ɻ;\r
-வ → ʋ;\r
-ஶ → ʃ;\r
-ஷ → ʂ;\r
-ஸ\u0BCD } ர → ʃ;\r
-ஸ → s;\r
-ஹ → h;\r
-\u0BBE → aː;\r
-\u0BBF → i;\r
-\u0BC0 → iː;\r
-\u0BC1 → u;\r
-\u0BC2 → uː;\r
-\u0BC6 → e;\r
-\u0BC7 → eː;\r
-\u0BC8 → aɪ;\r
-\u0BCA → o;\r
-\u0BCB → oː;\r
-\u0BCC → aʊ;\r
-\u0BCD → ;\r
-\r
index c34d75d..3c45a08 100644 (file)
@@ -40,137 +40,6 @@ For new script codes see http://www.unicode.org/iso15924/codechanges.html
 \r
 ---------------------------------------------------------------------------- ***\r
 \r
-TODO:\r
-- ICU ticket #13061 undo hacks from emoji 5.0 update\r
-- define & use ICU4C_SRC_DIR\r
-\r
----------------------------------------------------------------------------- ***\r
-\r
-Emoji 5.0 update for ICU 59\r
-- ICU 59 mostly remains on Unicode 9.0\r
-- except updates bidi and segmentation data to Unicode 10 beta\r
-\r
-First run of tools on combined icu4c/icu4j/tools trunk after svn repository reorg.\r
-\r
-* Command-line environment setup\r
-\r
-ICU_ROOT=~/svn.icu/trunk\r
-ICU_SRC_DIR=$ICU_ROOT/src\r
-ICU4C_SRC_DIR=$ICU_SRC_DIR/icu4c\r
-ICUDT=icudt59b\r
-export LD_LIBRARY_PATH=$ICU_ROOT/dbg/lib\r
-SRC_DATA_IN=$ICU4C_SRC_DIR/source/data/in\r
-UNIDATA=$ICU4C_SRC_DIR/source/data/unidata\r
-\r
-*** ICU Trac\r
-\r
-- ticket:12900: take Emoji 5.0 properties data into ICU 59 once it's released\r
-- changes directly on trunk\r
-\r
-*** data files & enums & parser code\r
-\r
-* download files\r
-\r
-- download Unicode 9.0 files into a uni90e50 folder: ucd, idna, security (skip uca)\r
-- download emoji 5.0 beta files into the same uni90e50 folder\r
-- download Unicode 10.0 beta files: ucd\r
-  + copy Unicode 10 bidi files to the uni90e50/ucd folder:\r
-    BidiBrackets.txt\r
-    BidiCharacterTest.txt\r
-    BidiMirroring.txt\r
-    BidiTest.txt\r
-    extracted/DerivedBidiClass.txt\r
-  + copy Unicode 10 segmentation files to the uni90e50/ucd folder:\r
-    LineBreak.txt\r
-    auxiliary/*\r
-\r
-* preparseucd.py changes\r
-- adjust for combined trunks\r
-- write new copyright lines\r
-- ignore new Emoji_Component property for now\r
-\r
-* process and/or copy files\r
-- ~/svn.icu/trunk/src/tools/unicode$ py/preparseucd.py ~/unidata/uni90e50/20170322 $ICU_SRC_DIR\r
-  + This writes files (especially ppucd.txt) to the ICU4C unidata and testdata subfolders.\r
-\r
-- cp ~/unidata/uni90e50/20170322/security/confusables.txt $UNIDATA\r
-\r
-* build ICU (make install)\r
-  so that the tools build can pick up the new definitions from the installed header files.\r
-\r
-  $ICU_ROOT/dbg/icu4c$ echo;echo; make -j7 install > out.txt 2>&1 ; tail -n 30 out.txt ; date\r
-\r
-* build Unicode tools using CMake+make\r
-\r
-~/svn.icu/trunk/src/tools/unicode/c/icudefs.txt:\r
-\r
-# Location (--prefix) of where ICU was installed.\r
-set(ICU_INST_DIR /usr/local/google/home/mscherer/svn.icu/trunk/inst/icu4c)\r
-# Location of the ICU4C source tree.\r
-set(ICU4C_SRC_DIR /usr/local/google/home/mscherer/svn.icu/trunk/src/icu4c)\r
-\r
-  ~/svn.icu/trunk/dbg/tools/unicode/c$\r
-    cmake ../../../../src/tools/unicode/c\r
-    make\r
-\r
-* generate core properties data files\r
-  ~/svn.icu/trunk/dbg/tools/unicode/c$\r
-    genprops/genprops $ICU4C_SRC_DIR\r
-- rebuild ICU (make install) & tools\r
-\r
-* run & fix ICU4C tests\r
-- Andy handles RBBI & spoof check test failures\r
-\r
-* update Java data files\r
-- refresh just the UCD/UCA-related/derived files, just to be safe\r
-- see (ICU4C)/source/data/icu4j-readme.txt\r
-- mkdir /tmp/icu4j\r
-- ~/svn.icu/trunk/dbg/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install\r
-  output:\r
-    ...\r
-    Unicode .icu files built to ./out/build/icudt59l\r
-    echo timestamp > uni-core-data\r
-    mkdir -p ./out/icu4j/com/ibm/icu/impl/data/icudt59b\r
-    mkdir -p ./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt59b\r
-    echo pnames.icu uprops.icu ucase.icu ubidi.icu nfc.nrm > ./out/icu4j/add.txt\r
-    LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH  ../bin/icupkg ./out/tmp/icudt59l.dat ./out/icu4j/icudt59b.dat -a ./out/icu4j/add.txt -s ./out/build/icudt59l -x '*' -tb -d ./out/icu4j/com/ibm/icu/impl/data/icudt59b\r
-    mv ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/zoneinfo64.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/metaZones.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/timezoneTypes.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt59b/windowsZones.res" "./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt59b"\r
-    jar cf ./out/icu4j/icudata.jar -C ./out/icu4j com/ibm/icu/impl/data/icudt59b/\r
-    mkdir -p /tmp/icu4j/main/shared/data\r
-    cp ./out/icu4j/icudata.jar /tmp/icu4j/main/shared/data\r
-    jar cf ./out/icu4j/icutzdata.jar -C ./out/icu4j/tzdata com/ibm/icu/impl/data/icudt59b/\r
-    mkdir -p /tmp/icu4j/main/shared/data\r
-    cp ./out/icu4j/icutzdata.jar /tmp/icu4j/main/shared/data\r
-    make[1]: Leaving directory `/usr/local/google/home/mscherer/svn.icu/trunk/dbg/icu4c/data'\r
-- copy the big-endian Unicode data files to another location,\r
-  separate from the other data files,\r
-  and then refresh ICU4J\r
-    cd ~/svn.icu/trunk/dbg/icu4c/data/out/icu4j\r
-    mkdir -p /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/brkitr\r
-    cp com/ibm/icu/impl/data/$ICUDT/confusables.cfu /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT\r
-    cp com/ibm/icu/impl/data/$ICUDT/*.icu /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT\r
-    rm /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/cnvalias.icu\r
-    cp com/ibm/icu/impl/data/$ICUDT/brkitr/* /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/brkitr\r
-    jar uvf ~/svn.icu/trunk/src/icu4j/main/shared/data/icudata.jar -C /tmp/icu4j com/ibm/icu/impl/data/$ICUDT\r
-\r
-* When refreshing all of ICU4J data from ICU4C\r
-- ~/svn.icu/trunk/dbg/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install\r
-- cp /tmp/icu4j/main/shared/data/icudata.jar ~/svn.icu/trunk/src/icu4j/main/shared/data\r
-or\r
-- ~/svn.icu/trunk/dbg/icu4c$ make ICU4J_ROOT=~/svn.icu/trunk/src/icu4j icu4j-data-install\r
-\r
-* refresh Java test .txt files\r
-- copy new .txt files into ICU4J's main/tests/core/src/com/ibm/icu/dev/data/unicode\r
-    cd $ICU4C_SRC_DIR/source/data/unidata\r
-    cp confusables.txt confusablesWholeScript.txt NormalizationCorrections.txt NormalizationTest.txt SpecialCasing.txt UnicodeData.txt ~/svn.icu/trunk/src/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode\r
-    cd ../../test/testdata\r
-    cp BidiCharacterTest.txt BidiTest.txt ~/svn.icu/trunk/src/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode\r
-    cp ~/unidata/uni90e50/20170322/ucd/CompositionExclusions.txt ~/svn.icu/trunk/src/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode\r
-\r
-* run & fix ICU4J tests\r
-\r
----------------------------------------------------------------------------- ***\r
-\r
 Unicode 9.0 update for ICU 58\r
 \r
 * Command-line environment setup\r
index f3c1a1e..ec41626 100644 (file)
@@ -1,5 +1,7 @@
 # confusables.txt\r
-# Date: 2016-06-16, 13:41:30 GMT\r
+# Date: 2016-04-05, 11:47:12 GMT\r
+# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
+# License & terms of use: http://www.unicode.org/copyright.html\r
 # © 2016 Unicode®, Inc.\r
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.\r
 # For terms of use, see http://www.unicode.org/terms_of_use.html\r
index 578adf4..84efb86 100644 (file)
@@ -1,5 +1,3 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html\r
 # Copyright (C) 1999-2016, International Business Machines\r
 # Corporation and others.  All Rights Reserved.\r
 #\r
index 7158124..637436c 100644 (file)
@@ -1,5 +1,3 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html\r
 # Copyright (C) 1999-2016, International Business Machines\r
 # Corporation and others.  All Rights Reserved.\r
 #\r
index 24adbcc..7410e12 100644 (file)
@@ -1,7 +1,7 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html\r
-# Copyright (C) 1999-2016, International Business Machines\r
-# Corporation and others.  All Rights Reserved.\r
+# Unicode Character Database\r
+# Copyright (c) 1991-2016 Unicode, Inc.\r
+# For terms of use, see http://www.unicode.org/terms_of_use.html\r
+# For documentation, see http://www.unicode.org/reports/tr44/\r
 #\r
 # file name: nfkc_cf.txt\r
 #\r
index 4856d24..f5ddc82 100644 (file)
@@ -1,6 +1,6 @@
 # Preparsed UCD generated by ICU preparseucd.py\r
-# Copyright (C) 1991 and later: Unicode, Inc. and others.\r
-# License & terms of use: http://www.unicode.org/copyright.html\r
+# Copyright (c) 1991-2016 Unicode, Inc.\r
+# For terms of use, see http://www.unicode.org/terms_of_use.html\r
 ucd;9.0.0\r
 \r
 property;Catalog;age;Age\r
@@ -1887,79 +1887,79 @@ cp;02AD;age=3.0;na=LATIN LETTER BIDENTAL PERCUSSIVE
 cp;02AE;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK\r
 cp;02AF;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL\r
 \r
-block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy;WB=LE\r
+block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy\r
 # 02B0..02FF Spacing Modifier Letters\r
 # Latin superscript modifier letters\r
-cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;SD;XIDC;XIDS\r
-cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;SD;WB=LE;XIDC;XIDS\r
+cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
 # Miscellaneous phonetic modifiers\r
-cp;02B9;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER PRIME;SB=LE;XIDC;XIDS\r
-cp;02BA;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;XIDC;XIDS\r
-cp;02BB;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER TURNED COMMA;SB=LE;XIDC;XIDS\r
-cp;02BC;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER APOSTROPHE;SB=LE;XIDC;XIDS\r
-cp;02BD;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER REVERSED COMMA;SB=LE;XIDC;XIDS\r
-cp;02BE;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER RIGHT HALF RING;SB=LE;XIDC;XIDS\r
-cp;02BF;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER LEFT HALF RING;SB=LE;XIDC;XIDS\r
-cp;02C0;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER GLOTTAL STOP;SB=LO;XIDC;XIDS\r
-cp;02C1;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER REVERSED GLOTTAL STOP;SB=LO;XIDC;XIDS\r
+cp;02B9;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER PRIME;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02BA;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02BB;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER TURNED COMMA;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02BC;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER APOSTROPHE;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02BD;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER REVERSED COMMA;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02BE;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER RIGHT HALF RING;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02BF;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER LEFT HALF RING;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02C0;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER GLOTTAL STOP;SB=LO;WB=LE;XIDC;XIDS\r
+cp;02C1;Alpha;bc=L;Cased;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER REVERSED GLOTTAL STOP;SB=LO;WB=LE;XIDC;XIDS\r
 cp;02C2;na=MODIFIER LETTER LEFT ARROWHEAD\r
 cp;02C3;na=MODIFIER LETTER RIGHT ARROWHEAD\r
 cp;02C4;ea=A;na=MODIFIER LETTER UP ARROWHEAD\r
 cp;02C5;na=MODIFIER LETTER DOWN ARROWHEAD\r
-cp;02C6;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER CIRCUMFLEX ACCENT;SB=LE;XIDC;XIDS\r
-cp;02C7;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=CARON;SB=LE;XIDC;XIDS\r
-cp;02C8;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER VERTICAL LINE;SB=LE;XIDC;XIDS\r
-cp;02C9;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER MACRON;SB=LE;XIDC;XIDS\r
-cp;02CA;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER ACUTE ACCENT;SB=LE;XIDC;XIDS\r
-cp;02CB;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER GRAVE ACCENT;SB=LE;XIDC;XIDS\r
-cp;02CC;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER LOW VERTICAL LINE;SB=LE;XIDC;XIDS\r
-cp;02CD;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER LOW MACRON;SB=LE;XIDC;XIDS\r
-cp;02CE;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW GRAVE ACCENT;SB=LE;XIDC;XIDS\r
-cp;02CF;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW ACUTE ACCENT;SB=LE;XIDC;XIDS\r
-cp;02D0;Alpha;bc=L;ea=A;Ext;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER TRIANGULAR COLON;SB=LE;XIDC;XIDS\r
-cp;02D1;Alpha;bc=L;Ext;gc=Lm;IDC;IDS;na=MODIFIER LETTER HALF TRIANGULAR COLON;SB=LE;XIDC;XIDS\r
+cp;02C6;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER CIRCUMFLEX ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02C7;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=CARON;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02C8;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER VERTICAL LINE;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02C9;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER MACRON;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02CA;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER ACUTE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02CB;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER GRAVE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02CC;Alpha;gc=Lm;IDC;IDS;lb=BB;na=MODIFIER LETTER LOW VERTICAL LINE;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02CD;Alpha;ea=A;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER LOW MACRON;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02CE;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW GRAVE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02CF;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW ACUTE ACCENT;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02D0;Alpha;bc=L;ea=A;Ext;gc=Lm;IDC;IDS;lb=AI;na=MODIFIER LETTER TRIANGULAR COLON;SB=LE;WB=LE;XIDC;XIDS\r
+cp;02D1;Alpha;bc=L;Ext;gc=Lm;IDC;IDS;na=MODIFIER LETTER HALF TRIANGULAR COLON;SB=LE;WB=LE;XIDC;XIDS\r
 cp;02D2;na=MODIFIER LETTER CENTRED RIGHT HALF RING\r
 cp;02D3;na=MODIFIER LETTER CENTRED LEFT HALF RING\r
 cp;02D4;na=MODIFIER LETTER UP TACK\r
 cp;02D5;na=MODIFIER LETTER DOWN TACK\r
 cp;02D6;na=MODIFIER LETTER PLUS SIGN\r
-cp;02D7;na=MODIFIER LETTER MINUS SIGN\r
+cp;02D7;na=MODIFIER LETTER MINUS SIGN;WB=ML\r
 # Spacing clones of diacritics\r
-cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKD_QC=N;WB=XX\r
-cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKD_QC=N;WB=XX\r
-cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKD_QC=N;WB=XX\r
-cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKD_QC=N;WB=XX\r
-cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKD_QC=N;WB=XX\r
-cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKD_QC=N;WB=XX\r
+cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKD_QC=N\r
+cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKD_QC=N\r
+cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKD_QC=N\r
+cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKD_QC=N\r
+cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKD_QC=N\r
+cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKD_QC=N\r
 # Additions based on 1989 IPA\r
 cp;02DE;na=MODIFIER LETTER RHOTIC HOOK\r
 cp;02DF;age=3.0;ea=A;lb=BB;na=MODIFIER LETTER CROSS ACCENT\r
-cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
-cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS\r
+cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
+cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
 # Tone letters\r
-cp;02E5;na=MODIFIER LETTER EXTRA-HIGH TONE BAR;WB=XX\r
-cp;02E6;na=MODIFIER LETTER HIGH TONE BAR;WB=XX\r
-cp;02E7;na=MODIFIER LETTER MID TONE BAR;WB=XX\r
-cp;02E8;na=MODIFIER LETTER LOW TONE BAR;WB=XX\r
-cp;02E9;na=MODIFIER LETTER EXTRA-LOW TONE BAR;WB=XX\r
+cp;02E5;na=MODIFIER LETTER EXTRA-HIGH TONE BAR\r
+cp;02E6;na=MODIFIER LETTER HIGH TONE BAR\r
+cp;02E7;na=MODIFIER LETTER MID TONE BAR\r
+cp;02E8;na=MODIFIER LETTER LOW TONE BAR\r
+cp;02E9;na=MODIFIER LETTER EXTRA-LOW TONE BAR\r
 # Extended Bopomofo tone marks\r
-cp;02EA;age=3.0;na=MODIFIER LETTER YIN DEPARTING TONE MARK;sc=Bopo;WB=XX\r
-cp;02EB;age=3.0;na=MODIFIER LETTER YANG DEPARTING TONE MARK;sc=Bopo;WB=XX\r
+cp;02EA;age=3.0;na=MODIFIER LETTER YIN DEPARTING TONE MARK;sc=Bopo\r
+cp;02EB;age=3.0;na=MODIFIER LETTER YANG DEPARTING TONE MARK;sc=Bopo\r
 # IPA modifiers\r
-cp;02EC;age=3.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER VOICING;SB=LE;XIDC;XIDS\r
+cp;02EC;age=3.0;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER VOICING;SB=LE;WB=LE;XIDC;XIDS\r
 cp;02ED;age=3.0;na=MODIFIER LETTER UNASPIRATED\r
 # Other modifier letter\r
-cp;02EE;age=3.0;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE APOSTROPHE;SB=LE;XIDC;XIDS\r
+cp;02EE;age=3.0;Alpha;bc=L;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE APOSTROPHE;SB=LE;WB=LE;XIDC;XIDS\r
 # UPA modifiers\r
 cp;02EF;age=4.0;na=MODIFIER LETTER LOW DOWN ARROWHEAD\r
 cp;02F0;age=4.0;na=MODIFIER LETTER LOW UP ARROWHEAD\r
@@ -3482,9 +3482,7 @@ cp;085C..085D;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;jt=U;lb=XX;SB=XX;sc=Zzzz;WB
 # Punctuation\r
 cp;085E;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=MANDAIC PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS\r
 cp;085F;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;jt=U;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;0860..086A;bc=AL;lb=AL;SB=LE;WB=LE\r
-cp;086B..086F;bc=AL\r
-cp;0870..089F;bc=R\r
+cp;0860..089F;bc=R\r
 \r
 block;08A0..08FF;age=6.1;Alpha;bc=NSM;blk=Arabic_Ext_A;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC\r
 # 08A0..08FF Arabic Extended-A\r
@@ -3734,135 +3732,133 @@ cp;097D;age=4.1;na=DEVANAGARI LETTER GLOTTAL STOP
 cp;097E;age=5.0;na=DEVANAGARI LETTER DDDA\r
 cp;097F;age=5.0;na=DEVANAGARI LETTER BBA\r
 \r
-block;0980..09FF;age=1.1;Alpha;blk=Bengali;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Beng;WB=LE;XIDC\r
+block;0980..09FF;age=1.1;Alpha;blk=Bengali;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Beng;WB=LE;XIDC;XIDS\r
 # 0980..09FF Bengali\r
 # Various signs\r
-cp;0980;age=7.0;IDS;InSC=Other;na=BENGALI ANJI;XIDS\r
-cp;0981;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BENGALI SIGN CANDRABINDU;SB=EX;WB=Extend\r
-cp;0982;gc=Mc;GCB=SM;InPC=Right;InSC=Bindu;lb=CM;na=BENGALI SIGN ANUSVARA;SB=EX;WB=Extend\r
-cp;0983;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=BENGALI SIGN VISARGA;SB=EX;WB=Extend\r
-cp;0984;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;0980;age=7.0;InSC=Other;na=BENGALI ANJI\r
+cp;0981;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BENGALI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS\r
+cp;0982;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=BENGALI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS\r
+cp;0983;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=BENGALI SIGN VISARGA;SB=EX;WB=Extend;-XIDS\r
+cp;0984;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Independent vowels\r
-cp;0985;IDS;InSC=Vowel_Independent;na=BENGALI LETTER A;XIDS\r
-cp;0986;IDS;InSC=Vowel_Independent;na=BENGALI LETTER AA;XIDS\r
-cp;0987;IDS;InSC=Vowel_Independent;na=BENGALI LETTER I;XIDS\r
-cp;0988;IDS;InSC=Vowel_Independent;na=BENGALI LETTER II;XIDS\r
-cp;0989;IDS;InSC=Vowel_Independent;na=BENGALI LETTER U;XIDS\r
-cp;098A;IDS;InSC=Vowel_Independent;na=BENGALI LETTER UU;XIDS\r
-cp;098B;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC R;XIDS\r
-cp;098C;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC L;XIDS\r
-cp;098D..098E;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;098F;IDS;InSC=Vowel_Independent;na=BENGALI LETTER E;XIDS\r
-cp;0990;IDS;InSC=Vowel_Independent;na=BENGALI LETTER AI;XIDS\r
-cp;0991..0992;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;0993;IDS;InSC=Vowel_Independent;na=BENGALI LETTER O;XIDS\r
-cp;0994;IDS;InSC=Vowel_Independent;na=BENGALI LETTER AU;XIDS\r
+cp;0985;InSC=Vowel_Independent;na=BENGALI LETTER A\r
+cp;0986;InSC=Vowel_Independent;na=BENGALI LETTER AA\r
+cp;0987;InSC=Vowel_Independent;na=BENGALI LETTER I\r
+cp;0988;InSC=Vowel_Independent;na=BENGALI LETTER II\r
+cp;0989;InSC=Vowel_Independent;na=BENGALI LETTER U\r
+cp;098A;InSC=Vowel_Independent;na=BENGALI LETTER UU\r
+cp;098B;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC R\r
+cp;098C;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC L\r
+cp;098D..098E;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;098F;InSC=Vowel_Independent;na=BENGALI LETTER E\r
+cp;0990;InSC=Vowel_Independent;na=BENGALI LETTER AI\r
+cp;0991..0992;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;0993;InSC=Vowel_Independent;na=BENGALI LETTER O\r
+cp;0994;InSC=Vowel_Independent;na=BENGALI LETTER AU\r
 # Consonants\r
-cp;0995;IDS;na=BENGALI LETTER KA;XIDS\r
-cp;0996;IDS;na=BENGALI LETTER KHA;XIDS\r
-cp;0997;IDS;na=BENGALI LETTER GA;XIDS\r
-cp;0998;IDS;na=BENGALI LETTER GHA;XIDS\r
-cp;0999;IDS;na=BENGALI LETTER NGA;XIDS\r
-cp;099A;IDS;na=BENGALI LETTER CA;XIDS\r
-cp;099B;IDS;na=BENGALI LETTER CHA;XIDS\r
-cp;099C;IDS;na=BENGALI LETTER JA;XIDS\r
-cp;099D;IDS;na=BENGALI LETTER JHA;XIDS\r
-cp;099E;IDS;na=BENGALI LETTER NYA;XIDS\r
-cp;099F;IDS;na=BENGALI LETTER TTA;XIDS\r
-cp;09A0;IDS;na=BENGALI LETTER TTHA;XIDS\r
-cp;09A1;IDS;na=BENGALI LETTER DDA;XIDS\r
-cp;09A2;IDS;na=BENGALI LETTER DDHA;XIDS\r
-cp;09A3;IDS;na=BENGALI LETTER NNA;XIDS\r
-cp;09A4;IDS;na=BENGALI LETTER TA;XIDS\r
-cp;09A5;IDS;na=BENGALI LETTER THA;XIDS\r
-cp;09A6;IDS;na=BENGALI LETTER DA;XIDS\r
-cp;09A7;IDS;na=BENGALI LETTER DHA;XIDS\r
-cp;09A8;IDS;na=BENGALI LETTER NA;XIDS\r
-cp;09A9;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;09AA;IDS;na=BENGALI LETTER PA;XIDS\r
-cp;09AB;IDS;na=BENGALI LETTER PHA;XIDS\r
-cp;09AC;IDS;na=BENGALI LETTER BA;XIDS\r
-cp;09AD;IDS;na=BENGALI LETTER BHA;XIDS\r
-cp;09AE;IDS;na=BENGALI LETTER MA;XIDS\r
-cp;09AF;IDS;na=BENGALI LETTER YA;XIDS\r
-cp;09B0;IDS;na=BENGALI LETTER RA;XIDS\r
-cp;09B1;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;09B2;IDS;na=BENGALI LETTER LA;XIDS\r
-cp;09B3..09B5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;09B6;IDS;na=BENGALI LETTER SHA;XIDS\r
-cp;09B7;IDS;na=BENGALI LETTER SSA;XIDS\r
-cp;09B8;IDS;na=BENGALI LETTER SA;XIDS\r
-cp;09B9;IDS;na=BENGALI LETTER HA;XIDS\r
-cp;09BA..09BB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;0995;na=BENGALI LETTER KA\r
+cp;0996;na=BENGALI LETTER KHA\r
+cp;0997;na=BENGALI LETTER GA\r
+cp;0998;na=BENGALI LETTER GHA\r
+cp;0999;na=BENGALI LETTER NGA\r
+cp;099A;na=BENGALI LETTER CA\r
+cp;099B;na=BENGALI LETTER CHA\r
+cp;099C;na=BENGALI LETTER JA\r
+cp;099D;na=BENGALI LETTER JHA\r
+cp;099E;na=BENGALI LETTER NYA\r
+cp;099F;na=BENGALI LETTER TTA\r
+cp;09A0;na=BENGALI LETTER TTHA\r
+cp;09A1;na=BENGALI LETTER DDA\r
+cp;09A2;na=BENGALI LETTER DDHA\r
+cp;09A3;na=BENGALI LETTER NNA\r
+cp;09A4;na=BENGALI LETTER TA\r
+cp;09A5;na=BENGALI LETTER THA\r
+cp;09A6;na=BENGALI LETTER DA\r
+cp;09A7;na=BENGALI LETTER DHA\r
+cp;09A8;na=BENGALI LETTER NA\r
+cp;09A9;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09AA;na=BENGALI LETTER PA\r
+cp;09AB;na=BENGALI LETTER PHA\r
+cp;09AC;na=BENGALI LETTER BA\r
+cp;09AD;na=BENGALI LETTER BHA\r
+cp;09AE;na=BENGALI LETTER MA\r
+cp;09AF;na=BENGALI LETTER YA\r
+cp;09B0;na=BENGALI LETTER RA\r
+cp;09B1;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09B2;na=BENGALI LETTER LA\r
+cp;09B3..09B5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09B6;na=BENGALI LETTER SHA\r
+cp;09B7;na=BENGALI LETTER SSA\r
+cp;09B8;na=BENGALI LETTER SA\r
+cp;09B9;na=BENGALI LETTER HA\r
+cp;09BA..09BB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Various signs\r
-cp;09BC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=BENGALI SIGN NUKTA;SB=EX;WB=Extend\r
-cp;09BD;age=4.0;IDS;InSC=Avagraha;na=BENGALI SIGN AVAGRAHA;XIDS\r
+cp;09BC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=BENGALI SIGN NUKTA;SB=EX;WB=Extend;-XIDS\r
+cp;09BD;age=4.0;InSC=Avagraha;na=BENGALI SIGN AVAGRAHA\r
 # Dependent vowel signs\r
-cp;09BE;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend\r
-cp;09BF;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN I;SB=EX;WB=Extend\r
-cp;09C0;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN II;SB=EX;WB=Extend\r
-cp;09C1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN U;SB=EX;WB=Extend\r
-cp;09C2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN UU;SB=EX;WB=Extend\r
-cp;09C3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend\r
-cp;09C4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend\r
-cp;09C5..09C6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;09C7;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN E;SB=EX;WB=Extend\r
-cp;09C8;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AI;SB=EX;WB=Extend\r
-cp;09C9..09CA;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09BE;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS\r
+cp;09BF;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN I;SB=EX;WB=Extend;-XIDS\r
+cp;09C0;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN II;SB=EX;WB=Extend;-XIDS\r
+cp;09C1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN U;SB=EX;WB=Extend;-XIDS\r
+cp;09C2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS\r
+cp;09C3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS\r
+cp;09C4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS\r
+cp;09C5..09C6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09C7;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN E;SB=EX;WB=Extend;-XIDS\r
+cp;09C8;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AI;SB=EX;WB=Extend;-XIDS\r
+cp;09C9..09CA;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Two-part dependent vowel signs\r
-cp;09CB;dm=09C7 09BE;dt=Can;gc=Mc;GCB=SM;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend\r
-cp;09CC;dm=09C7 09D7;dt=Can;gc=Mc;GCB=SM;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend\r
+cp;09CB;dm=09C7 09BE;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS\r
+cp;09CC;dm=09C7 09D7;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS\r
 # Virama\r
-cp;09CD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BENGALI SIGN VIRAMA;SB=EX;WB=Extend\r
+cp;09CD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BENGALI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS\r
 # Additional consonant\r
-cp;09CE;age=4.1;IDS;InSC=Consonant_Dead;na=BENGALI LETTER KHANDA TA;XIDS\r
-cp;09CF..09D6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09CE;age=4.1;InSC=Consonant_Dead;na=BENGALI LETTER KHANDA TA\r
+cp;09CF..09D6;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Sign\r
-cp;09D7;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend\r
-cp;09D8..09DB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09D7;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS\r
+cp;09D8..09DB;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Additional consonants\r
-cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;IDS;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKD_QC=N;XIDS\r
-cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;IDS;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKD_QC=N;XIDS\r
-cp;09DE;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;IDS;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKD_QC=N;XIDS\r
+cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKD_QC=N\r
+cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKD_QC=N\r
+cp;09DE;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKD_QC=N\r
 # Additional vowels for Sanskrit\r
-cp;09E0;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC RR;XIDS\r
-cp;09E1;IDS;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC LL;XIDS\r
-cp;09E2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend\r
-cp;09E3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend\r
+cp;09E0;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC RR\r
+cp;09E1;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC LL\r
+cp;09E2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS\r
+cp;09E3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BENGALI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS\r
 # Reserved\r
-cp;09E4..09E5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09E4..09E5;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Digits\r
-cp;09E6;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09E7;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09E8;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT TWO;nt=De;nv=2;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09E9;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT THREE;nt=De;nv=3;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09EA;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT FOUR;nt=De;nv=4;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09EB;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT FIVE;nt=De;nv=5;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09EC;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT SIX;nt=De;nv=6;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09ED;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT SEVEN;nt=De;nv=7;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09EE;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
-cp;09EF;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BENGALI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Beng Cakm Sylo;WB=NU\r
+cp;09E6;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09E7;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09E8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT TWO;nt=De;nv=2;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09E9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT THREE;nt=De;nv=3;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09EA;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT FOUR;nt=De;nv=4;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09EB;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT FIVE;nt=De;nv=5;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09EC;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT SIX;nt=De;nv=6;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09ED;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT SEVEN;nt=De;nv=7;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09EE;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
+cp;09EF;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS\r
 # Additions for Assamese\r
-cp;09F0;IDS;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL;XIDS\r
-cp;09F1;IDS;na=BENGALI LETTER RA WITH LOWER DIAGONAL;XIDS\r
+cp;09F0;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL\r
+cp;09F1;na=BENGALI LETTER RA WITH LOWER DIAGONAL\r
 # Currency signs\r
-cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC\r
-cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC\r
+cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS\r
 # Historic symbols for fractional values\r
-cp;09F4;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC\r
-cp;09F5;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR TWO;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC\r
-cp;09F6;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR THREE;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC\r
-cp;09F7;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR FOUR;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC\r
-cp;09F8;-Alpha;gc=No;-IDC;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC\r
-cp;09F9;-Alpha;gc=No;-IDC;InSC=Other;lb=PO;na=BENGALI CURRENCY DENOMINATOR SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC\r
+cp;09F4;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F5;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR TWO;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F6;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR THREE;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F7;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR FOUR;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F8;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09F9;-Alpha;gc=No;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI CURRENCY DENOMINATOR SIXTEEN;nt=Nu;nv=16;SB=XX;WB=XX;-XIDC;-XIDS\r
 # Sign\r
-cp;09FA;-Alpha;gc=So;-IDC;InSC=Other;na=BENGALI ISSHAR;SB=XX;WB=XX;-XIDC\r
+cp;09FA;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=BENGALI ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS\r
 # Historic currency sign\r
-cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PR;na=BENGALI GANDA MARK;SB=XX;WB=XX;-XIDC\r
-cp;09FC;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;sc=Zzzz;-XIDC\r
-cp;09FD;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;09FE..09FF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=BENGALI GANDA MARK;SB=XX;WB=XX;-XIDC;-XIDS\r
+cp;09FC..09FF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 \r
 block;0A00..0A7F;age=1.1;Alpha;blk=Gurmukhi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Guru;WB=LE;XIDC;XIDS\r
 # 0A00..0A7F Gurmukhi\r
@@ -4089,7 +4085,7 @@ cp;0AF1;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=GUJARATI RUPEE
 cp;0AF2..0AF8;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Additional consonant\r
 cp;0AF9;age=8.0;na=GUJARATI LETTER ZHA\r
-cp;0AFA..0AFF;age=NA;-Alpha;bc=NSM;gc=Cn;GCB=EX;-Gr_Base;-IDC;-IDS;InSC=Other;lb=CM;SB=EX;sc=Zzzz;WB=Extend;-XIDC;-XIDS\r
+cp;0AFA..0AFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 \r
 block;0B00..0B7F;age=1.1;Alpha;blk=Oriya;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Orya;WB=LE;XIDC;XIDS\r
 # 0B00..0B7F Oriya\r
@@ -4566,7 +4562,7 @@ cp;0CF3..0CFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Z
 \r
 block;0D00..0D7F;age=1.1;Alpha;blk=Malayalam;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mlym;WB=LE;XIDC;XIDS\r
 # 0D00..0D7F Malayalam\r
-cp;0D00;age=NA;-Alpha;bc=NSM;gc=Cn;GCB=EX;-Gr_Base;-IDC;-IDS;InSC=Other;lb=CM;SB=EX;sc=Zzzz;WB=Extend;-XIDC;-XIDS\r
+cp;0D00;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Various signs\r
 cp;0D01;age=7.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=MALAYALAM SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS\r
 cp;0D02;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=MALAYALAM SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS\r
@@ -4628,7 +4624,7 @@ cp;0D37;na=MALAYALAM LETTER SSA
 cp;0D38;na=MALAYALAM LETTER SA\r
 cp;0D39;na=MALAYALAM LETTER HA\r
 cp;0D3A;age=6.0;na=MALAYALAM LETTER TTTA\r
-cp;0D3B..0D3C;age=NA;-Alpha;bc=NSM;gc=Cn;GCB=EX;-Gr_Base;-IDC;-IDS;InSC=Other;lb=CM;SB=EX;sc=Zzzz;WB=Extend;-XIDC;-XIDS\r
+cp;0D3B..0D3C;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Addition for Sanskrit\r
 cp;0D3D;age=5.1;InSC=Avagraha;na=MALAYALAM SIGN AVAGRAHA\r
 # Dependent vowel signs\r
@@ -8599,7 +8595,7 @@ cp;1CF4;age=6.1;ccc=230;InPC=Top;InSC=Cantillation_Mark;na=VEDIC TONE CANDRA ABO
 # Signs\r
 cp;1CF5;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=AL;na=VEDIC SIGN JIHVAMULIYA;SB=LE;sc=Zyyy;scx=Deva Knda;WB=LE;XIDS\r
 cp;1CF6;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=AL;na=VEDIC SIGN UPADHMANIYA;SB=LE;sc=Zyyy;WB=LE;XIDS\r
-cp;1CF7;age=NA;bc=L;-CI;-Dia;gc=Cn;GCB=SM;-Gr_Ext;-IDC;jt=U;sc=Zzzz;scx=<script>;-XIDC\r
+cp;1CF7;age=NA;bc=L;-CI;-Dia;gc=Cn;GCB=XX;-Gr_Ext;-IDC;jt=U;lb=XX;SB=XX;sc=Zzzz;scx=<script>;WB=XX;-XIDC\r
 # Signs for Jaiminiya Sama Veda\r
 cp;1CF8;age=7.0;ccc=230;InSC=Cantillation_Mark;na=VEDIC TONE RING ABOVE;scx=Deva Gran\r
 cp;1CF9;age=7.0;ccc=230;InSC=Cantillation_Mark;na=VEDIC TONE DOUBLE RING ABOVE;scx=Deva Gran\r
@@ -8883,8 +8879,7 @@ cp;1DF3;age=7.0;Alpha;na=COMBINING LATIN SMALL LETTER O WITH DIAERESIS
 cp;1DF4;age=7.0;Alpha;na=COMBINING LATIN SMALL LETTER U WITH DIAERESIS\r
 # Diacritic for American lexicography\r
 cp;1DF5;age=7.0;Dia;na=COMBINING UP TACK ABOVE\r
-cp;1DF6..1DF9;age=NA;ccc=0;-CI;gc=Cn;-Gr_Ext;-IDC;jt=U;sc=Zzzz;-XIDC\r
-cp;1DFA;age=NA;bc=L;ccc=0;-CI;gc=Cn;GCB=XX;-Gr_Ext;-IDC;jt=U;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
+cp;1DF6..1DFA;age=NA;bc=L;ccc=0;-CI;gc=Cn;GCB=XX;-Gr_Ext;-IDC;jt=U;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
 # Miscellaneous mark\r
 cp;1DFB;age=9.0;InPC=Top;InSC=Syllable_Modifier;na=COMBINING DELETION MARK\r
 # Double diacritic mark for UPA\r
@@ -9636,8 +9631,7 @@ cp;20BB;age=7.0;lb=PO;na=NORDIC MARK SIGN
 cp;20BC;age=7.0;na=MANAT SIGN\r
 cp;20BD;age=7.0;na=RUBLE SIGN\r
 cp;20BE;age=8.0;lb=PO;na=LARI SIGN\r
-cp;20BF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;20C0..20CF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;20BF..20CF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
 \r
 block;20D0..20FF;age=1.1;bc=NSM;blk=Diacriticals_For_Symbols;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;Math;SB=EX;sc=Zinh;WB=Extend;XIDC\r
 # 20D0..20FF Combining Diacritical Marks for Symbols\r
@@ -10561,7 +10555,7 @@ cp;23FC;age=9.0;na=POWER ON-OFF SYMBOL
 cp;23FD;age=9.0;na=POWER ON SYMBOL\r
 # Power symbol from IEEE 1621-2004\r
 cp;23FE;age=9.0;na=POWER SLEEP SYMBOL\r
-cp;23FF;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;23FF;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
 \r
 block;2400..243F;age=1.1;bc=ON;blk=Control_Pictures;gc=So;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy\r
 # 2400..243F Control Pictures\r
@@ -11164,9 +11158,9 @@ cp;263C;na=WHITE SUN WITH RAYS
 cp;263D;na=FIRST QUARTER MOON\r
 cp;263E;na=LAST QUARTER MOON\r
 cp;263F;na=MERCURY\r
-cp;2640;ea=A;Emoji;GCB=GAZ;lb=AI;Math;na=FEMALE SIGN;WB=GAZ\r
+cp;2640;ea=A;Emoji;lb=AI;Math;na=FEMALE SIGN\r
 cp;2641;na=EARTH\r
-cp;2642;ea=A;Emoji;GCB=GAZ;lb=AI;Math;na=MALE SIGN;WB=GAZ\r
+cp;2642;ea=A;Emoji;lb=AI;Math;na=MALE SIGN\r
 cp;2643;na=JUPITER\r
 cp;2644;na=SATURN\r
 cp;2645;na=URANUS\r
@@ -11261,8 +11255,8 @@ cp;2691;age=4.0;na=BLACK FLAG
 cp;2692;age=4.1;Emoji;na=HAMMER AND PICK\r
 cp;2693;age=4.1;ea=W;Emoji;Emoji_Presentation;na=ANCHOR\r
 cp;2694;age=4.1;Emoji;na=CROSSED SWORDS\r
-cp;2695;age=4.1;Emoji;GCB=GAZ;na=STAFF OF AESCULAPIUS;WB=GAZ\r
-cp;2696;age=4.1;Emoji;GCB=GAZ;na=SCALES;WB=GAZ\r
+cp;2695;age=4.1;Emoji;na=STAFF OF AESCULAPIUS\r
+cp;2696;age=4.1;Emoji;na=SCALES\r
 cp;2697;age=4.1;Emoji;na=ALEMBIC\r
 cp;2698;age=4.1;na=FLOWER\r
 cp;2699;age=4.1;Emoji;na=GEAR\r
@@ -11400,7 +11394,7 @@ cp;2704;lb=ID;na=WHITE SCISSORS
 cp;2705;age=6.0;ea=W;Emoji;Emoji_Presentation;na=WHITE HEAVY CHECK MARK\r
 cp;2706;na=TELEPHONE LOCATION SIGN\r
 cp;2707;na=TAPE DRIVE\r
-cp;2708;Emoji;GCB=GAZ;lb=ID;na=AIRPLANE;WB=GAZ\r
+cp;2708;Emoji;lb=ID;na=AIRPLANE\r
 cp;2709;Emoji;lb=ID;na=ENVELOPE\r
 cp;270A;age=6.0;ea=W;Emoji;Emoji_Modifier_Base;Emoji_Presentation;GCB=EB;lb=EB;na=RAISED FIST;WB=EB\r
 cp;270B;age=6.0;ea=W;Emoji;Emoji_Modifier_Base;Emoji_Presentation;GCB=EB;lb=EB;na=RAISED HAND;WB=EB\r
@@ -12759,8 +12753,7 @@ cp;2BCF;na=ROTATED WHITE FOUR POINTED CUSP
 # Miscellaneous symbols\r
 cp;2BD0;na=SQUARE POSITION INDICATOR\r
 cp;2BD1;na=UNCERTAINTY SIGN\r
-cp;2BD2;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;2BD3..2BEB;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
+cp;2BD2..2BEB;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
 # Two-headed arrow symbols\r
 cp;2BEC;age=8.0;na=LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS\r
 cp;2BED;age=8.0;na=UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS\r
@@ -13386,8 +13379,7 @@ cp;2E42;age=7.0;gc=Ps;lb=OP;na=DOUBLE LOW-REVERSED-9 QUOTATION MARK;QMark;SB=CL
 cp;2E43;age=9.0;na=DASH WITH LEFT UPTURN;scx=Cyrl Glag\r
 # Miscellaneous punctuation\r
 cp;2E44;age=9.0;na=DOUBLE SUSPENSION MARK\r
-cp;2E45..2E49;age=NA;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;2E4A..2E7F;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
+cp;2E45..2E7F;age=NA;bc=L;gc=Cn;-Gr_Base;lb=XX;sc=Zzzz\r
 \r
 block;2E80..2EFF;age=3.0;bc=ON;blk=CJK_Radicals_Sup;ea=W;gc=So;Gr_Base;lb=ID;Radical;sc=Hani\r
 # 2E80..2EFF CJK Radicals Supplement\r
@@ -14080,8 +14072,7 @@ cp;312B;na=BOPOMOFO LETTER NG
 cp;312C;na=BOPOMOFO LETTER GN\r
 # Miscellaneous addition\r
 cp;312D;age=5.1;na=BOPOMOFO LETTER IH\r
-cp;312E;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;sc=Zzzz;-XIDC;-XIDS\r
-cp;312F;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
+cp;312E..312F;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 \r
 block;3130..318F;age=1.1;Alpha;blk=Compat_Jamo;CWKCF;dt=Com;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hang;WB=LE;XIDC;XIDS\r
 # 3130..318F Hangul Compatibility Jamo\r
@@ -14984,8 +14975,7 @@ cp;9FBC..9FC3;age=5.1
 cp;9FC4..9FCB;age=5.2\r
 cp;9FCC;age=6.1\r
 cp;9FCD..9FD5;age=8.0\r
-cp;9FD6..9FEA;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-Ideo;-IDS;sc=Zzzz;-UIdeo;-XIDC;-XIDS\r
-cp;9FEB..9FFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-Ideo;-IDS;SB=XX;sc=Zzzz;-UIdeo;-XIDC;-XIDS\r
+cp;9FD6..9FFF;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-Ideo;-IDS;SB=XX;sc=Zzzz;-UIdeo;-XIDC;-XIDS\r
 \r
 block;A000..A48F;age=3.0;Alpha;blk=Yi_Syllables;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Yiii;WB=LE;XIDC;XIDS\r
 # A000..A48F Yi Syllables\r
@@ -16839,8 +16829,8 @@ cp;A71F;age=5.1;Alpha;Dia;gc=Lm;IDC;IDS;na=MODIFIER LETTER LOW INVERTED EXCLAMAT
 block;A720..A7FF;age=5.1;Alpha;blk=Latin_Ext_D;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS\r
 # A720..A7FF Latin Extended-D\r
 # Additions for UPA\r
-cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
-cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
+cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
+cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
 # Egyptological additions\r
 cp;A722;cf=A723;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;NFKC_CF=A723;SB=UP;scf=A723;slc=A723;Upper\r
 cp;A723;CWT;CWU;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL ALEF;stc=A722;suc=A722\r
@@ -16949,8 +16939,8 @@ cp;A786;cf=A787;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR T;NFKC_CF=A
 cp;A787;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR T;stc=A786;suc=A786\r
 # Modifier letters\r
 cp;A788;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=MODIFIER LETTER LOW CIRCUMFLEX ACCENT;SB=LE;sc=Zyyy\r
-cp;A789;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
-cp;A78A;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
+cp;A789;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
+cp;A78A;-Alpha;-Cased;CI;-CWCM;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
 # Orthographic letters for glottals\r
 cp;A78B;cf=A78C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SALTILLO;NFKC_CF=A78C;SB=UP;scf=A78C;slc=A78C;Upper\r
 cp;A78C;CWT;CWU;Lower;na=LATIN SMALL LETTER SALTILLO;stc=A78B;suc=A78B\r
@@ -17931,7 +17921,7 @@ cp;AB58;na=LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING
 cp;AB59;na=LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF\r
 cp;AB5A;na=LATIN SMALL LETTER Y WITH SHORT RIGHT LEG\r
 # Modifier letters for German dialectology\r
-cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;-XIDC;-XIDS\r
+cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS\r
 cp;AB5C;CI;CWKCF;Dia;dm=A727;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL HENG;NFKC_CF=A727;NFKC_QC=N;NFKD_QC=N\r
 cp;AB5D;CI;CWKCF;Dia;dm=AB37;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH INVERTED LAZY S;NFKC_CF=AB37;NFKC_QC=N;NFKD_QC=N\r
 cp;AB5E;CI;CWKCF;Dia;dm=026B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_QC=N;NFKD_QC=N\r
@@ -20937,8 +20927,7 @@ cp;10320;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL ONE;nt=Nu;nv=1;SB=XX;WB=XX
 cp;10321;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL FIVE;nt=Nu;nv=5;SB=XX;WB=XX;-XIDC;-XIDS\r
 cp;10322;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC;-XIDS\r
 cp;10323;-Alpha;gc=No;-IDC;-IDS;na=OLD ITALIC NUMERAL FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC;-XIDS\r
-cp;10324..1032C;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
-cp;1032D..1032F;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;sc=Zzzz;-XIDC;-XIDS\r
+cp;10324..1032F;age=NA;-Alpha;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 \r
 block;10330..1034F;age=3.1;Alpha;blk=Gothic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Goth;WB=LE;XIDC;XIDS\r
 # 10330..1034F Gothic\r
@@ -24385,36 +24374,6 @@ cp;118F2;-Alpha;-Cased;-CWCM;gc=No;-IDC;-IDS;na=WARANG CITI NUMBER NINETY;nt=Nu;
 cp;118F3..118FE;age=NA;-Alpha;-Cased;-CWCM;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC;-XIDS\r
 # Sign\r
 cp;118FF;-Cased;-CWCM;gc=Lo;na=WARANG CITI OM;SB=LE\r
-cp;11A00;lb=AL;SB=LE;WB=LE\r
-cp;11A01..11A06;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A07..11A08;GCB=SM;lb=CM;SB=EX;WB=Extend\r
-cp;11A09..11A0A;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A0B..11A32;lb=AL;SB=LE;WB=LE\r
-cp;11A33..11A38;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A39;GCB=SM;lb=CM;SB=EX;WB=Extend\r
-cp;11A3A;GCB=PP;lb=AL;SB=LE;WB=LE\r
-cp;11A3B..11A3E;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A3F;lb=BB\r
-cp;11A40;lb=AL\r
-cp;11A41;lb=BA\r
-cp;11A42..11A43;lb=BA;SB=ST\r
-cp;11A44;lb=BA\r
-cp;11A45;lb=BB\r
-cp;11A46;lb=AL\r
-cp;11A47;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A50;lb=AL;SB=LE;WB=LE\r
-cp;11A51..11A56;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A57..11A58;GCB=SM;lb=CM;SB=EX;WB=Extend\r
-cp;11A59..11A5B;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A5C..11A83;lb=AL;SB=LE;WB=LE\r
-cp;11A86..11A89;GCB=PP;lb=AL;SB=LE;WB=LE\r
-cp;11A8A..11A96;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A97;GCB=SM;lb=CM;SB=EX;WB=Extend\r
-cp;11A98..11A99;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11A9A;lb=BA\r
-cp;11A9B..11A9C;lb=BA;SB=ST\r
-cp;11A9E..11AA0;lb=BB\r
-cp;11AA1..11AA2;lb=BA\r
 \r
 block;11AC0..11AFF;age=7.0;Alpha;blk=Pau_Cin_Hau;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Pauc;WB=LE;XIDC;XIDS\r
 # 11AC0..11AFF Pau Cin Hau\r
@@ -24671,16 +24630,6 @@ cp;11CB4;gc=Mc;GCB=SM;Gr_Base;InPC=Right;InSC=Vowel_Dependent;na=MARCHEN VOWEL S
 cp;11CB5;bc=NSM;CI;GCB=EX;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MARCHEN SIGN ANUSVARA\r
 cp;11CB6;bc=NSM;CI;GCB=EX;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MARCHEN SIGN CANDRABINDU\r
 cp;11CB7..11CBF;age=NA;-Alpha;gc=Cn;-IDC;InSC=Other;lb=XX;SB=XX;sc=Zzzz;WB=XX;-XIDC\r
-cp;11D00..11D06;lb=AL;SB=LE;WB=LE\r
-cp;11D08..11D09;lb=AL;SB=LE;WB=LE\r
-cp;11D0B..11D30;lb=AL;SB=LE;WB=LE\r
-cp;11D31..11D36;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11D3A;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11D3C..11D3D;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11D3F..11D45;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11D46;GCB=PP;lb=AL;SB=LE;WB=LE\r
-cp;11D47;bc=NSM;GCB=EX;lb=CM;SB=EX;WB=Extend\r
-cp;11D50..11D59;lb=NU;SB=NU;WB=NU\r
 \r
 block;12000..123FF;age=5.0;Alpha;blk=Cuneiform;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Xsux;WB=LE;XIDC;XIDS\r
 # 12000..123FF Cuneiform\r
@@ -28604,11 +28553,10 @@ cp;16F9D;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-5
 cp;16F9E;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-6\r
 cp;16F9F;CI;Dia;gc=Lm;na=MIAO LETTER REFORMED TONE-8\r
 \r
-block;16FE0..16FFF;blk=Ideographic_Symbols;lb=NS;SB=LE;WB=LE\r
+block;16FE0..16FFF;blk=Ideographic_Symbols\r
 # 16FE0..16FFF Ideographic Symbols and Punctuation\r
 # Tangut mark\r
-cp;16FE0;age=9.0;Alpha;CI;ea=W;Ext;gc=Lm;Gr_Base;IDC;IDS;na=TANGUT ITERATION MARK;sc=Tang;XIDC;XIDS\r
-cp;16FE2..16FFF;lb=XX;SB=XX;WB=XX\r
+cp;16FE0;age=9.0;Alpha;CI;ea=W;Ext;gc=Lm;Gr_Base;IDC;IDS;lb=NS;na=TANGUT ITERATION MARK;SB=LE;sc=Tang;WB=LE;XIDC;XIDS\r
 \r
 block;17000..187FF;blk=Tangut\r
 # 17000..187EC Tangut\r
@@ -29394,9 +29342,7 @@ block;1B000..1B0FF;age=6.0;Alpha;blk=Kana_Sup;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;S
 cp;1B000;na=KATAKANA LETTER ARCHAIC E;sc=Kana;WB=KA\r
 # Historic Hiragana\r
 cp;1B001;na=HIRAGANA LETTER ARCHAIC YE;sc=Hira\r
-cp;1B002..1B0FF;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;-XIDC;-XIDS\r
-cp;1B100..1B11E;lb=ID;SB=LE\r
-cp;1B170..1B2FB;lb=ID;SB=LE\r
+cp;1B002..1B0FF;age=NA;-Alpha;ea=N;gc=Cn;-Gr_Base;-IDC;-IDS;lb=XX;SB=XX;-XIDC;-XIDS\r
 \r
 block;1BC00..1BC9F;age=7.0;Alpha;blk=Duployan;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Dupl;WB=LE;XIDC;XIDS\r
 # 1BC00..1BC9F Duployan\r
@@ -33195,9 +33141,7 @@ cp;1F249..1F24F;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc
 # Circled ideographs\r
 cp;1F250;age=6.0;dm=5F97;dt=Enc;Emoji;Emoji_Presentation;na=CIRCLED IDEOGRAPH ADVANTAGE;NFKC_CF=5F97;scx=Hani\r
 cp;1F251;age=6.0;dm=53EF;dt=Enc;Emoji;Emoji_Presentation;na=CIRCLED IDEOGRAPH ACCEPT;NFKC_CF=53EF;scx=Hani\r
-cp;1F252..1F25F;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
-cp;1F260..1F265;age=NA;bc=ON;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
-cp;1F266..1F2FF;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
+cp;1F252..1F2FF;age=NA;-CWKCF;dt=None;ea=N;gc=Cn;-Gr_Base;NFKC_QC=Y;NFKD_QC=Y;sc=Zzzz\r
 \r
 block;1F300..1F5FF;age=6.0;bc=ON;blk=Misc_Pictographs;ea=W;Emoji;Emoji_Presentation;gc=So;Gr_Base;lb=ID;sc=Zyyy\r
 # 1F300..1F5FF Miscellaneous Symbols and Pictographs\r
@@ -33210,7 +33154,7 @@ cp;1F304;na=SUNRISE OVER MOUNTAINS
 cp;1F305;na=SUNRISE\r
 cp;1F306;na=CITYSCAPE AT DUSK\r
 cp;1F307;na=SUNSET OVER BUILDINGS\r
-cp;1F308;GCB=GAZ;na=RAINBOW;WB=GAZ\r
+cp;1F308;na=RAINBOW\r
 cp;1F309;na=BRIDGE AT NIGHT\r
 cp;1F30A;na=WATER WAVE\r
 cp;1F30B;na=VOLCANO\r
@@ -33269,7 +33213,7 @@ cp;1F33A;na=HIBISCUS
 cp;1F33B;na=SUNFLOWER\r
 cp;1F33C;na=BLOSSOM\r
 cp;1F33D;na=EAR OF MAIZE\r
-cp;1F33E;GCB=GAZ;na=EAR OF RICE;WB=GAZ\r
+cp;1F33E;na=EAR OF RICE\r
 cp;1F33F;na=HERB\r
 cp;1F340;na=FOUR LEAF CLOVER\r
 cp;1F341;na=MAPLE LEAF\r
@@ -33324,7 +33268,7 @@ cp;1F36F;na=HONEY POT
 cp;1F370;na=SHORTCAKE\r
 cp;1F371;na=BENTO BOX\r
 cp;1F372;na=POT OF FOOD\r
-cp;1F373;GCB=GAZ;na=COOKING;WB=GAZ\r
+cp;1F373;na=COOKING\r
 cp;1F374;na=FORK AND KNIFE\r
 # Beverage symbols\r
 cp;1F375;na=TEACUP WITHOUT HANDLE\r
@@ -33360,7 +33304,7 @@ cp;1F38F;na=CARP STREAMER
 cp;1F390;na=WIND CHIME\r
 cp;1F391;na=MOON VIEWING CEREMONY\r
 cp;1F392;na=SCHOOL SATCHEL\r
-cp;1F393;GCB=GAZ;na=GRADUATION CAP;WB=GAZ\r
+cp;1F393;na=GRADUATION CAP\r
 cp;1F394;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=HEART WITH TIP ON THE LEFT\r
 cp;1F395;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=BOUQUET OF FLOWERS\r
 cp;1F396;age=7.0;ea=N;-Emoji_Presentation;na=MILITARY MEDAL\r
@@ -33379,11 +33323,11 @@ cp;1F3A0;na=CAROUSEL HORSE
 cp;1F3A1;na=FERRIS WHEEL\r
 cp;1F3A2;na=ROLLER COASTER\r
 cp;1F3A3;na=FISHING POLE AND FISH\r
-cp;1F3A4;GCB=GAZ;na=MICROPHONE;WB=GAZ\r
+cp;1F3A4;na=MICROPHONE\r
 cp;1F3A5;na=MOVIE CAMERA\r
 cp;1F3A6;na=CINEMA\r
 cp;1F3A7;na=HEADPHONE\r
-cp;1F3A8;GCB=GAZ;na=ARTIST PALETTE;WB=GAZ\r
+cp;1F3A8;na=ARTIST PALETTE\r
 cp;1F3A9;na=TOP HAT\r
 cp;1F3AA;na=CIRCUS TENT\r
 cp;1F3AB;na=TICKET\r
@@ -33412,17 +33356,17 @@ cp;1F3BE;na=TENNIS RACQUET AND BALL
 cp;1F3BF;na=SKI AND SKI BOOT\r
 cp;1F3C0;na=BASKETBALL AND HOOP\r
 cp;1F3C1;na=CHEQUERED FLAG\r
-cp;1F3C2;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SNOWBOARDER;WB=EB\r
+cp;1F3C2;Emoji_Modifier_Base;na=SNOWBOARDER\r
 cp;1F3C3;Emoji_Modifier_Base;GCB=EB;lb=EB;na=RUNNER;WB=EB\r
 cp;1F3C4;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SURFER;WB=EB\r
 cp;1F3C5;age=7.0;na=SPORTS MEDAL\r
 cp;1F3C6;na=TROPHY\r
-cp;1F3C7;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HORSE RACING;WB=EB\r
+cp;1F3C7;Emoji_Modifier_Base;na=HORSE RACING\r
 cp;1F3C8;na=AMERICAN FOOTBALL\r
 cp;1F3C9;na=RUGBY FOOTBALL\r
 cp;1F3CA;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SWIMMER;WB=EB\r
 cp;1F3CB;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=WEIGHT LIFTER;WB=EB\r
-cp;1F3CC;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=GOLFER;WB=EB\r
+cp;1F3CC;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;na=GOLFER\r
 cp;1F3CD;age=7.0;ea=N;-Emoji_Presentation;na=RACING MOTORCYCLE\r
 cp;1F3CE;age=7.0;ea=N;-Emoji_Presentation;na=RACING CAR\r
 cp;1F3CF;age=8.0;na=CRICKET BAT AND BALL\r
@@ -33454,9 +33398,9 @@ cp;1F3E7;na=AUTOMATED TELLER MACHINE
 cp;1F3E8;na=HOTEL\r
 cp;1F3E9;na=LOVE HOTEL\r
 cp;1F3EA;na=CONVENIENCE STORE\r
-cp;1F3EB;GCB=GAZ;na=SCHOOL;WB=GAZ\r
+cp;1F3EB;na=SCHOOL\r
 cp;1F3EC;na=DEPARTMENT STORE\r
-cp;1F3ED;GCB=GAZ;na=FACTORY;WB=GAZ\r
+cp;1F3ED;na=FACTORY\r
 cp;1F3EE;na=IZAKAYA LANTERN\r
 cp;1F3EF;na=JAPANESE CASTLE\r
 cp;1F3F0;na=EUROPEAN CASTLE\r
@@ -33594,12 +33538,12 @@ cp;1F466;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=BOY;WB=EBG
 cp;1F467;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=GIRL;WB=EBG\r
 cp;1F468;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=MAN;WB=EBG\r
 cp;1F469;Emoji_Modifier_Base;GCB=EBG;lb=EB;na=WOMAN;WB=EBG\r
-cp;1F46A;na=FAMILY\r
-cp;1F46B;na=MAN AND WOMAN HOLDING HANDS\r
-cp;1F46C;na=TWO MEN HOLDING HANDS\r
-cp;1F46D;na=TWO WOMEN HOLDING HANDS\r
+cp;1F46A;Emoji_Modifier_Base;na=FAMILY\r
+cp;1F46B;Emoji_Modifier_Base;na=MAN AND WOMAN HOLDING HANDS\r
+cp;1F46C;Emoji_Modifier_Base;na=TWO MEN HOLDING HANDS\r
+cp;1F46D;Emoji_Modifier_Base;na=TWO WOMEN HOLDING HANDS\r
 cp;1F46E;Emoji_Modifier_Base;GCB=EB;lb=EB;na=POLICE OFFICER;WB=EB\r
-cp;1F46F;na=WOMAN WITH BUNNY EARS\r
+cp;1F46F;Emoji_Modifier_Base;na=WOMAN WITH BUNNY EARS\r
 cp;1F470;Emoji_Modifier_Base;GCB=EB;lb=EB;na=BRIDE WITH VEIL;WB=EB\r
 cp;1F471;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PERSON WITH BLOND HAIR;WB=EB\r
 cp;1F472;Emoji_Modifier_Base;GCB=EB;lb=EB;na=MAN WITH GUA PI MAO;WB=EB\r
@@ -33685,8 +33629,8 @@ cp;1F4B8;na=MONEY WITH WINGS
 cp;1F4B9;na=CHART WITH UPWARDS TREND AND YEN SIGN\r
 # Office symbols\r
 cp;1F4BA;na=SEAT\r
-cp;1F4BB;GCB=GAZ;na=PERSONAL COMPUTER;WB=GAZ\r
-cp;1F4BC;GCB=GAZ;na=BRIEFCASE;WB=GAZ\r
+cp;1F4BB;na=PERSONAL COMPUTER\r
+cp;1F4BC;na=BRIEFCASE\r
 cp;1F4BD;na=MINIDISC\r
 cp;1F4BE;na=FLOPPY DISK\r
 cp;1F4BF;na=OPTICAL DISC\r
@@ -33801,12 +33745,12 @@ cp;1F524;lb=AL;na=INPUT SYMBOL FOR LATIN LETTERS
 # Tool symbols\r
 cp;1F525;na=FIRE\r
 cp;1F526;na=ELECTRIC TORCH\r
-cp;1F527;GCB=GAZ;na=WRENCH;WB=GAZ\r
+cp;1F527;na=WRENCH\r
 cp;1F528;na=HAMMER\r
 cp;1F529;na=NUT AND BOLT\r
 cp;1F52A;na=HOCHO\r
 cp;1F52B;na=PISTOL\r
-cp;1F52C;GCB=GAZ;na=MICROSCOPE;WB=GAZ\r
+cp;1F52C;na=MICROSCOPE\r
 cp;1F52D;na=TELESCOPE\r
 cp;1F52E;na=CRYSTAL BALL\r
 # Miscellaneous symbols\r
@@ -33887,7 +33831,7 @@ cp;1F570;age=7.0;ea=N;-Emoji_Presentation;na=MANTELPIECE CLOCK
 cp;1F571;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=BLACK SKULL AND CROSSBONES\r
 cp;1F572;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=NO PIRACY\r
 cp;1F573;age=7.0;ea=N;-Emoji_Presentation;na=HOLE\r
-cp;1F574;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=MAN IN BUSINESS SUIT LEVITATING;WB=EB\r
+cp;1F574;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;na=MAN IN BUSINESS SUIT LEVITATING\r
 cp;1F575;age=7.0;ea=N;Emoji_Modifier_Base;-Emoji_Presentation;GCB=EB;lb=EB;na=SLEUTH OR SPY;WB=EB\r
 cp;1F576;age=7.0;ea=N;-Emoji_Presentation;na=DARK SUNGLASSES\r
 # Animal symbols\r
@@ -34191,7 +34135,7 @@ cp;1F67F;na=REVERSE CHECKER BOARD
 block;1F680..1F6FF;age=6.0;bc=ON;blk=Transport_And_Map;ea=W;Emoji;Emoji_Presentation;gc=So;Gr_Base;lb=ID;sc=Zyyy\r
 # 1F680..1F6FF Transport and Map Symbols\r
 # Vehicles\r
-cp;1F680;GCB=GAZ;na=ROCKET;WB=GAZ\r
+cp;1F680;na=ROCKET\r
 cp;1F681;na=HELICOPTER\r
 cp;1F682;na=STEAM LOCOMOTIVE\r
 cp;1F683;na=RAILWAY CAR\r
@@ -34209,7 +34153,7 @@ cp;1F68E;na=TROLLEYBUS
 cp;1F68F;na=BUS STOP\r
 cp;1F690;na=MINIBUS\r
 cp;1F691;na=AMBULANCE\r
-cp;1F692;GCB=GAZ;na=FIRE ENGINE;WB=GAZ\r
+cp;1F692;na=FIRE ENGINE\r
 cp;1F693;na=POLICE CAR\r
 cp;1F694;na=ONCOMING POLICE CAR\r
 cp;1F695;na=TAXI\r
@@ -34270,7 +34214,7 @@ cp;1F6C9;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=BOYS SYMBOL
 cp;1F6CA;age=7.0;ea=N;-Emoji;-Emoji_Presentation;na=GIRLS SYMBOL\r
 # Accommodation symbols\r
 cp;1F6CB;age=7.0;ea=N;-Emoji_Presentation;na=COUCH AND LAMP\r
-cp;1F6CC;age=7.0;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SLEEPING ACCOMMODATION;WB=EB\r
+cp;1F6CC;age=7.0;Emoji_Modifier_Base;na=SLEEPING ACCOMMODATION\r
 cp;1F6CD;age=7.0;ea=N;-Emoji_Presentation;na=SHOPPING BAGS\r
 cp;1F6CE;age=7.0;ea=N;-Emoji_Presentation;na=BELLHOP BELL\r
 cp;1F6CF;age=7.0;ea=N;-Emoji_Presentation;na=BED\r
@@ -34278,8 +34222,7 @@ cp;1F6CF;age=7.0;ea=N;-Emoji_Presentation;na=BED
 cp;1F6D0;age=8.0;na=PLACE OF WORSHIP\r
 cp;1F6D1;age=9.0;na=OCTAGONAL SIGN\r
 cp;1F6D2;age=9.0;na=SHOPPING TROLLEY\r
-cp;1F6D3..1F6D4;age=NA;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F6D5..1F6DF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F6D3..1F6DF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Miscellaneous symbols\r
 cp;1F6E0;age=7.0;ea=N;-Emoji_Presentation;na=HAMMER AND WRENCH\r
 cp;1F6E1;age=7.0;ea=N;-Emoji_Presentation;na=SHIELD\r
@@ -34303,8 +34246,7 @@ cp;1F6F3;age=7.0;ea=N;-Emoji_Presentation;na=PASSENGER SHIP
 cp;1F6F4;age=9.0;na=SCOOTER\r
 cp;1F6F5;age=9.0;na=MOTOR SCOOTER\r
 cp;1F6F6;age=9.0;na=CANOE\r
-cp;1F6F7..1F6F8;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F6F9..1F6FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F6F7..1F6FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 \r
 block;1F700..1F77F;age=6.0;bc=ON;blk=Alchemical;gc=So;Gr_Base;lb=AL;sc=Zyyy\r
 # 1F700..1F77F Alchemical Symbols\r
@@ -34726,8 +34668,7 @@ cp;1F8AE..1F8FF;age=NA;bc=L;gc=Cn;-Gr_Base;lb=ID;sc=Zzzz
 \r
 block;1F900..1F9FF;age=9.0;bc=ON;blk=Sup_Symbols_And_Pictographs;ea=W;Emoji;Emoji_Presentation;gc=So;Gr_Base;lb=ID;sc=Zyyy\r
 # 1F900..1F9FF Supplemental Symbols and Pictographs\r
-cp;1F900..1F90B;age=NA;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;lb=AL;sc=Zzzz\r
-cp;1F90C..1F90F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F900..1F90F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Emoticon faces\r
 cp;1F910;age=8.0;na=ZIPPER-MOUTH FACE\r
 cp;1F911;age=8.0;na=MONEY-MOUTH FACE\r
@@ -34743,9 +34684,9 @@ cp;1F919;Emoji_Modifier_Base;GCB=EB;lb=EB;na=CALL ME HAND;WB=EB
 cp;1F91A;Emoji_Modifier_Base;GCB=EB;lb=EB;na=RAISED BACK OF HAND;WB=EB\r
 cp;1F91B;Emoji_Modifier_Base;GCB=EB;lb=EB;na=LEFT-FACING FIST;WB=EB\r
 cp;1F91C;Emoji_Modifier_Base;GCB=EB;lb=EB;na=RIGHT-FACING FIST;WB=EB\r
-cp;1F91D;na=HANDSHAKE\r
+cp;1F91D;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HANDSHAKE;WB=EB\r
 cp;1F91E;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HAND WITH INDEX AND MIDDLE FINGERS CROSSED;WB=EB\r
-cp;1F91F;age=NA;ea=N;Emoji_Modifier_Base;gc=Cn;GCB=EB;-Gr_Base;lb=EB;sc=Zzzz;WB=EB\r
+cp;1F91F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Emoticon faces\r
 cp;1F920;na=FACE WITH COWBOY HAT\r
 cp;1F921;na=CLOWN FACE\r
@@ -34755,10 +34696,10 @@ cp;1F924;na=DROOLING FACE
 cp;1F925;na=LYING FACE\r
 cp;1F926;Emoji_Modifier_Base;GCB=EB;lb=EB;na=FACE PALM;WB=EB\r
 cp;1F927;na=SNEEZING FACE\r
-cp;1F928..1F92F;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F928..1F92F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Portrait and role symbols\r
 cp;1F930;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PREGNANT WOMAN;WB=EB\r
-cp;1F931..1F932;age=NA;ea=N;Emoji_Modifier_Base;gc=Cn;GCB=EB;-Gr_Base;lb=EB;sc=Zzzz;WB=EB\r
+cp;1F931..1F932;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 cp;1F933;Emoji_Modifier_Base;GCB=EB;lb=EB;na=SELFIE;WB=EB\r
 cp;1F934;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PRINCE;WB=EB\r
 cp;1F935;Emoji_Modifier_Base;GCB=EB;lb=EB;na=MAN IN TUXEDO;WB=EB\r
@@ -34768,7 +34709,7 @@ cp;1F938;Emoji_Modifier_Base;GCB=EB;lb=EB;na=PERSON DOING CARTWHEEL;WB=EB
 cp;1F939;Emoji_Modifier_Base;GCB=EB;lb=EB;na=JUGGLING;WB=EB\r
 cp;1F93A;na=FENCER\r
 cp;1F93B;-Emoji;-Emoji_Presentation;na=MODERN PENTATHLON\r
-cp;1F93C;na=WRESTLERS\r
+cp;1F93C;Emoji_Modifier_Base;GCB=EB;lb=EB;na=WRESTLERS;WB=EB\r
 cp;1F93D;Emoji_Modifier_Base;GCB=EB;lb=EB;na=WATER POLO;WB=EB\r
 cp;1F93E;Emoji_Modifier_Base;GCB=EB;lb=EB;na=HANDBALL;WB=EB\r
 cp;1F93F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
@@ -34785,8 +34726,7 @@ cp;1F948;na=SECOND PLACE MEDAL
 cp;1F949;na=THIRD PLACE MEDAL\r
 cp;1F94A;na=BOXING GLOVE\r
 cp;1F94B;na=MARTIAL ARTS UNIFORM\r
-cp;1F94C;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F94D..1F94F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F94C..1F94F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Food symbols\r
 cp;1F950;na=CROISSANT\r
 cp;1F951;na=AVOCADO\r
@@ -34803,8 +34743,7 @@ cp;1F95B;na=GLASS OF MILK
 cp;1F95C;na=PEANUTS\r
 cp;1F95D;na=KIWIFRUIT\r
 cp;1F95E;na=PANCAKES\r
-cp;1F95F..1F96B;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F96C..1F97F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F95F..1F97F;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Animal symbols\r
 cp;1F980;age=8.0;na=CRAB\r
 cp;1F981;age=8.0;na=LION FACE\r
@@ -34824,15 +34763,10 @@ cp;1F98E;na=LIZARD
 cp;1F98F;na=RHINOCEROS\r
 cp;1F990;na=SHRIMP\r
 cp;1F991;na=SQUID\r
-cp;1F992..1F997;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F998..1F9BF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F992..1F9BF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 # Food symbol\r
 cp;1F9C0;age=8.0;na=CHEESE WEDGE\r
-cp;1F9C1..1F9CF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F9D0;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F9D1..1F9DD;age=NA;ea=N;Emoji_Modifier_Base;gc=Cn;GCB=EB;-Gr_Base;lb=EB;sc=Zzzz;WB=EB\r
-cp;1F9DE..1F9E6;age=NA;ea=N;gc=Cn;-Gr_Base;sc=Zzzz\r
-cp;1F9E7..1F9FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
+cp;1F9C1..1F9FF;age=NA;bc=L;ea=N;-Emoji;-Emoji_Presentation;gc=Cn;-Gr_Base;sc=Zzzz\r
 cp;1FA00..1FF7F;lb=ID\r
 # 1FF80..1FFFF Unassigned\r
 cp;1FF80..1FFFD;lb=ID\r
@@ -34874,8 +34808,7 @@ block;2B820..2CEAF;blk=CJK_Ext_E;ea=W;lb=ID
 # 2B820..2CEA1 CJK Unified Ideographs Extension E\r
 algnamesrange;2B820..2CEA1;han;CJK UNIFIED IDEOGRAPH-\r
 cp;2B820..2CEA1;age=8.0;Alpha;gc=Lo;Gr_Base;IDC;Ideo;IDS;SB=LE;sc=Hani;UIdeo;XIDC;XIDS\r
-cp;2CEB0..2EBE0;ea=W;lb=ID;SB=LE\r
-cp;2EBE1..2F7FF;ea=W;lb=ID\r
+cp;2CEB0..2F7FF;ea=W;lb=ID\r
 \r
 block;2F800..2FA1F;age=3.1;Alpha;blk=CJK_Compat_Ideographs_Sup;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hani;XIDC;XIDS\r
 # 2F800..2FA1F CJK Compatibility Ideographs Supplement\r
index f8c6864..14356d0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index fbb04ea..c42c900 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 agq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 68c48e8..03a41ff 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ak{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e8234cf..9f38623 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 am{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 2215823..b2bc13a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar{\r
-    Version{"2.1.32.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
diff --git a/source/data/unit/ar_SA.txt b/source/data/unit/ar_SA.txt
deleted file mode 100644 (file)
index 00baa1f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-/**\r
- * generated alias target\r
- */\r
-ar_SA{\r
-    ___{""}\r
-}\r
diff --git a/source/data/unit/ars.txt b/source/data/unit/ars.txt
deleted file mode 100644 (file)
index 9bb22b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar_SA"}\r
-}\r
index 6b8c1a8..b73ce92 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e26c2b1..44d6b34 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 asa{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ce9ccdf..3f9db2c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ast{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f09e4f1..8c26c06 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 43002da..5c699c3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c0b75a..4ce2adb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 191387a..36ccde7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bas{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5ae54c4..95c17a9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 be{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.66"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index 44bc1b9..d92d6d8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bem{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c52fa07..c1079b7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bez{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 27f9b36..0d584a9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bg{\r
-    Version{"2.1.33.75"}\r
+    Version{"2.1.30.6"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 88a359b..8197c3b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bm{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0fa2472..75a8ad6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 010d5fd..a8c65f8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e611a45..c464841 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 br{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 20ad2fd..8f5c943 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 brx{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         duration{\r
             day{\r
index bcbcab3..cf21c16 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index aff41ef..07fdda3 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.32.72"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         duration{\r
             day{\r
index 972dc01..20b4126 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 116ff4c..c0dbb48 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0ea7f41..f7ad641 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ce{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index aee7a43..a8512f0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cgg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d1ad729..1b48aae 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 chr{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 77d82e3..f0d8d1f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 5fc131a..59ca4be 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cs{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 2bb2829..dc9d075 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cy{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a99cbba..0eb2a93 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index 9a0f850..9e04802 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dav{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 393e9d3..b9e2a98 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 2e94374..c6691b3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de_CH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.33"}\r
     units{\r
         area{\r
             square-foot{\r
index 029e515..ac06912 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dje{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3e93bde..8c11b51 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dsb{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index ddd9f57..05959ba 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d42a779..97ceeaa 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dyo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 96bad80..4282a10 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dz{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.29.61"}\r
     units{\r
         duration{\r
             day{\r
index c7b78cf..cf3920e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ebu{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9115304..e85bf3b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         duration{\r
             day{\r
index fe728c3..cb39958 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 979f5d5..183e7ed 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.50"}\r
     units{\r
         acceleration{\r
             g-force{\r
@@ -141,12 +141,6 @@ en{
                 other{"{0} miles per Imp. gallon"}\r
             }\r
         }\r
-        coordinate{\r
-            east{"{0} east"}\r
-            north{"{0} north"}\r
-            south{"{0} south"}\r
-            west{"{0} west"}\r
-        }\r
         digital{\r
             bit{\r
                 dnam{"bits"}\r
@@ -435,11 +429,6 @@ en{
                 one{"{0} picometer"}\r
                 other{"{0} picometers"}\r
             }\r
-            point{\r
-                dnam{"points"}\r
-                one{"{0} point"}\r
-                other{"{0} points"}\r
-            }\r
             yard{\r
                 dnam{"yards"}\r
                 one{"{0} yard"}\r
@@ -867,12 +856,6 @@ en{
                 other{"{0}m/gUK"}\r
             }\r
         }\r
-        coordinate{\r
-            east{"{0}E"}\r
-            north{"{0}N"}\r
-            south{"{0}S"}\r
-            west{"{0}W"}\r
-        }\r
         digital{\r
             bit{\r
                 dnam{"bit"}\r
@@ -1144,11 +1127,6 @@ en{
                 one{"{0}pm"}\r
                 other{"{0}pm"}\r
             }\r
-            point{\r
-                dnam{"pts"}\r
-                one{"{0}pt"}\r
-                other{"{0}pt"}\r
-            }\r
             yard{\r
                 dnam{"yd"}\r
                 one{"{0}yd"}\r
@@ -1589,12 +1567,6 @@ en{
                 other{"{0} mpg Imp."}\r
             }\r
         }\r
-        coordinate{\r
-            east{"{0} E"}\r
-            north{"{0} N"}\r
-            south{"{0} S"}\r
-            west{"{0} W"}\r
-        }\r
         digital{\r
             bit{\r
                 dnam{"bit"}\r
@@ -1883,11 +1855,6 @@ en{
                 one{"{0} pm"}\r
                 other{"{0} pm"}\r
             }\r
-            point{\r
-                dnam{"points"}\r
-                one{"{0} pt"}\r
-                other{"{0} pt"}\r
-            }\r
             yard{\r
                 dnam{"yards"}\r
                 one{"{0} yd"}\r
index 196174a..6e3a173 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_001{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     units{\r
         acceleration{\r
             meter-per-second-squared{\r
index 78561e0..249596a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a0d454..93d0c87 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 07cb4ef..d55549d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09171c4..b4edb3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index be9dc8c..df909f8 100644 (file)
@@ -2,8 +2,14 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.32.62"}\r
+    Version{"2.1.30.50"}\r
     units{\r
+        coordinate{\r
+            east{"{0} east"}\r
+            north{"{0} north"}\r
+            south{"{0} south"}\r
+            west{"{0} west"}\r
+        }\r
         energy{\r
             kilowatt-hour{\r
                 dnam{"kilowatt hours"}\r
index 84a0efd..7083244 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7065545..c967ad1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a3b9186..17ad945 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 699a947..77895f3 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index a73b7bc..d4c98cf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 24eee21..0fe1cb4 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index 094b3b0..7ce3018 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     unitsNarrow{\r
         concentr{\r
             milligram-per-deciliter{\r
index a54c911..a2871e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f2d948..d055587 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f59d92a..8bd2eba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5aacc7b..e0ae421 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c9c483..a5c8744 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46da087..81d8657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d2d71a..a91a9c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d758dd..af3ee11 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5a92d6b..55574ee 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b548583..4eaa7dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7fd2c9a..228a8a8 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f699cc1..12aebe3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 86f8e9d..c439098 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5df30b2..21a12bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eab91ca..78ffc47 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a57c80..d57d893 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.24"}\r
 }\r
index 7921b24..ab0594c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0d3839..8474cce 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b66f585..33fc5d4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5fe0d68..46d28cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1a05f40..e0d4e60 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7397d6..dec9373 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4a04a10..7c42f22 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 18bb2f3..acfab3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index 76bee45..1500279 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66ecc0..b5e5329 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0ae302f..1c73a40 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 2b8ba3f..73736a0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c47ce4e..f31e9bf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d812c18..67edbc7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b11b581..26213f7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 899b1ea..3f8c7e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35fb03c..f755a2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09d5e8a..8b4b9f7 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index bfd0689..7abb21b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3fc63c0..07b6a83 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b723857..b5123bd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f967e69..9eafad7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f6dfb6a..0b1b6a5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a027fc6..df8f657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8464a2e..23b6896 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 890b025..bb0cc54 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 873b8e1..58ee57a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b36d9ba..064aa6e 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5f0af42..26854fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 358d626..0a360ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 745a114..5038494 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d0d0cd..21bbdc9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 165856c..039e457 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 266914a..eb82604 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c56ed84..0dd2106 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6aa4d92..c1792a4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 080d0e6..0ca66f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fef2013..ccbdf7f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4094568..5bf94f0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9160817..9fc8e3f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     unitsNarrow{\r
         temperature{\r
             celsius{\r
index 76b4d89..7bb21c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2de69a..cb507b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 77c65fa..699d679 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 87a33e2..6206b27 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 31f586b..d7fa572 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5250ec4..66e6ec7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
 }\r
index cf6ab49..968da99 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a259492..fedf1c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3e61485..4005802 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2b3a430..002988b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ec1778f..9862443 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cc8b6f1..47c792d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 852eb0f..eaabbe1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 020c31b..797d773 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d27b6ec..f1697f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21b8b30..599a8fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ebd07d..a2c5021 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5e30f2b..c0c2960 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eaac010..3b6c1e4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12317cf..de17869 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba6619b..e6a295b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12b8824..2cecbf4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c90fd7..a3f70e3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0461373..d528625 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.64"}\r
 }\r
index 19ed0d0..05bb346 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bb5dbed..e725848 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 56de5d7..6e17036 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     unitsShort{\r
         duration{\r
             month{\r
index 19e29b7..c9327b1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.80"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 4d54dcb..dcda68c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_419{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         concentr{\r
             milligram-per-deciliter{\r
index a11c3ec..c3bce7d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_AR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         duration{\r
             year{\r
index abc4e7e..4d20523 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index e68498b..2f5e37a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/unit/es_BZ.txt b/source/data/unit/es_BZ.txt
deleted file mode 100644 (file)
index aa10911..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-es_BZ{\r
-    %%Parent{"es_419"}\r
-    Version{"2.1.32.37"}\r
-}\r
index 3af1563..64bc7d8 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CL{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     durationUnits{\r
         hms{"hh:mm:ss"}\r
         ms{"mm:ss"}\r
index 98ba9a5..bb48239 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         duration{\r
             month{\r
index 7f7bf28..2253e39 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 66f010e..791d7f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 23b0f37..f4d829a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_DO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         electric{\r
             ampere{\r
index 84322b7..5df6499 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_EC{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index f98c2e4..227202a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_GT{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         duration{\r
             day{\r
index 4c06fd0..802179d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_HN{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index d225f31..dd8b21c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_MX{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         angle{\r
             arc-minute{\r
index c6c3bb8..b1eb3f1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_NI{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 0261ff1..4bc4d78 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PA{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 81176e9..122e23f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 130a0f1..0004542 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     unitsNarrow{\r
         temperature{\r
             fahrenheit{\r
index 880c20a..bfee18b 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         duration{\r
             year{\r
index 0442024..f965d31 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_SV{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 588d6a2..1a4e951 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_US{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         concentr{\r
             milligram-per-deciliter{\r
index 38b881e..2344e94 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c1bee1f..d738de6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_VE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 6e4c3ac..0b59b8b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 et{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 82abbbb..4512901 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eu{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 169881c..b70890a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ewo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8fa730e..a9e7d52 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fa{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8992013..f96fea6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5112b90..c0f6581 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fi{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.88"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index bf70499..7205f1b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fil{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a4b1f4b..932276a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 2901e31..43ac967 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index 5250651..4bce0f5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a071224..6c46ce0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_HT{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.63"}\r
     units{\r
         area{\r
             hectare{\r
index b701654..420c75e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fur{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         duration{\r
             day{\r
index 6bb0874..4b40864 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fy{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.44"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index fb88cd0..c8689c1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ga{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 669007e..332c00f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gd{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8513248..696a952 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 3944de9..5973f80 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index ff80df6..818b5a4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gu{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 724ae2e..7a7441a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 guz{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2d77bb..a1fd188 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7ff3356..ed2d82a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 73351f2..fb9771f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 haw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     units{\r
         duration{\r
             day{\r
index 026d0b6..e380225 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 he{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.27"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 47fea1d..749b89c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hi{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 3ebf023..49f2df1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 177fb1c..60541df 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hsb{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 695e844..67b539c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hu{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index ecbe378..9b47a22 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hy{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 39f7535..9111654 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 id{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index ef5f677..cf9fa4e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ig{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 2d28560..d012adf 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7c0c69e..ffd2408 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 is{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.65"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 521d235..5389c73 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0b456f2..bf99b62 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ja{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index b73b9be..324c39a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jgo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index a76db1c..3f79b8d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jmc{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a489edf..8c11c8e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ka{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8ae9971..6260d64 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kab{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 82cc5ce..d9b09c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kam{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 613d9a9..82246fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kde{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ab7fc8f..c301939 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kea{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.46"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a8df930..efabb97 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 khq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 25baae9..0b987fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ki{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 90c7a31..6ebabef 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kk{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a2b45cd..6408b2c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kkj{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f8baf73..24f3c27 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kl{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index b73e7da..fec7e09 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kln{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b854c50..e72f482 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 km{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e7628f8..0d2b933 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kn{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index aafb4a5..e4d698c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.22"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f7965b0..6befe25 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1e658be..7c8e9eb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ks{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     units{\r
         duration{\r
             day{\r
index 6395664..e49e3e3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksb{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 52cb597..cf791c1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksf{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6b3670f..b2eedb9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksh{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 30cb7bd..f38a919 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1898e57..18c6862 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ky{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index f674d0f..07404a5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lag{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 980a85b..4710307 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lb{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a910336..e2d43d3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 24d2a17..2dff991 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lkt{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index d5442b7..1bbfd74 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
 }\r
index 59f3b6b..399b422 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lo{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 9cea48e..187062c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a16c2d6..ec7c6e0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lt{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"hh:mm"}\r
         hms{"hh:mm:ss"}\r
index 2e6c6de..a1c9d14 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lu{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a4f5e4..36fca55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ff3cfe6..09e8b24 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luy{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index db86208..54211fe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lv{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 54e59a7..346d086 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30afe7b..93c169a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mer{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9e25468..cddb7eb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mfe{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 40ca570..56f734e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 10d4b89..ef904aa 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 10587a6..af60ead 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index b23bf47..6becd0c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mk{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 4ded887..a2ae9d1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ml{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 5f1f2f3..4871e44 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mn{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 797be9d..cd26949 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mr{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 52b93ed..0177986 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 47a37f2..d2f84c3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mt{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         angle{\r
             arc-minute{\r
index 4bd09d5..69b1d04 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mua{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 116e13e..52ab5a4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 my{\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.30.50"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 9e7a66f..e2e0910 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mzn{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e1cc798..0f54e17 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 naq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d1fbac9..062d1a7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6c83d4b..1b8024e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nd{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 6dee6e3..6214e96 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
     units{\r
         duration{\r
             day{\r
index 7493bc8..c27a596 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8b76914..490c2f0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 47e6244..1bddab5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nmg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5452afe..70761e4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nn{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 4121deb..e8d48d2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nnh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 00de51f..5933eea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nus{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 50995ba..b361bdd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nyn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 132553a..615abc8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 5c63e3d..c73d23b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 or{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
 }\r
index 7b94ba7..8afccfe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index e8b1213..7d56b67 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 171e15d..e41b709 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc1602d..dca680f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 631cdad..038f0cc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e2d410f..fbeee5f 100644 (file)
Binary files a/source/data/unit/pool.res and b/source/data/unit/pool.res differ
index e598cbb..7231abe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ps{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index 07cfee5..8832f6a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index a385088..2e783ef 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ee7339..a4226b1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ed8f313..829f400 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0f6e235..fd432f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f4cd124..75c5d9d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b5a1669..b5eca2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d30b2ff..c47efaa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 060a5fc..9878c5a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0c9e61d..04d1e36 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_PT{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.54"}\r
     units{\r
         acceleration{\r
             g-force{\r
index e3f0965..fcc981b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b8cb201..8bbbc3d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d7dca9..73bc9c8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index a5bdb9e..3ab22d5 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-UNIT_CLDR_VERSION = 31.0.1\r
+UNIT_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'reslocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'reslocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,20 +26,19 @@ UNIT_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-UNIT_SYNTHETIC_ALIAS = ar_SA.txt ars.txt az_AZ.txt az_Latn_AZ.txt\\r
- bs_BA.txt bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt\\r
- he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
- iw_IL.txt ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt\\r
- nn_NO.txt no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt\\r
- pa_Guru_IN.txt pa_IN.txt pa_PK.txt sh.txt sh_BA.txt\\r
- sh_CS.txt sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt\\r
- sr_CS.txt sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt\\r
- sr_Cyrl_YU.txt sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt\\r
- sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt\\r
- th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt\\r
- uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt\\r
- zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt\\r
- zh_SG.txt zh_TW.txt\r
+UNIT_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
+ en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
+ in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
+ ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
+ no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
+ pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\\r
+ shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_BA.txt\\r
+ sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Cyrl_YU.txt sr_Latn_BA.txt\\r
+ sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_YU.txt sr_ME.txt\\r
+ sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt th_TH_TRADITIONAL.txt\\r
+ tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt uz_Latn_UZ.txt\\r
+ uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt zh_HK.txt\\r
+ zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt zh_SG.txt zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,45 +75,45 @@ UNIT_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\\r
  en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\\r
  eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\\r
- es_BR.txt es_BZ.txt es_CL.txt es_CO.txt es_CR.txt\\r
- es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\\r
- es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\\r
- es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\\r
- et.txt eu.txt ewo.txt fa.txt ff.txt\\r
- fi.txt fil.txt fo.txt fr.txt fr_CA.txt\\r
- fr_HT.txt fur.txt fy.txt ga.txt gd.txt\\r
- gl.txt gsw.txt gu.txt guz.txt gv.txt\\r
- ha.txt haw.txt he.txt hi.txt hr.txt\\r
- hsb.txt hu.txt hy.txt id.txt ig.txt\\r
- ii.txt is.txt it.txt ja.txt jgo.txt\\r
jmc.txt ka.txt kab.txt kam.txt kde.txt\\r
- kea.txt khq.txt ki.txt kk.txt kkj.txt\\r
- kl.txt kln.txt km.txt kn.txt ko.txt\\r
- kok.txt ks.txt ksb.txt ksf.txt ksh.txt\\r
- kw.txt ky.txt lag.txt lb.txt lg.txt\\r
- lkt.txt ln.txt lo.txt lrc.txt lt.txt\\r
- lu.txt luo.txt luy.txt lv.txt mas.txt\\r
- mer.txt mfe.txt mg.txt mgh.txt mgo.txt\\r
- mk.txt ml.txt mn.txt mr.txt ms.txt\\r
- mt.txt mua.txt my.txt mzn.txt naq.txt\\r
- nb.txt nd.txt nds.txt ne.txt nl.txt\\r
- nmg.txt nn.txt nnh.txt nus.txt nyn.txt\\r
- om.txt or.txt os.txt pa.txt pa_Arab.txt\\r
- pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\\r
- pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\\r
- pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\\r
qu.txt rm.txt rn.txt ro.txt ro_MD.txt\\r
- rof.txt ru.txt rw.txt rwk.txt sah.txt\\r
- saq.txt sbp.txt se.txt seh.txt ses.txt\\r
- sg.txt shi.txt shi_Latn.txt shi_Tfng.txt si.txt\\r
- sk.txt sl.txt smn.txt sn.txt so.txt\\r
- sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt\\r
- sv_FI.txt sw.txt ta.txt te.txt teo.txt\\r
- th.txt ti.txt to.txt tr.txt twq.txt\\r
tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\\r
- uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\\r
- vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\\r
xog.txt yav.txt yi.txt yo.txt yue.txt\\r
- zgh.txt zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt\\r
- zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_BR.txt es_CL.txt es_CO.txt es_CR.txt es_CU.txt\\r
+ es_DO.txt es_EC.txt es_GT.txt es_HN.txt es_MX.txt\\r
+ es_NI.txt es_PA.txt es_PE.txt es_PR.txt es_PY.txt\\r
+ es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\\r
+ eu.txt ewo.txt fa.txt ff.txt fi.txt\\r
+ fil.txt fo.txt fr.txt fr_CA.txt fr_HT.txt\\r
+ fur.txt fy.txt ga.txt gd.txt gl.txt\\r
+ gsw.txt gu.txt guz.txt gv.txt ha.txt\\r
+ haw.txt he.txt hi.txt hr.txt hsb.txt\\r
+ hu.txt hy.txt id.txt ig.txt ii.txt\\r
+ is.txt it.txt ja.txt jgo.txt jmc.txt\\r
ka.txt kab.txt kam.txt kde.txt kea.txt\\r
+ khq.txt ki.txt kk.txt kkj.txt kl.txt\\r
+ kln.txt km.txt kn.txt ko.txt kok.txt\\r
+ ks.txt ksb.txt ksf.txt ksh.txt kw.txt\\r
+ ky.txt lag.txt lb.txt lg.txt lkt.txt\\r
+ ln.txt lo.txt lrc.txt lt.txt lu.txt\\r
+ luo.txt luy.txt lv.txt mas.txt mer.txt\\r
+ mfe.txt mg.txt mgh.txt mgo.txt mk.txt\\r
+ ml.txt mn.txt mr.txt ms.txt mt.txt\\r
+ mua.txt my.txt mzn.txt naq.txt nb.txt\\r
+ nd.txt nds.txt ne.txt nl.txt nmg.txt\\r
+ nn.txt nnh.txt nus.txt nyn.txt om.txt\\r
+ or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\\r
+ pl.txt ps.txt pt.txt pt_AO.txt pt_CH.txt\\r
+ pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt\\r
+ pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt qu.txt\\r
rm.txt rn.txt ro.txt ro_MD.txt rof.txt\\r
+ ru.txt rw.txt rwk.txt sah.txt saq.txt\\r
+ sbp.txt se.txt seh.txt ses.txt sg.txt\\r
+ shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\\r
+ sl.txt smn.txt sn.txt so.txt sq.txt\\r
+ sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt sv_FI.txt\\r
+ sw.txt ta.txt te.txt teo.txt th.txt\\r
+ ti.txt to.txt tr.txt twq.txt tzm.txt\\r
ug.txt uk.txt ur.txt ur_IN.txt uz.txt\\r
+ uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt\\r
+ vai_Vaii.txt vi.txt vun.txt wae.txt xog.txt\\r
yav.txt yi.txt yo.txt yue.txt zgh.txt\\r
+ zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\\r
+ zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index ed97213..ee4a395 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rm{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index c881313..f2f3398 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a6dce99..504d372 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 1f682b0..7696fa0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro_MD{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     unitsNarrow{\r
         duration{\r
             day{\r
index f7499f7..633aef4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rof{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 67f5439..ca96c24 100644 (file)
@@ -4,7 +4,7 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.58"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
@@ -368,10 +368,6 @@ root{
                 dnam{"pm"}\r
                 other{"{0} pm"}\r
             }\r
-            point{\r
-                dnam{"pt"}\r
-                other{"{0} pt"}\r
-            }\r
             yard{\r
                 dnam{"yd"}\r
                 other{"{0} yd"}\r
index 4758c95..01aeb1b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 211565b..f330415 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 8c996fc..7d64e12 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rwk{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8b3e325..39097ed 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sah{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.87"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index ab5a439..0947b62 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 saq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eda453b..17b0af4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sbp{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e6ad1d6..013536b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 6ccf497..53e4d29 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 seh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1b238a4..c074399 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ses{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c9b1cfd..8e814d3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 815f028..c30c82b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 31a2986..09b3284 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2db194b..22785f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8b0f075..895018b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 si{\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index 716c4a5..aa4c28f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sk{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index b2363e7..6e8f3fe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h.mm"}\r
         hms{"h.mm.ss"}\r
index fc69a4e..699021b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 smn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index 20b742a..980652e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index e5f9fe5..80e09a7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so{\r
-    Version{"2.1.33.76"}\r
+    Version{"2.1.27.78"}\r
 }\r
index 3101f01..1582f2d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index c0e225f..bd6e8a9 100644 (file)
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr{\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
-        hm{"h:mm"}\r
-        hms{"h:mm:ss"}\r
-        ms{"m:ss"}\r
+        hm{"h.mm"}\r
+        hms{"h.mm.ss"}\r
+        ms{"m.ss"}\r
     }\r
     units{\r
         acceleration{\r
index 2e18268..0b50a55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ac708ac..4308e70 100644 (file)
@@ -2,11 +2,11 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.29.33"}\r
     durationUnits{\r
-        hm{"h:mm"}\r
-        hms{"h:mm:ss"}\r
-        ms{"m:ss"}\r
+        hm{"h.mm"}\r
+        hms{"h.mm.ss"}\r
+        ms{"m.ss"}\r
     }\r
     units{\r
         acceleration{\r
index 2083483..78cb974 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 82fab8b..90fbdef 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv_FI{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     unitsNarrow{\r
         speed{\r
             kilometer-per-hour{\r
index 948f609..eff4fee 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw{\r
-    Version{"2.1.33.73"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 7b74123..815a1ab 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta{\r
-    Version{"2.1.32.4"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
@@ -584,7 +584,7 @@ ta{
             celsius{\r
                 dnam{"டிகிரி செல்சியஸ்"}\r
                 one{"{0} டிகிரி செல்சியஸ்"}\r
-                other{"{0} டிகிரி செல்சியஸ்"}\r
+                other{"{0}டிகிரி செல்சியஸ்"}\r
             }\r
             fahrenheit{\r
                 dnam{"டிகிரி ஃபாரன்ஹீட்"}\r
index c9b3b6d..085460b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 te{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 0c75fc8..05f38b8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6d3e180..6d69971 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 th{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 1b95d45..5a0d407 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6eddc55..7310acc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 to{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.98"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 93d2b55..c753da6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 862c84e..063f58a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 twq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8d2c876..03c960c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tzm{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eb599be..5dea61c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ug{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     units{\r
         acceleration{\r
             g-force{\r
index 5c769aa..b7f43cc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uk{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.38"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index e6e5289..d6a57af 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 98c25f4..393f44d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.79"}\r
     units{\r
         length{\r
             astronomical-unit{\r
index c5cd46c..9cb2fdc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.44"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 1b12da3..a9b8d6d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 300d10f..3bdc78f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.27.98"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index fdd810c..bdf99c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e22a25b..e1e5edb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fe15acc..f7ddb7b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66f0f3..38872b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 67dc540..3e7c205 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vi{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 3658070..e42c212 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vun{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7e55837..1b5ac66 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 wae{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     units{\r
         duration{\r
             day{\r
index 96cd8df..d37f5d9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 xog{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3122cf5..2b95845 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yav{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8afe923..6fa455c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yi{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.97"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 9b77773..9e593d7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3764cc1..a1b4f9b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yue{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 8c3ab8d..939af36 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zgh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fdedbe4..0483921 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh{\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.29.84"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 1e311fc..c64cac5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46edf8a..c22a82f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_HK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         compound{\r
             per{"{0}/{1}"}\r
index 0f6ccb5..74e4e20 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_MO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         compound{\r
             per{"{0}/{1}"}\r
index 9e88cbb..9239faf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_SG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         compound{\r
             per{"{0}/{1}"}\r
index 7d7d050..b7b8242 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant{\r
     %%Parent{"root"}\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.28.79"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index 99261ec..5c93685 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_HK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     units{\r
         acceleration{\r
             meter-per-second-squared{\r
index 9589854..9d2c5aa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5a2caf6..4aee71e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zu{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.29.22"}\r
     durationUnits{\r
         hm{"h:mm"}\r
         hms{"h:mm:ss"}\r
index cc9fc54..a5e2f00 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 af{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ af{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Gekoördineerde Universele Tyd"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Onbekende stad"}\r
         }\r
index fbb04ea..c42c900 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 agq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 68c48e8..03a41ff 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ak{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 134d0f3..e0d9831 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 am{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"አቢጃን"}\r
@@ -942,9 +942,6 @@ am{
         "Australia:Sydney"{\r
             ec{"ሲድኒ"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"የተቀነባበረ ሁለገብ ሰዓት"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"ያልታወቀ ከተማ"}\r
         }\r
index 51e9f7f..ae3b1f1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ar{\r
-    Version{"2.1.32.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"أبيدجان"}\r
@@ -942,9 +942,6 @@ ar{
         "Australia:Sydney"{\r
             ec{"سيدني"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"التوقيت العالمي المنسق"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"مدينة غير معروفة"}\r
         }\r
diff --git a/source/data/zone/ar_SA.txt b/source/data/zone/ar_SA.txt
deleted file mode 100644 (file)
index 00baa1f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-/**\r
- * generated alias target\r
- */\r
-ar_SA{\r
-    ___{""}\r
-}\r
diff --git a/source/data/zone/ars.txt b/source/data/zone/ars.txt
deleted file mode 100644 (file)
index 9bb22b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-ars{\r
-    "%%ALIAS"{"ar_SA"}\r
-}\r
index 2633b5e..c96df6d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 as{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Asia:Calcutta"{\r
             ec{"এলাহাৱাদ"}\r
index e26c2b1..44d6b34 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 asa{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4944ef0..d04c1af 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ast{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 9e4f229..e1d1dd3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abican"}\r
@@ -942,9 +942,6 @@ az{
         "Australia:Sydney"{\r
             ec{"Sidney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinasiya edilmiş ümumdünya vaxtı"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Naməlum Şəhər"}\r
         }\r
index 43002da..5c699c3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4c0b75a..4ce2adb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 az_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 191387a..36ccde7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bas{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 972c59e..e1683f9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 be{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.66"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абіджан"}\r
index 44bc1b9..d92d6d8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bem{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c52fa07..c1079b7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bez{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7d2cfdb..72970c8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bg{\r
-    Version{"2.1.33.75"}\r
+    Version{"2.1.30.6"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
@@ -942,9 +942,6 @@ bg{
         "Australia:Sydney"{\r
             ec{"Сидни"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Координирано универсално време"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"неизвестен"}\r
         }\r
index 88a359b..8197c3b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bm{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9aab2fe..ed53404 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bn{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"আবিদজান"}\r
@@ -942,9 +942,6 @@ bn{
         "Australia:Sydney"{\r
             ec{"সিডনি"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"স্থানাংকিত আন্তর্জাতিক সময়"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"অজানা শহর"}\r
         }\r
index 50622f7..a95b444 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Etc:Unknown"{\r
             ec{"མ་རྟོགས་པ"}\r
index 1566147..c3ae6f2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 br{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 19c2327..ba35d22 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 brx{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अबिद्जान"}\r
index 3498106..493e223 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index b262347..7073545 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.32.72"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиџан"}\r
index 972dc01..20b4126 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 bs_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35be950..26426c3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ca{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ ca{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Temps universal coordinat"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Ciutat desconeguda"}\r
         }\r
index eb4f225..2bc1f8b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ce{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
index aee7a43..a8512f0 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cgg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9e7b4fc..9711172 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 chr{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ᎠᏈᏣᏂ"}\r
index 77d82e3..f0d8d1f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ckb{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 49ec2f9..c005808 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cs{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžan"}\r
@@ -942,9 +942,6 @@ cs{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinovaný světový čas"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Neznámé město"}\r
         }\r
index d5848ee..d1ecd3d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 cy{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 66242db..8ec3806 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 da{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ da{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordineret universaltid"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Ukendt by"}\r
         }\r
index 9a0f850..9e04802 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dav{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eeccdf9..698cc6d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 de{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ de{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinierte Weltzeit"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Unbekannt"}\r
         }\r
index 029e515..ac06912 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dje{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f71094..e7cce37 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dsb{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akkra"}\r
index ddd9f57..05959ba 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dua{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d42a779..97ceeaa 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dyo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0709b8a..08265a1 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 dz{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.29.61"}\r
     zoneStrings{\r
         "Africa:Cairo"{\r
             ec{"ཀཱའི་རོ"}\r
index c7b78cf..cf3920e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ebu{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c6ad2c5..732ccf0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ee{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidzan nutomegaƒoƒome"}\r
index f61b953..67e8e9b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 el{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Αμπιτζάν"}\r
@@ -942,9 +942,6 @@ el{
         "Australia:Sydney"{\r
             ec{"Σίδνεϊ"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Συντονισμένη Παγκόσμια Ώρα"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Άγνωστη πόλη"}\r
         }\r
index b6c8a53..973005c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.50"}\r
     zoneStrings{\r
         "Africa:Sao_Tome"{\r
             ec{"São Tomé"}\r
@@ -21,9 +21,6 @@ en{
         "Asia:Saigon"{\r
             ec{"Ho Chi Minh City"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Coordinated Universal Time"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Unknown City"}\r
         }\r
index de780be..7e0fd78 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_001{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"∅∅∅"}\r
index a7c9188..bb77d4c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_150{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Europe_Central"{\r
             sd{"CEST"}\r
index 8a0d454..93d0c87 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 07cb4ef..d55549d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 09171c4..b4edb3f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AT{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0846f9d..2a43ca8 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_AU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.32.62"}\r
+    Version{"2.1.30.50"}\r
     zoneStrings{\r
         "meta:Africa_Eastern"{\r
             ls{"Eastern Africa Time"}\r
index 84a0efd..7083244 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7065545..c967ad1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a3b9186..17ad945 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 95e82b5..03e7849 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e98f0cb..0ac26ba 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 5891076..13545f6 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_BZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a0294c9..7405707 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"HDT"}\r
index a54c911..a2871e2 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4f2d948..d055587 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CH{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f59d92a..8bd2eba 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a628c49..310a614 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 8c9c483..a5c8744 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 46da087..81d8657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_CY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5d2d71a..a91a9c4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d758dd..af3ee11 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5a92d6b..55574ee 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DK{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b548583..4eaa7dc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_DM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index aa8b9e9..f75e3a6 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ER{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index f699cc1..12aebe3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 86f8e9d..c439098 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FJ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5df30b2..21a12bc 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eab91ca..78ffc47 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_FM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6048891..24bf58f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.24"}\r
     zoneStrings{\r
         "Europe:London"{\r
             sd{"BST"}\r
index 7921b24..ab0594c 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c0d3839..8474cce 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fb03736..3062d50 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 5fe0d68..46d28cd 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bcaeadc..3a5a673 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 574fedf..a200c4c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GU{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Chamorro"{\r
             ss{"ChST"}\r
index a01c61b..bfad8c2 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_GY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Guyana"{\r
             ss{"GYT"}\r
index 5b3714c..4310407 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_HK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Hong_Kong"{\r
             sd{"HKST"}\r
index 3e25871..9950791 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     zoneStrings{\r
         "Europe:Dublin"{\r
             sd{"IST"}\r
index 76bee45..1500279 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66ecc0..b5e5329 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1547599..bb1db4c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"IST"}\r
index 2b8ba3f..73736a0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_IO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c47ce4e..f31e9bf 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d812c18..67edbc7 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_JM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8579729..73a9d6a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KE{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 899b1ea..3f8c7e1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KI{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 35fb03c..f755a2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bd356e9..e26f444 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_KY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bfd0689..7abb21b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 149dc39..3eb4ac9 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index dd70b56..dac3368 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_LS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 3593a19..87ccdbb 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index ebe9a97..791090c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MH{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"∅∅∅"}\r
index 749aec3..1cc3d2b 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Hong_Kong"{\r
             sd{"HKST"}\r
index 594608a..112458a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"∅∅∅"}\r
index a027fc6..df8f657 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8464a2e..23b6896 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c46dd12..6d25f6a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index e77bf35..1948d15 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index deec5d6..dd2324f 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_MY{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Malaysia"{\r
             ss{"MYT"}\r
index 4e37ee5..1e6d896 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 358d626..0a360ca 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NF{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2173006..1321fed 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 9d0d0cd..21bbdc9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NL{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 165856c..039e457 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NR{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 266914a..eb82604 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c17d42e..310c869 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_NZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Australia_Central"{\r
             sd{"ACDT"}\r
index 6aa4d92..c1792a4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 080d0e6..0ca66f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fef2013..ccbdf7f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4094568..5bf94f0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PN{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30541dc..0af3d13 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_PW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d9d9e08..8de558a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_RW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index e2de69a..cb507b5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SB{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 77c65fa..699d679 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c426222..9ee97c8 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SD{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 31f586b..d7fa572 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SE{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c9f58e6..afd78d7 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.29.54"}\r
     zoneStrings{\r
         "meta:Malaysia"{\r
             ss{"MYT"}\r
index cf6ab49..968da99 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SH{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index a259492..fedf1c0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SI{\r
     %%Parent{"en_150"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5da90d9..9982a61 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SL{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 27a68d4..087b28c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index ec1778f..9862443 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SX{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index bee5b81..8f77a1c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_SZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 852eb0f..eaabbe1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 020c31b..797d773 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TK{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index d27b6ec..f1697f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TO{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21b8b30..599a8fe 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TT{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4ebd07d..a2c5021 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TV{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 103e428..9ca2aec 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_TZ{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 3c7a636..c44c983 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_UG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 12317cf..de17869 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VC{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ba6619b..e6a295b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VG{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 12b8824..2cecbf4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_VU{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8c90fd7..a3f70e3 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_WS{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 83c8729..3cc5548 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZA{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.64"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 258fe85..45d98c1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZM{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 52310df..448d296 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 en_ZW{\r
     %%Parent{"en_001"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
     zoneStrings{\r
         "meta:Africa_Central"{\r
             ss{"CAT"}\r
index 663d25a..1e6bc3f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f7fb3bd..6f922ab 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.80"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abiyán"}\r
@@ -942,9 +942,6 @@ es{
         "Australia:Sydney"{\r
             ec{"Sídney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Tiempo Universal Coordinado"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"ciudad desconocida"}\r
         }\r
index ba5c9d2..6d60fab 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_419{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "America:St_Johns"{\r
             ec{"San Juan de Terranova"}\r
index ddd3f33..f007040 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_AR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Argentina"{\r
             sd{"ARST"}\r
index c5f2abc..7196890 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Bolivia"{\r
             ss{"BOT"}\r
index e68498b..2f5e37a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_BR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
diff --git a/source/data/zone/es_BZ.txt b/source/data/zone/es_BZ.txt
deleted file mode 100644 (file)
index aa10911..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.\r
-// License & terms of use: http://www.unicode.org/copyright.html#License\r
-es_BZ{\r
-    %%Parent{"es_419"}\r
-    Version{"2.1.32.37"}\r
-}\r
index cb0f44f..7630738 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CL{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Chile"{\r
             sd{"CLST"}\r
index 887d1dd..d7499b3 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Colombia"{\r
             sd{"COST"}\r
index 7f7bf28..2253e39 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 66f010e..791d7f5 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_CU{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cfd47e5..1407ae4 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_DO{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index d4d6468..19549a3 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_EC{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Ecuador"{\r
             ss{"ECT"}\r
index fc5b02e..272994a 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_GT{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 4c06fd0..802179d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_HN{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 56e9dab..14c060c 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_MX{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Acra"}\r
index c6c3bb8..b1eb3f1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_NI{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 0261ff1..4bc4d78 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PA{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 43f4e88..e677667 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Peru"{\r
             sd{"PEST"}\r
index d0fa626..e9eace0 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PR{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 6152f95..b1cb09d 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_PY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 0442024..f965d31 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_SV{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
 }\r
index 478e757..6089cd3 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_US{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "America:Curacao"{\r
             ec{"Curazao"}\r
index b1866ee..68ebef2 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_UY{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Uruguay"{\r
             sd{"UYST"}\r
index e81e38a..c0e44a0 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 es_VE{\r
     %%Parent{"es_419"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "meta:Venezuela"{\r
             ss{"VET"}\r
index 8cc271b..d225907 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 et{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ et{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordineeritud maailmaaeg"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"määramata linn"}\r
         }\r
index 07a5baf..75e10f5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 eu{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -930,9 +930,6 @@ eu{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Ordu Unibertsal Koordinatua"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Hiri ezezaguna"}\r
         }\r
index 169881c..b70890a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ewo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3bfad9a..1e93085 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fa{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.44"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"آبیجان"}\r
@@ -942,9 +942,6 @@ fa{
         "Australia:Sydney"{\r
             ec{"سیدنی"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"زمان هماهنگ جهانی"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"شهر نامشخص"}\r
         }\r
index 8992013..f96fea6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ff{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3d7e9d2..8e1eb99 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fi{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.88"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -945,9 +945,6 @@ fi{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Asetettu yleisaika"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"tuntematon"}\r
         }\r
index 9bb8156..5e46294 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fil{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 36b4681..b32a588 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fo{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 2324c5e..138a97a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ fr{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Temps universel coordonné"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"ville inconnue"}\r
         }\r
index 51d6c42..ff5544e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_CA{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "Africa:Ndjamena"{\r
             ec{"Ndjamena"}\r
index fc6a181..b6abe6a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fr_GF{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:French_Guiana"{\r
             ss{"GFT"}\r
index 2230b1c..d1dee4b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fur{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "America:New_York"{\r
             ec{"Gnove York"}\r
index 1162e14..9cd3035 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 fy{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.44"}\r
     zoneStrings{\r
         "Africa:Addis_Ababa"{\r
             ec{"Addis Abeba"}\r
index 7e1abca..3d219bf 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ga{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index f366c5d..27e9a83 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gd{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 23068c7..8ffed0a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ gl{
         "Australia:Sydney"{\r
             ec{"Sidney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Tempo Universal Coordenado"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"cidade descoñecida"}\r
         }\r
index f19fd0a..2a10964 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gsw{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akkra"}\r
index e14f7f2..b365ce2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gu{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"આબિદ્જાન"}\r
@@ -942,9 +942,6 @@ gu{
         "Australia:Sydney"{\r
             ec{"સિડ્ની"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"સંકલિત યુનિવર્સલ સમય"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"અજ્ઞાત શહેર"}\r
         }\r
index 724ae2e..7a7441a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 guz{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e2d77bb..a1fd188 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 gv{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 7ff3356..ed2d82a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ha{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index af3bdf5..d193db0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 haw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         "Pacific:Honolulu"{\r
             sd{"HDT"}\r
index dea17fb..480df76 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 he{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.27"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"אביג׳אן"}\r
@@ -942,9 +942,6 @@ he{
         "Australia:Sydney"{\r
             ec{"סידני"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"זמן אוניברסלי מתואם"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"עיר לא ידועה"}\r
         }\r
index 974312b..959b4ac 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hi{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अबिदजान"}\r
@@ -942,9 +942,6 @@ hi{
         "Australia:Sydney"{\r
             ec{"सिडनी"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"समन्वित सार्वत्रिक समय"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"अज्ञात शहर"}\r
         }\r
index 70ec249..f555581 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hr{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ hr{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinirano svjetsko vrijeme"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Nepoznati grad"}\r
         }\r
index 654cf06..181912f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hsb{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akkra"}\r
index b4fad12..db9fe5f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hu{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ hu{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinált világidő"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Ismeretlen város"}\r
         }\r
index 0613d69..83ac799 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 hy{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Աբիջան"}\r
@@ -942,9 +942,6 @@ hy{
         "Australia:Sydney"{\r
             ec{"Սիդնեյ"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Համաշխարհային կոորդինացված ժամանակ"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Անհայտ քաղաք"}\r
         }\r
index 6f89ce8..3bbab5d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 id{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ id{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Waktu Universal Terkoordinasi"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Tidak Dikenal"}\r
         }\r
index ef5f677..cf9fa4e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ig{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.84"}\r
 }\r
index 58a6475..4f93fe7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Etc:Unknown"{\r
             ec{"ꅉꀋꐚꌠ"}\r
index 63a92f2..2c3d1a8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 is{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.65"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -927,9 +927,6 @@ is{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Samræmdur alþjóðlegur tími"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Óþekkt borg"}\r
         }\r
index bc112d5..cd00bf5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 it{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ it{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Tempo coordinato universale"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Città sconosciuta"}\r
         }\r
index e3e557e..2faf170 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ja{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"アビジャン"}\r
@@ -942,9 +942,6 @@ ja{
         "Australia:Sydney"{\r
             ec{"シドニー"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"協定世界時"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"地域不明"}\r
         }\r
index 0dd2670..bad992d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jgo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         gmtFormat{"GMT{0}"}\r
index a76db1c..3f79b8d 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 jmc{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 578e137..06eea30 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ka{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"აბიჯანი"}\r
@@ -942,9 +942,6 @@ ka{
         "Australia:Sydney"{\r
             ec{"სიდნეი"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"მსოფლიო კოორდინირებული დრო"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"უცნობი ქალაქი"}\r
         }\r
index 8ae9971..6260d64 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kab{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 82cc5ce..d9b09c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kam{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 613d9a9..82246fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kde{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dfb3069..bde8f2f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kea{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.46"}\r
     zoneStrings{\r
         "America:Blanc-Sablon"{\r
             ec{"Blank-Sablon"}\r
index a8df930..efabb97 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 khq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 25baae9..0b987fc 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ki{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 050d82e..0a7dcee 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kk{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
@@ -942,9 +942,6 @@ kk{
         "Australia:Sydney"{\r
             ec{"Сидней"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Дүниежүзілік үйлестірілген уақыт"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Белгісіз қала"}\r
         }\r
index a2b45cd..6408b2c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kkj{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 991b55f..fee09f7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kl{\r
-    Version{"2.1.31.34"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b73e7da..fec7e09 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kln{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1077258..e10e912 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 km{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"អាប៊ីដ្យាន"}\r
index 4f6ecf8..7303ce5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kn{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ಅಬಿದ್‌ಜನ್"}\r
index b1f5752..be9dfb5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.22"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"아비장"}\r
@@ -942,9 +942,6 @@ ko{
         "Australia:Sydney"{\r
             ec{"시드니"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"협정 세계시"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"알 수 없는 장소"}\r
         }\r
index ff72307..40f0f7c 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ko_KP{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Korea"{\r
             ld{"조선 하계 표준시"}\r
index 5ac639f..0a30707 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kok{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:India"{\r
             ls{"भारतीय समय"}\r
index ed55be1..45ce976 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ks{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.30.6"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"عابِدجان"}\r
index 6395664..e49e3e3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksb{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 52cb597..cf791c1 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksf{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c8e0c0d..e04ea82 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ksh{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Cairo"{\r
             ec{"Kaijro"}\r
index 30cb7bd..f38a919 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 kw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 525801d..3ef69a3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ky{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
index f674d0f..07404a5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lag{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2c8e296..66d6921 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lb{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Accra"}\r
index a910336..e2d43d3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 454b547..b9420ae 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lkt{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c950fdf..f3b05d7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ln{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         regionFormat{"Ngonga ya {0}"}\r
index 0f7d5a3..dce6f1a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lo{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ອາບິດແຈນ"}\r
index b40ad2e..ef4f85b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lrc{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Etc:Unknown"{\r
             ec{"نادیار"}\r
index b9b7f4c..c9abbfb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lt{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžanas"}\r
@@ -942,9 +942,6 @@ lt{
         "Australia:Sydney"{\r
             ec{"Sidnėjus"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Suderintasis pasaulinis laikas"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"nežinomas miestas"}\r
         }\r
index 2e6c6de..a1c9d14 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lu{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6a4f5e4..36fca55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index ff3cfe6..09e8b24 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 luy{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 93842c0..d045515 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 lv{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžana"}\r
@@ -942,9 +942,6 @@ lv{
         "Australia:Sydney"{\r
             ec{"Sidneja"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Universālais koordinētais laiks"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"nezināma pilsēta"}\r
         }\r
index 54e59a7..346d086 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mas{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 30afe7b..93c169a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mer{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9e25468..cddb7eb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mfe{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 40ca570..56f734e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 10d4b89..ef904aa 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5545081..a21965a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mgo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         gmtFormat{"GMT{0}"}\r
index fdfb8a1..1f63309 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mk{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиџан"}\r
@@ -942,9 +942,6 @@ mk{
         "Australia:Sydney"{\r
             ec{"Сиднеј"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Координирано универзално време"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Непознат град"}\r
         }\r
index e7bb892..1186d22 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ml{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"അബിദ്‌ജാൻ‌"}\r
@@ -942,9 +942,6 @@ ml{
         "Australia:Sydney"{\r
             ec{"സിഡ്നി"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"കോർഡിനേറ്റഡ് യൂണിവേഴ്‌സൽ ടൈം"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"അജ്ഞാത നഗരം"}\r
         }\r
index 6ae63c5..33acd89 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mn{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абижан"}\r
@@ -942,9 +942,6 @@ mn{
         "Australia:Sydney"{\r
             ec{"Сидней"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Олон Улсын Зохицуулсан Цаг"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Тодорхойгүй хот"}\r
         }\r
index a50a94e..73d6d40 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mr{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अबिद्जान"}\r
index 28127e1..80f83c4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ms{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ ms{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Waktu Universal Selaras"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Bandar Tidak Diketahui"}\r
         }\r
index ba41351..ba72937 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mt{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 4bd09d5..69b1d04 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mua{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index acb4334..8162032 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 my{\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.30.50"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"အာဘီဂျန်"}\r
@@ -942,9 +942,6 @@ my{
         "Australia:Sydney"{\r
             ec{"ဆစ်ဒနီ"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"ညှိထားသည့် ကမ္ဘာ့ စံတော်ချိန်"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"အမည်မသိသောမြို့"}\r
         }\r
index c7c1838..b675b22 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 mzn{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         fallbackFormat{"{1} ({0})"}\r
         gmtFormat{"GMT{0}"}\r
index e1cc798..0f54e17 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 naq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 487de15..8b989ce 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nb{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ nb{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinert universaltid"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"ukjent by"}\r
         }\r
index 6c83d4b..1b8024e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nd{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.65"}\r
 }\r
index 7874b05..e395563 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nds{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.28.71"}\r
 }\r
index 20bbb8c..1cf706e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"अविड्जान"}\r
@@ -942,9 +942,6 @@ ne{
         "Australia:Sydney"{\r
             ec{"सिड्नी"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"समन्वित विश्व समय"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"अज्ञात शहर"}\r
         }\r
index fe2fd85..3dd99d8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ne_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"IST"}\r
index 60c028a..ab7dad2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ nl{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Gecoördineerde wereldtijd"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"onbekende stad"}\r
         }\r
index 1ff62c7..a47c1e6 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nl_SR{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Suriname"{\r
             ss{"SRT"}\r
index 47e6244..1bddab5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nmg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f85c407..03289bd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nn{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "America:Belem"{\r
             ec{"Belém"}\r
index 4121deb..e8d48d2 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nnh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 00de51f..5933eea 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nus{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 50995ba..b361bdd 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 nyn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cfcf78a..a581e2f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 om{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         gmtFormat{"GMT{0}"}\r
         hourFormat{"+HH:mm;-HH:mm"}\r
index 779ee3a..d109dda 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 or{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.78"}\r
     zoneStrings{\r
         "meta:Christmas"{\r
             ls{"ଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ ସମୟ"}\r
index ab4960d..cf79ded 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 os{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Asia:Tbilisi"{\r
             ec{"Тбилис"}\r
index 2b7abc7..a89e19f 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"ਅਬੀਦਜਾਨ"}\r
index 171e15d..e41b709 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index dc1602d..dca680f 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pa_Guru{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1fd5d9e..8a9dbc2 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidżan"}\r
@@ -942,9 +942,6 @@ pl{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Uniwersalny czas koordynowany"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Nieznane miasto"}\r
         }\r
index 08664c8..af7890a 100644 (file)
Binary files a/source/data/zone/pool.res and b/source/data/zone/pool.res differ
index 10fb6fd..45ee4ce 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ps{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Asia:Kabul"{\r
             ec{"کابل"}\r
index af593fb..8abdc5d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ pt{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Tempo Universal Coordenado"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Cidade desconhecida"}\r
         }\r
index 9004ed0..4595e88 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_AO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index 4ee7339..a4226b1 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CH{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b016ea0..5e38b88 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_CV{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index 0f6e235..fd432f9 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GQ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 4253c34..7620ebe 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_GW{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index b5a1669..b5eca2f 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_LU{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index beeebba..54039cf 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MO{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index aa83921..99e64e1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_MZ{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index a172ad5..b227ee3 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_PT{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.29.54"}\r
     zoneStrings{\r
         "Africa:Djibouti"{\r
             ec{"Jibuti"}\r
index 9810313..402e489 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_ST{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index fe5abba..5eadbb0 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 pt_TL{\r
     %%Parent{"pt_PT"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Azores"{\r
             sd{"∅∅∅"}\r
index 581d0b3..ae640a5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         "meta:Peru"{\r
             sd{"PEST"}\r
index 2007b28..3b063fb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_BO{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Bolivia"{\r
             ss{"BOT"}\r
index 7b8c789..3fc8402 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 qu_EC{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:Ecuador"{\r
             ss{"ECT"}\r
index d30dc82..9301a3d 100644 (file)
@@ -1,17 +1,17 @@
 # © 2016 and later: Unicode, Inc. and others.\r
 # License & terms of use: http://www.unicode.org/copyright.html#License\r
-ZONE_CLDR_VERSION = 31.0.1\r
+ZONE_CLDR_VERSION = %version%\r
 # A list of txt's to build\r
 # Note:\r
 #\r
 #   If you are thinking of modifying this file, READ THIS.\r
 #\r
 # Instead of changing this file [unless you want to check it back in],\r
-# you should consider creating a 'reslocal.mk' file in this same directory.\r
+# you should consider creating a '%local%' file in this same directory.\r
 # Then, you can have your local changes remain even if you upgrade or\r
 # reconfigure ICU.\r
 #\r
-# Example 'reslocal.mk' files:\r
+# Example '%local%' files:\r
 #\r
 #  * To add an additional locale to the list:\r
 #    _____________________________________________________\r
@@ -26,20 +26,20 @@ ZONE_CLDR_VERSION = 31.0.1
 # Generated by LDML2ICUConverter, from LDML source files.\r
 \r
 # Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)\r
-ZONE_SYNTHETIC_ALIAS = ar_SA.txt ars.txt az_AZ.txt az_Latn_AZ.txt\\r
bs_BA.txt bs_Latn_BA.txt en_NH.txt en_RH.txt fil_PH.txt\\r
he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\\r
iw_IL.txt ja_JP.txt ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt\\r
- nn_NO.txt no.txt no_NO.txt no_NO_NY.txt pa_Arab_PK.txt\\r
- pa_Guru_IN.txt pa_IN.txt pa_PK.txt ro_MD.txt sh.txt\\r
- sh_BA.txt sh_CS.txt sh_YU.txt shi_MA.txt shi_Tfng_MA.txt\\r
- sr_BA.txt sr_CS.txt sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt\\r
- sr_Cyrl_XK.txt sr_Cyrl_YU.txt sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt\\r
- sr_Latn_RS.txt sr_Latn_YU.txt sr_ME.txt sr_RS.txt sr_XK.txt\\r
sr_YU.txt th_TH.txt th_TH_TRADITIONAL.txt tl.txt tl_PH.txt\\r
- uz_AF.txt uz_Arab_AF.txt uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt\\r
vai_Vaii_LR.txt zh_CN.txt zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt\\r
- zh_MO.txt zh_SG.txt zh_TW.txt\r
+ZONE_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\\r
en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\\r
in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\\r
ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\\r
+ no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\\r
+ pa_PK.txt ro_MD.txt sh.txt sh_BA.txt sh_CS.txt\\r
+ sh_YU.txt shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt\\r
+ sr_Cyrl_BA.txt sr_Cyrl_CS.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Cyrl_YU.txt\\r
+ sr_Latn_BA.txt sr_Latn_CS.txt sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_YU.txt\\r
+ sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\\r
th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\\r
+ uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\\r
zh_HK.txt zh_Hans_CN.txt zh_Hant_TW.txt zh_MO.txt zh_SG.txt\\r
+ zh_TW.txt\r
 \r
 \r
 # All aliases (to not be included under 'installed'), but not including root.\r
@@ -76,46 +76,46 @@ ZONE_SOURCE = af.txt agq.txt ak.txt am.txt\
  en_TO.txt en_TT.txt en_TV.txt en_TZ.txt en_UG.txt\\r
  en_VC.txt en_VG.txt en_VU.txt en_WS.txt en_ZA.txt\\r
  en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\\r
- es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\\r
- es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\\r
- es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\\r
- es_PE.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\\r
- es_UY.txt es_VE.txt et.txt eu.txt ewo.txt\\r
- fa.txt ff.txt fi.txt fil.txt fo.txt\\r
- fr.txt fr_CA.txt fr_GF.txt fur.txt fy.txt\\r
- ga.txt gd.txt gl.txt gsw.txt gu.txt\\r
- guz.txt gv.txt ha.txt haw.txt he.txt\\r
- hi.txt hr.txt hsb.txt hu.txt hy.txt\\r
- id.txt ig.txt ii.txt is.txt it.txt\\r
- ja.txt jgo.txt jmc.txt ka.txt kab.txt\\r
- kam.txt kde.txt kea.txt khq.txt ki.txt\\r
- kk.txt kkj.txt kl.txt kln.txt km.txt\\r
- kn.txt ko.txt ko_KP.txt kok.txt ks.txt\\r
- ksb.txt ksf.txt ksh.txt kw.txt ky.txt\\r
- lag.txt lb.txt lg.txt lkt.txt ln.txt\\r
- lo.txt lrc.txt lt.txt lu.txt luo.txt\\r
- luy.txt lv.txt mas.txt mer.txt mfe.txt\\r
- mg.txt mgh.txt mgo.txt mk.txt ml.txt\\r
- mn.txt mr.txt ms.txt mt.txt mua.txt\\r
- my.txt mzn.txt naq.txt nb.txt nd.txt\\r
- nds.txt ne.txt ne_IN.txt nl.txt nl_SR.txt\\r
- nmg.txt nn.txt nnh.txt nus.txt nyn.txt\\r
- om.txt or.txt os.txt pa.txt pa_Arab.txt\\r
- pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\\r
- pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\\r
- pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\\r
- qu.txt qu_BO.txt qu_EC.txt rm.txt rn.txt\\r
- ro.txt rof.txt ru.txt rw.txt rwk.txt\\r
- sah.txt saq.txt sbp.txt se.txt seh.txt\\r
- ses.txt sg.txt shi.txt shi_Latn.txt shi_Tfng.txt\\r
- si.txt sk.txt sl.txt smn.txt sn.txt\\r
- so.txt sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt\\r
- sv.txt sw.txt ta.txt ta_MY.txt ta_SG.txt\\r
- te.txt teo.txt th.txt ti.txt to.txt\\r
- tr.txt twq.txt tzm.txt ug.txt uk.txt\\r
- ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\\r
uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\\r
vun.txt wae.txt xog.txt yav.txt yi.txt\\r
- yo.txt yue.txt zgh.txt zh.txt zh_Hans.txt\\r
- zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
+ es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\\r
+ es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GT.txt\\r
+ es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\\r
+ es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\\r
+ es_VE.txt et.txt eu.txt ewo.txt fa.txt\\r
+ ff.txt fi.txt fil.txt fo.txt fr.txt\\r
+ fr_CA.txt fr_GF.txt fur.txt fy.txt ga.txt\\r
+ gd.txt gl.txt gsw.txt gu.txt guz.txt\\r
+ gv.txt ha.txt haw.txt he.txt hi.txt\\r
+ hr.txt hsb.txt hu.txt hy.txt id.txt\\r
+ ig.txt ii.txt is.txt it.txt ja.txt\\r
+ jgo.txt jmc.txt ka.txt kab.txt kam.txt\\r
+ kde.txt kea.txt khq.txt ki.txt kk.txt\\r
+ kkj.txt kl.txt kln.txt km.txt kn.txt\\r
+ ko.txt ko_KP.txt kok.txt ks.txt ksb.txt\\r
+ ksf.txt ksh.txt kw.txt ky.txt lag.txt\\r
+ lb.txt lg.txt lkt.txt ln.txt lo.txt\\r
+ lrc.txt lt.txt lu.txt luo.txt luy.txt\\r
+ lv.txt mas.txt mer.txt mfe.txt mg.txt\\r
+ mgh.txt mgo.txt mk.txt ml.txt mn.txt\\r
+ mr.txt ms.txt mt.txt mua.txt my.txt\\r
+ mzn.txt naq.txt nb.txt nd.txt nds.txt\\r
+ ne.txt ne_IN.txt nl.txt nl_SR.txt nmg.txt\\r
+ nn.txt nnh.txt nus.txt nyn.txt om.txt\\r
+ or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\\r
+ pl.txt ps.txt pt.txt pt_AO.txt pt_CH.txt\\r
+ pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt\\r
+ pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt qu.txt\\r
+ qu_BO.txt qu_EC.txt rm.txt rn.txt ro.txt\\r
+ rof.txt ru.txt rw.txt rwk.txt sah.txt\\r
+ saq.txt sbp.txt se.txt seh.txt ses.txt\\r
+ sg.txt shi.txt shi_Latn.txt shi_Tfng.txt si.txt\\r
+ sk.txt sl.txt smn.txt sn.txt so.txt\\r
+ sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt\\r
+ sw.txt ta.txt ta_MY.txt ta_SG.txt te.txt\\r
+ teo.txt th.txt ti.txt to.txt tr.txt\\r
+ twq.txt tzm.txt ug.txt uk.txt ur.txt\\r
+ ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\\r
vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\\r
wae.txt xog.txt yav.txt yi.txt yo.txt\\r
+ yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hans_SG.txt\\r
+ zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt\r
 \r
index b2c543c..4f60333 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rm{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Addis_Ababa"{\r
             ec{"Addis Abeba"}\r
index c881313..f2f3398 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5c51f48..e59f53d 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ro{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ ro{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Timpul universal coordonat"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Oraș necunoscut"}\r
         }\r
index f7499f7..633aef4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rof{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 5cb0cab..348ba74 100644 (file)
@@ -4,7 +4,7 @@
  * ICU <specials> source: <path>/common/main/root.xml\r
  */\r
 root{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.58"}\r
     zoneStrings{\r
         "Africa:Asmera"{\r
             ec{"Asmara"}\r
@@ -90,9 +90,6 @@ root{
         "Atlantic:St_Helena"{\r
             ec{"St. Helena"}\r
         }\r
-        "Etc:UTC"{\r
-            ss{"UTC"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Unknown"}\r
         }\r
index 732bf3a..61265b5 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ru{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.29.20"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиджан"}\r
@@ -942,9 +942,6 @@ ru{
         "Australia:Sydney"{\r
             ec{"Сидней"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Всемирное координированное время"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Неизвестный город"}\r
         }\r
index 7c51597..9cc830e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rw{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         gmtFormat{"GMT{0}"}\r
         hourFormat{"+HH:mm;-HH:mm"}\r
index 8c996fc..7d64e12 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 rwk{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index cc7660d..1151b22 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sah{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.87"}\r
     zoneStrings{\r
         "Asia:Almaty"{\r
             ec{"Алматы"}\r
index ab5a439..0947b62 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 saq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index eda453b..17b0af4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sbp{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index b201f1b..00841f8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 se{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         "America:Curacao"{\r
             ec{"Curaçao"}\r
index 6ccf497..53e4d29 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 seh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1b238a4..c074399 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ses{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index c9b1cfd..8e814d3 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sg{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 815f028..c30c82b 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 31a2986..09b3284 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 2db194b..22785f4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 shi_Tfng{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1a72774..9a6f5ae 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 si{\r
-    Version{"2.1.33.28"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"අබිජාන්"}\r
index 56e2d52..a075433 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sk{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ sk{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinovaný svetový čas"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"neznáme mesto"}\r
         }\r
index dcbc52e..54e9187 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sl{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžan"}\r
@@ -942,9 +942,6 @@ sl{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Univerzalni koordinirani čas"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"neznano mesto"}\r
         }\r
index 863f19e..6283bc6 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 smn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 20b742a..980652e 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.98"}\r
 }\r
index 5218ff8..65645e0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 so{\r
-    Version{"2.1.33.76"}\r
+    Version{"2.1.27.78"}\r
     zoneStrings{\r
         "meta:Colombia"{\r
             ld{"Waqtiyada Xagaaga Kolambiya"}\r
index 4c3f982..1fbc8bb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sq{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abixhan"}\r
@@ -942,9 +942,6 @@ sq{
         "Australia:Sydney"{\r
             ec{"Sidnej"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Ora universale e koordinuar"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Qytet i panjohur"}\r
         }\r
index cb11c2f..b3dafe7 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr{\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абиџан"}\r
@@ -942,9 +942,6 @@ sr{
         "Australia:Sydney"{\r
             ec{"Сиднеј"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Координисано универзално време"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Непознат град"}\r
         }\r
index 2e18268..0b50a55 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Cyrl{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 1e5c9fc..d95006a 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sr_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.32.73"}\r
+    Version{"2.1.29.33"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidžan"}\r
@@ -943,9 +943,6 @@ sr_Latn{
         "Australia:Sydney"{\r
             ec{"Sidnej"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinisano univerzalno vreme"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Nepoznat grad"}\r
         }\r
index 997465a..103109b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sv{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.30.7"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ sv{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Koordinerad universell tid"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"okänd stad"}\r
         }\r
index ce21222..ca545cb 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 sw{\r
-    Version{"2.1.33.73"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index ea8586d..28d80ad 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta{\r
-    Version{"2.1.32.4"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"அபிட்ஜான்"}\r
index 8a5007e..a8dee82 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_MY{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"∅∅∅"}\r
index b72586f..8096cca 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ta_SG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "meta:India"{\r
             ss{"∅∅∅"}\r
index 2e7ddb5..76f2c49 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 te{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"అబిడ్జాన్"}\r
index 0c75fc8..05f38b8 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 teo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 6770807..f9ca787 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 th{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"อาบีจาน"}\r
@@ -942,9 +942,6 @@ th{
         "Australia:Sydney"{\r
             ec{"ซิดนีย์"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"เวลาสากลเชิงพิกัด"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"เมืองที่ไม่รู้จัก"}\r
         }\r
index 8a936a0..9a39ffc 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ti{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         gmtFormat{"GMT{0}"}\r
         hourFormat{"+HH:mm;-HH:mm"}\r
index 2c69abb..e8d2cc0 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 to{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 723042a..9c62086 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tr{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abican"}\r
@@ -942,9 +942,6 @@ tr{
         "Australia:Sydney"{\r
             ec{"Sidney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Eşgüdümlü Evrensel Zaman"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Bilinmeyen Şehir"}\r
         }\r
index 862c84e..063f58a 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 twq{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8d2c876..03c960c 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 tzm{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 21d4bbf..749168b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ug{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Sao_Tome"{\r
             ec{"سان-تومې"}\r
index 1e2f9de..e21c7dd 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uk{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.38"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Абіджан"}\r
@@ -942,9 +942,6 @@ uk{
         "Australia:Sydney"{\r
             ec{"Сідней"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Всесвітній координований час"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Невідоме місто"}\r
         }\r
index a9552f6..81a4efe 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"عابدجان"}\r
@@ -942,9 +942,6 @@ ur{
         "Australia:Sydney"{\r
             ec{"سڈنی"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"کوآرڈینیٹڈ یونیورسل ٹائم"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"نامعلوم شہر"}\r
         }\r
index fe49056..6efbcb4 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 ur_IN{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.79"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"اکرا"}\r
index 0443e60..8896d53 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz{\r
-    Version{"2.1.32.60"}\r
+    Version{"2.1.29.44"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
index 1d331de..4509ba1 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Arab{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Asia:Kabul"{\r
             ec{"کابل"}\r
index 97b1eae..99e9c93 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Cyrl{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.27.98"}\r
     zoneStrings{\r
         "Africa:Asmera"{\r
             ec{"Asmara"}\r
index fdd810c..bdf99c4 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 uz_Latn{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e22a25b..e1e5edb 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index fe15acc..f7ddb7b 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Latn{\r
     %%Parent{"root"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index e66f0f3..38872b5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vai_Vaii{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index f79033f..5f035c9 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vi{\r
-    Version{"2.1.32.59"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"Abidjan"}\r
@@ -942,9 +942,6 @@ vi{
         "Australia:Sydney"{\r
             ec{"Sydney"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"Giờ phối hợp quốc tế"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"Thành phố Không xác định"}\r
         }\r
index 3658070..e42c212 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 vun{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 9d7f8d1..4af4ab8 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 wae{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
     zoneStrings{\r
         "Africa:Accra"{\r
             ec{"Akra"}\r
index 96cd8df..d37f5d9 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 xog{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 3122cf5..2b95845 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yav{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 94c5002..808dc3b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yi{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.97"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"אַבידזשאַן"}\r
index 9b77773..9e593d7 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yo{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 0b6cd95..3fe4088 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 yue{\r
-    Version{"2.1.31.86"}\r
+    Version{"2.1.28.76"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比讓"}\r
index 8c3ab8d..939af36 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zgh{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 8a33c3e..030fe0b 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh{\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.29.84"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比让"}\r
@@ -942,9 +942,6 @@ zh{
         "Australia:Sydney"{\r
             ec{"悉尼"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"协调世界时"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"未知城市"}\r
         }\r
index 1e311fc..c64cac5 100644 (file)
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 76906ef..dd4345a 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hans_SG{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "America:Scoresbysund"{\r
             ec{"斯考斯伯松德"}\r
index 771bbce..a82c08d 100644 (file)
@@ -2,7 +2,7 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant{\r
     %%Parent{"root"}\r
-    Version{"2.1.33.94"}\r
+    Version{"2.1.28.79"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比讓"}\r
@@ -943,9 +943,6 @@ zh_Hant{
         "Australia:Sydney"{\r
             ec{"雪梨"}\r
         }\r
-        "Etc:UTC"{\r
-            ls{"世界標準時間"}\r
-        }\r
         "Etc:Unknown"{\r
             ec{"未知城市"}\r
         }\r
index d6c1e06..96a198e 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_HK{\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.99"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"阿比贊"}\r
index 9589854..9d2c5aa 100644 (file)
@@ -2,5 +2,5 @@
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zh_Hant_MO{\r
     %%Parent{"zh_Hant_HK"}\r
-    Version{"2.1.31.33"}\r
+    Version{"2.1.27.40"}\r
 }\r
index 52fd931..e3ff363 100644 (file)
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.\r
 // License & terms of use: http://www.unicode.org/copyright.html#License\r
 zu{\r
-    Version{"2.1.31.74"}\r
+    Version{"2.1.29.22"}\r
     zoneStrings{\r
         "Africa:Abidjan"{\r
             ec{"i-Abidjan"}\r
index d36ec61..bd5105a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 0ef5df2..b6b3a2b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 5792071..d4ec850 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * %W% %E%
index b614461..7d0af04 100644 (file)
@@ -44,7 +44,7 @@ CLEANFILES = *~ $(DEPS) $(ALL_MAN_FILES)
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit
 LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
index 3bc807c..2a043f8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************
 *
index 7936e48..dffa4c5 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{DBA4088D-F6F9-4F8F-8820-082A4765C16C}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DBA4088D-F6F9-4F8F-8820-082A4765C16C}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/uconv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/uconv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/uconv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>x86\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/uconv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/uconv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/uconv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/uconv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>x86\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/uconv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/uconv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/uconv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/uconv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>x86\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/uconv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>$(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/uconv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/uconv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/uconv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>x86\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/uconv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/uconv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/uconv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/uconv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/uconv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/uconv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/uconv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/uconv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/uconv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/uconv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/uconv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/uconv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>x64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/uconv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="uconv.cpp" />
-    <ClCompile Include="uwmsg.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="unicode\uwmsg.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="resources\fr.txt" />
-    <None Include="resources\root.txt" />
-    <CustomBuild Include="makedata.mak">
+</Command>\r
+      <Outputs>$(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/uconv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/uconv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>uconvmsg.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/uconv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>x64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/uconv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="uconv.cpp" />\r
+    <ClCompile Include="uwmsg.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="unicode\uwmsg.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="resources\fr.txt" />\r
+    <None Include="resources\root.txt" />\r
+    <CustomBuild Include="makedata.mak">\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Debug
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug/uconvmsg.lib;%(Outputs)</Outputs>
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug/uconvmsg.lib;%(Outputs)</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Debug
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\Debug/uconvmsg.lib;%(Outputs)</Outputs>
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\Debug/uconvmsg.lib;%(Outputs)</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Release
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release/uconvmsg.lib;%(Outputs)</Outputs>
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release/uconvmsg.lib;%(Outputs)</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Release
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\Release/uconvmsg.lib;%(Outputs)</Outputs>
-    </CustomBuild>
-    <None Include="resfiles.mk" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tools\genrb\genrb.vcxproj">
-      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tools\pkgdata\pkgdata.vcxproj">
-      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\Release/uconvmsg.lib;%(Outputs)</Outputs>\r
+    </CustomBuild>\r
+    <None Include="resfiles.mk" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\tools\genrb\genrb.vcxproj">\r
+      <Project>{97521d06-ec47-45d4-8bd0-9e16b3f93b2a}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\tools\pkgdata\pkgdata.vcxproj">\r
+      <Project>{4c8454fe-81d3-4ca3-9927-29ba96f03dac}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index d8497d8..e24d5db 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d5b0f62..ecc98d1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index fcc6f22..2ca22a1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
@@ -13,9 +13,7 @@
 
 #include "unicode/dcfmtsym.h"
 #include "unicode/plurrule.h"
-#include "unicode/strenum.h"
 #include "unicode/ucurr.h"
-#include "unicode/ustring.h"
 #include "affixpatternparser.h"
 #include "charstr.h"
 #include "precision.h"
index 66cbae3..1e534c9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d877cb2..2981e2c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e7d5375..8ec6f83 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************
index 703d42b..d06d2ba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***********************************************************************
index 8f9cf7a..22890ad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation
index a246489..e854661 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * Copyright (C) 1996-2008, International Business Machines Corporation *
index 54ee5a1..bfaef62 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 861a76a..a2f94f2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bocsu.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6b8ed51..56b0350 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bocsu.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ab5a803..714a0a8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 30cf4ea..229d6ed 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6fac7a8..adabb0a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 88509ba..3af9ba5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 2c14b11..ffa1e1d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ac28365..9c8c8b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  casetrn.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -92,6 +92,7 @@ UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(CaseMapTransliterator)
  */
 CaseMapTransliterator::CaseMapTransliterator(const UnicodeString &id, UCaseMapFull *map) : 
     Transliterator(id, 0),
+    fCsp(ucase_getSingleton()),
     fMap(map)
 {
     // TODO test incremental mode with context-sensitive text (e.g. greek sigma)
@@ -109,7 +110,7 @@ CaseMapTransliterator::~CaseMapTransliterator() {
  */
 CaseMapTransliterator::CaseMapTransliterator(const CaseMapTransliterator& o) :
     Transliterator(o),
-    fMap(o.fMap)
+    fCsp(o.fCsp), fMap(o.fMap)
 {
 }
 
@@ -118,6 +119,7 @@ CaseMapTransliterator::CaseMapTransliterator(const CaseMapTransliterator& o) :
  */
 /*CaseMapTransliterator& CaseMapTransliterator::operator=(const CaseMapTransliterator& o) {
     Transliterator::operator=(o);
+    fCsp = o.fCsp;
     fMap = o.fMap;
     return *this;
 }*/
@@ -149,14 +151,14 @@ void CaseMapTransliterator::handleTransliterate(Replaceable& text,
     UnicodeString tmp;
     const UChar *s;
     UChar32 c;
-    int32_t textPos, delta, result;
+    int32_t textPos, delta, result, locCache=0;
 
     for(textPos=offsets.start; textPos<offsets.limit;) {
         csc.cpStart=textPos;
         c=text.char32At(textPos);
         csc.cpLimit=textPos+=U16_LENGTH(c);
 
-        result=fMap(c, utrans_rep_caseContextIterator, &csc, &s, UCASE_LOC_ROOT);
+        result=fMap(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);
 
         if(csc.b1 && isIncremental) {
             // fMap() tried to look beyond the context limit
index 744406e..df80760 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  casetrn.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -84,6 +84,7 @@ protected:
                                      UTransPosition& offsets, 
                                      UBool isIncremental) const;
 
+    const UCaseProps *fCsp;
     UCaseMapFull *fMap;
 
 private:
index 00faa8a..17bf816 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c380f0b..ce6f420 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 82d1c3f..4de390a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 11a9b43..e9e9515 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index 42e1fa2..f6e36a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 64d3ab4..d99f191 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -29,7 +29,6 @@
 
 #if !UCONFIG_NO_COLLATION
 
-#include "unicode/chariter.h"
 #include "unicode/coleitr.h"
 #include "unicode/tblcoll.h"
 #include "unicode/ustring.h"
index be4b6b8..90a6a47 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 14cb865..bac7498 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e9256c9..c82d9a4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 954a20d..0025cfc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2f20050..7dda928 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index cbf32c9..5d8bd90 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6ad2d06..630b90b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 688770f..d3a62e4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ab9b4c4..ab40bbd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 98a6ce7..2059b56 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fee444d..f2c9a82 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 636eb14..df0b2a3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 44e6939..ff8ec3d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index a91119d..596236b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 197cd53..6169e0f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b98b845..c3e8c98 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 4bac797..00a2d1b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e889697..032e5e8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8b63b86..9d38038 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 86b12b9..de1d9a2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1999-2016, International Business Machines
index ec7167d..150f488 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 961c9e9..e6e8f27 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2666b24..0161f5a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 4b9e6b5..9130228 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 60d9e50..74b370e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 71753bd..f862e41 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8cd3046..26e5071 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9b46d14..638a245 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 7836d8d..518a24f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 96dcc0d..ea3ea66 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e124881..bd393c2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0958141..1188f31 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index aed41f7..070d507 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 534e20d..bc1d4e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 83e775d..1522dd5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 78a11fb..d1ffa30 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9a636cf..e463005 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c60da2d..8b1122a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  collationweights.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b415882..4a6a7e8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*  
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  collationweights.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0767254..7a69b68 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 // collunsafe.h
 //  Copyright (C) 2015-2016, International Business Machines Corporation and others.
index bb2e541..385b3a5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -771,22 +771,13 @@ static int32_t populatePrefixSuffix(
   if (U_FAILURE(status)) {
     return 0;
   }
-
-  // ICU 59 HACK: Ignore negative part of format string, mimicking ICU 58 behavior.
-  // TODO(sffc): Make sure this is fixed during the overhaul port in ICU 60.
-  int32_t semiPos = formatStr.indexOf(';', 0);
-  if (semiPos == -1) {
-    semiPos = formatStr.length();
-  }
-  UnicodeString positivePart = formatStr.tempSubString(0, semiPos);
-
-  int32_t firstIdx = positivePart.indexOf(kZero, UPRV_LENGTHOF(kZero), 0);
+  int32_t firstIdx = formatStr.indexOf(kZero, UPRV_LENGTHOF(kZero), 0);
   // We must have 0's in format string.
   if (firstIdx == -1) {
     status = U_INTERNAL_PROGRAM_ERROR;
     return 0;
   }
-  int32_t lastIdx = positivePart.lastIndexOf(kZero, UPRV_LENGTHOF(kZero), firstIdx);
+  int32_t lastIdx = formatStr.lastIndexOf(kZero, UPRV_LENGTHOF(kZero), firstIdx);
   CDFUnit* unit = createCDFUnit(variant, log10Value, result, status);
   if (U_FAILURE(status)) {
     return 0;
@@ -799,10 +790,10 @@ static int32_t populatePrefixSuffix(
   unit->markAsSet();
 
   // Everything up to first 0 is the prefix
-  unit->prefix = positivePart.tempSubString(0, firstIdx);
+  unit->prefix = formatStr.tempSubString(0, firstIdx);
   fixQuotes(unit->prefix);
   // Everything beyond the last 0 is the suffix
-  unit->suffix = positivePart.tempSubString(lastIdx + 1);
+  unit->suffix = formatStr.tempSubString(lastIdx + 1);
   fixQuotes(unit->suffix);
 
   // If there is effectively no prefix or suffix, ignore the actual number of
@@ -813,7 +804,7 @@ static int32_t populatePrefixSuffix(
 
   // Calculate number of zeros before decimal point
   int32_t idx = firstIdx + 1;
-  while (idx <= lastIdx && positivePart.charAt(idx) == u_0) {
+  while (idx <= lastIdx && formatStr.charAt(idx) == u_0) {
     ++idx;
   }
   return (idx - firstIdx);
index ba2040d..bcbd8be 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5c38aa6..afca9b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index db2ddb7..bacd420 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 076296a..ecf23e5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 36552c4..5dadf37 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index d4bfa75..d0dc0d2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 83bf531..844fc43 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index fe379ce..0931ff7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index ff26e5e..66289ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index cde9019..c0c3318 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 31fce5d..503a5a5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 713fd4e..4d0918b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index d98f18a..fef61ba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 8ccf1d5..6a49a85 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 0b0d896..10bd9c9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 9768783..a196acf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 59f2dbe..609ebe4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index cef3544..68ebaf3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index b42bd8b..2f15379 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 6089eb6..72d65dc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index d224270..26ea7f4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 U_NAMESPACE_BEGIN
 
-CurrencyAmount::CurrencyAmount(const Formattable& amount, ConstChar16Ptr isoCode,
+CurrencyAmount::CurrencyAmount(const Formattable& amount, const UChar* isoCode,
                                UErrorCode& ec) :
     Measure(amount, new CurrencyUnit(isoCode, ec), ec) {
 }
 
-CurrencyAmount::CurrencyAmount(double amount, ConstChar16Ptr isoCode,
+CurrencyAmount::CurrencyAmount(double amount, const UChar* isoCode,
                                UErrorCode& ec) :
     Measure(Formattable(amount), new CurrencyUnit(isoCode, ec), ec) {
 }
index 06bdad0..b92aa00 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 97d44cb..83e0272 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 9a7996b..5140b5e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -20,7 +20,6 @@
 
 #include "unicode/locid.h"
 #include "unicode/plurrule.h"
-#include "unicode/strenum.h"
 #include "unicode/ures.h"
 #include "unicode/numsys.h"
 #include "cstring.h"
index 1978854..ede1900 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 
 U_NAMESPACE_BEGIN
 
-CurrencyUnit::CurrencyUnit(ConstChar16Ptr _isoCode, UErrorCode& ec) {
+CurrencyUnit::CurrencyUnit(const UChar* _isoCode, UErrorCode& ec) {
     *isoCode = 0;
     if (U_SUCCESS(ec)) {
-        if (_isoCode != nullptr && u_strlen(_isoCode)==3) {
+        if (_isoCode && u_strlen(_isoCode)==3) {
             u_strcpy(isoCode, _isoCode);
             char simpleIsoCode[4];
             u_UCharsToChars(isoCode, simpleIsoCode, 4);
index 73bc421..328ad85 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 04bd67b..99f3fd8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index 3e879be..2767e3f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -80,7 +80,7 @@ public:
             fSkeleton(other.fSkeleton) { }
     virtual ~DateFmtBestPatternKey();
     virtual int32_t hashCode() const {
-        return (int32_t)(37u * (uint32_t)LocaleCacheKey<DateFmtBestPattern>::hashCode() + (uint32_t)fSkeleton.hashCode());
+        return 37 * LocaleCacheKey<DateFmtBestPattern>::hashCode() + fSkeleton.hashCode();
     }
     virtual UBool operator==(const CacheKeyBase &other) const {
        // reflexive
@@ -498,7 +498,7 @@ DateFormat* U_EXPORT2
 DateFormat::create(EStyle timeStyle, EStyle dateStyle, const Locale& locale)
 {
     UErrorCode status = U_ZERO_ERROR;
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
     char buffer[8];
     int32_t count = locale.getKeywordValue("compat", buffer, sizeof(buffer), status);
 
index f7ec1e6..3041482 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -174,7 +174,7 @@ struct DayPeriodRulesDataSink : public ResourceSink {
         }
     }
 
-    void addCutoff(CutoffType type, const UnicodeString &hour_str, UErrorCode &errorCode) {
+    void addCutoff(CutoffType type, UnicodeString hour_str, UErrorCode &errorCode) {
         if (U_FAILURE(errorCode)) { return; }
 
         if (type == CUTOFF_TYPE_UNKNOWN) {
index 610c617..3c006cd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e582efb..5885872 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 08a85b5..caf230d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/i18n/decContext.c b/source/i18n/decContext.c
new file mode 100644 (file)
index 0000000..4e29707
--- /dev/null
@@ -0,0 +1,432 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/* ------------------------------------------------------------------ */
+/* Decimal Context module                                             */
+/* ------------------------------------------------------------------ */
+/* Copyright (c) IBM Corporation, 2000-2012.  All rights reserved.    */
+/*                                                                    */
+/* This software is made available under the terms of the             */
+/* ICU License -- ICU 1.8.1 and later.                                */
+/*                                                                    */
+/* The description and User's Guide ("The decNumber C Library") for   */
+/* this software is called decNumber.pdf.  This document is           */
+/* available, together with arithmetic and format specifications,     */
+/* testcases, and Web links, on the General Decimal Arithmetic page.  */
+/*                                                                    */
+/* Please send comments, suggestions, and corrections to the author:  */
+/*   mfc@uk.ibm.com                                                   */
+/*   Mike Cowlishaw, IBM Fellow                                       */
+/*   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         */
+/* ------------------------------------------------------------------ */
+/* This module comprises the routines for handling arithmetic         */
+/* context structures.                                                */
+/* ------------------------------------------------------------------ */
+
+#include <string.h>           /* for strcmp  */
+#include <stdio.h>            /* for printf if DECCHECK  */
+#include "decContext.h"       /* context and base types  */
+#include "decNumberLocal.h"   /* decNumber local types, etc.  */
+
+#if 0  /* ICU: No need to test endianness at runtime. */
+/* compile-time endian tester [assumes sizeof(Int)>1] */
+static  const  Int mfcone=1;                 /* constant 1  */
+static  const  Flag *mfctop=(Flag *)&mfcone; /* -> top byte  */
+#define LITEND *mfctop             /* named flag; 1=little-endian  */
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decContextClearStatus -- clear bits in current status              */
+/*                                                                    */
+/*  context is the context structure to be queried                    */
+/*  mask indicates the bits to be cleared (the status bit that        */
+/*    corresponds to each 1 bit in the mask is cleared)               */
+/*  returns context                                                   */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext * U_EXPORT2 uprv_decContextClearStatus(decContext *context, uInt mask) {
+  context->status&=~mask;
+  return context;
+  } /* decContextClearStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextDefault -- initialize a context structure                */
+/*                                                                    */
+/*  context is the structure to be initialized                        */
+/*  kind selects the required set of default values, one of:          */
+/*      DEC_INIT_BASE       -- select ANSI X3-274 defaults            */
+/*      DEC_INIT_DECIMAL32  -- select IEEE 754 defaults, 32-bit       */
+/*      DEC_INIT_DECIMAL64  -- select IEEE 754 defaults, 64-bit       */
+/*      DEC_INIT_DECIMAL128 -- select IEEE 754 defaults, 128-bit      */
+/*      For any other value a valid context is returned, but with     */
+/*      Invalid_operation set in the status field.                    */
+/*  returns a context structure with the appropriate initial values.  */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext *  U_EXPORT2 uprv_decContextDefault(decContext *context, Int kind) {
+  /* set defaults...  */
+  context->digits=9;                         /* 9 digits  */
+  context->emax=DEC_MAX_EMAX;                /* 9-digit exponents  */
+  context->emin=DEC_MIN_EMIN;                /* .. balanced  */
+  context->round=DEC_ROUND_HALF_UP;          /* 0.5 rises  */
+  context->traps=DEC_Errors;                 /* all but informational  */
+  context->status=0;                         /* cleared  */
+  context->clamp=0;                          /* no clamping  */
+  #if DECSUBSET
+  context->extended=0;                       /* cleared  */
+  #endif
+  switch (kind) {
+    case DEC_INIT_BASE:
+      /* [use defaults]  */
+      break;
+    case DEC_INIT_DECIMAL32:
+      context->digits=7;                     /* digits  */
+      context->emax=96;                      /* Emax  */
+      context->emin=-95;                     /* Emin  */
+      context->round=DEC_ROUND_HALF_EVEN;    /* 0.5 to nearest even  */
+      context->traps=0;                      /* no traps set  */
+      context->clamp=1;                      /* clamp exponents  */
+      #if DECSUBSET
+      context->extended=1;                   /* set  */
+      #endif
+      break;
+    case DEC_INIT_DECIMAL64:
+      context->digits=16;                    /* digits  */
+      context->emax=384;                     /* Emax  */
+      context->emin=-383;                    /* Emin  */
+      context->round=DEC_ROUND_HALF_EVEN;    /* 0.5 to nearest even  */
+      context->traps=0;                      /* no traps set  */
+      context->clamp=1;                      /* clamp exponents  */
+      #if DECSUBSET
+      context->extended=1;                   /* set  */
+      #endif
+      break;
+    case DEC_INIT_DECIMAL128:
+      context->digits=34;                    /* digits  */
+      context->emax=6144;                    /* Emax  */
+      context->emin=-6143;                   /* Emin  */
+      context->round=DEC_ROUND_HALF_EVEN;    /* 0.5 to nearest even  */
+      context->traps=0;                      /* no traps set  */
+      context->clamp=1;                      /* clamp exponents  */
+      #if DECSUBSET
+      context->extended=1;                   /* set  */
+      #endif
+      break;
+
+    default:                                 /* invalid Kind  */
+      /* use defaults, and ..  */
+      uprv_decContextSetStatus(context, DEC_Invalid_operation); /* trap  */
+    }
+
+  return context;} /* decContextDefault  */
+
+/* ------------------------------------------------------------------ */
+/* decContextGetRounding -- return current rounding mode              */
+/*                                                                    */
+/*  context is the context structure to be queried                    */
+/*  returns the rounding mode                                         */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI enum rounding  U_EXPORT2 uprv_decContextGetRounding(decContext *context) {
+  return context->round;
+  } /* decContextGetRounding  */
+
+/* ------------------------------------------------------------------ */
+/* decContextGetStatus -- return current status                       */
+/*                                                                    */
+/*  context is the context structure to be queried                    */
+/*  returns status                                                    */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI uInt  U_EXPORT2 uprv_decContextGetStatus(decContext *context) {
+  return context->status;
+  } /* decContextGetStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextRestoreStatus -- restore bits in current status          */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  newstatus is the source for the bits to be restored               */
+/*  mask indicates the bits to be restored (the status bit that       */
+/*    corresponds to each 1 bit in the mask is set to the value of    */
+/*    the correspnding bit in newstatus)                              */
+/*  returns context                                                   */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext * U_EXPORT2 uprv_decContextRestoreStatus(decContext *context,
+                                    uInt newstatus, uInt mask) {
+  context->status&=~mask;               /* clear the selected bits  */
+  context->status|=(mask&newstatus);    /* or in the new bits  */
+  return context;
+  } /* decContextRestoreStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextSaveStatus -- save bits in current status                */
+/*                                                                    */
+/*  context is the context structure to be queried                    */
+/*  mask indicates the bits to be saved (the status bits that         */
+/*    correspond to each 1 bit in the mask are saved)                 */
+/*  returns the AND of the mask and the current status                */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI uInt  U_EXPORT2 uprv_decContextSaveStatus(decContext *context, uInt mask) {
+  return context->status&mask;
+  } /* decContextSaveStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextSetRounding -- set current rounding mode                 */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  newround is the value which will replace the current mode         */
+/*  returns context                                                   */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext * U_EXPORT2 uprv_decContextSetRounding(decContext *context,
+                                  enum rounding newround) {
+  context->round=newround;
+  return context;
+  } /* decContextSetRounding  */
+
+/* ------------------------------------------------------------------ */
+/* decContextSetStatus -- set status and raise trap if appropriate    */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  status  is the DEC_ exception code                                */
+/*  returns the context structure                                     */
+/*                                                                    */
+/* Control may never return from this routine, if there is a signal   */
+/* handler and it takes a long jump.                                  */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatus(decContext *context, uInt status) {
+  context->status|=status;
+#if 0  /* ICU: Do not raise signals. */
+  if (status & context->traps) raise(SIGFPE);
+#endif
+  return context;} /* decContextSetStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextSetStatusFromString -- set status from a string + trap   */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  string is a string exactly equal to one that might be returned    */
+/*            by decContextStatusToString                             */
+/*                                                                    */
+/*  The status bit corresponding to the string is set, and a trap     */
+/*  is raised if appropriate.                                         */
+/*                                                                    */
+/*  returns the context structure, unless the string is equal to      */
+/*    DEC_Condition_MU or is not recognized.  In these cases NULL is  */
+/*    returned.                                                       */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatusFromString(decContext *context,
+                                           const char *string) {
+  if (strcmp(string, DEC_Condition_CS)==0)
+    return uprv_decContextSetStatus(context, DEC_Conversion_syntax);
+  if (strcmp(string, DEC_Condition_DZ)==0)
+    return uprv_decContextSetStatus(context, DEC_Division_by_zero);
+  if (strcmp(string, DEC_Condition_DI)==0)
+    return uprv_decContextSetStatus(context, DEC_Division_impossible);
+  if (strcmp(string, DEC_Condition_DU)==0)
+    return uprv_decContextSetStatus(context, DEC_Division_undefined);
+  if (strcmp(string, DEC_Condition_IE)==0)
+    return uprv_decContextSetStatus(context, DEC_Inexact);
+  if (strcmp(string, DEC_Condition_IS)==0)
+    return uprv_decContextSetStatus(context, DEC_Insufficient_storage);
+  if (strcmp(string, DEC_Condition_IC)==0)
+    return uprv_decContextSetStatus(context, DEC_Invalid_context);
+  if (strcmp(string, DEC_Condition_IO)==0)
+    return uprv_decContextSetStatus(context, DEC_Invalid_operation);
+  #if DECSUBSET
+  if (strcmp(string, DEC_Condition_LD)==0)
+    return uprv_decContextSetStatus(context, DEC_Lost_digits);
+  #endif
+  if (strcmp(string, DEC_Condition_OV)==0)
+    return uprv_decContextSetStatus(context, DEC_Overflow);
+  if (strcmp(string, DEC_Condition_PA)==0)
+    return uprv_decContextSetStatus(context, DEC_Clamped);
+  if (strcmp(string, DEC_Condition_RO)==0)
+    return uprv_decContextSetStatus(context, DEC_Rounded);
+  if (strcmp(string, DEC_Condition_SU)==0)
+    return uprv_decContextSetStatus(context, DEC_Subnormal);
+  if (strcmp(string, DEC_Condition_UN)==0)
+    return uprv_decContextSetStatus(context, DEC_Underflow);
+  if (strcmp(string, DEC_Condition_ZE)==0)
+    return context;
+  return NULL;  /* Multiple status, or unknown  */
+  } /* decContextSetStatusFromString  */
+
+/* ------------------------------------------------------------------ */
+/* decContextSetStatusFromStringQuiet -- set status from a string     */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  string is a string exactly equal to one that might be returned    */
+/*            by decContextStatusToString                             */
+/*                                                                    */
+/*  The status bit corresponding to the string is set; no trap is     */
+/*  raised.                                                           */
+/*                                                                    */
+/*  returns the context structure, unless the string is equal to      */
+/*    DEC_Condition_MU or is not recognized.  In these cases NULL is  */
+/*    returned.                                                       */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *context,
+                                                const char *string) {
+  if (strcmp(string, DEC_Condition_CS)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Conversion_syntax);
+  if (strcmp(string, DEC_Condition_DZ)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Division_by_zero);
+  if (strcmp(string, DEC_Condition_DI)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Division_impossible);
+  if (strcmp(string, DEC_Condition_DU)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Division_undefined);
+  if (strcmp(string, DEC_Condition_IE)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Inexact);
+  if (strcmp(string, DEC_Condition_IS)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Insufficient_storage);
+  if (strcmp(string, DEC_Condition_IC)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Invalid_context);
+  if (strcmp(string, DEC_Condition_IO)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Invalid_operation);
+  #if DECSUBSET
+  if (strcmp(string, DEC_Condition_LD)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Lost_digits);
+  #endif
+  if (strcmp(string, DEC_Condition_OV)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Overflow);
+  if (strcmp(string, DEC_Condition_PA)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Clamped);
+  if (strcmp(string, DEC_Condition_RO)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Rounded);
+  if (strcmp(string, DEC_Condition_SU)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Subnormal);
+  if (strcmp(string, DEC_Condition_UN)==0)
+    return uprv_decContextSetStatusQuiet(context, DEC_Underflow);
+  if (strcmp(string, DEC_Condition_ZE)==0)
+    return context;
+  return NULL;  /* Multiple status, or unknown  */
+  } /* decContextSetStatusFromStringQuiet  */
+
+/* ------------------------------------------------------------------ */
+/* decContextSetStatusQuiet -- set status without trap                */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  status  is the DEC_ exception code                                */
+/*  returns the context structure                                     */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext *  U_EXPORT2 uprv_decContextSetStatusQuiet(decContext *context, uInt status) {
+  context->status|=status;
+  return context;} /* decContextSetStatusQuiet  */
+
+/* ------------------------------------------------------------------ */
+/* decContextStatusToString -- convert status flags to a string       */
+/*                                                                    */
+/*  context is a context with valid status field                      */
+/*                                                                    */
+/*  returns a constant string describing the condition.  If multiple  */
+/*    (or no) flags are set, a generic constant message is returned.  */
+/* ------------------------------------------------------------------ */
+U_CAPI const char * U_EXPORT2 uprv_decContextStatusToString(const decContext *context) {
+  Int status=context->status;
+
+  /* test the five IEEE first, as some of the others are ambiguous when  */
+  /* DECEXTFLAG=0  */
+  if (status==DEC_Invalid_operation    ) return DEC_Condition_IO;
+  if (status==DEC_Division_by_zero     ) return DEC_Condition_DZ;
+  if (status==DEC_Overflow             ) return DEC_Condition_OV;
+  if (status==DEC_Underflow            ) return DEC_Condition_UN;
+  if (status==DEC_Inexact              ) return DEC_Condition_IE;
+
+  if (status==DEC_Division_impossible  ) return DEC_Condition_DI;
+  if (status==DEC_Division_undefined   ) return DEC_Condition_DU;
+  if (status==DEC_Rounded              ) return DEC_Condition_RO;
+  if (status==DEC_Clamped              ) return DEC_Condition_PA;
+  if (status==DEC_Subnormal            ) return DEC_Condition_SU;
+  if (status==DEC_Conversion_syntax    ) return DEC_Condition_CS;
+  if (status==DEC_Insufficient_storage ) return DEC_Condition_IS;
+  if (status==DEC_Invalid_context      ) return DEC_Condition_IC;
+  #if DECSUBSET
+  if (status==DEC_Lost_digits          ) return DEC_Condition_LD;
+  #endif
+  if (status==0                        ) return DEC_Condition_ZE;
+  return DEC_Condition_MU;  /* Multiple errors  */
+  } /* decContextStatusToString  */
+
+/* ------------------------------------------------------------------ */
+/* decContextTestEndian -- test whether DECLITEND is set correctly    */
+/*                                                                    */
+/*  quiet is 1 to suppress message; 0 otherwise                       */
+/*  returns 0 if DECLITEND is correct                                 */
+/*          1 if DECLITEND is incorrect and should be 1               */
+/*         -1 if DECLITEND is incorrect and should be 0               */
+/*                                                                    */
+/* A message is displayed if the return value is not 0 and quiet==0.  */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+#if 0  /* ICU: Unused function. Anyway, do not call printf(). */
+U_CAPI Int  U_EXPORT2 uprv_decContextTestEndian(Flag quiet) {
+  Int res=0;                  /* optimist  */
+  uInt dle=(uInt)DECLITEND;   /* unsign  */
+  if (dle>1) dle=1;           /* ensure 0 or 1  */
+
+  if (LITEND!=DECLITEND) {
+    const char *adj;
+    if (!quiet) {
+      if (LITEND) adj="little";
+             else adj="big";
+      printf("Warning: DECLITEND is set to %d, but this computer appears to be %s-endian\n",
+             DECLITEND, adj);
+      }
+    res=(Int)LITEND-dle;
+    }
+  return res;
+  } /* decContextTestEndian  */
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decContextTestSavedStatus -- test bits in saved status             */
+/*                                                                    */
+/*  oldstatus is the status word to be tested                         */
+/*  mask indicates the bits to be tested (the oldstatus bits that     */
+/*    correspond to each 1 bit in the mask are tested)                */
+/*  returns 1 if any of the tested bits are 1, or 0 otherwise         */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI  uInt U_EXPORT2 uprv_decContextTestSavedStatus(uInt oldstatus, uInt mask) {
+  return (oldstatus&mask)!=0;
+  } /* decContextTestSavedStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextTestStatus -- test bits in current status                */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  mask indicates the bits to be tested (the status bits that        */
+/*    correspond to each 1 bit in the mask are tested)                */
+/*  returns 1 if any of the tested bits are 1, or 0 otherwise         */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI uInt  U_EXPORT2 uprv_decContextTestStatus(decContext *context, uInt mask) {
+  return (context->status&mask)!=0;
+  } /* decContextTestStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decContextZeroStatus -- clear all status bits                      */
+/*                                                                    */
+/*  context is the context structure to be updated                    */
+/*  returns context                                                   */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decContext * U_EXPORT2 uprv_decContextZeroStatus(decContext *context) {
+  context->status=0;
+  return context;
+  } /* decContextZeroStatus  */
+
index e145777..6a8768e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /* ------------------------------------------------------------------ */
 /* Decimal Context module header                                      */
diff --git a/source/i18n/decNumber.c b/source/i18n/decNumber.c
new file mode 100644 (file)
index 0000000..2604c37
--- /dev/null
@@ -0,0 +1,8188 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/* ------------------------------------------------------------------ */
+/* Decimal Number arithmetic module                                   */
+/* ------------------------------------------------------------------ */
+/* Copyright (c) IBM Corporation, 2000-2014.  All rights reserved.    */
+/*                                                                    */
+/* This software is made available under the terms of the             */
+/* ICU License -- ICU 1.8.1 and later.                                */
+/*                                                                    */
+/* The description and User's Guide ("The decNumber C Library") for   */
+/* this software is called decNumber.pdf.  This document is           */
+/* available, together with arithmetic and format specifications,     */
+/* testcases, and Web links, on the General Decimal Arithmetic page.  */
+/*                                                                    */
+/* Please send comments, suggestions, and corrections to the author:  */
+/*   mfc@uk.ibm.com                                                   */
+/*   Mike Cowlishaw, IBM Fellow                                       */
+/*   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         */
+/* ------------------------------------------------------------------ */
+
+/* Modified version, for use from within ICU.
+ *    Renamed public functions, to avoid an unwanted export of the 
+ *    standard names from the ICU library.
+ *
+ *    Use ICU's uprv_malloc() and uprv_free()
+ *
+ *    Revert comment syntax to plain C
+ *
+ *    Remove a few compiler warnings.
+ */
+
+/* This module comprises the routines for arbitrary-precision General */
+/* Decimal Arithmetic as defined in the specification which may be    */
+/* found on the General Decimal Arithmetic pages.  It implements both */
+/* the full ('extended') arithmetic and the simpler ('subset')        */
+/* arithmetic.                                                        */
+/*                                                                    */
+/* Usage notes:                                                       */
+/*                                                                    */
+/* 1. This code is ANSI C89 except:                                   */
+/*                                                                    */
+/*    a) C99 line comments (double forward slash) are used.  (Most C  */
+/*       compilers accept these.  If yours does not, a simple script  */
+/*       can be used to convert them to ANSI C comments.)             */
+/*                                                                    */
+/*    b) Types from C99 stdint.h are used.  If you do not have this   */
+/*       header file, see the User's Guide section of the decNumber   */
+/*       documentation; this lists the necessary definitions.         */
+/*                                                                    */
+/*    c) If DECDPUN>4 or DECUSE64=1, the C99 64-bit int64_t and       */
+/*       uint64_t types may be used.  To avoid these, set DECUSE64=0  */
+/*       and DECDPUN<=4 (see documentation).                          */
+/*                                                                    */
+/*    The code also conforms to C99 restrictions; in particular,      */
+/*    strict aliasing rules are observed.                             */
+/*                                                                    */
+/* 2. The decNumber format which this library uses is optimized for   */
+/*    efficient processing of relatively short numbers; in particular */
+/*    it allows the use of fixed sized structures and minimizes copy  */
+/*    and move operations.  It does, however, support arbitrary       */
+/*    precision (up to 999,999,999 digits) and arbitrary exponent     */
+/*    range (Emax in the range 0 through 999,999,999 and Emin in the  */
+/*    range -999,999,999 through 0).  Mathematical functions (for     */
+/*    example decNumberExp) as identified below are restricted more   */
+/*    tightly: digits, emax, and -emin in the context must be <=      */
+/*    DEC_MAX_MATH (999999), and their operand(s) must be within      */
+/*    these bounds.                                                   */
+/*                                                                    */
+/* 3. Logical functions are further restricted; their operands must   */
+/*    be finite, positive, have an exponent of zero, and all digits   */
+/*    must be either 0 or 1.  The result will only contain digits     */
+/*    which are 0 or 1 (and will have exponent=0 and a sign of 0).    */
+/*                                                                    */
+/* 4. Operands to operator functions are never modified unless they   */
+/*    are also specified to be the result number (which is always     */
+/*    permitted).  Other than that case, operands must not overlap.   */
+/*                                                                    */
+/* 5. Error handling: the type of the error is ORed into the status   */
+/*    flags in the current context (decContext structure).  The       */
+/*    SIGFPE signal is then raised if the corresponding trap-enabler  */
+/*    flag in the decContext is set (is 1).                           */
+/*                                                                    */
+/*    It is the responsibility of the caller to clear the status      */
+/*    flags as required.                                              */
+/*                                                                    */
+/*    The result of any routine which returns a number will always    */
+/*    be a valid number (which may be a special value, such as an     */
+/*    Infinity or NaN).                                               */
+/*                                                                    */
+/* 6. The decNumber format is not an exchangeable concrete            */
+/*    representation as it comprises fields which may be machine-     */
+/*    dependent (packed or unpacked, or special length, for example). */
+/*    Canonical conversions to and from strings are provided; other   */
+/*    conversions are available in separate modules.                  */
+/*                                                                    */
+/* 7. Normally, input operands are assumed to be valid.  Set DECCHECK */
+/*    to 1 for extended operand checking (including NULL operands).   */
+/*    Results are undefined if a badly-formed structure (or a NULL    */
+/*    pointer to a structure) is provided, though with DECCHECK       */
+/*    enabled the operator routines are protected against exceptions. */
+/*    (Except if the result pointer is NULL, which is unrecoverable.) */
+/*                                                                    */
+/*    However, the routines will never cause exceptions if they are   */
+/*    given well-formed operands, even if the value of the operands   */
+/*    is inappropriate for the operation and DECCHECK is not set.     */
+/*    (Except for SIGFPE, as and where documented.)                   */
+/*                                                                    */
+/* 8. Subset arithmetic is available only if DECSUBSET is set to 1.   */
+/* ------------------------------------------------------------------ */
+/* Implementation notes for maintenance of this module:               */
+/*                                                                    */
+/* 1. Storage leak protection:  Routines which use malloc are not     */
+/*    permitted to use return for fastpath or error exits (i.e.,      */
+/*    they follow strict structured programming conventions).         */
+/*    Instead they have a do{}while(0); construct surrounding the     */
+/*    code which is protected -- break may be used to exit this.      */
+/*    Other routines can safely use the return statement inline.      */
+/*                                                                    */
+/*    Storage leak accounting can be enabled using DECALLOC.          */
+/*                                                                    */
+/* 2. All loops use the for(;;) construct.  Any do construct does     */
+/*    not loop; it is for allocation protection as just described.    */
+/*                                                                    */
+/* 3. Setting status in the context must always be the very last      */
+/*    action in a routine, as non-0 status may raise a trap and hence */
+/*    the call to set status may not return (if the handler uses long */
+/*    jump).  Therefore all cleanup must be done first.  In general,  */
+/*    to achieve this status is accumulated and is only applied just  */
+/*    before return by calling decContextSetStatus (via decStatus).   */
+/*                                                                    */
+/*    Routines which allocate storage cannot, in general, use the     */
+/*    'top level' routines which could cause a non-returning          */
+/*    transfer of control.  The decXxxxOp routines are safe (do not   */
+/*    call decStatus even if traps are set in the context) and should */
+/*    be used instead (they are also a little faster).                */
+/*                                                                    */
+/* 4. Exponent checking is minimized by allowing the exponent to      */
+/*    grow outside its limits during calculations, provided that      */
+/*    the decFinalize function is called later.  Multiplication and   */
+/*    division, and intermediate calculations in exponentiation,      */
+/*    require more careful checks because of the risk of 31-bit       */
+/*    overflow (the most negative valid exponent is -1999999997, for  */
+/*    a 999999999-digit number with adjusted exponent of -999999999). */
+/*                                                                    */
+/* 5. Rounding is deferred until finalization of results, with any    */
+/*    'off to the right' data being represented as a single digit     */
+/*    residue (in the range -1 through 9).  This avoids any double-   */
+/*    rounding when more than one shortening takes place (for         */
+/*    example, when a result is subnormal).                           */
+/*                                                                    */
+/* 6. The digits count is allowed to rise to a multiple of DECDPUN    */
+/*    during many operations, so whole Units are handled and exact    */
+/*    accounting of digits is not needed.  The correct digits value   */
+/*    is found by decGetDigits, which accounts for leading zeros.     */
+/*    This must be called before any rounding if the number of digits */
+/*    is not known exactly.                                           */
+/*                                                                    */
+/* 7. The multiply-by-reciprocal 'trick' is used for partitioning     */
+/*    numbers up to four digits, using appropriate constants.  This   */
+/*    is not useful for longer numbers because overflow of 32 bits    */
+/*    would lead to 4 multiplies, which is almost as expensive as     */
+/*    a divide (unless a floating-point or 64-bit multiply is         */
+/*    assumed to be available).                                       */
+/*                                                                    */
+/* 8. Unusual abbreviations that may be used in the commentary:       */
+/*      lhs -- left hand side (operand, of an operation)              */
+/*      lsd -- least significant digit (of coefficient)               */
+/*      lsu -- least significant Unit (of coefficient)                */
+/*      msd -- most significant digit (of coefficient)                */
+/*      msi -- most significant item (in an array)                    */
+/*      msu -- most significant Unit (of coefficient)                 */
+/*      rhs -- right hand side (operand, of an operation)             */
+/*      +ve -- positive                                               */
+/*      -ve -- negative                                               */
+/*      **  -- raise to the power                                     */
+/* ------------------------------------------------------------------ */
+
+#include <stdlib.h>                /* for malloc, free, etc.  */
+/*  #include <stdio.h>   */        /* for printf [if needed]  */
+#include <string.h>                /* for strcpy  */
+#include <ctype.h>                 /* for lower  */
+#include "cmemory.h"               /* for uprv_malloc, etc., in ICU */
+#include "decNumber.h"             /* base number library  */
+#include "decNumberLocal.h"        /* decNumber local types, etc.  */
+#include "uassert.h"
+
+/* Constants */
+/* Public lookup table used by the D2U macro  */
+static const uByte d2utable[DECMAXD2U+1]=D2UTABLE;
+
+#define DECVERB     1              /* set to 1 for verbose DECCHECK  */
+#define powers      DECPOWERS      /* old internal name  */
+
+/* Local constants  */
+#define DIVIDE      0x80           /* Divide operators  */
+#define REMAINDER   0x40           /* ..  */
+#define DIVIDEINT   0x20           /* ..  */
+#define REMNEAR     0x10           /* ..  */
+#define COMPARE     0x01           /* Compare operators  */
+#define COMPMAX     0x02           /* ..  */
+#define COMPMIN     0x03           /* ..  */
+#define COMPTOTAL   0x04           /* ..  */
+#define COMPNAN     0x05           /* .. [NaN processing]  */
+#define COMPSIG     0x06           /* .. [signaling COMPARE]  */
+#define COMPMAXMAG  0x07           /* ..  */
+#define COMPMINMAG  0x08           /* ..  */
+
+#define DEC_sNaN     0x40000000    /* local status: sNaN signal  */
+#define BADINT  (Int)0x80000000    /* most-negative Int; error indicator  */
+/* Next two indicate an integer >= 10**6, and its parity (bottom bit)  */
+#define BIGEVEN (Int)0x80000002
+#define BIGODD  (Int)0x80000003
+
+static const Unit uarrone[1]={1};   /* Unit array of 1, used for incrementing  */
+
+/* ------------------------------------------------------------------ */
+/* round-for-reround digits                                           */
+/* ------------------------------------------------------------------ */
+#if 0
+static const uByte DECSTICKYTAB[10]={1,1,2,3,4,6,6,7,8,9}; /* used if sticky */
+#endif
+
+/* ------------------------------------------------------------------ */
+/* Powers of ten (powers[n]==10**n, 0<=n<=9)                          */
+/* ------------------------------------------------------------------ */
+static const uInt DECPOWERS[10]={1, 10, 100, 1000, 10000, 100000, 1000000,
+                          10000000, 100000000, 1000000000};
+
+
+/* Granularity-dependent code */
+#if DECDPUN<=4
+  #define eInt  Int           /* extended integer  */
+  #define ueInt uInt          /* unsigned extended integer  */
+  /* Constant multipliers for divide-by-power-of five using reciprocal  */
+  /* multiply, after removing powers of 2 by shifting, and final shift  */
+  /* of 17 [we only need up to **4]  */
+  static const uInt multies[]={131073, 26215, 5243, 1049, 210};
+  /* QUOT10 -- macro to return the quotient of unit u divided by 10**n  */
+  #define QUOT10(u, n) ((((uInt)(u)>>(n))*multies[n])>>17)
+#else
+  /* For DECDPUN>4 non-ANSI-89 64-bit types are needed.  */
+  #if !DECUSE64
+    #error decNumber.c: DECUSE64 must be 1 when DECDPUN>4
+  #endif
+  #define eInt  Long          /* extended integer  */
+  #define ueInt uLong         /* unsigned extended integer  */
+#endif
+
+/* Local routines */
+static decNumber * decAddOp(decNumber *, const decNumber *, const decNumber *,
+                              decContext *, uByte, uInt *);
+static Flag        decBiStr(const char *, const char *, const char *);
+static uInt        decCheckMath(const decNumber *, decContext *, uInt *);
+static void        decApplyRound(decNumber *, decContext *, Int, uInt *);
+static Int         decCompare(const decNumber *lhs, const decNumber *rhs, Flag);
+static decNumber * decCompareOp(decNumber *, const decNumber *,
+                              const decNumber *, decContext *,
+                              Flag, uInt *);
+static void        decCopyFit(decNumber *, const decNumber *, decContext *,
+                              Int *, uInt *);
+static decNumber * decDecap(decNumber *, Int);
+static decNumber * decDivideOp(decNumber *, const decNumber *,
+                              const decNumber *, decContext *, Flag, uInt *);
+static decNumber * decExpOp(decNumber *, const decNumber *,
+                              decContext *, uInt *);
+static void        decFinalize(decNumber *, decContext *, Int *, uInt *);
+static Int         decGetDigits(Unit *, Int);
+static Int         decGetInt(const decNumber *);
+static decNumber * decLnOp(decNumber *, const decNumber *,
+                              decContext *, uInt *);
+static decNumber * decMultiplyOp(decNumber *, const decNumber *,
+                              const decNumber *, decContext *,
+                              uInt *);
+static decNumber * decNaNs(decNumber *, const decNumber *,
+                              const decNumber *, decContext *, uInt *);
+static decNumber * decQuantizeOp(decNumber *, const decNumber *,
+                              const decNumber *, decContext *, Flag,
+                              uInt *);
+static void        decReverse(Unit *, Unit *);
+static void        decSetCoeff(decNumber *, decContext *, const Unit *,
+                              Int, Int *, uInt *);
+static void        decSetMaxValue(decNumber *, decContext *);
+static void        decSetOverflow(decNumber *, decContext *, uInt *);
+static void        decSetSubnormal(decNumber *, decContext *, Int *, uInt *);
+static Int         decShiftToLeast(Unit *, Int, Int);
+static Int         decShiftToMost(Unit *, Int, Int);
+static void        decStatus(decNumber *, uInt, decContext *);
+static void        decToString(const decNumber *, char[], Flag);
+static decNumber * decTrim(decNumber *, decContext *, Flag, Flag, Int *);
+static Int         decUnitAddSub(const Unit *, Int, const Unit *, Int, Int,
+                              Unit *, Int);
+static Int         decUnitCompare(const Unit *, Int, const Unit *, Int, Int);
+
+#if !DECSUBSET
+/* decFinish == decFinalize when no subset arithmetic needed */
+#define decFinish(a,b,c,d) decFinalize(a,b,c,d)
+#else
+static void        decFinish(decNumber *, decContext *, Int *, uInt *);
+static decNumber * decRoundOperand(const decNumber *, decContext *, uInt *);
+#endif
+
+/* Local macros */
+/* masked special-values bits  */
+#define SPECIALARG  (rhs->bits & DECSPECIAL)
+#define SPECIALARGS ((lhs->bits | rhs->bits) & DECSPECIAL)
+
+/* For use in ICU */
+#define malloc(a) uprv_malloc(a)
+#define free(a) uprv_free(a)
+
+/* Diagnostic macros, etc. */
+#if DECALLOC
+/* Handle malloc/free accounting.  If enabled, our accountable routines  */
+/* are used; otherwise the code just goes straight to the system malloc  */
+/* and free routines.  */
+#define malloc(a) decMalloc(a)
+#define free(a) decFree(a)
+#define DECFENCE 0x5a              /* corruption detector  */
+/* 'Our' malloc and free:  */
+static void *decMalloc(size_t);
+static void  decFree(void *);
+uInt decAllocBytes=0;              /* count of bytes allocated  */
+/* Note that DECALLOC code only checks for storage buffer overflow.  */
+/* To check for memory leaks, the decAllocBytes variable must be  */
+/* checked to be 0 at appropriate times (e.g., after the test  */
+/* harness completes a set of tests).  This checking may be unreliable  */
+/* if the testing is done in a multi-thread environment.  */
+#endif
+
+#if DECCHECK
+/* Optional checking routines.  Enabling these means that decNumber  */
+/* and decContext operands to operator routines are checked for  */
+/* correctness.  This roughly doubles the execution time of the  */
+/* fastest routines (and adds 600+ bytes), so should not normally be  */
+/* used in 'production'.  */
+/* decCheckInexact is used to check that inexact results have a full  */
+/* complement of digits (where appropriate -- this is not the case  */
+/* for Quantize, for example)  */
+#define DECUNRESU ((decNumber *)(void *)0xffffffff)
+#define DECUNUSED ((const decNumber *)(void *)0xffffffff)
+#define DECUNCONT ((decContext *)(void *)(0xffffffff))
+static Flag decCheckOperands(decNumber *, const decNumber *,
+                             const decNumber *, decContext *);
+static Flag decCheckNumber(const decNumber *);
+static void decCheckInexact(const decNumber *, decContext *);
+#endif
+
+#if DECTRACE || DECCHECK
+/* Optional trace/debugging routines (may or may not be used)  */
+void decNumberShow(const decNumber *);  /* displays the components of a number  */
+static void decDumpAr(char, const Unit *, Int);
+#endif
+
+/* ================================================================== */
+/* Conversions                                                        */
+/* ================================================================== */
+
+/* ------------------------------------------------------------------ */
+/* from-int32 -- conversion from Int or uInt                          */
+/*                                                                    */
+/*  dn is the decNumber to receive the integer                        */
+/*  in or uin is the integer to be converted                          */
+/*  returns dn                                                        */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromInt32(decNumber *dn, Int in) {
+  uInt unsig;
+  if (in>=0) unsig=in;
+   else {                               /* negative (possibly BADINT)  */
+    if (in==BADINT) unsig=(uInt)1073741824*2; /* special case  */
+     else unsig=-in;                    /* invert  */
+    }
+  /* in is now positive  */
+  uprv_decNumberFromUInt32(dn, unsig);
+  if (in<0) dn->bits=DECNEG;            /* sign needed  */
+  return dn;
+  } /* decNumberFromInt32  */
+
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromUInt32(decNumber *dn, uInt uin) {
+  Unit *up;                             /* work pointer  */
+  uprv_decNumberZero(dn);                    /* clean  */
+  if (uin==0) return dn;                /* [or decGetDigits bad call]  */
+  for (up=dn->lsu; uin>0; up++) {
+    *up=(Unit)(uin%(DECDPUNMAX+1));
+    uin=uin/(DECDPUNMAX+1);
+    }
+  dn->digits=decGetDigits(dn->lsu, up-dn->lsu);
+  return dn;
+  } /* decNumberFromUInt32  */
+
+/* ------------------------------------------------------------------ */
+/* to-int32 -- conversion to Int or uInt                              */
+/*                                                                    */
+/*  dn is the decNumber to convert                                    */
+/*  set is the context for reporting errors                           */
+/*  returns the converted decNumber, or 0 if Invalid is set           */
+/*                                                                    */
+/* Invalid is set if the decNumber does not have exponent==0 or if    */
+/* it is a NaN, Infinite, or out-of-range.                            */
+/* ------------------------------------------------------------------ */
+U_CAPI Int U_EXPORT2 uprv_decNumberToInt32(const decNumber *dn, decContext *set) {
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
+  #endif
+
+  /* special or too many digits, or bad exponent  */
+  if (dn->bits&DECSPECIAL || dn->digits>10 || dn->exponent!=0) ; /* bad  */
+   else { /* is a finite integer with 10 or fewer digits  */
+    Int d;                         /* work  */
+    const Unit *up;                /* ..  */
+    uInt hi=0, lo;                 /* ..  */
+    up=dn->lsu;                    /* -> lsu  */
+    lo=*up;                        /* get 1 to 9 digits  */
+    #if DECDPUN>1                  /* split to higher  */
+      hi=lo/10;
+      lo=lo%10;
+    #endif
+    up++;
+    /* collect remaining Units, if any, into hi  */
+    for (d=DECDPUN; d<dn->digits; up++, d+=DECDPUN) hi+=*up*powers[d-1];
+    /* now low has the lsd, hi the remainder  */
+    if (hi>214748364 || (hi==214748364 && lo>7)) { /* out of range?  */
+      /* most-negative is a reprieve  */
+      if (dn->bits&DECNEG && hi==214748364 && lo==8) return 0x80000000;
+      /* bad -- drop through  */
+      }
+     else { /* in-range always  */
+      Int i=X10(hi)+lo;
+      if (dn->bits&DECNEG) return -i;
+      return i;
+      }
+    } /* integer  */
+  uprv_decContextSetStatus(set, DEC_Invalid_operation); /* [may not return]  */
+  return 0;
+  } /* decNumberToInt32  */
+
+U_CAPI uInt U_EXPORT2 uprv_decNumberToUInt32(const decNumber *dn, decContext *set) {
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
+  #endif
+  /* special or too many digits, or bad exponent, or negative (<0)  */
+  if (dn->bits&DECSPECIAL || dn->digits>10 || dn->exponent!=0
+    || (dn->bits&DECNEG && !ISZERO(dn)));                   /* bad  */
+   else { /* is a finite integer with 10 or fewer digits  */
+    Int d;                         /* work  */
+    const Unit *up;                /* ..  */
+    uInt hi=0, lo;                 /* ..  */
+    up=dn->lsu;                    /* -> lsu  */
+    lo=*up;                        /* get 1 to 9 digits  */
+    #if DECDPUN>1                  /* split to higher  */
+      hi=lo/10;
+      lo=lo%10;
+    #endif
+    up++;
+    /* collect remaining Units, if any, into hi  */
+    for (d=DECDPUN; d<dn->digits; up++, d+=DECDPUN) hi+=*up*powers[d-1];
+
+    /* now low has the lsd, hi the remainder  */
+    if (hi>429496729 || (hi==429496729 && lo>5)) ; /* no reprieve possible  */
+     else return X10(hi)+lo;
+    } /* integer  */
+  uprv_decContextSetStatus(set, DEC_Invalid_operation); /* [may not return]  */
+  return 0;
+  } /* decNumberToUInt32  */
+
+/* ------------------------------------------------------------------ */
+/* to-scientific-string -- conversion to numeric string               */
+/* to-engineering-string -- conversion to numeric string              */
+/*                                                                    */
+/*   decNumberToString(dn, string);                                   */
+/*   decNumberToEngString(dn, string);                                */
+/*                                                                    */
+/*  dn is the decNumber to convert                                    */
+/*  string is the string where the result will be laid out            */
+/*                                                                    */
+/*  string must be at least dn->digits+14 characters long             */
+/*                                                                    */
+/*  No error is possible, and no status can be set.                   */
+/* ------------------------------------------------------------------ */
+U_CAPI char * U_EXPORT2 uprv_decNumberToString(const decNumber *dn, char *string){
+  decToString(dn, string, 0);
+  return string;
+  } /* DecNumberToString  */
+
+U_CAPI char * U_EXPORT2 uprv_decNumberToEngString(const decNumber *dn, char *string){
+  decToString(dn, string, 1);
+  return string;
+  } /* DecNumberToEngString  */
+
+/* ------------------------------------------------------------------ */
+/* to-number -- conversion from numeric string                        */
+/*                                                                    */
+/* decNumberFromString -- convert string to decNumber                 */
+/*   dn        -- the number structure to fill                        */
+/*   chars[]   -- the string to convert ('\0' terminated)             */
+/*   set       -- the context used for processing any error,          */
+/*                determining the maximum precision available         */
+/*                (set.digits), determining the maximum and minimum   */
+/*                exponent (set.emax and set.emin), determining if    */
+/*                extended values are allowed, and checking the       */
+/*                rounding mode if overflow occurs or rounding is     */
+/*                needed.                                             */
+/*                                                                    */
+/* The length of the coefficient and the size of the exponent are     */
+/* checked by this routine, so the correct error (Underflow or        */
+/* Overflow) can be reported or rounding applied, as necessary.       */
+/*                                                                    */
+/* If bad syntax is detected, the result will be a quiet NaN.         */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char chars[],
+                                decContext *set) {
+  Int   exponent=0;                /* working exponent [assume 0]  */
+  uByte bits=0;                    /* working flags [assume +ve]  */
+  Unit  *res;                      /* where result will be built  */
+  Unit  resbuff[SD2U(DECBUFFER+9)];/* local buffer in case need temporary  */
+                                   /* [+9 allows for ln() constants]  */
+  Unit  *allocres=NULL;            /* -> allocated result, iff allocated  */
+  Int   d=0;                       /* count of digits found in decimal part  */
+  const char *dotchar=NULL;        /* where dot was found  */
+  const char *cfirst=chars;        /* -> first character of decimal part  */
+  const char *last=NULL;           /* -> last digit of decimal part  */
+  const char *c;                   /* work  */
+  Unit  *up;                       /* ..  */
+  #if DECDPUN>1
+  Int   cut, out;                  /* ..  */
+  #endif
+  Int   residue;                   /* rounding residue  */
+  uInt  status=0;                  /* error code  */
+
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, DECUNUSED, DECUNUSED, set))
+    return uprv_decNumberZero(dn);
+  #endif
+
+  do {                             /* status & malloc protection  */
+    for (c=chars;; c++) {          /* -> input character  */
+      if (*c>='0' && *c<='9') {    /* test for Arabic digit  */
+        last=c;
+        d++;                       /* count of real digits  */
+        continue;                  /* still in decimal part  */
+        }
+      if (*c=='.' && dotchar==NULL) { /* first '.'  */
+        dotchar=c;                 /* record offset into decimal part  */
+        if (c==cfirst) cfirst++;   /* first digit must follow  */
+        continue;}
+      if (c==chars) {              /* first in string...  */
+        if (*c=='-') {             /* valid - sign  */
+          cfirst++;
+          bits=DECNEG;
+          continue;}
+        if (*c=='+') {             /* valid + sign  */
+          cfirst++;
+          continue;}
+        }
+      /* *c is not a digit, or a valid +, -, or '.'  */
+      break;
+      } /* c  */
+
+    if (last==NULL) {              /* no digits yet  */
+      status=DEC_Conversion_syntax;/* assume the worst  */
+      if (*c=='\0') break;         /* and no more to come...  */
+      #if DECSUBSET
+      /* if subset then infinities and NaNs are not allowed  */
+      if (!set->extended) break;   /* hopeless  */
+      #endif
+      /* Infinities and NaNs are possible, here  */
+      if (dotchar!=NULL) break;    /* .. unless had a dot  */
+      uprv_decNumberZero(dn);           /* be optimistic  */
+      if (decBiStr(c, "infinity", "INFINITY")
+       || decBiStr(c, "inf", "INF")) {
+        dn->bits=bits | DECINF;
+        status=0;                  /* is OK  */
+        break; /* all done  */
+        }
+      /* a NaN expected  */
+      /* 2003.09.10 NaNs are now permitted to have a sign  */
+      dn->bits=bits | DECNAN;      /* assume simple NaN  */
+      if (*c=='s' || *c=='S') {    /* looks like an sNaN  */
+        c++;
+        dn->bits=bits | DECSNAN;
+        }
+      if (*c!='n' && *c!='N') break;    /* check caseless "NaN"  */
+      c++;
+      if (*c!='a' && *c!='A') break;    /* ..  */
+      c++;
+      if (*c!='n' && *c!='N') break;    /* ..  */
+      c++;
+      /* now either nothing, or nnnn payload, expected  */
+      /* -> start of integer and skip leading 0s [including plain 0]  */
+      for (cfirst=c; *cfirst=='0';) cfirst++;
+      if (*cfirst=='\0') {         /* "NaN" or "sNaN", maybe with all 0s  */
+        status=0;                  /* it's good  */
+        break;                     /* ..  */
+        }
+      /* something other than 0s; setup last and d as usual [no dots]  */
+      for (c=cfirst;; c++, d++) {
+        if (*c<'0' || *c>'9') break; /* test for Arabic digit  */
+        last=c;
+        }
+      if (*c!='\0') break;         /* not all digits  */
+      if (d>set->digits-1) {
+        /* [NB: payload in a decNumber can be full length unless  */
+        /* clamped, in which case can only be digits-1]  */
+        if (set->clamp) break;
+        if (d>set->digits) break;
+        } /* too many digits?  */
+      /* good; drop through to convert the integer to coefficient  */
+      status=0;                    /* syntax is OK  */
+      bits=dn->bits;               /* for copy-back  */
+      } /* last==NULL  */
+
+     else if (*c!='\0') {          /* more to process...  */
+      /* had some digits; exponent is only valid sequence now  */
+      Flag nege;                   /* 1=negative exponent  */
+      const char *firstexp;        /* -> first significant exponent digit  */
+      status=DEC_Conversion_syntax;/* assume the worst  */
+      if (*c!='e' && *c!='E') break;
+      /* Found 'e' or 'E' -- now process explicit exponent */
+      /* 1998.07.11: sign no longer required  */
+      nege=0;
+      c++;                         /* to (possible) sign  */
+      if (*c=='-') {nege=1; c++;}
+       else if (*c=='+') c++;
+      if (*c=='\0') break;
+
+      for (; *c=='0' && *(c+1)!='\0';) c++;  /* strip insignificant zeros  */
+      firstexp=c;                            /* save exponent digit place  */
+      for (; ;c++) {
+        if (*c<'0' || *c>'9') break;         /* not a digit  */
+        exponent=X10(exponent)+(Int)*c-(Int)'0';
+        } /* c  */
+      /* if not now on a '\0', *c must not be a digit  */
+      if (*c!='\0') break;
+
+      /* (this next test must be after the syntax checks)  */
+      /* if it was too long the exponent may have wrapped, so check  */
+      /* carefully and set it to a certain overflow if wrap possible  */
+      if (c>=firstexp+9+1) {
+        if (c>firstexp+9+1 || *firstexp>'1') exponent=DECNUMMAXE*2;
+        /* [up to 1999999999 is OK, for example 1E-1000000998]  */
+        }
+      if (nege) exponent=-exponent;     /* was negative  */
+      status=0;                         /* is OK  */
+      } /* stuff after digits  */
+
+    /* Here when whole string has been inspected; syntax is good  */
+    /* cfirst->first digit (never dot), last->last digit (ditto)  */
+
+    /* strip leading zeros/dot [leave final 0 if all 0's]  */
+    if (*cfirst=='0') {                 /* [cfirst has stepped over .]  */
+      for (c=cfirst; c<last; c++, cfirst++) {
+        if (*c=='.') continue;          /* ignore dots  */
+        if (*c!='0') break;             /* non-zero found  */
+        d--;                            /* 0 stripped  */
+        } /* c  */
+      #if DECSUBSET
+      /* make a rapid exit for easy zeros if !extended  */
+      if (*cfirst=='0' && !set->extended) {
+        uprv_decNumberZero(dn);              /* clean result  */
+        break;                          /* [could be return]  */
+        }
+      #endif
+      } /* at least one leading 0  */
+
+    /* Handle decimal point...  */
+    if (dotchar!=NULL && dotchar<last)  /* non-trailing '.' found?  */
+      exponent-=(last-dotchar);         /* adjust exponent  */
+    /* [we can now ignore the .]  */
+
+    /* OK, the digits string is good.  Assemble in the decNumber, or in  */
+    /* a temporary units array if rounding is needed  */
+    if (d<=set->digits) res=dn->lsu;    /* fits into supplied decNumber  */
+     else {                             /* rounding needed  */
+      Int needbytes=D2U(d)*sizeof(Unit);/* bytes needed  */
+      res=resbuff;                      /* assume use local buffer  */
+      if (needbytes>(Int)sizeof(resbuff)) { /* too big for local  */
+        allocres=(Unit *)malloc(needbytes);
+        if (allocres==NULL) {status|=DEC_Insufficient_storage; break;}
+        res=allocres;
+        }
+      }
+    /* res now -> number lsu, buffer, or allocated storage for Unit array  */
+
+    /* Place the coefficient into the selected Unit array  */
+    /* [this is often 70% of the cost of this function when DECDPUN>1]  */
+    #if DECDPUN>1
+    out=0;                         /* accumulator  */
+    up=res+D2U(d)-1;               /* -> msu  */
+    cut=d-(up-res)*DECDPUN;        /* digits in top unit  */
+    for (c=cfirst;; c++) {         /* along the digits  */
+      if (*c=='.') continue;       /* ignore '.' [don't decrement cut]  */
+      out=X10(out)+(Int)*c-(Int)'0';
+      if (c==last) break;          /* done [never get to trailing '.']  */
+      cut--;
+      if (cut>0) continue;         /* more for this unit  */
+      *up=(Unit)out;               /* write unit  */
+      up--;                        /* prepare for unit below..  */
+      cut=DECDPUN;                 /* ..  */
+      out=0;                       /* ..  */
+      } /* c  */
+    *up=(Unit)out;                 /* write lsu  */
+
+    #else
+    /* DECDPUN==1  */
+    up=res;                        /* -> lsu  */
+    for (c=last; c>=cfirst; c--) { /* over each character, from least  */
+      if (*c=='.') continue;       /* ignore . [don't step up]  */
+      *up=(Unit)((Int)*c-(Int)'0');
+      up++;
+      } /* c  */
+    #endif
+
+    dn->bits=bits;
+    dn->exponent=exponent;
+    dn->digits=d;
+
+    /* if not in number (too long) shorten into the number  */
+    if (d>set->digits) {
+      residue=0;
+      decSetCoeff(dn, set, res, d, &residue, &status);
+      /* always check for overflow or subnormal and round as needed  */
+      decFinalize(dn, set, &residue, &status);
+      }
+     else { /* no rounding, but may still have overflow or subnormal  */
+      /* [these tests are just for performance; finalize repeats them]  */
+      if ((dn->exponent-1<set->emin-dn->digits)
+       || (dn->exponent-1>set->emax-set->digits)) {
+        residue=0;
+        decFinalize(dn, set, &residue, &status);
+        }
+      }
+    /* decNumberShow(dn);  */
+    } while(0);                         /* [for break]  */
+
+  if (allocres!=NULL) free(allocres);   /* drop any storage used  */
+  if (status!=0) decStatus(dn, status, set);
+  return dn;
+  } /* decNumberFromString */
+
+/* ================================================================== */
+/* Operators                                                          */
+/* ================================================================== */
+
+/* ------------------------------------------------------------------ */
+/* decNumberAbs -- absolute value operator                            */
+/*                                                                    */
+/*   This computes C = abs(A)                                         */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* See also decNumberCopyAbs for a quiet bitwise version of this.     */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+/* This has the same effect as decNumberPlus unless A is negative,    */
+/* in which case it has the same effect as decNumberMinus.            */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberAbs(decNumber *res, const decNumber *rhs,
+                         decContext *set) {
+  decNumber dzero;                      /* for 0  */
+  uInt status=0;                        /* accumulator  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  uprv_decNumberZero(&dzero);                /* set 0  */
+  dzero.exponent=rhs->exponent;         /* [no coefficient expansion]  */
+  decAddOp(res, &dzero, rhs, set, (uByte)(rhs->bits & DECNEG), &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberAbs  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberAdd -- add two Numbers                                    */
+/*                                                                    */
+/*   This computes C = A + B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X+X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+/* This just calls the routine shared with Subtract                   */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decAddOp(res, lhs, rhs, set, 0, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberAdd  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberAnd -- AND two Numbers, digitwise                         */
+/*                                                                    */
+/*   This computes C = A & B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X&X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context (used for result length and error report)     */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Logical function restrictions apply (see above); a NaN is          */
+/* returned with Invalid_operation if a restriction is violated.      */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberAnd(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  const Unit *ua, *ub;                  /* -> operands  */
+  const Unit *msua, *msub;              /* -> operand msus  */
+  Unit *uc,  *msuc;                     /* -> result and its msu  */
+  Int   msudigs;                        /* digits in res msu  */
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  if (lhs->exponent!=0 || decNumberIsSpecial(lhs) || decNumberIsNegative(lhs)
+   || rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
+    decStatus(res, DEC_Invalid_operation, set);
+    return res;
+    }
+
+  /* operands are valid  */
+  ua=lhs->lsu;                          /* bottom-up  */
+  ub=rhs->lsu;                          /* ..  */
+  uc=res->lsu;                          /* ..  */
+  msua=ua+D2U(lhs->digits)-1;           /* -> msu of lhs  */
+  msub=ub+D2U(rhs->digits)-1;           /* -> msu of rhs  */
+  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
+  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
+  for (; uc<=msuc; ua++, ub++, uc++) {  /* Unit loop  */
+    Unit a, b;                          /* extract units  */
+    if (ua>msua) a=0;
+     else a=*ua;
+    if (ub>msub) b=0;
+     else b=*ub;
+    *uc=0;                              /* can now write back  */
+    if (a|b) {                          /* maybe 1 bits to examine  */
+      Int i, j;
+      *uc=0;                            /* can now write back  */
+      /* This loop could be unrolled and/or use BIN2BCD tables  */
+      for (i=0; i<DECDPUN; i++) {
+        if (a&b&1) *uc=*uc+(Unit)powers[i];  /* effect AND  */
+        j=a%10;
+        a=a/10;
+        j|=b%10;
+        b=b/10;
+        if (j>1) {
+          decStatus(res, DEC_Invalid_operation, set);
+          return res;
+          }
+        if (uc==msuc && i==msudigs-1) break; /* just did final digit  */
+        } /* each digit  */
+      } /* both OK  */
+    } /* each unit  */
+  /* [here uc-1 is the msu of the result]  */
+  res->digits=decGetDigits(res->lsu, uc-res->lsu);
+  res->exponent=0;                      /* integer  */
+  res->bits=0;                          /* sign=0  */
+  return res;  /* [no status to set]  */
+  } /* decNumberAnd  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCompare -- compare two Numbers                            */
+/*                                                                    */
+/*   This computes C = A ? B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for one digit (or NaN).                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompare(decNumber *res, const decNumber *lhs,
+                             const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPARE, &status);
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberCompare  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCompareSignal -- compare, signalling on all NaNs          */
+/*                                                                    */
+/*   This computes C = A ? B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for one digit (or NaN).                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *res, const decNumber *lhs,
+                                   const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPSIG, &status);
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberCompareSignal  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCompareTotal -- compare two Numbers, using total ordering */
+/*                                                                    */
+/*   This computes C = A ? B, under total ordering                    */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for one digit; the result will always be one of  */
+/* -1, 0, or 1.                                                       */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotal(decNumber *res, const decNumber *lhs,
+                                  const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberCompareTotal  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCompareTotalMag -- compare, total ordering of magnitudes  */
+/*                                                                    */
+/*   This computes C = |A| ? |B|, under total ordering                */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for one digit; the result will always be one of  */
+/* -1, 0, or 1.                                                       */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *res, const decNumber *lhs,
+                                     const decNumber *rhs, decContext *set) {
+  uInt status=0;                   /* accumulator  */
+  uInt needbytes;                  /* for space calculations  */
+  decNumber bufa[D2N(DECBUFFER+1)];/* +1 in case DECBUFFER=0  */
+  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber bufb[D2N(DECBUFFER+1)];
+  decNumber *allocbufb=NULL;       /* -> allocated bufb, iff allocated  */
+  decNumber *a, *b;                /* temporary pointers  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  do {                                  /* protect allocated storage  */
+    /* if either is negative, take a copy and absolute  */
+    if (decNumberIsNegative(lhs)) {     /* lhs<0  */
+      a=bufa;
+      needbytes=sizeof(decNumber)+(D2U(lhs->digits)-1)*sizeof(Unit);
+      if (needbytes>sizeof(bufa)) {     /* need malloc space  */
+        allocbufa=(decNumber *)malloc(needbytes);
+        if (allocbufa==NULL) {          /* hopeless -- abandon  */
+          status|=DEC_Insufficient_storage;
+          break;}
+        a=allocbufa;                    /* use the allocated space  */
+        }
+      uprv_decNumberCopy(a, lhs);            /* copy content  */
+      a->bits&=~DECNEG;                 /* .. and clear the sign  */
+      lhs=a;                            /* use copy from here on  */
+      }
+    if (decNumberIsNegative(rhs)) {     /* rhs<0  */
+      b=bufb;
+      needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
+      if (needbytes>sizeof(bufb)) {     /* need malloc space  */
+        allocbufb=(decNumber *)malloc(needbytes);
+        if (allocbufb==NULL) {          /* hopeless -- abandon  */
+          status|=DEC_Insufficient_storage;
+          break;}
+        b=allocbufb;                    /* use the allocated space  */
+        }
+      uprv_decNumberCopy(b, rhs);            /* copy content  */
+      b->bits&=~DECNEG;                 /* .. and clear the sign  */
+      rhs=b;                            /* use copy from here on  */
+      }
+    decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
+    } while(0);                         /* end protected  */
+
+  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
+  if (allocbufb!=NULL) free(allocbufb); /* ..  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberCompareTotalMag  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberDivide -- divide one number by another                    */
+/*                                                                    */
+/*   This computes C = A / B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X/X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivide(decNumber *res, const decNumber *lhs,
+                            const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decDivideOp(res, lhs, rhs, set, DIVIDE, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberDivide  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberDivideInteger -- divide and return integer quotient       */
+/*                                                                    */
+/*   This computes C = A # B, where # is the integer divide operator  */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X#X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *res, const decNumber *lhs,
+                                   const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decDivideOp(res, lhs, rhs, set, DIVIDEINT, &status);
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberDivideInteger  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberExp -- exponentiation                                     */
+/*                                                                    */
+/*   This computes C = exp(A)                                         */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context; note that rounding mode has no effect        */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Mathematical function restrictions apply (see above); a NaN is     */
+/* returned with Invalid_operation if a restriction is violated.      */
+/*                                                                    */
+/* Finite results will always be full precision and Inexact, except   */
+/* when A is a zero or -Infinity (giving 1 or 0 respectively).        */
+/*                                                                    */
+/* An Inexact result is rounded using DEC_ROUND_HALF_EVEN; it will    */
+/* almost always be correctly rounded, but may be up to 1 ulp in      */
+/* error in rare cases.                                               */
+/* ------------------------------------------------------------------ */
+/* This is a wrapper for decExpOp which can handle the slightly wider */
+/* (double) range needed by Ln (which has to be able to calculate     */
+/* exp(-a) where a can be the tiniest number (Ntiny).                 */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *res, const decNumber *rhs,
+                         decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  #if DECSUBSET
+  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
+  #endif
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* Check restrictions; these restrictions ensure that if h=8 (see  */
+  /* decExpOp) then the result will either overflow or underflow to 0.  */
+  /* Other math functions restrict the input range, too, for inverses.  */
+  /* If not violated then carry out the operation.  */
+  if (!decCheckMath(rhs, set, &status)) do { /* protect allocation  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operand and set lostDigits status, as needed  */
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, &status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    decExpOp(res, rhs, set, &status);
+    } while(0);                         /* end protected  */
+
+  #if DECSUBSET
+  if (allocrhs !=NULL) free(allocrhs);  /* drop any storage used  */
+  #endif
+  /* apply significant status  */
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberExp  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberFMA -- fused multiply add                                 */
+/*                                                                    */
+/*   This computes D = (A * B) + C with only one rounding             */
+/*                                                                    */
+/*   res is D, the result.  D may be A or B or C (e.g., X=FMA(X,X,X)) */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   fhs is C [far hand side]                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* Mathematical function restrictions apply (see above); a NaN is     */
+/* returned with Invalid_operation if a restriction is violated.      */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, const decNumber *fhs,
+                         decContext *set) {
+  uInt status=0;                   /* accumulator  */
+  decContext dcmul;                /* context for the multiplication  */
+  uInt needbytes;                  /* for space calculations  */
+  decNumber bufa[D2N(DECBUFFER*2+1)];
+  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber *acc;                  /* accumulator pointer  */
+  decNumber dzero;                 /* work  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  if (decCheckOperands(res, fhs, DECUNUSED, set)) return res;
+  #endif
+
+  do {                                  /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {               /* [undefined if subset]  */
+      status|=DEC_Invalid_operation;
+      break;}
+    #endif
+    /* Check math restrictions [these ensure no overflow or underflow]  */
+    if ((!decNumberIsSpecial(lhs) && decCheckMath(lhs, set, &status))
+     || (!decNumberIsSpecial(rhs) && decCheckMath(rhs, set, &status))
+     || (!decNumberIsSpecial(fhs) && decCheckMath(fhs, set, &status))) break;
+    /* set up context for multiply  */
+    dcmul=*set;
+    dcmul.digits=lhs->digits+rhs->digits; /* just enough  */
+    /* [The above may be an over-estimate for subset arithmetic, but that's OK]  */
+    dcmul.emax=DEC_MAX_EMAX;            /* effectively unbounded ..  */
+    dcmul.emin=DEC_MIN_EMIN;            /* [thanks to Math restrictions]  */
+    /* set up decNumber space to receive the result of the multiply  */
+    acc=bufa;                           /* may fit  */
+    needbytes=sizeof(decNumber)+(D2U(dcmul.digits)-1)*sizeof(Unit);
+    if (needbytes>sizeof(bufa)) {       /* need malloc space  */
+      allocbufa=(decNumber *)malloc(needbytes);
+      if (allocbufa==NULL) {            /* hopeless -- abandon  */
+        status|=DEC_Insufficient_storage;
+        break;}
+      acc=allocbufa;                    /* use the allocated space  */
+      }
+    /* multiply with extended range and necessary precision  */
+    /*printf("emin=%ld\n", dcmul.emin);  */
+    decMultiplyOp(acc, lhs, rhs, &dcmul, &status);
+    /* Only Invalid operation (from sNaN or Inf * 0) is possible in  */
+    /* status; if either is seen than ignore fhs (in case it is  */
+    /* another sNaN) and set acc to NaN unless we had an sNaN  */
+    /* [decMultiplyOp leaves that to caller]  */
+    /* Note sNaN has to go through addOp to shorten payload if  */
+    /* necessary  */
+    if ((status&DEC_Invalid_operation)!=0) {
+      if (!(status&DEC_sNaN)) {         /* but be true invalid  */
+        uprv_decNumberZero(res);             /* acc not yet set  */
+        res->bits=DECNAN;
+        break;
+        }
+      uprv_decNumberZero(&dzero);            /* make 0 (any non-NaN would do)  */
+      fhs=&dzero;                       /* use that  */
+      }
+    #if DECCHECK
+     else { /* multiply was OK  */
+      if (status!=0) printf("Status=%08lx after FMA multiply\n", (LI)status);
+      }
+    #endif
+    /* add the third operand and result -> res, and all is done  */
+    decAddOp(res, acc, fhs, set, 0, &status);
+    } while(0);                         /* end protected  */
+
+  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberFMA  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberInvert -- invert a Number, digitwise                      */
+/*                                                                    */
+/*   This computes C = ~A                                             */
+/*                                                                    */
+/*   res is C, the result.  C may be A (e.g., X=~X)                   */
+/*   rhs is A                                                         */
+/*   set is the context (used for result length and error report)     */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Logical function restrictions apply (see above); a NaN is          */
+/* returned with Invalid_operation if a restriction is violated.      */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberInvert(decNumber *res, const decNumber *rhs,
+                            decContext *set) {
+  const Unit *ua, *msua;                /* -> operand and its msu  */
+  Unit  *uc, *msuc;                     /* -> result and its msu  */
+  Int   msudigs;                        /* digits in res msu  */
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  if (rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
+    decStatus(res, DEC_Invalid_operation, set);
+    return res;
+    }
+  /* operand is valid  */
+  ua=rhs->lsu;                          /* bottom-up  */
+  uc=res->lsu;                          /* ..  */
+  msua=ua+D2U(rhs->digits)-1;           /* -> msu of rhs  */
+  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
+  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
+  for (; uc<=msuc; ua++, uc++) {        /* Unit loop  */
+    Unit a;                             /* extract unit  */
+    Int  i, j;                          /* work  */
+    if (ua>msua) a=0;
+     else a=*ua;
+    *uc=0;                              /* can now write back  */
+    /* always need to examine all bits in rhs  */
+    /* This loop could be unrolled and/or use BIN2BCD tables  */
+    for (i=0; i<DECDPUN; i++) {
+      if ((~a)&1) *uc=*uc+(Unit)powers[i];   /* effect INVERT  */
+      j=a%10;
+      a=a/10;
+      if (j>1) {
+        decStatus(res, DEC_Invalid_operation, set);
+        return res;
+        }
+      if (uc==msuc && i==msudigs-1) break;   /* just did final digit  */
+      } /* each digit  */
+    } /* each unit  */
+  /* [here uc-1 is the msu of the result]  */
+  res->digits=decGetDigits(res->lsu, uc-res->lsu);
+  res->exponent=0;                      /* integer  */
+  res->bits=0;                          /* sign=0  */
+  return res;  /* [no status to set]  */
+  } /* decNumberInvert  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberLn -- natural logarithm                                   */
+/*                                                                    */
+/*   This computes C = ln(A)                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context; note that rounding mode has no effect        */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Notable cases:                                                     */
+/*   A<0 -> Invalid                                                   */
+/*   A=0 -> -Infinity (Exact)                                         */
+/*   A=+Infinity -> +Infinity (Exact)                                 */
+/*   A=1 exactly -> 0 (Exact)                                         */
+/*                                                                    */
+/* Mathematical function restrictions apply (see above); a NaN is     */
+/* returned with Invalid_operation if a restriction is violated.      */
+/*                                                                    */
+/* An Inexact result is rounded using DEC_ROUND_HALF_EVEN; it will    */
+/* almost always be correctly rounded, but may be up to 1 ulp in      */
+/* error in rare cases.                                               */
+/* ------------------------------------------------------------------ */
+/* This is a wrapper for decLnOp which can handle the slightly wider  */
+/* (+11) range needed by Ln, Log10, etc. (which may have to be able   */
+/* to calculate at p+e+2).                                            */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *res, const decNumber *rhs,
+                        decContext *set) {
+  uInt status=0;                   /* accumulator  */
+  #if DECSUBSET
+  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
+  #endif
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* Check restrictions; this is a math function; if not violated  */
+  /* then carry out the operation.  */
+  if (!decCheckMath(rhs, set, &status)) do { /* protect allocation  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operand and set lostDigits status, as needed  */
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, &status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      /* special check in subset for rhs=0  */
+      if (ISZERO(rhs)) {                /* +/- zeros -> error  */
+        status|=DEC_Invalid_operation;
+        break;}
+      } /* extended=0  */
+    #endif
+    decLnOp(res, rhs, set, &status);
+    } while(0);                         /* end protected  */
+
+  #if DECSUBSET
+  if (allocrhs !=NULL) free(allocrhs);  /* drop any storage used  */
+  #endif
+  /* apply significant status  */
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberLn  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberLogB - get adjusted exponent, by 754 rules                */
+/*                                                                    */
+/*   This computes C = adjustedexponent(A)                            */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context, used only for digits and status              */
+/*                                                                    */
+/* C must have space for 10 digits (A might have 10**9 digits and     */
+/* an exponent of +999999999, or one digit and an exponent of         */
+/* -1999999999).                                                      */
+/*                                                                    */
+/* This returns the adjusted exponent of A after (in theory) padding  */
+/* with zeros on the right to set->digits digits while keeping the    */
+/* same value.  The exponent is not limited by emin/emax.             */
+/*                                                                    */
+/* Notable cases:                                                     */
+/*   A<0 -> Use |A|                                                   */
+/*   A=0 -> -Infinity (Division by zero)                              */
+/*   A=Infinite -> +Infinity (Exact)                                  */
+/*   A=1 exactly -> 0 (Exact)                                         */
+/*   NaNs are propagated as usual                                     */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *res, const decNumber *rhs,
+                          decContext *set) {
+  uInt status=0;                   /* accumulator  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* NaNs as usual; Infinities return +Infinity; 0->oops  */
+  if (decNumberIsNaN(rhs)) decNaNs(res, rhs, NULL, set, &status);
+   else if (decNumberIsInfinite(rhs)) uprv_decNumberCopyAbs(res, rhs);
+   else if (decNumberIsZero(rhs)) {
+    uprv_decNumberZero(res);                 /* prepare for Infinity  */
+    res->bits=DECNEG|DECINF;            /* -Infinity  */
+    status|=DEC_Division_by_zero;       /* as per 754  */
+    }
+   else { /* finite non-zero  */
+    Int ae=rhs->exponent+rhs->digits-1; /* adjusted exponent  */
+    uprv_decNumberFromInt32(res, ae);        /* lay it out  */
+    }
+
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberLogB  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberLog10 -- logarithm in base 10                             */
+/*                                                                    */
+/*   This computes C = log10(A)                                       */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context; note that rounding mode has no effect        */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Notable cases:                                                     */
+/*   A<0 -> Invalid                                                   */
+/*   A=0 -> -Infinity (Exact)                                         */
+/*   A=+Infinity -> +Infinity (Exact)                                 */
+/*   A=10**n (if n is an integer) -> n (Exact)                        */
+/*                                                                    */
+/* Mathematical function restrictions apply (see above); a NaN is     */
+/* returned with Invalid_operation if a restriction is violated.      */
+/*                                                                    */
+/* An Inexact result is rounded using DEC_ROUND_HALF_EVEN; it will    */
+/* almost always be correctly rounded, but may be up to 1 ulp in      */
+/* error in rare cases.                                               */
+/* ------------------------------------------------------------------ */
+/* This calculates ln(A)/ln(10) using appropriate precision.  For     */
+/* ln(A) this is the max(p, rhs->digits + t) + 3, where p is the      */
+/* requested digits and t is the number of digits in the exponent     */
+/* (maximum 6).  For ln(10) it is p + 3; this is often handled by the */
+/* fastpath in decLnOp.  The final division is done to the requested  */
+/* precision.                                                         */
+/* ------------------------------------------------------------------ */
+#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber *rhs,
+                          decContext *set) {
+  uInt status=0, ignore=0;         /* status accumulators  */
+  uInt needbytes;                  /* for space calculations  */
+  Int p;                           /* working precision  */
+  Int t;                           /* digits in exponent of A  */
+
+  /* buffers for a and b working decimals  */
+  /* (adjustment calculator, same size)  */
+  decNumber bufa[D2N(DECBUFFER+2)];
+  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber *a=bufa;               /* temporary a  */
+  decNumber bufb[D2N(DECBUFFER+2)];
+  decNumber *allocbufb=NULL;       /* -> allocated bufb, iff allocated  */
+  decNumber *b=bufb;               /* temporary b  */
+  decNumber bufw[D2N(10)];         /* working 2-10 digit number  */
+  decNumber *w=bufw;               /* ..  */
+  #if DECSUBSET
+  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
+  #endif
+
+  decContext aset;                 /* working context  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* Check restrictions; this is a math function; if not violated  */
+  /* then carry out the operation.  */
+  if (!decCheckMath(rhs, set, &status)) do { /* protect malloc  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operand and set lostDigits status, as needed  */
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, &status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      /* special check in subset for rhs=0  */
+      if (ISZERO(rhs)) {                /* +/- zeros -> error  */
+        status|=DEC_Invalid_operation;
+        break;}
+      } /* extended=0  */
+    #endif
+
+    uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64); /* clean context  */
+
+    /* handle exact powers of 10; only check if +ve finite  */
+    if (!(rhs->bits&(DECNEG|DECSPECIAL)) && !ISZERO(rhs)) {
+      Int residue=0;               /* (no residue)  */
+      uInt copystat=0;             /* clean status  */
+
+      /* round to a single digit...  */
+      aset.digits=1;
+      decCopyFit(w, rhs, &aset, &residue, &copystat); /* copy & shorten  */
+      /* if exact and the digit is 1, rhs is a power of 10  */
+      if (!(copystat&DEC_Inexact) && w->lsu[0]==1) {
+        /* the exponent, conveniently, is the power of 10; making  */
+        /* this the result needs a little care as it might not fit,  */
+        /* so first convert it into the working number, and then move  */
+        /* to res  */
+        uprv_decNumberFromInt32(w, w->exponent);
+        residue=0;
+        decCopyFit(res, w, set, &residue, &status); /* copy & round  */
+        decFinish(res, set, &residue, &status);     /* cleanup/set flags  */
+        break;
+        } /* not a power of 10  */
+      } /* not a candidate for exact  */
+
+    /* simplify the information-content calculation to use 'total  */
+    /* number of digits in a, including exponent' as compared to the  */
+    /* requested digits, as increasing this will only rarely cost an  */
+    /* iteration in ln(a) anyway  */
+    t=6;                                /* it can never be >6  */
+
+    /* allocate space when needed...  */
+    p=(rhs->digits+t>set->digits?rhs->digits+t:set->digits)+3;
+    needbytes=sizeof(decNumber)+(D2U(p)-1)*sizeof(Unit);
+    if (needbytes>sizeof(bufa)) {       /* need malloc space  */
+      allocbufa=(decNumber *)malloc(needbytes);
+      if (allocbufa==NULL) {            /* hopeless -- abandon  */
+        status|=DEC_Insufficient_storage;
+        break;}
+      a=allocbufa;                      /* use the allocated space  */
+      }
+    aset.digits=p;                      /* as calculated  */
+    aset.emax=DEC_MAX_MATH;             /* usual bounds  */
+    aset.emin=-DEC_MAX_MATH;            /* ..  */
+    aset.clamp=0;                       /* and no concrete format  */
+    decLnOp(a, rhs, &aset, &status);    /* a=ln(rhs)  */
+
+    /* skip the division if the result so far is infinite, NaN, or  */
+    /* zero, or there was an error; note NaN from sNaN needs copy  */
+    if (status&DEC_NaNs && !(status&DEC_sNaN)) break;
+    if (a->bits&DECSPECIAL || ISZERO(a)) {
+      uprv_decNumberCopy(res, a);            /* [will fit]  */
+      break;}
+
+    /* for ln(10) an extra 3 digits of precision are needed  */
+    p=set->digits+3;
+    needbytes=sizeof(decNumber)+(D2U(p)-1)*sizeof(Unit);
+    if (needbytes>sizeof(bufb)) {       /* need malloc space  */
+      allocbufb=(decNumber *)malloc(needbytes);
+      if (allocbufb==NULL) {            /* hopeless -- abandon  */
+        status|=DEC_Insufficient_storage;
+        break;}
+      b=allocbufb;                      /* use the allocated space  */
+      }
+    uprv_decNumberZero(w);                   /* set up 10...  */
+    #if DECDPUN==1
+    w->lsu[1]=1; w->lsu[0]=0;           /* ..  */
+    #else
+    w->lsu[0]=10;                       /* ..  */
+    #endif
+    w->digits=2;                        /* ..  */
+
+    aset.digits=p;
+    decLnOp(b, w, &aset, &ignore);      /* b=ln(10)  */
+
+    aset.digits=set->digits;            /* for final divide  */
+    decDivideOp(res, a, b, &aset, DIVIDE, &status); /* into result  */
+    } while(0);                         /* [for break]  */
+
+  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
+  if (allocbufb!=NULL) free(allocbufb); /* ..  */
+  #if DECSUBSET
+  if (allocrhs !=NULL) free(allocrhs);  /* ..  */
+  #endif
+  /* apply significant status  */
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberLog10  */
+#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
+#pragma GCC diagnostic pop
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decNumberMax -- compare two Numbers and return the maximum         */
+/*                                                                    */
+/*   This computes C = A ? B, returning the maximum by 754 rules      */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberMax(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPMAX, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberMax  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberMaxMag -- compare and return the maximum by magnitude     */
+/*                                                                    */
+/*   This computes C = A ? B, returning the maximum by 754 rules      */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberMaxMag(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPMAXMAG, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberMaxMag  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberMin -- compare two Numbers and return the minimum         */
+/*                                                                    */
+/*   This computes C = A ? B, returning the minimum by 754 rules      */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPMIN, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberMin  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberMinMag -- compare and return the minimum by magnitude     */
+/*                                                                    */
+/*   This computes C = A ? B, returning the minimum by 754 rules      */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinMag(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decCompareOp(res, lhs, rhs, set, COMPMINMAG, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberMinMag  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberMinus -- prefix minus operator                            */
+/*                                                                    */
+/*   This computes C = 0 - A                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* See also decNumberCopyNegate for a quiet bitwise version of this.  */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+/* Simply use AddOp for the subtract, which will do the necessary.    */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber *res, const decNumber *rhs,
+                           decContext *set) {
+  decNumber dzero;
+  uInt status=0;                        /* accumulator  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  uprv_decNumberZero(&dzero);                /* make 0  */
+  dzero.exponent=rhs->exponent;         /* [no coefficient expansion]  */
+  decAddOp(res, &dzero, rhs, set, DECNEG, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberMinus  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberNextMinus -- next towards -Infinity                       */
+/*                                                                    */
+/*   This computes C = A - infinitesimal, rounded towards -Infinity   */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* This is a generalization of 754 NextDown.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextMinus(decNumber *res, const decNumber *rhs,
+                               decContext *set) {
+  decNumber dtiny;                           /* constant  */
+  decContext workset=*set;                   /* work  */
+  uInt status=0;                             /* accumulator  */
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* +Infinity is the special case  */
+  if ((rhs->bits&(DECINF|DECNEG))==DECINF) {
+    decSetMaxValue(res, set);                /* is +ve  */
+    /* there is no status to set  */
+    return res;
+    }
+  uprv_decNumberZero(&dtiny);                     /* start with 0  */
+  dtiny.lsu[0]=1;                            /* make number that is ..  */
+  dtiny.exponent=DEC_MIN_EMIN-1;             /* .. smaller than tiniest  */
+  workset.round=DEC_ROUND_FLOOR;
+  decAddOp(res, rhs, &dtiny, &workset, DECNEG, &status);
+  status&=DEC_Invalid_operation|DEC_sNaN;    /* only sNaN Invalid please  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberNextMinus  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberNextPlus -- next towards +Infinity                        */
+/*                                                                    */
+/*   This computes C = A + infinitesimal, rounded towards +Infinity   */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* This is a generalization of 754 NextUp.                            */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextPlus(decNumber *res, const decNumber *rhs,
+                              decContext *set) {
+  decNumber dtiny;                           /* constant  */
+  decContext workset=*set;                   /* work  */
+  uInt status=0;                             /* accumulator  */
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* -Infinity is the special case  */
+  if ((rhs->bits&(DECINF|DECNEG))==(DECINF|DECNEG)) {
+    decSetMaxValue(res, set);
+    res->bits=DECNEG;                        /* negative  */
+    /* there is no status to set  */
+    return res;
+    }
+  uprv_decNumberZero(&dtiny);                     /* start with 0  */
+  dtiny.lsu[0]=1;                            /* make number that is ..  */
+  dtiny.exponent=DEC_MIN_EMIN-1;             /* .. smaller than tiniest  */
+  workset.round=DEC_ROUND_CEILING;
+  decAddOp(res, rhs, &dtiny, &workset, 0, &status);
+  status&=DEC_Invalid_operation|DEC_sNaN;    /* only sNaN Invalid please  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberNextPlus  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberNextToward -- next towards rhs                            */
+/*                                                                    */
+/*   This computes C = A +/- infinitesimal, rounded towards           */
+/*   +/-Infinity in the direction of B, as per 754-1985 nextafter     */
+/*   modified during revision but dropped from 754-2008.              */
+/*                                                                    */
+/*   res is C, the result.  C may be A or B.                          */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* This is a generalization of 754-1985 NextAfter.                    */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextToward(decNumber *res, const decNumber *lhs,
+                                const decNumber *rhs, decContext *set) {
+  decNumber dtiny;                           /* constant  */
+  decContext workset=*set;                   /* work  */
+  Int result;                                /* ..  */
+  uInt status=0;                             /* accumulator  */
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs)) {
+    decNaNs(res, lhs, rhs, set, &status);
+    }
+   else { /* Is numeric, so no chance of sNaN Invalid, etc.  */
+    result=decCompare(lhs, rhs, 0);     /* sign matters  */
+    if (result==BADINT) status|=DEC_Insufficient_storage; /* rare  */
+     else { /* valid compare  */
+      if (result==0) uprv_decNumberCopySign(res, lhs, rhs); /* easy  */
+       else { /* differ: need NextPlus or NextMinus  */
+        uByte sub;                      /* add or subtract  */
+        if (result<0) {                 /* lhs<rhs, do nextplus  */
+          /* -Infinity is the special case  */
+          if ((lhs->bits&(DECINF|DECNEG))==(DECINF|DECNEG)) {
+            decSetMaxValue(res, set);
+            res->bits=DECNEG;           /* negative  */
+            return res;                 /* there is no status to set  */
+            }
+          workset.round=DEC_ROUND_CEILING;
+          sub=0;                        /* add, please  */
+          } /* plus  */
+         else {                         /* lhs>rhs, do nextminus  */
+          /* +Infinity is the special case  */
+          if ((lhs->bits&(DECINF|DECNEG))==DECINF) {
+            decSetMaxValue(res, set);
+            return res;                 /* there is no status to set  */
+            }
+          workset.round=DEC_ROUND_FLOOR;
+          sub=DECNEG;                   /* subtract, please  */
+          } /* minus  */
+        uprv_decNumberZero(&dtiny);          /* start with 0  */
+        dtiny.lsu[0]=1;                 /* make number that is ..  */
+        dtiny.exponent=DEC_MIN_EMIN-1;  /* .. smaller than tiniest  */
+        decAddOp(res, lhs, &dtiny, &workset, sub, &status); /* + or -  */
+        /* turn off exceptions if the result is a normal number  */
+        /* (including Nmin), otherwise let all status through  */
+        if (uprv_decNumberIsNormal(res, set)) status=0;
+        } /* unequal  */
+      } /* compare OK  */
+    } /* numeric  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberNextToward  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberOr -- OR two Numbers, digitwise                           */
+/*                                                                    */
+/*   This computes C = A | B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X|X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context (used for result length and error report)     */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Logical function restrictions apply (see above); a NaN is          */
+/* returned with Invalid_operation if a restriction is violated.      */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *res, const decNumber *lhs,
+                        const decNumber *rhs, decContext *set) {
+  const Unit *ua, *ub;                  /* -> operands  */
+  const Unit *msua, *msub;              /* -> operand msus  */
+  Unit  *uc, *msuc;                     /* -> result and its msu  */
+  Int   msudigs;                        /* digits in res msu  */
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  if (lhs->exponent!=0 || decNumberIsSpecial(lhs) || decNumberIsNegative(lhs)
+   || rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
+    decStatus(res, DEC_Invalid_operation, set);
+    return res;
+    }
+  /* operands are valid  */
+  ua=lhs->lsu;                          /* bottom-up  */
+  ub=rhs->lsu;                          /* ..  */
+  uc=res->lsu;                          /* ..  */
+  msua=ua+D2U(lhs->digits)-1;           /* -> msu of lhs  */
+  msub=ub+D2U(rhs->digits)-1;           /* -> msu of rhs  */
+  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
+  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
+  for (; uc<=msuc; ua++, ub++, uc++) {  /* Unit loop  */
+    Unit a, b;                          /* extract units  */
+    if (ua>msua) a=0;
+     else a=*ua;
+    if (ub>msub) b=0;
+     else b=*ub;
+    *uc=0;                              /* can now write back  */
+    if (a|b) {                          /* maybe 1 bits to examine  */
+      Int i, j;
+      /* This loop could be unrolled and/or use BIN2BCD tables  */
+      for (i=0; i<DECDPUN; i++) {
+        if ((a|b)&1) *uc=*uc+(Unit)powers[i];     /* effect OR  */
+        j=a%10;
+        a=a/10;
+        j|=b%10;
+        b=b/10;
+        if (j>1) {
+          decStatus(res, DEC_Invalid_operation, set);
+          return res;
+          }
+        if (uc==msuc && i==msudigs-1) break;      /* just did final digit  */
+        } /* each digit  */
+      } /* non-zero  */
+    } /* each unit  */
+  /* [here uc-1 is the msu of the result]  */
+  res->digits=decGetDigits(res->lsu, uc-res->lsu);
+  res->exponent=0;                      /* integer  */
+  res->bits=0;                          /* sign=0  */
+  return res;  /* [no status to set]  */
+  } /* decNumberOr  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberPlus -- prefix plus operator                              */
+/*                                                                    */
+/*   This computes C = 0 + A                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* See also decNumberCopy for a quiet bitwise version of this.        */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+/* This simply uses AddOp; Add will take fast path after preparing A. */
+/* Performance is a concern here, as this routine is often used to    */
+/* check operands and apply rounding and overflow/underflow testing.  */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberPlus(decNumber *res, const decNumber *rhs,
+                          decContext *set) {
+  decNumber dzero;
+  uInt status=0;                        /* accumulator  */
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  uprv_decNumberZero(&dzero);                /* make 0  */
+  dzero.exponent=rhs->exponent;         /* [no coefficient expansion]  */
+  decAddOp(res, &dzero, rhs, set, 0, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberPlus  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberMultiply -- multiply two Numbers                          */
+/*                                                                    */
+/*   This computes C = A x B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X+X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *res, const decNumber *lhs,
+                              const decNumber *rhs, decContext *set) {
+  uInt status=0;                   /* accumulator  */
+  decMultiplyOp(res, lhs, rhs, set, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberMultiply  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberPower -- raise a number to a power                        */
+/*                                                                    */
+/*   This computes C = A ** B                                         */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X**X)        */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Mathematical function restrictions apply (see above); a NaN is     */
+/* returned with Invalid_operation if a restriction is violated.      */
+/*                                                                    */
+/* However, if 1999999997<=B<=999999999 and B is an integer then the  */
+/* restrictions on A and the context are relaxed to the usual bounds, */
+/* for compatibility with the earlier (integer power only) version    */
+/* of this function.                                                  */
+/*                                                                    */
+/* When B is an integer, the result may be exact, even if rounded.    */
+/*                                                                    */
+/* The final result is rounded according to the context; it will      */
+/* almost always be correctly rounded, but may be up to 1 ulp in      */
+/* error in rare cases.                                               */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber *lhs,
+                           const decNumber *rhs, decContext *set) {
+  #if DECSUBSET
+  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
+  decNumber *allocrhs=NULL;        /* .., rhs  */
+  #endif
+  decNumber *allocdac=NULL;        /* -> allocated acc buffer, iff used  */
+  decNumber *allocinv=NULL;        /* -> allocated 1/x buffer, iff used  */
+  Int   reqdigits=set->digits;     /* requested DIGITS  */
+  Int   n;                         /* rhs in binary  */
+  Flag  rhsint=0;                  /* 1 if rhs is an integer  */
+  Flag  useint=0;                  /* 1 if can use integer calculation  */
+  Flag  isoddint=0;                /* 1 if rhs is an integer and odd  */
+  Int   i;                         /* work  */
+  #if DECSUBSET
+  Int   dropped;                   /* ..  */
+  #endif
+  uInt  needbytes;                 /* buffer size needed  */
+  Flag  seenbit;                   /* seen a bit while powering  */
+  Int   residue=0;                 /* rounding residue  */
+  uInt  status=0;                  /* accumulators  */
+  uByte bits=0;                    /* result sign if errors  */
+  decContext aset;                 /* working context  */
+  decNumber dnOne;                 /* work value 1...  */
+  /* local accumulator buffer [a decNumber, with digits+elength+1 digits]  */
+  decNumber dacbuff[D2N(DECBUFFER+9)];
+  decNumber *dac=dacbuff;          /* -> result accumulator  */
+  /* same again for possible 1/lhs calculation  */
+  decNumber invbuff[D2N(DECBUFFER+9)];
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) { /* reduce operands and set status, as needed  */
+      if (lhs->digits>reqdigits) {
+        alloclhs=decRoundOperand(lhs, set, &status);
+        if (alloclhs==NULL) break;
+        lhs=alloclhs;
+        }
+      if (rhs->digits>reqdigits) {
+        allocrhs=decRoundOperand(rhs, set, &status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    /* handle NaNs and rhs Infinity (lhs infinity is harder)  */
+    if (SPECIALARGS) {
+      if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs)) { /* NaNs  */
+        decNaNs(res, lhs, rhs, set, &status);
+        break;}
+      if (decNumberIsInfinite(rhs)) {   /* rhs Infinity  */
+        Flag rhsneg=rhs->bits&DECNEG;   /* save rhs sign  */
+        if (decNumberIsNegative(lhs)    /* lhs<0  */
+         && !decNumberIsZero(lhs))      /* ..  */
+          status|=DEC_Invalid_operation;
+         else {                         /* lhs >=0  */
+          uprv_decNumberZero(&dnOne);        /* set up 1  */
+          dnOne.lsu[0]=1;
+          uprv_decNumberCompare(dac, lhs, &dnOne, set); /* lhs ? 1  */
+          uprv_decNumberZero(res);           /* prepare for 0/1/Infinity  */
+          if (decNumberIsNegative(dac)) {    /* lhs<1  */
+            if (rhsneg) res->bits|=DECINF;   /* +Infinity [else is +0]  */
+            }
+           else if (dac->lsu[0]==0) {        /* lhs=1  */
+            /* 1**Infinity is inexact, so return fully-padded 1.0000  */
+            Int shift=set->digits-1;
+            *res->lsu=1;                     /* was 0, make int 1  */
+            res->digits=decShiftToMost(res->lsu, 1, shift);
+            res->exponent=-shift;            /* make 1.0000...  */
+            status|=DEC_Inexact|DEC_Rounded; /* deemed inexact  */
+            }
+           else {                            /* lhs>1  */
+            if (!rhsneg) res->bits|=DECINF;  /* +Infinity [else is +0]  */
+            }
+          } /* lhs>=0  */
+        break;}
+      /* [lhs infinity drops through]  */
+      } /* specials  */
+
+    /* Original rhs may be an integer that fits and is in range  */
+    n=decGetInt(rhs);
+    if (n!=BADINT) {                    /* it is an integer  */
+      rhsint=1;                         /* record the fact for 1**n  */
+      isoddint=(Flag)n&1;               /* [works even if big]  */
+      if (n!=BIGEVEN && n!=BIGODD)      /* can use integer path?  */
+        useint=1;                       /* looks good  */
+      }
+
+    if (decNumberIsNegative(lhs)        /* -x ..  */
+      && isoddint) bits=DECNEG;         /* .. to an odd power  */
+
+    /* handle LHS infinity  */
+    if (decNumberIsInfinite(lhs)) {     /* [NaNs already handled]  */
+      uByte rbits=rhs->bits;            /* save  */
+      uprv_decNumberZero(res);               /* prepare  */
+      if (n==0) *res->lsu=1;            /* [-]Inf**0 => 1  */
+       else {
+        /* -Inf**nonint -> error  */
+        if (!rhsint && decNumberIsNegative(lhs)) {
+          status|=DEC_Invalid_operation;     /* -Inf**nonint is error  */
+          break;}
+        if (!(rbits & DECNEG)) bits|=DECINF; /* was not a **-n  */
+        /* [otherwise will be 0 or -0]  */
+        res->bits=bits;
+        }
+      break;}
+
+    /* similarly handle LHS zero  */
+    if (decNumberIsZero(lhs)) {
+      if (n==0) {                            /* 0**0 => Error  */
+        #if DECSUBSET
+        if (!set->extended) {                /* [unless subset]  */
+          uprv_decNumberZero(res);
+          *res->lsu=1;                       /* return 1  */
+          break;}
+        #endif
+        status|=DEC_Invalid_operation;
+        }
+       else {                                /* 0**x  */
+        uByte rbits=rhs->bits;               /* save  */
+        if (rbits & DECNEG) {                /* was a 0**(-n)  */
+          #if DECSUBSET
+          if (!set->extended) {              /* [bad if subset]  */
+            status|=DEC_Invalid_operation;
+            break;}
+          #endif
+          bits|=DECINF;
+          }
+        uprv_decNumberZero(res);                  /* prepare  */
+        /* [otherwise will be 0 or -0]  */
+        res->bits=bits;
+        }
+      break;}
+
+    /* here both lhs and rhs are finite; rhs==0 is handled in the  */
+    /* integer path.  Next handle the non-integer cases  */
+    if (!useint) {                      /* non-integral rhs  */
+      /* any -ve lhs is bad, as is either operand or context out of  */
+      /* bounds  */
+      if (decNumberIsNegative(lhs)) {
+        status|=DEC_Invalid_operation;
+        break;}
+      if (decCheckMath(lhs, set, &status)
+       || decCheckMath(rhs, set, &status)) break; /* variable status  */
+
+      uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64); /* clean context  */
+      aset.emax=DEC_MAX_MATH;           /* usual bounds  */
+      aset.emin=-DEC_MAX_MATH;          /* ..  */
+      aset.clamp=0;                     /* and no concrete format  */
+
+      /* calculate the result using exp(ln(lhs)*rhs), which can  */
+      /* all be done into the accumulator, dac.  The precision needed  */
+      /* is enough to contain the full information in the lhs (which  */
+      /* is the total digits, including exponent), or the requested  */
+      /* precision, if larger, + 4; 6 is used for the exponent  */
+      /* maximum length, and this is also used when it is shorter  */
+      /* than the requested digits as it greatly reduces the >0.5 ulp  */
+      /* cases at little cost (because Ln doubles digits each  */
+      /* iteration so a few extra digits rarely causes an extra  */
+      /* iteration)  */
+      aset.digits=MAXI(lhs->digits, set->digits)+6+4;
+      } /* non-integer rhs  */
+
+     else { /* rhs is in-range integer  */
+      if (n==0) {                       /* x**0 = 1  */
+        /* (0**0 was handled above)  */
+        uprv_decNumberZero(res);             /* result=1  */
+        *res->lsu=1;                    /* ..  */
+        break;}
+      /* rhs is a non-zero integer  */
+      if (n<0) n=-n;                    /* use abs(n)  */
+
+      aset=*set;                        /* clone the context  */
+      aset.round=DEC_ROUND_HALF_EVEN;   /* internally use balanced  */
+      /* calculate the working DIGITS  */
+      aset.digits=reqdigits+(rhs->digits+rhs->exponent)+2;
+      #if DECSUBSET
+      if (!set->extended) aset.digits--;     /* use classic precision  */
+      #endif
+      /* it's an error if this is more than can be handled  */
+      if (aset.digits>DECNUMMAXP) {status|=DEC_Invalid_operation; break;}
+      } /* integer path  */
+
+    /* aset.digits is the count of digits for the accumulator needed  */
+    /* if accumulator is too long for local storage, then allocate  */
+    needbytes=sizeof(decNumber)+(D2U(aset.digits)-1)*sizeof(Unit);
+    /* [needbytes also used below if 1/lhs needed]  */
+    if (needbytes>sizeof(dacbuff)) {
+      allocdac=(decNumber *)malloc(needbytes);
+      if (allocdac==NULL) {   /* hopeless -- abandon  */
+        status|=DEC_Insufficient_storage;
+        break;}
+      dac=allocdac;           /* use the allocated space  */
+      }
+    /* here, aset is set up and accumulator is ready for use  */
+
+    if (!useint) {                           /* non-integral rhs  */
+      /* x ** y; special-case x=1 here as it will otherwise always  */
+      /* reduce to integer 1; decLnOp has a fastpath which detects  */
+      /* the case of x=1  */
+      decLnOp(dac, lhs, &aset, &status);     /* dac=ln(lhs)  */
+      /* [no error possible, as lhs 0 already handled]  */
+      if (ISZERO(dac)) {                     /* x==1, 1.0, etc.  */
+        /* need to return fully-padded 1.0000 etc., but rhsint->1  */
+        *dac->lsu=1;                         /* was 0, make int 1  */
+        if (!rhsint) {                       /* add padding  */
+          Int shift=set->digits-1;
+          dac->digits=decShiftToMost(dac->lsu, 1, shift);
+          dac->exponent=-shift;              /* make 1.0000...  */
+          status|=DEC_Inexact|DEC_Rounded;   /* deemed inexact  */
+          }
+        }
+       else {
+        decMultiplyOp(dac, dac, rhs, &aset, &status);  /* dac=dac*rhs  */
+        decExpOp(dac, dac, &aset, &status);            /* dac=exp(dac)  */
+        }
+      /* and drop through for final rounding  */
+      } /* non-integer rhs  */
+
+     else {                             /* carry on with integer  */
+      uprv_decNumberZero(dac);               /* acc=1  */
+      *dac->lsu=1;                      /* ..  */
+
+      /* if a negative power the constant 1 is needed, and if not subset  */
+      /* invert the lhs now rather than inverting the result later  */
+      if (decNumberIsNegative(rhs)) {   /* was a **-n [hence digits>0]  */
+        decNumber *inv=invbuff;         /* asssume use fixed buffer  */
+        uprv_decNumberCopy(&dnOne, dac);     /* dnOne=1;  [needed now or later]  */
+        #if DECSUBSET
+        if (set->extended) {            /* need to calculate 1/lhs  */
+        #endif
+          /* divide lhs into 1, putting result in dac [dac=1/dac]  */
+          decDivideOp(dac, &dnOne, lhs, &aset, DIVIDE, &status);
+          /* now locate or allocate space for the inverted lhs  */
+          if (needbytes>sizeof(invbuff)) {
+            allocinv=(decNumber *)malloc(needbytes);
+            if (allocinv==NULL) {       /* hopeless -- abandon  */
+              status|=DEC_Insufficient_storage;
+              break;}
+            inv=allocinv;               /* use the allocated space  */
+            }
+          /* [inv now points to big-enough buffer or allocated storage]  */
+          uprv_decNumberCopy(inv, dac);      /* copy the 1/lhs  */
+          uprv_decNumberCopy(dac, &dnOne);   /* restore acc=1  */
+          lhs=inv;                      /* .. and go forward with new lhs  */
+        #if DECSUBSET
+          }
+        #endif
+        }
+
+      /* Raise-to-the-power loop...  */
+      seenbit=0;                   /* set once a 1-bit is encountered  */
+      for (i=1;;i++){              /* for each bit [top bit ignored]  */
+        /* abandon if had overflow or terminal underflow  */
+        if (status & (DEC_Overflow|DEC_Underflow)) { /* interesting?  */
+          if (status&DEC_Overflow || ISZERO(dac)) break;
+          }
+        /* [the following two lines revealed an optimizer bug in a C++  */
+        /* compiler, with symptom: 5**3 -> 25, when n=n+n was used]  */
+        n=n<<1;                    /* move next bit to testable position  */
+        if (n<0) {                 /* top bit is set  */
+          seenbit=1;               /* OK, significant bit seen  */
+          decMultiplyOp(dac, dac, lhs, &aset, &status); /* dac=dac*x  */
+          }
+        if (i==31) break;          /* that was the last bit  */
+        if (!seenbit) continue;    /* no need to square 1  */
+        decMultiplyOp(dac, dac, dac, &aset, &status); /* dac=dac*dac [square]  */
+        } /*i*/ /* 32 bits  */
+
+      /* complete internal overflow or underflow processing  */
+      if (status & (DEC_Overflow|DEC_Underflow)) {
+        #if DECSUBSET
+        /* If subset, and power was negative, reverse the kind of -erflow  */
+        /* [1/x not yet done]  */
+        if (!set->extended && decNumberIsNegative(rhs)) {
+          if (status & DEC_Overflow)
+            status^=DEC_Overflow | DEC_Underflow | DEC_Subnormal;
+           else { /* trickier -- Underflow may or may not be set  */
+            status&=~(DEC_Underflow | DEC_Subnormal); /* [one or both]  */
+            status|=DEC_Overflow;
+            }
+          }
+        #endif
+        dac->bits=(dac->bits & ~DECNEG) | bits; /* force correct sign  */
+        /* round subnormals [to set.digits rather than aset.digits]  */
+        /* or set overflow result similarly as required  */
+        decFinalize(dac, set, &residue, &status);
+        uprv_decNumberCopy(res, dac);   /* copy to result (is now OK length)  */
+        break;
+        }
+
+      #if DECSUBSET
+      if (!set->extended &&                  /* subset math  */
+          decNumberIsNegative(rhs)) {        /* was a **-n [hence digits>0]  */
+        /* so divide result into 1 [dac=1/dac]  */
+        decDivideOp(dac, &dnOne, dac, &aset, DIVIDE, &status);
+        }
+      #endif
+      } /* rhs integer path  */
+
+    /* reduce result to the requested length and copy to result  */
+    decCopyFit(res, dac, set, &residue, &status);
+    decFinish(res, set, &residue, &status);  /* final cleanup  */
+    #if DECSUBSET
+    if (!set->extended) decTrim(res, set, 0, 1, &dropped); /* trailing zeros  */
+    #endif
+    } while(0);                         /* end protected  */
+
+  if (allocdac!=NULL) free(allocdac);   /* drop any storage used  */
+  if (allocinv!=NULL) free(allocinv);   /* ..  */
+  #if DECSUBSET
+  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
+  if (allocrhs!=NULL) free(allocrhs);   /* ..  */
+  #endif
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberPower  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberQuantize -- force exponent to requested value             */
+/*                                                                    */
+/*   This computes C = op(A, B), where op adjusts the coefficient     */
+/*   of C (by rounding or shifting) such that the exponent (-scale)   */
+/*   of C has exponent of B.  The numerical value of C will equal A,  */
+/*   except for the effects of any rounding that occurred.            */
+/*                                                                    */
+/*   res is C, the result.  C may be A or B                           */
+/*   lhs is A, the number to adjust                                   */
+/*   rhs is B, the number with exponent to match                      */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Unless there is an error or the result is infinite, the exponent   */
+/* after the operation is guaranteed to be equal to that of B.        */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberQuantize(decNumber *res, const decNumber *lhs,
+                              const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decQuantizeOp(res, lhs, rhs, set, 1, &status);
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberQuantize  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberReduce -- remove trailing zeros                           */
+/*                                                                    */
+/*   This computes C = 0 + A, and normalizes the result               */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+/* Previously known as Normalize  */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *res, const decNumber *rhs,
+                               decContext *set) {
+  return uprv_decNumberReduce(res, rhs, set);
+  } /* decNumberNormalize  */
+
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *res, const decNumber *rhs,
+                            decContext *set) {
+  #if DECSUBSET
+  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
+  #endif
+  uInt status=0;                   /* as usual  */
+  Int  residue=0;                  /* as usual  */
+  Int  dropped;                    /* work  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operand and set lostDigits status, as needed  */
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, &status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    /* Infinities copy through; NaNs need usual treatment  */
+    if (decNumberIsNaN(rhs)) {
+      decNaNs(res, rhs, NULL, set, &status);
+      break;
+      }
+
+    /* reduce result to the requested length and copy to result  */
+    decCopyFit(res, rhs, set, &residue, &status); /* copy & round  */
+    decFinish(res, set, &residue, &status);       /* cleanup/set flags  */
+    decTrim(res, set, 1, 0, &dropped);            /* normalize in place  */
+                                                  /* [may clamp]  */
+    } while(0);                              /* end protected  */
+
+  #if DECSUBSET
+  if (allocrhs !=NULL) free(allocrhs);       /* ..  */
+  #endif
+  if (status!=0) decStatus(res, status, set);/* then report status  */
+  return res;
+  } /* decNumberReduce  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberRescale -- force exponent to requested value              */
+/*                                                                    */
+/*   This computes C = op(A, B), where op adjusts the coefficient     */
+/*   of C (by rounding or shifting) such that the exponent (-scale)   */
+/*   of C has the value B.  The numerical value of C will equal A,    */
+/*   except for the effects of any rounding that occurred.            */
+/*                                                                    */
+/*   res is C, the result.  C may be A or B                           */
+/*   lhs is A, the number to adjust                                   */
+/*   rhs is B, the requested exponent                                 */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Unless there is an error or the result is infinite, the exponent   */
+/* after the operation is guaranteed to be equal to B.                */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberRescale(decNumber *res, const decNumber *lhs,
+                             const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decQuantizeOp(res, lhs, rhs, set, 0, &status);
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberRescale  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberRemainder -- divide and return remainder                  */
+/*                                                                    */
+/*   This computes C = A % B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X%X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainder(decNumber *res, const decNumber *lhs,
+                               const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decDivideOp(res, lhs, rhs, set, REMAINDER, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberRemainder  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberRemainderNear -- divide and return remainder from nearest */
+/*                                                                    */
+/*   This computes C = A % B, where % is the IEEE remainder operator  */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X%X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainderNear(decNumber *res, const decNumber *lhs,
+                                   const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+  decDivideOp(res, lhs, rhs, set, REMNEAR, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberRemainderNear  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberRotate -- rotate the coefficient of a Number left/right   */
+/*                                                                    */
+/*   This computes C = A rot B  (in base ten and rotating set->digits */
+/*   digits).                                                         */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=XrotX)       */
+/*   lhs is A                                                         */
+/*   rhs is B, the number of digits to rotate (-ve to right)          */
+/*   set is the context                                               */
+/*                                                                    */
+/* The digits of the coefficient of A are rotated to the left (if B   */
+/* is positive) or to the right (if B is negative) without adjusting  */
+/* the exponent or the sign of A.  If lhs->digits is less than        */
+/* set->digits the coefficient is padded with zeros on the left       */
+/* before the rotate.  Any leading zeros in the result are removed    */
+/* as usual.                                                          */
+/*                                                                    */
+/* B must be an integer (q=0) and in the range -set->digits through   */
+/* +set->digits.                                                      */
+/* C must have space for set->digits digits.                          */
+/* NaNs are propagated as usual.  Infinities are unaffected (but      */
+/* B must be valid).  No status is set unless B is invalid or an      */
+/* operand is an sNaN.                                                */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *res, const decNumber *lhs,
+                           const decNumber *rhs, decContext *set) {
+  uInt status=0;              /* accumulator  */
+  Int  rotate;                /* rhs as an Int  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  /* NaNs propagate as normal  */
+  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs))
+    decNaNs(res, lhs, rhs, set, &status);
+   /* rhs must be an integer  */
+   else if (decNumberIsInfinite(rhs) || rhs->exponent!=0)
+    status=DEC_Invalid_operation;
+   else { /* both numeric, rhs is an integer  */
+    rotate=decGetInt(rhs);                   /* [cannot fail]  */
+    if (rotate==BADINT                       /* something bad ..  */
+     || rotate==BIGODD || rotate==BIGEVEN    /* .. very big ..  */
+     || abs(rotate)>set->digits)             /* .. or out of range  */
+      status=DEC_Invalid_operation;
+     else {                                  /* rhs is OK  */
+      uprv_decNumberCopy(res, lhs);
+      /* convert -ve rotate to equivalent positive rotation  */
+      if (rotate<0) rotate=set->digits+rotate;
+      if (rotate!=0 && rotate!=set->digits   /* zero or full rotation  */
+       && !decNumberIsInfinite(res)) {       /* lhs was infinite  */
+        /* left-rotate to do; 0 < rotate < set->digits  */
+        uInt units, shift;                   /* work  */
+        uInt msudigits;                      /* digits in result msu  */
+        Unit *msu=res->lsu+D2U(res->digits)-1;    /* current msu  */
+        Unit *msumax=res->lsu+D2U(set->digits)-1; /* rotation msu  */
+        for (msu++; msu<=msumax; msu++) *msu=0;   /* ensure high units=0  */
+        res->digits=set->digits;                  /* now full-length  */
+        msudigits=MSUDIGITS(res->digits);         /* actual digits in msu  */
+
+        /* rotation here is done in-place, in three steps  */
+        /* 1. shift all to least up to one unit to unit-align final  */
+        /*    lsd [any digits shifted out are rotated to the left,  */
+        /*    abutted to the original msd (which may require split)]  */
+        /*  */
+        /*    [if there are no whole units left to rotate, the  */
+        /*    rotation is now complete]  */
+        /*  */
+        /* 2. shift to least, from below the split point only, so that  */
+        /*    the final msd is in the right place in its Unit [any  */
+        /*    digits shifted out will fit exactly in the current msu,  */
+        /*    left aligned, no split required]  */
+        /*  */
+        /* 3. rotate all the units by reversing left part, right  */
+        /*    part, and then whole  */
+        /*  */
+        /* example: rotate right 8 digits (2 units + 2), DECDPUN=3.  */
+        /*  */
+        /*   start: 00a bcd efg hij klm npq  */
+        /*  */
+        /*      1a  000 0ab cde fgh|ijk lmn [pq saved]  */
+        /*      1b  00p qab cde fgh|ijk lmn  */
+        /*  */
+        /*      2a  00p qab cde fgh|00i jkl [mn saved]  */
+        /*      2b  mnp qab cde fgh|00i jkl  */
+        /*  */
+        /*      3a  fgh cde qab mnp|00i jkl  */
+        /*      3b  fgh cde qab mnp|jkl 00i  */
+        /*      3c  00i jkl mnp qab cde fgh  */
+
+        /* Step 1: amount to shift is the partial right-rotate count  */
+        rotate=set->digits-rotate;      /* make it right-rotate  */
+        units=rotate/DECDPUN;           /* whole units to rotate  */
+        shift=rotate%DECDPUN;           /* left-over digits count  */
+        if (shift>0) {                  /* not an exact number of units  */
+          uInt save=res->lsu[0]%powers[shift];    /* save low digit(s)  */
+          decShiftToLeast(res->lsu, D2U(res->digits), shift);
+          if (shift>msudigits) {        /* msumax-1 needs >0 digits  */
+            uInt rem=save%powers[shift-msudigits];/* split save  */
+            *msumax=(Unit)(save/powers[shift-msudigits]); /* and insert  */
+            *(msumax-1)=*(msumax-1)
+                       +(Unit)(rem*powers[DECDPUN-(shift-msudigits)]); /* ..  */
+            }
+           else { /* all fits in msumax  */
+            *msumax=*msumax+(Unit)(save*powers[msudigits-shift]); /* [maybe *1]  */
+            }
+          } /* digits shift needed  */
+
+        /* If whole units to rotate...  */
+        if (units>0) {                  /* some to do  */
+          /* Step 2: the units to touch are the whole ones in rotate,  */
+          /*   if any, and the shift is DECDPUN-msudigits (which may be  */
+          /*   0, again)  */
+          shift=DECDPUN-msudigits;
+          if (shift>0) {                /* not an exact number of units  */
+            uInt save=res->lsu[0]%powers[shift];  /* save low digit(s)  */
+            decShiftToLeast(res->lsu, units, shift);
+            *msumax=*msumax+(Unit)(save*powers[msudigits]);
+            } /* partial shift needed  */
+
+          /* Step 3: rotate the units array using triple reverse  */
+          /* (reversing is easy and fast)  */
+          decReverse(res->lsu+units, msumax);     /* left part  */
+          decReverse(res->lsu, res->lsu+units-1); /* right part  */
+          decReverse(res->lsu, msumax);           /* whole  */
+          } /* whole units to rotate  */
+        /* the rotation may have left an undetermined number of zeros  */
+        /* on the left, so true length needs to be calculated  */
+        res->digits=decGetDigits(res->lsu, msumax-res->lsu+1);
+        } /* rotate needed  */
+      } /* rhs OK  */
+    } /* numerics  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberRotate  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberSameQuantum -- test for equal exponents                   */
+/*                                                                    */
+/*   res is the result number, which will contain either 0 or 1       */
+/*   lhs is a number to test                                          */
+/*   rhs is the second (usually a pattern)                            */
+/*                                                                    */
+/* No errors are possible and no context is needed.                   */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberSameQuantum(decNumber *res, const decNumber *lhs,
+                                 const decNumber *rhs) {
+  Unit ret=0;                      /* return value  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, DECUNCONT)) return res;
+  #endif
+
+  if (SPECIALARGS) {
+    if (decNumberIsNaN(lhs) && decNumberIsNaN(rhs)) ret=1;
+     else if (decNumberIsInfinite(lhs) && decNumberIsInfinite(rhs)) ret=1;
+     /* [anything else with a special gives 0]  */
+    }
+   else if (lhs->exponent==rhs->exponent) ret=1;
+
+  uprv_decNumberZero(res);              /* OK to overwrite an operand now  */
+  *res->lsu=ret;
+  return res;
+  } /* decNumberSameQuantum  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberScaleB -- multiply by a power of 10                       */
+/*                                                                    */
+/* This computes C = A x 10**B where B is an integer (q=0) with       */
+/* maximum magnitude 2*(emax+digits)                                  */
+/*                                                                    */
+/*   res is C, the result.  C may be A or B                           */
+/*   lhs is A, the number to adjust                                   */
+/*   rhs is B, the requested power of ten to use                      */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* The result may underflow or overflow.                              */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberScaleB(decNumber *res, const decNumber *lhs,
+                            const decNumber *rhs, decContext *set) {
+  Int  reqexp;                /* requested exponent change [B]  */
+  uInt status=0;              /* accumulator  */
+  Int  residue;               /* work  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  /* Handle special values except lhs infinite  */
+  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs))
+    decNaNs(res, lhs, rhs, set, &status);
+    /* rhs must be an integer  */
+   else if (decNumberIsInfinite(rhs) || rhs->exponent!=0)
+    status=DEC_Invalid_operation;
+   else {
+    /* lhs is a number; rhs is a finite with q==0  */
+    reqexp=decGetInt(rhs);                   /* [cannot fail]  */
+    if (reqexp==BADINT                       /* something bad ..  */
+     || reqexp==BIGODD || reqexp==BIGEVEN    /* .. very big ..  */
+     || abs(reqexp)>(2*(set->digits+set->emax))) /* .. or out of range  */
+      status=DEC_Invalid_operation;
+     else {                                  /* rhs is OK  */
+      uprv_decNumberCopy(res, lhs);               /* all done if infinite lhs  */
+      if (!decNumberIsInfinite(res)) {       /* prepare to scale  */
+        res->exponent+=reqexp;               /* adjust the exponent  */
+        residue=0;
+        decFinalize(res, set, &residue, &status); /* .. and check  */
+        } /* finite LHS  */
+      } /* rhs OK  */
+    } /* rhs finite  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberScaleB  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberShift -- shift the coefficient of a Number left or right  */
+/*                                                                    */
+/*   This computes C = A << B or C = A >> -B  (in base ten).          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X<<X)        */
+/*   lhs is A                                                         */
+/*   rhs is B, the number of digits to shift (-ve to right)           */
+/*   set is the context                                               */
+/*                                                                    */
+/* The digits of the coefficient of A are shifted to the left (if B   */
+/* is positive) or to the right (if B is negative) without adjusting  */
+/* the exponent or the sign of A.                                     */
+/*                                                                    */
+/* B must be an integer (q=0) and in the range -set->digits through   */
+/* +set->digits.                                                      */
+/* C must have space for set->digits digits.                          */
+/* NaNs are propagated as usual.  Infinities are unaffected (but      */
+/* B must be valid).  No status is set unless B is invalid or an      */
+/* operand is an sNaN.                                                */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberShift(decNumber *res, const decNumber *lhs,
+                           const decNumber *rhs, decContext *set) {
+  uInt status=0;              /* accumulator  */
+  Int  shift;                 /* rhs as an Int  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  /* NaNs propagate as normal  */
+  if (decNumberIsNaN(lhs) || decNumberIsNaN(rhs))
+    decNaNs(res, lhs, rhs, set, &status);
+   /* rhs must be an integer  */
+   else if (decNumberIsInfinite(rhs) || rhs->exponent!=0)
+    status=DEC_Invalid_operation;
+   else { /* both numeric, rhs is an integer  */
+    shift=decGetInt(rhs);                    /* [cannot fail]  */
+    if (shift==BADINT                        /* something bad ..  */
+     || shift==BIGODD || shift==BIGEVEN      /* .. very big ..  */
+     || abs(shift)>set->digits)              /* .. or out of range  */
+      status=DEC_Invalid_operation;
+     else {                                  /* rhs is OK  */
+      uprv_decNumberCopy(res, lhs);
+      if (shift!=0 && !decNumberIsInfinite(res)) { /* something to do  */
+        if (shift>0) {                       /* to left  */
+          if (shift==set->digits) {          /* removing all  */
+            *res->lsu=0;                     /* so place 0  */
+            res->digits=1;                   /* ..  */
+            }
+           else {                            /*  */
+            /* first remove leading digits if necessary  */
+            if (res->digits+shift>set->digits) {
+              decDecap(res, res->digits+shift-set->digits);
+              /* that updated res->digits; may have gone to 1 (for a  */
+              /* single digit or for zero  */
+              }
+            if (res->digits>1 || *res->lsu)  /* if non-zero..  */
+              res->digits=decShiftToMost(res->lsu, res->digits, shift);
+            } /* partial left  */
+          } /* left  */
+         else { /* to right  */
+          if (-shift>=res->digits) {         /* discarding all  */
+            *res->lsu=0;                     /* so place 0  */
+            res->digits=1;                   /* ..  */
+            }
+           else {
+            decShiftToLeast(res->lsu, D2U(res->digits), -shift);
+            res->digits-=(-shift);
+            }
+          } /* to right  */
+        } /* non-0 non-Inf shift  */
+      } /* rhs OK  */
+    } /* numerics  */
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberShift  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberSquareRoot -- square root operator                        */
+/*                                                                    */
+/*   This computes C = squareroot(A)                                  */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context; note that rounding mode has no effect        */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+/* This uses the following varying-precision algorithm in:            */
+/*                                                                    */
+/*   Properly Rounded Variable Precision Square Root, T. E. Hull and  */
+/*   A. Abrham, ACM Transactions on Mathematical Software, Vol 11 #3, */
+/*   pp229-237, ACM, September 1985.                                  */
+/*                                                                    */
+/* The square-root is calculated using Newton's method, after which   */
+/* a check is made to ensure the result is correctly rounded.         */
+/*                                                                    */
+/* % [Reformatted original Numerical Turing source code follows.]     */
+/* function sqrt(x : real) : real                                     */
+/* % sqrt(x) returns the properly rounded approximation to the square */
+/* % root of x, in the precision of the calling environment, or it    */
+/* % fails if x < 0.                                                  */
+/* % t e hull and a abrham, august, 1984                              */
+/* if x <= 0 then                                                     */
+/*   if x < 0 then                                                    */
+/*     assert false                                                   */
+/*   else                                                             */
+/*     result 0                                                       */
+/*   end if                                                           */
+/* end if                                                             */
+/* var f := setexp(x, 0)  % fraction part of x   [0.1 <= x < 1]       */
+/* var e := getexp(x)     % exponent part of x                        */
+/* var approx : real                                                  */
+/* if e mod 2 = 0  then                                               */
+/*   approx := .259 + .819 * f   % approx to root of f                */
+/* else                                                               */
+/*   f := f/l0                   % adjustments                        */
+/*   e := e + 1                  %   for odd                          */
+/*   approx := .0819 + 2.59 * f  %   exponent                         */
+/* end if                                                             */
+/*                                                                    */
+/* var p:= 3                                                          */
+/* const maxp := currentprecision + 2                                 */
+/* loop                                                               */
+/*   p := min(2*p - 2, maxp)     % p = 4,6,10, . . . , maxp           */
+/*   precision p                                                      */
+/*   approx := .5 * (approx + f/approx)                               */
+/*   exit when p = maxp                                               */
+/* end loop                                                           */
+/*                                                                    */
+/* % approx is now within 1 ulp of the properly rounded square root   */
+/* % of f; to ensure proper rounding, compare squares of (approx -    */
+/* % l/2 ulp) and (approx + l/2 ulp) with f.                          */
+/* p := currentprecision                                              */
+/* begin                                                              */
+/*   precision p + 2                                                  */
+/*   const approxsubhalf := approx - setexp(.5, -p)                   */
+/*   if mulru(approxsubhalf, approxsubhalf) > f then                  */
+/*     approx := approx - setexp(.l, -p + 1)                          */
+/*   else                                                             */
+/*     const approxaddhalf := approx + setexp(.5, -p)                 */
+/*     if mulrd(approxaddhalf, approxaddhalf) < f then                */
+/*       approx := approx + setexp(.l, -p + 1)                        */
+/*     end if                                                         */
+/*   end if                                                           */
+/* end                                                                */
+/* result setexp(approx, e div 2)  % fix exponent                     */
+/* end sqrt                                                           */
+/* ------------------------------------------------------------------ */
+#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decNumber *rhs,
+                                decContext *set) {
+  decContext workset, approxset;   /* work contexts  */
+  decNumber dzero;                 /* used for constant zero  */
+  Int  maxp;                       /* largest working precision  */
+  Int  workp;                      /* working precision  */
+  Int  residue=0;                  /* rounding residue  */
+  uInt status=0, ignore=0;         /* status accumulators  */
+  uInt rstatus;                    /* ..  */
+  Int  exp;                        /* working exponent  */
+  Int  ideal;                      /* ideal (preferred) exponent  */
+  Int  needbytes;                  /* work  */
+  Int  dropped;                    /* ..  */
+
+  #if DECSUBSET
+  decNumber *allocrhs=NULL;        /* non-NULL if rounded rhs allocated  */
+  #endif
+  /* buffer for f [needs +1 in case DECBUFFER 0]  */
+  decNumber buff[D2N(DECBUFFER+1)];
+  /* buffer for a [needs +2 to match likely maxp]  */
+  decNumber bufa[D2N(DECBUFFER+2)];
+  /* buffer for temporary, b [must be same size as a]  */
+  decNumber bufb[D2N(DECBUFFER+2)];
+  decNumber *allocbuff=NULL;       /* -> allocated buff, iff allocated  */
+  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber *allocbufb=NULL;       /* -> allocated bufb, iff allocated  */
+  decNumber *f=buff;               /* reduced fraction  */
+  decNumber *a=bufa;               /* approximation to result  */
+  decNumber *b=bufb;               /* intermediate result  */
+  /* buffer for temporary variable, up to 3 digits  */
+  decNumber buft[D2N(3)];
+  decNumber *t=buft;               /* up-to-3-digit constant or work  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operand and set lostDigits status, as needed  */
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, &status);
+        if (allocrhs==NULL) break;
+        /* [Note: 'f' allocation below could reuse this buffer if  */
+        /* used, but as this is rare they are kept separate for clarity.]  */
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    /* handle infinities and NaNs  */
+    if (SPECIALARG) {
+      if (decNumberIsInfinite(rhs)) {         /* an infinity  */
+        if (decNumberIsNegative(rhs)) status|=DEC_Invalid_operation;
+         else uprv_decNumberCopy(res, rhs);        /* +Infinity  */
+        }
+       else decNaNs(res, rhs, NULL, set, &status); /* a NaN  */
+      break;
+      }
+
+    /* calculate the ideal (preferred) exponent [floor(exp/2)]  */
+    /* [It would be nicer to write: ideal=rhs->exponent>>1, but this  */
+    /* generates a compiler warning.  Generated code is the same.]  */
+    ideal=(rhs->exponent&~1)/2;         /* target  */
+
+    /* handle zeros  */
+    if (ISZERO(rhs)) {
+      uprv_decNumberCopy(res, rhs);          /* could be 0 or -0  */
+      res->exponent=ideal;              /* use the ideal [safe]  */
+      /* use decFinish to clamp any out-of-range exponent, etc.  */
+      decFinish(res, set, &residue, &status);
+      break;
+      }
+
+    /* any other -x is an oops  */
+    if (decNumberIsNegative(rhs)) {
+      status|=DEC_Invalid_operation;
+      break;
+      }
+
+    /* space is needed for three working variables  */
+    /*   f -- the same precision as the RHS, reduced to 0.01->0.99...  */
+    /*   a -- Hull's approximation -- precision, when assigned, is  */
+    /*        currentprecision+1 or the input argument precision,  */
+    /*        whichever is larger (+2 for use as temporary)  */
+    /*   b -- intermediate temporary result (same size as a)  */
+    /* if any is too long for local storage, then allocate  */
+    workp=MAXI(set->digits+1, rhs->digits);  /* actual rounding precision  */
+    workp=MAXI(workp, 7);                    /* at least 7 for low cases  */
+    maxp=workp+2;                            /* largest working precision  */
+
+    needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
+    if (needbytes>(Int)sizeof(buff)) {
+      allocbuff=(decNumber *)malloc(needbytes);
+      if (allocbuff==NULL) {  /* hopeless -- abandon  */
+        status|=DEC_Insufficient_storage;
+        break;}
+      f=allocbuff;            /* use the allocated space  */
+      }
+    /* a and b both need to be able to hold a maxp-length number  */
+    needbytes=sizeof(decNumber)+(D2U(maxp)-1)*sizeof(Unit);
+    if (needbytes>(Int)sizeof(bufa)) {            /* [same applies to b]  */
+      allocbufa=(decNumber *)malloc(needbytes);
+      allocbufb=(decNumber *)malloc(needbytes);
+      if (allocbufa==NULL || allocbufb==NULL) {   /* hopeless  */
+        status|=DEC_Insufficient_storage;
+        break;}
+      a=allocbufa;            /* use the allocated spaces  */
+      b=allocbufb;            /* ..  */
+      }
+
+    /* copy rhs -> f, save exponent, and reduce so 0.1 <= f < 1  */
+    uprv_decNumberCopy(f, rhs);
+    exp=f->exponent+f->digits;               /* adjusted to Hull rules  */
+    f->exponent=-(f->digits);                /* to range  */
+
+    /* set up working context  */
+    uprv_decContextDefault(&workset, DEC_INIT_DECIMAL64);
+    workset.emax=DEC_MAX_EMAX;
+    workset.emin=DEC_MIN_EMIN;
+
+    /* [Until further notice, no error is possible and status bits  */
+    /* (Rounded, etc.) should be ignored, not accumulated.]  */
+
+    /* Calculate initial approximation, and allow for odd exponent  */
+    workset.digits=workp;                    /* p for initial calculation  */
+    t->bits=0; t->digits=3;
+    a->bits=0; a->digits=3;
+    if ((exp & 1)==0) {                      /* even exponent  */
+      /* Set t=0.259, a=0.819  */
+      t->exponent=-3;
+      a->exponent=-3;
+      #if DECDPUN>=3
+        t->lsu[0]=259;
+        a->lsu[0]=819;
+      #elif DECDPUN==2
+        t->lsu[0]=59; t->lsu[1]=2;
+        a->lsu[0]=19; a->lsu[1]=8;
+      #else
+        t->lsu[0]=9; t->lsu[1]=5; t->lsu[2]=2;
+        a->lsu[0]=9; a->lsu[1]=1; a->lsu[2]=8;
+      #endif
+      }
+     else {                                  /* odd exponent  */
+      /* Set t=0.0819, a=2.59  */
+      f->exponent--;                         /* f=f/10  */
+      exp++;                                 /* e=e+1  */
+      t->exponent=-4;
+      a->exponent=-2;
+      #if DECDPUN>=3
+        t->lsu[0]=819;
+        a->lsu[0]=259;
+      #elif DECDPUN==2
+        t->lsu[0]=19; t->lsu[1]=8;
+        a->lsu[0]=59; a->lsu[1]=2;
+      #else
+        t->lsu[0]=9; t->lsu[1]=1; t->lsu[2]=8;
+        a->lsu[0]=9; a->lsu[1]=5; a->lsu[2]=2;
+      #endif
+      }
+
+    decMultiplyOp(a, a, f, &workset, &ignore);    /* a=a*f  */
+    decAddOp(a, a, t, &workset, 0, &ignore);      /* ..+t  */
+    /* [a is now the initial approximation for sqrt(f), calculated with  */
+    /* currentprecision, which is also a's precision.]  */
+
+    /* the main calculation loop  */
+    uprv_decNumberZero(&dzero);                   /* make 0  */
+    uprv_decNumberZero(t);                        /* set t = 0.5  */
+    t->lsu[0]=5;                             /* ..  */
+    t->exponent=-1;                          /* ..  */
+    workset.digits=3;                        /* initial p  */
+    for (; workset.digits<maxp;) {
+      /* set p to min(2*p - 2, maxp)  [hence 3; or: 4, 6, 10, ... , maxp]  */
+      workset.digits=MINI(workset.digits*2-2, maxp);
+      /* a = 0.5 * (a + f/a)  */
+      /* [calculated at p then rounded to currentprecision]  */
+      decDivideOp(b, f, a, &workset, DIVIDE, &ignore); /* b=f/a  */
+      decAddOp(b, b, a, &workset, 0, &ignore);         /* b=b+a  */
+      decMultiplyOp(a, b, t, &workset, &ignore);       /* a=b*0.5  */
+      } /* loop  */
+
+    /* Here, 0.1 <= a < 1 [Hull], and a has maxp digits  */
+    /* now reduce to length, etc.; this needs to be done with a  */
+    /* having the correct exponent so as to handle subnormals  */
+    /* correctly  */
+    approxset=*set;                          /* get emin, emax, etc.  */
+    approxset.round=DEC_ROUND_HALF_EVEN;
+    a->exponent+=exp/2;                      /* set correct exponent  */
+    rstatus=0;                               /* clear status  */
+    residue=0;                               /* .. and accumulator  */
+    decCopyFit(a, a, &approxset, &residue, &rstatus);  /* reduce (if needed)  */
+    decFinish(a, &approxset, &residue, &rstatus);      /* clean and finalize  */
+
+    /* Overflow was possible if the input exponent was out-of-range,  */
+    /* in which case quit  */
+    if (rstatus&DEC_Overflow) {
+      status=rstatus;                        /* use the status as-is  */
+      uprv_decNumberCopy(res, a);                 /* copy to result  */
+      break;
+      }
+
+    /* Preserve status except Inexact/Rounded  */
+    status|=(rstatus & ~(DEC_Rounded|DEC_Inexact));
+
+    /* Carry out the Hull correction  */
+    a->exponent-=exp/2;                      /* back to 0.1->1  */
+
+    /* a is now at final precision and within 1 ulp of the properly  */
+    /* rounded square root of f; to ensure proper rounding, compare  */
+    /* squares of (a - l/2 ulp) and (a + l/2 ulp) with f.  */
+    /* Here workset.digits=maxp and t=0.5, and a->digits determines  */
+    /* the ulp  */
+    workset.digits--;                             /* maxp-1 is OK now  */
+    t->exponent=-a->digits-1;                     /* make 0.5 ulp  */
+    decAddOp(b, a, t, &workset, DECNEG, &ignore); /* b = a - 0.5 ulp  */
+    workset.round=DEC_ROUND_UP;
+    decMultiplyOp(b, b, b, &workset, &ignore);    /* b = mulru(b, b)  */
+    decCompareOp(b, f, b, &workset, COMPARE, &ignore); /* b ? f, reversed  */
+    if (decNumberIsNegative(b)) {                 /* f < b [i.e., b > f]  */
+      /* this is the more common adjustment, though both are rare  */
+      t->exponent++;                              /* make 1.0 ulp  */
+      t->lsu[0]=1;                                /* ..  */
+      decAddOp(a, a, t, &workset, DECNEG, &ignore); /* a = a - 1 ulp  */
+      /* assign to approx [round to length]  */
+      approxset.emin-=exp/2;                      /* adjust to match a  */
+      approxset.emax-=exp/2;
+      decAddOp(a, &dzero, a, &approxset, 0, &ignore);
+      }
+     else {
+      decAddOp(b, a, t, &workset, 0, &ignore);    /* b = a + 0.5 ulp  */
+      workset.round=DEC_ROUND_DOWN;
+      decMultiplyOp(b, b, b, &workset, &ignore);  /* b = mulrd(b, b)  */
+      decCompareOp(b, b, f, &workset, COMPARE, &ignore);   /* b ? f  */
+      if (decNumberIsNegative(b)) {               /* b < f  */
+        t->exponent++;                            /* make 1.0 ulp  */
+        t->lsu[0]=1;                              /* ..  */
+        decAddOp(a, a, t, &workset, 0, &ignore);  /* a = a + 1 ulp  */
+        /* assign to approx [round to length]  */
+        approxset.emin-=exp/2;                    /* adjust to match a  */
+        approxset.emax-=exp/2;
+        decAddOp(a, &dzero, a, &approxset, 0, &ignore);
+        }
+      }
+    /* [no errors are possible in the above, and rounding/inexact during  */
+    /* estimation are irrelevant, so status was not accumulated]  */
+
+    /* Here, 0.1 <= a < 1  (still), so adjust back  */
+    a->exponent+=exp/2;                      /* set correct exponent  */
+
+    /* count droppable zeros [after any subnormal rounding] by  */
+    /* trimming a copy  */
+    uprv_decNumberCopy(b, a);
+    decTrim(b, set, 1, 1, &dropped);         /* [drops trailing zeros]  */
+
+    /* Set Inexact and Rounded.  The answer can only be exact if  */
+    /* it is short enough so that squaring it could fit in workp  */
+    /* digits, so this is the only (relatively rare) condition that  */
+    /* a careful check is needed  */
+    if (b->digits*2-1 > workp) {             /* cannot fit  */
+      status|=DEC_Inexact|DEC_Rounded;
+      }
+     else {                                  /* could be exact/unrounded  */
+      uInt mstatus=0;                        /* local status  */
+      decMultiplyOp(b, b, b, &workset, &mstatus); /* try the multiply  */
+      if (mstatus&DEC_Overflow) {            /* result just won't fit  */
+        status|=DEC_Inexact|DEC_Rounded;
+        }
+       else {                                /* plausible  */
+        decCompareOp(t, b, rhs, &workset, COMPARE, &mstatus); /* b ? rhs  */
+        if (!ISZERO(t)) status|=DEC_Inexact|DEC_Rounded; /* not equal  */
+         else {                              /* is Exact  */
+          /* here, dropped is the count of trailing zeros in 'a'  */
+          /* use closest exponent to ideal...  */
+          Int todrop=ideal-a->exponent;      /* most that can be dropped  */
+          if (todrop<0) status|=DEC_Rounded; /* ideally would add 0s  */
+           else {                            /* unrounded  */
+            /* there are some to drop, but emax may not allow all  */
+            Int maxexp=set->emax-set->digits+1;
+            Int maxdrop=maxexp-a->exponent;
+            if (todrop>maxdrop && set->clamp) { /* apply clamping  */
+              todrop=maxdrop;
+              status|=DEC_Clamped;
+              }
+            if (dropped<todrop) {            /* clamp to those available  */
+              todrop=dropped;
+              status|=DEC_Clamped;
+              }
+            if (todrop>0) {                  /* have some to drop  */
+              decShiftToLeast(a->lsu, D2U(a->digits), todrop);
+              a->exponent+=todrop;           /* maintain numerical value  */
+              a->digits-=todrop;             /* new length  */
+              }
+            }
+          }
+        }
+      }
+
+    /* double-check Underflow, as perhaps the result could not have  */
+    /* been subnormal (initial argument too big), or it is now Exact  */
+    if (status&DEC_Underflow) {
+      Int ae=rhs->exponent+rhs->digits-1;    /* adjusted exponent  */
+      /* check if truly subnormal  */
+      #if DECEXTFLAG                         /* DEC_Subnormal too  */
+        if (ae>=set->emin*2) status&=~(DEC_Subnormal|DEC_Underflow);
+      #else
+        if (ae>=set->emin*2) status&=~DEC_Underflow;
+      #endif
+      /* check if truly inexact  */
+      if (!(status&DEC_Inexact)) status&=~DEC_Underflow;
+      }
+
+    uprv_decNumberCopy(res, a);                   /* a is now the result  */
+    } while(0);                              /* end protected  */
+
+  if (allocbuff!=NULL) free(allocbuff);      /* drop any storage used  */
+  if (allocbufa!=NULL) free(allocbufa);      /* ..  */
+  if (allocbufb!=NULL) free(allocbufb);      /* ..  */
+  #if DECSUBSET
+  if (allocrhs !=NULL) free(allocrhs);       /* ..  */
+  #endif
+  if (status!=0) decStatus(res, status, set);/* then report status  */
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberSquareRoot  */
+#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
+#pragma GCC diagnostic pop
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decNumberSubtract -- subtract two Numbers                          */
+/*                                                                    */
+/*   This computes C = A - B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X-X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *res, const decNumber *lhs,
+                              const decNumber *rhs, decContext *set) {
+  uInt status=0;                        /* accumulator  */
+
+  decAddOp(res, lhs, rhs, set, DECNEG, &status);
+  if (status!=0) decStatus(res, status, set);
+  #if DECCHECK
+  decCheckInexact(res, set);
+  #endif
+  return res;
+  } /* decNumberSubtract  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberToIntegralExact -- round-to-integral-value with InExact   */
+/* decNumberToIntegralValue -- round-to-integral-value                */
+/*                                                                    */
+/*   res is the result                                                */
+/*   rhs is input number                                              */
+/*   set is the context                                               */
+/*                                                                    */
+/* res must have space for any value of rhs.                          */
+/*                                                                    */
+/* This implements the IEEE special operators and therefore treats    */
+/* special values as valid.  For finite numbers it returns            */
+/* rescale(rhs, 0) if rhs->exponent is <0.                            */
+/* Otherwise the result is rhs (so no error is possible, except for   */
+/* sNaN).                                                             */
+/*                                                                    */
+/* The context is used for rounding mode and status after sNaN, but   */
+/* the digits setting is ignored.  The Exact version will signal      */
+/* Inexact if the result differs numerically from rhs; the other      */
+/* never signals Inexact.                                             */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *res, const decNumber *rhs,
+                                     decContext *set) {
+  decNumber dn;
+  decContext workset;              /* working context  */
+  uInt status=0;                   /* accumulator  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  /* handle infinities and NaNs  */
+  if (SPECIALARG) {
+    if (decNumberIsInfinite(rhs)) uprv_decNumberCopy(res, rhs); /* an Infinity  */
+     else decNaNs(res, rhs, NULL, set, &status); /* a NaN  */
+    }
+   else { /* finite  */
+    /* have a finite number; no error possible (res must be big enough)  */
+    if (rhs->exponent>=0) return uprv_decNumberCopy(res, rhs);
+    /* that was easy, but if negative exponent there is work to do...  */
+    workset=*set;                  /* clone rounding, etc.  */
+    workset.digits=rhs->digits;    /* no length rounding  */
+    workset.traps=0;               /* no traps  */
+    uprv_decNumberZero(&dn);            /* make a number with exponent 0  */
+    uprv_decNumberQuantize(res, rhs, &dn, &workset);
+    status|=workset.status;
+    }
+  if (status!=0) decStatus(res, status, set);
+  return res;
+  } /* decNumberToIntegralExact  */
+
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralValue(decNumber *res, const decNumber *rhs,
+                                     decContext *set) {
+  decContext workset=*set;         /* working context  */
+  workset.traps=0;                 /* no traps  */
+  uprv_decNumberToIntegralExact(res, rhs, &workset);
+  /* this never affects set, except for sNaNs; NaN will have been set  */
+  /* or propagated already, so no need to call decStatus  */
+  set->status|=workset.status&DEC_Invalid_operation;
+  return res;
+  } /* decNumberToIntegralValue  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberXor -- XOR two Numbers, digitwise                         */
+/*                                                                    */
+/*   This computes C = A ^ B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X^X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context (used for result length and error report)     */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Logical function restrictions apply (see above); a NaN is          */
+/* returned with Invalid_operation if a restriction is violated.      */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set) {
+  const Unit *ua, *ub;                  /* -> operands  */
+  const Unit *msua, *msub;              /* -> operand msus  */
+  Unit  *uc, *msuc;                     /* -> result and its msu  */
+  Int   msudigs;                        /* digits in res msu  */
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  if (lhs->exponent!=0 || decNumberIsSpecial(lhs) || decNumberIsNegative(lhs)
+   || rhs->exponent!=0 || decNumberIsSpecial(rhs) || decNumberIsNegative(rhs)) {
+    decStatus(res, DEC_Invalid_operation, set);
+    return res;
+    }
+  /* operands are valid  */
+  ua=lhs->lsu;                          /* bottom-up  */
+  ub=rhs->lsu;                          /* ..  */
+  uc=res->lsu;                          /* ..  */
+  msua=ua+D2U(lhs->digits)-1;           /* -> msu of lhs  */
+  msub=ub+D2U(rhs->digits)-1;           /* -> msu of rhs  */
+  msuc=uc+D2U(set->digits)-1;           /* -> msu of result  */
+  msudigs=MSUDIGITS(set->digits);       /* [faster than remainder]  */
+  for (; uc<=msuc; ua++, ub++, uc++) {  /* Unit loop  */
+    Unit a, b;                          /* extract units  */
+    if (ua>msua) a=0;
+     else a=*ua;
+    if (ub>msub) b=0;
+     else b=*ub;
+    *uc=0;                              /* can now write back  */
+    if (a|b) {                          /* maybe 1 bits to examine  */
+      Int i, j;
+      /* This loop could be unrolled and/or use BIN2BCD tables  */
+      for (i=0; i<DECDPUN; i++) {
+        if ((a^b)&1) *uc=*uc+(Unit)powers[i];     /* effect XOR  */
+        j=a%10;
+        a=a/10;
+        j|=b%10;
+        b=b/10;
+        if (j>1) {
+          decStatus(res, DEC_Invalid_operation, set);
+          return res;
+          }
+        if (uc==msuc && i==msudigs-1) break;      /* just did final digit  */
+        } /* each digit  */
+      } /* non-zero  */
+    } /* each unit  */
+  /* [here uc-1 is the msu of the result]  */
+  res->digits=decGetDigits(res->lsu, uc-res->lsu);
+  res->exponent=0;                      /* integer  */
+  res->bits=0;                          /* sign=0  */
+  return res;  /* [no status to set]  */
+  } /* decNumberXor  */
+
+
+/* ================================================================== */
+/* Utility routines                                                   */
+/* ================================================================== */
+
+/* ------------------------------------------------------------------ */
+/* decNumberClass -- return the decClass of a decNumber               */
+/*   dn -- the decNumber to test                                      */
+/*   set -- the context to use for Emin                               */
+/*   returns the decClass enum                                        */
+/* ------------------------------------------------------------------ */
+enum decClass uprv_decNumberClass(const decNumber *dn, decContext *set) {
+  if (decNumberIsSpecial(dn)) {
+    if (decNumberIsQNaN(dn)) return DEC_CLASS_QNAN;
+    if (decNumberIsSNaN(dn)) return DEC_CLASS_SNAN;
+    /* must be an infinity  */
+    if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_INF;
+    return DEC_CLASS_POS_INF;
+    }
+  /* is finite  */
+  if (uprv_decNumberIsNormal(dn, set)) { /* most common  */
+    if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_NORMAL;
+    return DEC_CLASS_POS_NORMAL;
+    }
+  /* is subnormal or zero  */
+  if (decNumberIsZero(dn)) {    /* most common  */
+    if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_ZERO;
+    return DEC_CLASS_POS_ZERO;
+    }
+  if (decNumberIsNegative(dn)) return DEC_CLASS_NEG_SUBNORMAL;
+  return DEC_CLASS_POS_SUBNORMAL;
+  } /* decNumberClass  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberClassToString -- convert decClass to a string             */
+/*                                                                    */
+/*  eclass is a valid decClass                                        */
+/*  returns a constant string describing the class (max 13+1 chars)   */
+/* ------------------------------------------------------------------ */
+const char *uprv_decNumberClassToString(enum decClass eclass) {
+  if (eclass==DEC_CLASS_POS_NORMAL)    return DEC_ClassString_PN;
+  if (eclass==DEC_CLASS_NEG_NORMAL)    return DEC_ClassString_NN;
+  if (eclass==DEC_CLASS_POS_ZERO)      return DEC_ClassString_PZ;
+  if (eclass==DEC_CLASS_NEG_ZERO)      return DEC_ClassString_NZ;
+  if (eclass==DEC_CLASS_POS_SUBNORMAL) return DEC_ClassString_PS;
+  if (eclass==DEC_CLASS_NEG_SUBNORMAL) return DEC_ClassString_NS;
+  if (eclass==DEC_CLASS_POS_INF)       return DEC_ClassString_PI;
+  if (eclass==DEC_CLASS_NEG_INF)       return DEC_ClassString_NI;
+  if (eclass==DEC_CLASS_QNAN)          return DEC_ClassString_QN;
+  if (eclass==DEC_CLASS_SNAN)          return DEC_ClassString_SN;
+  return DEC_ClassString_UN;           /* Unknown  */
+  } /* decNumberClassToString  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCopy -- copy a number                                     */
+/*                                                                    */
+/*   dest is the target decNumber                                     */
+/*   src  is the source decNumber                                     */
+/*   returns dest                                                     */
+/*                                                                    */
+/* (dest==src is allowed and is a no-op)                              */
+/* All fields are updated as required.  This is a utility operation,  */
+/* so special values are unchanged and no error is possible.          */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopy(decNumber *dest, const decNumber *src) {
+
+  #if DECCHECK
+  if (src==NULL) return uprv_decNumberZero(dest);
+  #endif
+
+  if (dest==src) return dest;                /* no copy required  */
+
+  /* Use explicit assignments here as structure assignment could copy  */
+  /* more than just the lsu (for small DECDPUN).  This would not affect  */
+  /* the value of the results, but could disturb test harness spill  */
+  /* checking.  */
+  dest->bits=src->bits;
+  dest->exponent=src->exponent;
+  dest->digits=src->digits;
+  dest->lsu[0]=src->lsu[0];
+  if (src->digits>DECDPUN) {                 /* more Units to come  */
+    const Unit *smsup, *s;                   /* work  */
+    Unit  *d;                                /* ..  */
+    /* memcpy for the remaining Units would be safe as they cannot  */
+    /* overlap.  However, this explicit loop is faster in short cases.  */
+    d=dest->lsu+1;                           /* -> first destination  */
+    smsup=src->lsu+D2U(src->digits);         /* -> source msu+1  */
+    for (s=src->lsu+1; s<smsup; s++, d++) *d=*s;
+    }
+  return dest;
+  } /* decNumberCopy  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCopyAbs -- quiet absolute value operator                  */
+/*                                                                    */
+/*   This sets C = abs(A)                                             */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* No exception or error can occur; this is a quiet bitwise operation.*/
+/* See also decNumberAbs for a checking version of this.              */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopyAbs(decNumber *res, const decNumber *rhs) {
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, DECUNCONT)) return res;
+  #endif
+  uprv_decNumberCopy(res, rhs);
+  res->bits&=~DECNEG;                   /* turn off sign  */
+  return res;
+  } /* decNumberCopyAbs  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCopyNegate -- quiet negate value operator                 */
+/*                                                                    */
+/*   This sets C = negate(A)                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* No exception or error can occur; this is a quiet bitwise operation.*/
+/* See also decNumberMinus for a checking version of this.            */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopyNegate(decNumber *res, const decNumber *rhs) {
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, DECUNCONT)) return res;
+  #endif
+  uprv_decNumberCopy(res, rhs);
+  res->bits^=DECNEG;                    /* invert the sign  */
+  return res;
+  } /* decNumberCopyNegate  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberCopySign -- quiet copy and set sign operator              */
+/*                                                                    */
+/*   This sets C = A with the sign of B                               */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* No exception or error can occur; this is a quiet bitwise operation.*/
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopySign(decNumber *res, const decNumber *lhs,
+                              const decNumber *rhs) {
+  uByte sign;                           /* rhs sign  */
+  #if DECCHECK
+  if (decCheckOperands(res, DECUNUSED, rhs, DECUNCONT)) return res;
+  #endif
+  sign=rhs->bits & DECNEG;              /* save sign bit  */
+  uprv_decNumberCopy(res, lhs);
+  res->bits&=~DECNEG;                   /* clear the sign  */
+  res->bits|=sign;                      /* set from rhs  */
+  return res;
+  } /* decNumberCopySign  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberGetBCD -- get the coefficient in BCD8                     */
+/*   dn is the source decNumber                                       */
+/*   bcd is the uInt array that will receive dn->digits BCD bytes,    */
+/*     most-significant at offset 0                                   */
+/*   returns bcd                                                      */
+/*                                                                    */
+/* bcd must have at least dn->digits bytes.  No error is possible; if */
+/* dn is a NaN or Infinite, digits must be 1 and the coefficient 0.   */
+/* ------------------------------------------------------------------ */
+U_CAPI uByte * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *dn, uByte *bcd) {
+  uByte *ub=bcd+dn->digits-1;      /* -> lsd  */
+  const Unit *up=dn->lsu;          /* Unit pointer, -> lsu  */
+
+  #if DECDPUN==1                   /* trivial simple copy  */
+    for (; ub>=bcd; ub--, up++) *ub=*up;
+  #else                            /* chopping needed  */
+    uInt u=*up;                    /* work  */
+    uInt cut=DECDPUN;              /* downcounter through unit  */
+    for (; ub>=bcd; ub--) {
+      *ub=(uByte)(u%10);           /* [*6554 trick inhibits, here]  */
+      u=u/10;
+      cut--;
+      if (cut>0) continue;         /* more in this unit  */
+      up++;
+      u=*up;
+      cut=DECDPUN;
+      }
+  #endif
+  return bcd;
+  } /* decNumberGetBCD  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberSetBCD -- set (replace) the coefficient from BCD8         */
+/*   dn is the target decNumber                                       */
+/*   bcd is the uInt array that will source n BCD bytes, most-        */
+/*     significant at offset 0                                        */
+/*   n is the number of digits in the source BCD array (bcd)          */
+/*   returns dn                                                       */
+/*                                                                    */
+/* dn must have space for at least n digits.  No error is possible;   */
+/* if dn is a NaN, or Infinite, or is to become a zero, n must be 1   */
+/* and bcd[0] zero.                                                   */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberSetBCD(decNumber *dn, const uByte *bcd, uInt n) {
+  Unit *up=dn->lsu+D2U(dn->digits)-1;   /* -> msu [target pointer]  */
+  const uByte *ub=bcd;                  /* -> source msd  */
+
+  #if DECDPUN==1                        /* trivial simple copy  */
+    for (; ub<bcd+n; ub++, up--) *up=*ub;
+  #else                                 /* some assembly needed  */
+    /* calculate how many digits in msu, and hence first cut  */
+    Int cut=MSUDIGITS(n);               /* [faster than remainder]  */
+    for (;up>=dn->lsu; up--) {          /* each Unit from msu  */
+      *up=0;                            /* will take <=DECDPUN digits  */
+      for (; cut>0; ub++, cut--) *up=X10(*up)+*ub;
+      cut=DECDPUN;                      /* next Unit has all digits  */
+      }
+  #endif
+  dn->digits=n;                         /* set digit count  */
+  return dn;
+  } /* decNumberSetBCD  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberIsNormal -- test normality of a decNumber                 */
+/*   dn is the decNumber to test                                      */
+/*   set is the context to use for Emin                               */
+/*   returns 1 if |dn| is finite and >=Nmin, 0 otherwise              */
+/* ------------------------------------------------------------------ */
+Int uprv_decNumberIsNormal(const decNumber *dn, decContext *set) {
+  Int ae;                               /* adjusted exponent  */
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
+  #endif
+
+  if (decNumberIsSpecial(dn)) return 0; /* not finite  */
+  if (decNumberIsZero(dn)) return 0;    /* not non-zero  */
+
+  ae=dn->exponent+dn->digits-1;         /* adjusted exponent  */
+  if (ae<set->emin) return 0;           /* is subnormal  */
+  return 1;
+  } /* decNumberIsNormal  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberIsSubnormal -- test subnormality of a decNumber           */
+/*   dn is the decNumber to test                                      */
+/*   set is the context to use for Emin                               */
+/*   returns 1 if |dn| is finite, non-zero, and <Nmin, 0 otherwise    */
+/* ------------------------------------------------------------------ */
+Int uprv_decNumberIsSubnormal(const decNumber *dn, decContext *set) {
+  Int ae;                               /* adjusted exponent  */
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, set)) return 0;
+  #endif
+
+  if (decNumberIsSpecial(dn)) return 0; /* not finite  */
+  if (decNumberIsZero(dn)) return 0;    /* not non-zero  */
+
+  ae=dn->exponent+dn->digits-1;         /* adjusted exponent  */
+  if (ae<set->emin) return 1;           /* is subnormal  */
+  return 0;
+  } /* decNumberIsSubnormal  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberTrim -- remove insignificant zeros                        */
+/*                                                                    */
+/*   dn is the number to trim                                         */
+/*   returns dn                                                       */
+/*                                                                    */
+/* All fields are updated as required.  This is a utility operation,  */
+/* so special values are unchanged and no error is possible.  The     */
+/* zeros are removed unconditionally.                                 */
+/* ------------------------------------------------------------------ */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberTrim(decNumber *dn) {
+  Int  dropped;                    /* work  */
+  decContext set;                  /* ..  */
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, DECUNUSED, dn, DECUNCONT)) return dn;
+  #endif
+  uprv_decContextDefault(&set, DEC_INIT_BASE);    /* clamp=0  */
+  return decTrim(dn, &set, 0, 1, &dropped);
+  } /* decNumberTrim  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberVersion -- return the name and version of this module     */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+const char * uprv_decNumberVersion(void) {
+  return DECVERSION;
+  } /* decNumberVersion  */
+
+/* ------------------------------------------------------------------ */
+/* decNumberZero -- set a number to 0                                 */
+/*                                                                    */
+/*   dn is the number to set, with space for one digit                */
+/*   returns dn                                                       */
+/*                                                                    */
+/* No error is possible.                                              */
+/* ------------------------------------------------------------------ */
+/* Memset is not used as it is much slower in some environments.  */
+U_CAPI decNumber * U_EXPORT2 uprv_decNumberZero(decNumber *dn) {
+
+  #if DECCHECK
+  if (decCheckOperands(dn, DECUNUSED, DECUNUSED, DECUNCONT)) return dn;
+  #endif
+
+  dn->bits=0;
+  dn->exponent=0;
+  dn->digits=1;
+  dn->lsu[0]=0;
+  return dn;
+  } /* decNumberZero  */
+
+/* ================================================================== */
+/* Local routines                                                     */
+/* ================================================================== */
+
+/* ------------------------------------------------------------------ */
+/* decToString -- lay out a number into a string                      */
+/*                                                                    */
+/*   dn     is the number to lay out                                  */
+/*   string is where to lay out the number                            */
+/*   eng    is 1 if Engineering, 0 if Scientific                      */
+/*                                                                    */
+/* string must be at least dn->digits+14 characters long              */
+/* No error is possible.                                              */
+/*                                                                    */
+/* Note that this routine can generate a -0 or 0.000.  These are      */
+/* never generated in subset to-number or arithmetic, but can occur   */
+/* in non-subset arithmetic (e.g., -1*0 or 1.234-1.234).              */
+/* ------------------------------------------------------------------ */
+/* If DECCHECK is enabled the string "?" is returned if a number is  */
+/* invalid.  */
+static void decToString(const decNumber *dn, char *string, Flag eng) {
+  Int exp=dn->exponent;       /* local copy  */
+  Int e;                      /* E-part value  */
+  Int pre;                    /* digits before the '.'  */
+  Int cut;                    /* for counting digits in a Unit  */
+  char *c=string;             /* work [output pointer]  */
+  const Unit *up=dn->lsu+D2U(dn->digits)-1; /* -> msu [input pointer]  */
+  uInt u, pow;                /* work  */
+
+  #if DECCHECK
+  if (decCheckOperands(DECUNRESU, dn, DECUNUSED, DECUNCONT)) {
+    strcpy(string, "?");
+    return;}
+  #endif
+
+  if (decNumberIsNegative(dn)) {   /* Negatives get a minus  */
+    *c='-';
+    c++;
+    }
+  if (dn->bits&DECSPECIAL) {       /* Is a special value  */
+    if (decNumberIsInfinite(dn)) {
+      strcpy(c,   "Inf");
+      strcpy(c+3, "inity");
+      return;}
+    /* a NaN  */
+    if (dn->bits&DECSNAN) {        /* signalling NaN  */
+      *c='s';
+      c++;
+      }
+    strcpy(c, "NaN");
+    c+=3;                          /* step past  */
+    /* if not a clean non-zero coefficient, that's all there is in a  */
+    /* NaN string  */
+    if (exp!=0 || (*dn->lsu==0 && dn->digits==1)) return;
+    /* [drop through to add integer]  */
+    }
+
+  /* calculate how many digits in msu, and hence first cut  */
+  cut=MSUDIGITS(dn->digits);       /* [faster than remainder]  */
+  cut--;                           /* power of ten for digit  */
+
+  if (exp==0) {                    /* simple integer [common fastpath]  */
+    for (;up>=dn->lsu; up--) {     /* each Unit from msu  */
+      u=*up;                       /* contains DECDPUN digits to lay out  */
+      for (; cut>=0; c++, cut--) TODIGIT(u, cut, c, pow);
+      cut=DECDPUN-1;               /* next Unit has all digits  */
+      }
+    *c='\0';                       /* terminate the string  */
+    return;}
+
+  /* non-0 exponent -- assume plain form */
+  pre=dn->digits+exp;              /* digits before '.'  */
+  e=0;                             /* no E  */
+  if ((exp>0) || (pre<-5)) {       /* need exponential form  */
+    e=exp+dn->digits-1;            /* calculate E value  */
+    pre=1;                         /* assume one digit before '.'  */
+    if (eng && (e!=0)) {           /* engineering: may need to adjust  */
+      Int adj;                     /* adjustment  */
+      /* The C remainder operator is undefined for negative numbers, so  */
+      /* a positive remainder calculation must be used here  */
+      if (e<0) {
+        adj=(-e)%3;
+        if (adj!=0) adj=3-adj;
+        }
+       else { /* e>0  */
+        adj=e%3;
+        }
+      e=e-adj;
+      /* if dealing with zero still produce an exponent which is a  */
+      /* multiple of three, as expected, but there will only be the  */
+      /* one zero before the E, still.  Otherwise note the padding.  */
+      if (!ISZERO(dn)) pre+=adj;
+       else {  /* is zero  */
+        if (adj!=0) {              /* 0.00Esnn needed  */
+          e=e+3;
+          pre=-(2-adj);
+          }
+        } /* zero  */
+      } /* eng  */
+    } /* need exponent  */
+
+  /* lay out the digits of the coefficient, adding 0s and . as needed */
+  u=*up;
+  if (pre>0) {                     /* xxx.xxx or xx00 (engineering) form  */
+    Int n=pre;
+    for (; pre>0; pre--, c++, cut--) {
+      if (cut<0) {                 /* need new Unit  */
+        if (up==dn->lsu) break;    /* out of input digits (pre>digits)  */
+        up--;
+        cut=DECDPUN-1;
+        u=*up;
+        }
+      TODIGIT(u, cut, c, pow);
+      }
+    if (n<dn->digits) {            /* more to come, after '.'  */
+      *c='.'; c++;
+      for (;; c++, cut--) {
+        if (cut<0) {               /* need new Unit  */
+          if (up==dn->lsu) break;  /* out of input digits  */
+          up--;
+          cut=DECDPUN-1;
+          u=*up;
+          }
+        TODIGIT(u, cut, c, pow);
+        }
+      }
+     else for (; pre>0; pre--, c++) *c='0'; /* 0 padding (for engineering) needed  */
+    }
+   else {                          /* 0.xxx or 0.000xxx form  */
+    *c='0'; c++;
+    *c='.'; c++;
+    for (; pre<0; pre++, c++) *c='0';   /* add any 0's after '.'  */
+    for (; ; c++, cut--) {
+      if (cut<0) {                 /* need new Unit  */
+        if (up==dn->lsu) break;    /* out of input digits  */
+        up--;
+        cut=DECDPUN-1;
+        u=*up;
+        }
+      TODIGIT(u, cut, c, pow);
+      }
+    }
+
+  /* Finally add the E-part, if needed.  It will never be 0, has a
+     base maximum and minimum of +999999999 through -999999999, but
+     could range down to -1999999998 for anormal numbers */
+  if (e!=0) {
+    Flag had=0;               /* 1=had non-zero  */
+    *c='E'; c++;
+    *c='+'; c++;              /* assume positive  */
+    u=e;                      /* ..  */
+    if (e<0) {
+      *(c-1)='-';             /* oops, need -  */
+      u=-e;                   /* uInt, please  */
+      }
+    /* lay out the exponent [_itoa or equivalent is not ANSI C]  */
+    for (cut=9; cut>=0; cut--) {
+      TODIGIT(u, cut, c, pow);
+      if (*c=='0' && !had) continue;    /* skip leading zeros  */
+      had=1;                            /* had non-0  */
+      c++;                              /* step for next  */
+      } /* cut  */
+    }
+  *c='\0';          /* terminate the string (all paths)  */
+  return;
+  } /* decToString  */
+
+/* ------------------------------------------------------------------ */
+/* decAddOp -- add/subtract operation                                 */
+/*                                                                    */
+/*   This computes C = A + B                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X+X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*   negate is DECNEG if rhs should be negated, or 0 otherwise        */
+/*   status accumulates status for the caller                         */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/* Inexact in status must be 0 for correct Exact zero sign in result  */
+/* ------------------------------------------------------------------ */
+/* If possible, the coefficient is calculated directly into C.        */
+/* However, if:                                                       */
+/*   -- a digits+1 calculation is needed because the numbers are      */
+/*      unaligned and span more than set->digits digits               */
+/*   -- a carry to digits+1 digits looks possible                     */
+/*   -- C is the same as A or B, and the result would destructively   */
+/*      overlap the A or B coefficient                                */
+/* then the result must be calculated into a temporary buffer.  In    */
+/* this case a local (stack) buffer is used if possible, and only if  */
+/* too long for that does malloc become the final resort.             */
+/*                                                                    */
+/* Misalignment is handled as follows:                                */
+/*   Apad: (AExp>BExp) Swap operands and proceed as for BExp>AExp.    */
+/*   BPad: Apply the padding by a combination of shifting (whole      */
+/*         units) and multiplication (part units).                    */
+/*                                                                    */
+/* Addition, especially x=x+1, is speed-critical.                     */
+/* The static buffer is larger than might be expected to allow for    */
+/* calls from higher-level funtions (notable exp).                    */
+/* ------------------------------------------------------------------ */
+static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
+                            const decNumber *rhs, decContext *set,
+                            uByte negate, uInt *status) {
+  #if DECSUBSET
+  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
+  decNumber *allocrhs=NULL;        /* .., rhs  */
+  #endif
+  Int   rhsshift;                  /* working shift (in Units)  */
+  Int   maxdigits;                 /* longest logical length  */
+  Int   mult;                      /* multiplier  */
+  Int   residue;                   /* rounding accumulator  */
+  uByte bits;                      /* result bits  */
+  Flag  diffsign;                  /* non-0 if arguments have different sign  */
+  Unit  *acc;                      /* accumulator for result  */
+  Unit  accbuff[SD2U(DECBUFFER*2+20)]; /* local buffer [*2+20 reduces many  */
+                                   /* allocations when called from  */
+                                   /* other operations, notable exp]  */
+  Unit  *allocacc=NULL;            /* -> allocated acc buffer, iff allocated  */
+  Int   reqdigits=set->digits;     /* local copy; requested DIGITS  */
+  Int   padding;                   /* work  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operands and set lostDigits status, as needed  */
+      if (lhs->digits>reqdigits) {
+        alloclhs=decRoundOperand(lhs, set, status);
+        if (alloclhs==NULL) break;
+        lhs=alloclhs;
+        }
+      if (rhs->digits>reqdigits) {
+        allocrhs=decRoundOperand(rhs, set, status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    /* note whether signs differ [used all paths]  */
+    diffsign=(Flag)((lhs->bits^rhs->bits^negate)&DECNEG);
+
+    /* handle infinities and NaNs  */
+    if (SPECIALARGS) {                  /* a special bit set  */
+      if (SPECIALARGS & (DECSNAN | DECNAN))  /* a NaN  */
+        decNaNs(res, lhs, rhs, set, status);
+       else { /* one or two infinities  */
+        if (decNumberIsInfinite(lhs)) { /* LHS is infinity  */
+          /* two infinities with different signs is invalid  */
+          if (decNumberIsInfinite(rhs) && diffsign) {
+            *status|=DEC_Invalid_operation;
+            break;
+            }
+          bits=lhs->bits & DECNEG;      /* get sign from LHS  */
+          }
+         else bits=(rhs->bits^negate) & DECNEG;/* RHS must be Infinity  */
+        bits|=DECINF;
+        uprv_decNumberZero(res);
+        res->bits=bits;                 /* set +/- infinity  */
+        } /* an infinity  */
+      break;
+      }
+
+    /* Quick exit for add 0s; return the non-0, modified as need be  */
+    if (ISZERO(lhs)) {
+      Int adjust;                       /* work  */
+      Int lexp=lhs->exponent;           /* save in case LHS==RES  */
+      bits=lhs->bits;                   /* ..  */
+      residue=0;                        /* clear accumulator  */
+      decCopyFit(res, rhs, set, &residue, status); /* copy (as needed)  */
+      res->bits^=negate;                /* flip if rhs was negated  */
+      #if DECSUBSET
+      if (set->extended) {              /* exponents on zeros count  */
+      #endif
+        /* exponent will be the lower of the two  */
+        adjust=lexp-res->exponent;      /* adjustment needed [if -ve]  */
+        if (ISZERO(res)) {              /* both 0: special IEEE 754 rules  */
+          if (adjust<0) res->exponent=lexp;  /* set exponent  */
+          /* 0-0 gives +0 unless rounding to -infinity, and -0-0 gives -0  */
+          if (diffsign) {
+            if (set->round!=DEC_ROUND_FLOOR) res->bits=0;
+             else res->bits=DECNEG;     /* preserve 0 sign  */
+            }
+          }
+         else { /* non-0 res  */
+          if (adjust<0) {     /* 0-padding needed  */
+            if ((res->digits-adjust)>set->digits) {
+              adjust=res->digits-set->digits;     /* to fit exactly  */
+              *status|=DEC_Rounded;               /* [but exact]  */
+              }
+            res->digits=decShiftToMost(res->lsu, res->digits, -adjust);
+            res->exponent+=adjust;                /* set the exponent.  */
+            }
+          } /* non-0 res  */
+      #if DECSUBSET
+        } /* extended  */
+      #endif
+      decFinish(res, set, &residue, status);      /* clean and finalize  */
+      break;}
+
+    if (ISZERO(rhs)) {                  /* [lhs is non-zero]  */
+      Int adjust;                       /* work  */
+      Int rexp=rhs->exponent;           /* save in case RHS==RES  */
+      bits=rhs->bits;                   /* be clean  */
+      residue=0;                        /* clear accumulator  */
+      decCopyFit(res, lhs, set, &residue, status); /* copy (as needed)  */
+      #if DECSUBSET
+      if (set->extended) {              /* exponents on zeros count  */
+      #endif
+        /* exponent will be the lower of the two  */
+        /* [0-0 case handled above]  */
+        adjust=rexp-res->exponent;      /* adjustment needed [if -ve]  */
+        if (adjust<0) {     /* 0-padding needed  */
+          if ((res->digits-adjust)>set->digits) {
+            adjust=res->digits-set->digits;     /* to fit exactly  */
+            *status|=DEC_Rounded;               /* [but exact]  */
+            }
+          res->digits=decShiftToMost(res->lsu, res->digits, -adjust);
+          res->exponent+=adjust;                /* set the exponent.  */
+          }
+      #if DECSUBSET
+        } /* extended  */
+      #endif
+      decFinish(res, set, &residue, status);      /* clean and finalize  */
+      break;}
+
+    /* [NB: both fastpath and mainpath code below assume these cases  */
+    /* (notably 0-0) have already been handled]  */
+
+    /* calculate the padding needed to align the operands  */
+    padding=rhs->exponent-lhs->exponent;
+
+    /* Fastpath cases where the numbers are aligned and normal, the RHS  */
+    /* is all in one unit, no operand rounding is needed, and no carry,  */
+    /* lengthening, or borrow is needed  */
+    if (padding==0
+        && rhs->digits<=DECDPUN
+        && rhs->exponent>=set->emin     /* [some normals drop through]  */
+        && rhs->exponent<=set->emax-set->digits+1 /* [could clamp]  */
+        && rhs->digits<=reqdigits
+        && lhs->digits<=reqdigits) {
+      Int partial=*lhs->lsu;
+      if (!diffsign) {                  /* adding  */
+        partial+=*rhs->lsu;
+        if ((partial<=DECDPUNMAX)       /* result fits in unit  */
+         && (lhs->digits>=DECDPUN ||    /* .. and no digits-count change  */
+             partial<(Int)powers[lhs->digits])) { /* ..  */
+          if (res!=lhs) uprv_decNumberCopy(res, lhs);  /* not in place  */
+          *res->lsu=(Unit)partial;      /* [copy could have overwritten RHS]  */
+          break;
+          }
+        /* else drop out for careful add  */
+        }
+       else {                           /* signs differ  */
+        partial-=*rhs->lsu;
+        if (partial>0) { /* no borrow needed, and non-0 result  */
+          if (res!=lhs) uprv_decNumberCopy(res, lhs);  /* not in place  */
+          *res->lsu=(Unit)partial;
+          /* this could have reduced digits [but result>0]  */
+          res->digits=decGetDigits(res->lsu, D2U(res->digits));
+          break;
+          }
+        /* else drop out for careful subtract  */
+        }
+      }
+
+    /* Now align (pad) the lhs or rhs so they can be added or  */
+    /* subtracted, as necessary.  If one number is much larger than  */
+    /* the other (that is, if in plain form there is a least one  */
+    /* digit between the lowest digit of one and the highest of the  */
+    /* other) padding with up to DIGITS-1 trailing zeros may be  */
+    /* needed; then apply rounding (as exotic rounding modes may be  */
+    /* affected by the residue).  */
+    rhsshift=0;               /* rhs shift to left (padding) in Units  */
+    bits=lhs->bits;           /* assume sign is that of LHS  */
+    mult=1;                   /* likely multiplier  */
+
+    /* [if padding==0 the operands are aligned; no padding is needed]  */
+    if (padding!=0) {
+      /* some padding needed; always pad the RHS, as any required  */
+      /* padding can then be effected by a simple combination of  */
+      /* shifts and a multiply  */
+      Flag swapped=0;
+      if (padding<0) {                  /* LHS needs the padding  */
+        const decNumber *t;
+        padding=-padding;               /* will be +ve  */
+        bits=(uByte)(rhs->bits^negate); /* assumed sign is now that of RHS  */
+        t=lhs; lhs=rhs; rhs=t;
+        swapped=1;
+        }
+
+      /* If, after pad, rhs would be longer than lhs by digits+1 or  */
+      /* more then lhs cannot affect the answer, except as a residue,  */
+      /* so only need to pad up to a length of DIGITS+1.  */
+      if (rhs->digits+padding > lhs->digits+reqdigits+1) {
+        /* The RHS is sufficient  */
+        /* for residue use the relative sign indication...  */
+        Int shift=reqdigits-rhs->digits;     /* left shift needed  */
+        residue=1;                           /* residue for rounding  */
+        if (diffsign) residue=-residue;      /* signs differ  */
+        /* copy, shortening if necessary  */
+        decCopyFit(res, rhs, set, &residue, status);
+        /* if it was already shorter, then need to pad with zeros  */
+        if (shift>0) {
+          res->digits=decShiftToMost(res->lsu, res->digits, shift);
+          res->exponent-=shift;              /* adjust the exponent.  */
+          }
+        /* flip the result sign if unswapped and rhs was negated  */
+        if (!swapped) res->bits^=negate;
+        decFinish(res, set, &residue, status);    /* done  */
+        break;}
+
+      /* LHS digits may affect result  */
+      rhsshift=D2U(padding+1)-1;        /* this much by Unit shift ..  */
+      mult=powers[padding-(rhsshift*DECDPUN)]; /* .. this by multiplication  */
+      } /* padding needed  */
+
+    if (diffsign) mult=-mult;           /* signs differ  */
+
+    /* determine the longer operand  */
+    maxdigits=rhs->digits+padding;      /* virtual length of RHS  */
+    if (lhs->digits>maxdigits) maxdigits=lhs->digits;
+
+    /* Decide on the result buffer to use; if possible place directly  */
+    /* into result.  */
+    acc=res->lsu;                       /* assume add direct to result  */
+    /* If destructive overlap, or the number is too long, or a carry or  */
+    /* borrow to DIGITS+1 might be possible, a buffer must be used.  */
+    /* [Might be worth more sophisticated tests when maxdigits==reqdigits]  */
+    if ((maxdigits>=reqdigits)          /* is, or could be, too large  */
+     || (res==rhs && rhsshift>0)) {     /* destructive overlap  */
+      /* buffer needed, choose it; units for maxdigits digits will be  */
+      /* needed, +1 Unit for carry or borrow  */
+      Int need=D2U(maxdigits)+1;
+      acc=accbuff;                      /* assume use local buffer  */
+      if (need*sizeof(Unit)>sizeof(accbuff)) {
+        /* printf("malloc add %ld %ld\n", need, sizeof(accbuff));  */
+        allocacc=(Unit *)malloc(need*sizeof(Unit));
+        if (allocacc==NULL) {           /* hopeless -- abandon  */
+          *status|=DEC_Insufficient_storage;
+          break;}
+        acc=allocacc;
+        }
+      }
+
+    res->bits=(uByte)(bits&DECNEG);     /* it's now safe to overwrite..  */
+    res->exponent=lhs->exponent;        /* .. operands (even if aliased)  */
+
+    #if DECTRACE
+      decDumpAr('A', lhs->lsu, D2U(lhs->digits));
+      decDumpAr('B', rhs->lsu, D2U(rhs->digits));
+      printf("  :h: %ld %ld\n", rhsshift, mult);
+    #endif
+
+    /* add [A+B*m] or subtract [A+B*(-m)]  */
+    U_ASSERT(rhs->digits > 0);
+    U_ASSERT(lhs->digits > 0);
+    res->digits=decUnitAddSub(lhs->lsu, D2U(lhs->digits),
+                              rhs->lsu, D2U(rhs->digits),
+                              rhsshift, acc, mult)
+               *DECDPUN;           /* [units -> digits]  */
+    if (res->digits<0) {           /* borrowed...  */
+      res->digits=-res->digits;
+      res->bits^=DECNEG;           /* flip the sign  */
+      }
+    #if DECTRACE
+      decDumpAr('+', acc, D2U(res->digits));
+    #endif
+
+    /* If a buffer was used the result must be copied back, possibly  */
+    /* shortening.  (If no buffer was used then the result must have  */
+    /* fit, so can't need rounding and residue must be 0.)  */
+    residue=0;                     /* clear accumulator  */
+    if (acc!=res->lsu) {
+      #if DECSUBSET
+      if (set->extended) {         /* round from first significant digit  */
+      #endif
+        /* remove leading zeros that were added due to rounding up to  */
+        /* integral Units -- before the test for rounding.  */
+        if (res->digits>reqdigits)
+          res->digits=decGetDigits(acc, D2U(res->digits));
+        decSetCoeff(res, set, acc, res->digits, &residue, status);
+      #if DECSUBSET
+        }
+       else { /* subset arithmetic rounds from original significant digit  */
+        /* May have an underestimate.  This only occurs when both  */
+        /* numbers fit in DECDPUN digits and are padding with a  */
+        /* negative multiple (-10, -100...) and the top digit(s) become  */
+        /* 0.  (This only matters when using X3.274 rules where the  */
+        /* leading zero could be included in the rounding.)  */
+        if (res->digits<maxdigits) {
+          *(acc+D2U(res->digits))=0; /* ensure leading 0 is there  */
+          res->digits=maxdigits;
+          }
+         else {
+          /* remove leading zeros that added due to rounding up to  */
+          /* integral Units (but only those in excess of the original  */
+          /* maxdigits length, unless extended) before test for rounding.  */
+          if (res->digits>reqdigits) {
+            res->digits=decGetDigits(acc, D2U(res->digits));
+            if (res->digits<maxdigits) res->digits=maxdigits;
+            }
+          }
+        decSetCoeff(res, set, acc, res->digits, &residue, status);
+        /* Now apply rounding if needed before removing leading zeros.  */
+        /* This is safe because subnormals are not a possibility  */
+        if (residue!=0) {
+          decApplyRound(res, set, residue, status);
+          residue=0;                 /* did what needed to be done  */
+          }
+        } /* subset  */
+      #endif
+      } /* used buffer  */
+
+    /* strip leading zeros [these were left on in case of subset subtract]  */
+    res->digits=decGetDigits(res->lsu, D2U(res->digits));
+
+    /* apply checks and rounding  */
+    decFinish(res, set, &residue, status);
+
+    /* "When the sum of two operands with opposite signs is exactly  */
+    /* zero, the sign of that sum shall be '+' in all rounding modes  */
+    /* except round toward -Infinity, in which mode that sign shall be  */
+    /* '-'."  [Subset zeros also never have '-', set by decFinish.]  */
+    if (ISZERO(res) && diffsign
+     #if DECSUBSET
+     && set->extended
+     #endif
+     && (*status&DEC_Inexact)==0) {
+      if (set->round==DEC_ROUND_FLOOR) res->bits|=DECNEG;   /* sign -  */
+                                  else res->bits&=~DECNEG;  /* sign +  */
+      }
+    } while(0);                              /* end protected  */
+
+  if (allocacc!=NULL) free(allocacc);        /* drop any storage used  */
+  #if DECSUBSET
+  if (allocrhs!=NULL) free(allocrhs);        /* ..  */
+  if (alloclhs!=NULL) free(alloclhs);        /* ..  */
+  #endif
+  return res;
+  } /* decAddOp  */
+
+/* ------------------------------------------------------------------ */
+/* decDivideOp -- division operation                                  */
+/*                                                                    */
+/*  This routine performs the calculations for all four division      */
+/*  operators (divide, divideInteger, remainder, remainderNear).      */
+/*                                                                    */
+/*  C=A op B                                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X/X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*   op  is DIVIDE, DIVIDEINT, REMAINDER, or REMNEAR respectively.    */
+/*   status is the usual accumulator                                  */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+/*   The underlying algorithm of this routine is the same as in the   */
+/*   1981 S/370 implementation, that is, non-restoring long division  */
+/*   with bi-unit (rather than bi-digit) estimation for each unit     */
+/*   multiplier.  In this pseudocode overview, complications for the  */
+/*   Remainder operators and division residues for exact rounding are */
+/*   omitted for clarity.                                             */
+/*                                                                    */
+/*     Prepare operands and handle special values                     */
+/*     Test for x/0 and then 0/x                                      */
+/*     Exp =Exp1 - Exp2                                               */
+/*     Exp =Exp +len(var1) -len(var2)                                 */
+/*     Sign=Sign1 * Sign2                                             */
+/*     Pad accumulator (Var1) to double-length with 0's (pad1)        */
+/*     Pad Var2 to same length as Var1                                */
+/*     msu2pair/plus=1st 2 or 1 units of var2, +1 to allow for round  */
+/*     have=0                                                         */
+/*     Do until (have=digits+1 OR residue=0)                          */
+/*       if exp<0 then if integer divide/residue then leave           */
+/*       this_unit=0                                                  */
+/*       Do forever                                                   */
+/*          compare numbers                                           */
+/*          if <0 then leave inner_loop                               */
+/*          if =0 then (* quick exit without subtract *) do           */
+/*             this_unit=this_unit+1; output this_unit                */
+/*             leave outer_loop; end                                  */
+/*          Compare lengths of numbers (mantissae):                   */
+/*          If same then tops2=msu2pair -- {units 1&2 of var2}        */
+/*                  else tops2=msu2plus -- {0, unit 1 of var2}        */
+/*          tops1=first_unit_of_Var1*10**DECDPUN +second_unit_of_var1 */
+/*          mult=tops1/tops2  -- Good and safe guess at divisor       */
+/*          if mult=0 then mult=1                                     */
+/*          this_unit=this_unit+mult                                  */
+/*          subtract                                                  */
+/*          end inner_loop                                            */
+/*        if have\=0 | this_unit\=0 then do                           */
+/*          output this_unit                                          */
+/*          have=have+1; end                                          */
+/*        var2=var2/10                                                */
+/*        exp=exp-1                                                   */
+/*        end outer_loop                                              */
+/*     exp=exp+1   -- set the proper exponent                         */
+/*     if have=0 then generate answer=0                               */
+/*     Return (Result is defined by Var1)                             */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+/* Two working buffers are needed during the division; one (digits+   */
+/* 1) to accumulate the result, and the other (up to 2*digits+1) for  */
+/* long subtractions.  These are acc and var1 respectively.           */
+/* var1 is a copy of the lhs coefficient, var2 is the rhs coefficient.*/
+/* The static buffers may be larger than might be expected to allow   */
+/* for calls from higher-level funtions (notable exp).                */
+/* ------------------------------------------------------------------ */
+static decNumber * decDivideOp(decNumber *res,
+                               const decNumber *lhs, const decNumber *rhs,
+                               decContext *set, Flag op, uInt *status) {
+  #if DECSUBSET
+  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
+  decNumber *allocrhs=NULL;        /* .., rhs  */
+  #endif
+  Unit  accbuff[SD2U(DECBUFFER+DECDPUN+10)]; /* local buffer  */
+  Unit  *acc=accbuff;              /* -> accumulator array for result  */
+  Unit  *allocacc=NULL;            /* -> allocated buffer, iff allocated  */
+  Unit  *accnext;                  /* -> where next digit will go  */
+  Int   acclength;                 /* length of acc needed [Units]  */
+  Int   accunits;                  /* count of units accumulated  */
+  Int   accdigits;                 /* count of digits accumulated  */
+
+  Unit  varbuff[SD2U(DECBUFFER*2+DECDPUN)];  /* buffer for var1  */
+  Unit  *var1=varbuff;             /* -> var1 array for long subtraction  */
+  Unit  *varalloc=NULL;            /* -> allocated buffer, iff used  */
+  Unit  *msu1;                     /* -> msu of var1  */
+
+  const Unit *var2;                /* -> var2 array  */
+  const Unit *msu2;                /* -> msu of var2  */
+  Int   msu2plus;                  /* msu2 plus one [does not vary]  */
+  eInt  msu2pair;                  /* msu2 pair plus one [does not vary]  */
+
+  Int   var1units, var2units;      /* actual lengths  */
+  Int   var2ulen;                  /* logical length (units)  */
+  Int   var1initpad=0;             /* var1 initial padding (digits)  */
+  Int   maxdigits;                 /* longest LHS or required acc length  */
+  Int   mult;                      /* multiplier for subtraction  */
+  Unit  thisunit;                  /* current unit being accumulated  */
+  Int   residue;                   /* for rounding  */
+  Int   reqdigits=set->digits;     /* requested DIGITS  */
+  Int   exponent;                  /* working exponent  */
+  Int   maxexponent=0;             /* DIVIDE maximum exponent if unrounded  */
+  uByte bits;                      /* working sign  */
+  Unit  *target;                   /* work  */
+  const Unit *source;              /* ..  */
+  uInt  const *pow;                /* ..  */
+  Int   shift, cut;                /* ..  */
+  #if DECSUBSET
+  Int   dropped;                   /* work  */
+  #endif
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operands and set lostDigits status, as needed  */
+      if (lhs->digits>reqdigits) {
+        alloclhs=decRoundOperand(lhs, set, status);
+        if (alloclhs==NULL) break;
+        lhs=alloclhs;
+        }
+      if (rhs->digits>reqdigits) {
+        allocrhs=decRoundOperand(rhs, set, status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    bits=(lhs->bits^rhs->bits)&DECNEG;  /* assumed sign for divisions  */
+
+    /* handle infinities and NaNs  */
+    if (SPECIALARGS) {                  /* a special bit set  */
+      if (SPECIALARGS & (DECSNAN | DECNAN)) { /* one or two NaNs  */
+        decNaNs(res, lhs, rhs, set, status);
+        break;
+        }
+      /* one or two infinities  */
+      if (decNumberIsInfinite(lhs)) {   /* LHS (dividend) is infinite  */
+        if (decNumberIsInfinite(rhs) || /* two infinities are invalid ..  */
+            op & (REMAINDER | REMNEAR)) { /* as is remainder of infinity  */
+          *status|=DEC_Invalid_operation;
+          break;
+          }
+        /* [Note that infinity/0 raises no exceptions]  */
+        uprv_decNumberZero(res);
+        res->bits=bits|DECINF;          /* set +/- infinity  */
+        break;
+        }
+       else {                           /* RHS (divisor) is infinite  */
+        residue=0;
+        if (op&(REMAINDER|REMNEAR)) {
+          /* result is [finished clone of] lhs  */
+          decCopyFit(res, lhs, set, &residue, status);
+          }
+         else {  /* a division  */
+          uprv_decNumberZero(res);
+          res->bits=bits;               /* set +/- zero  */
+          /* for DIVIDEINT the exponent is always 0.  For DIVIDE, result  */
+          /* is a 0 with infinitely negative exponent, clamped to minimum  */
+          if (op&DIVIDE) {
+            res->exponent=set->emin-set->digits+1;
+            *status|=DEC_Clamped;
+            }
+          }
+        decFinish(res, set, &residue, status);
+        break;
+        }
+      }
+
+    /* handle 0 rhs (x/0)  */
+    if (ISZERO(rhs)) {                  /* x/0 is always exceptional  */
+      if (ISZERO(lhs)) {
+        uprv_decNumberZero(res);             /* [after lhs test]  */
+        *status|=DEC_Division_undefined;/* 0/0 will become NaN  */
+        }
+       else {
+        uprv_decNumberZero(res);
+        if (op&(REMAINDER|REMNEAR)) *status|=DEC_Invalid_operation;
+         else {
+          *status|=DEC_Division_by_zero; /* x/0  */
+          res->bits=bits|DECINF;         /* .. is +/- Infinity  */
+          }
+        }
+      break;}
+
+    /* handle 0 lhs (0/x)  */
+    if (ISZERO(lhs)) {                  /* 0/x [x!=0]  */
+      #if DECSUBSET
+      if (!set->extended) uprv_decNumberZero(res);
+       else {
+      #endif
+        if (op&DIVIDE) {
+          residue=0;
+          exponent=lhs->exponent-rhs->exponent; /* ideal exponent  */
+          uprv_decNumberCopy(res, lhs);      /* [zeros always fit]  */
+          res->bits=bits;               /* sign as computed  */
+          res->exponent=exponent;       /* exponent, too  */
+          decFinalize(res, set, &residue, status);   /* check exponent  */
+          }
+         else if (op&DIVIDEINT) {
+          uprv_decNumberZero(res);           /* integer 0  */
+          res->bits=bits;               /* sign as computed  */
+          }
+         else {                         /* a remainder  */
+          exponent=rhs->exponent;       /* [save in case overwrite]  */
+          uprv_decNumberCopy(res, lhs);      /* [zeros always fit]  */
+          if (exponent<res->exponent) res->exponent=exponent; /* use lower  */
+          }
+      #if DECSUBSET
+        }
+      #endif
+      break;}
+
+    /* Precalculate exponent.  This starts off adjusted (and hence fits  */
+    /* in 31 bits) and becomes the usual unadjusted exponent as the  */
+    /* division proceeds.  The order of evaluation is important, here,  */
+    /* to avoid wrap.  */
+    exponent=(lhs->exponent+lhs->digits)-(rhs->exponent+rhs->digits);
+
+    /* If the working exponent is -ve, then some quick exits are  */
+    /* possible because the quotient is known to be <1  */
+    /* [for REMNEAR, it needs to be < -1, as -0.5 could need work]  */
+    if (exponent<0 && !(op==DIVIDE)) {
+      if (op&DIVIDEINT) {
+        uprv_decNumberZero(res);                  /* integer part is 0  */
+        #if DECSUBSET
+        if (set->extended)
+        #endif
+          res->bits=bits;                    /* set +/- zero  */
+        break;}
+      /* fastpath remainders so long as the lhs has the smaller  */
+      /* (or equal) exponent  */
+      if (lhs->exponent<=rhs->exponent) {
+        if (op&REMAINDER || exponent<-1) {
+          /* It is REMAINDER or safe REMNEAR; result is [finished  */
+          /* clone of] lhs  (r = x - 0*y)  */
+          residue=0;
+          decCopyFit(res, lhs, set, &residue, status);
+          decFinish(res, set, &residue, status);
+          break;
+          }
+        /* [unsafe REMNEAR drops through]  */
+        }
+      } /* fastpaths  */
+
+    /* Long (slow) division is needed; roll up the sleeves... */
+
+    /* The accumulator will hold the quotient of the division.  */
+    /* If it needs to be too long for stack storage, then allocate.  */
+    acclength=D2U(reqdigits+DECDPUN);   /* in Units  */
+    if (acclength*sizeof(Unit)>sizeof(accbuff)) {
+      /* printf("malloc dvacc %ld units\n", acclength);  */
+      allocacc=(Unit *)malloc(acclength*sizeof(Unit));
+      if (allocacc==NULL) {             /* hopeless -- abandon  */
+        *status|=DEC_Insufficient_storage;
+        break;}
+      acc=allocacc;                     /* use the allocated space  */
+      }
+
+    /* var1 is the padded LHS ready for subtractions.  */
+    /* If it needs to be too long for stack storage, then allocate.  */
+    /* The maximum units needed for var1 (long subtraction) is:  */
+    /* Enough for  */
+    /*     (rhs->digits+reqdigits-1) -- to allow full slide to right  */
+    /* or  (lhs->digits)             -- to allow for long lhs  */
+    /* whichever is larger  */
+    /*   +1                -- for rounding of slide to right  */
+    /*   +1                -- for leading 0s  */
+    /*   +1                -- for pre-adjust if a remainder or DIVIDEINT  */
+    /* [Note: unused units do not participate in decUnitAddSub data]  */
+    maxdigits=rhs->digits+reqdigits-1;
+    if (lhs->digits>maxdigits) maxdigits=lhs->digits;
+    var1units=D2U(maxdigits)+2;
+    /* allocate a guard unit above msu1 for REMAINDERNEAR  */
+    if (!(op&DIVIDE)) var1units++;
+    if ((var1units+1)*sizeof(Unit)>sizeof(varbuff)) {
+      /* printf("malloc dvvar %ld units\n", var1units+1);  */
+      varalloc=(Unit *)malloc((var1units+1)*sizeof(Unit));
+      if (varalloc==NULL) {             /* hopeless -- abandon  */
+        *status|=DEC_Insufficient_storage;
+        break;}
+      var1=varalloc;                    /* use the allocated space  */
+      }
+
+    /* Extend the lhs and rhs to full long subtraction length.  The lhs  */
+    /* is truly extended into the var1 buffer, with 0 padding, so a  */
+    /* subtract in place is always possible.  The rhs (var2) has  */
+    /* virtual padding (implemented by decUnitAddSub).  */
+    /* One guard unit was allocated above msu1 for rem=rem+rem in  */
+    /* REMAINDERNEAR.  */
+    msu1=var1+var1units-1;              /* msu of var1  */
+    source=lhs->lsu+D2U(lhs->digits)-1; /* msu of input array  */
+    for (target=msu1; source>=lhs->lsu; source--, target--) *target=*source;
+    for (; target>=var1; target--) *target=0;
+
+    /* rhs (var2) is left-aligned with var1 at the start  */
+    var2ulen=var1units;                 /* rhs logical length (units)  */
+    var2units=D2U(rhs->digits);         /* rhs actual length (units)  */
+    var2=rhs->lsu;                      /* -> rhs array  */
+    msu2=var2+var2units-1;              /* -> msu of var2 [never changes]  */
+    /* now set up the variables which will be used for estimating the  */
+    /* multiplication factor.  If these variables are not exact, add  */
+    /* 1 to make sure that the multiplier is never overestimated.  */
+    msu2plus=*msu2;                     /* it's value ..  */
+    if (var2units>1) msu2plus++;        /* .. +1 if any more  */
+    msu2pair=(eInt)*msu2*(DECDPUNMAX+1);/* top two pair ..  */
+    if (var2units>1) {                  /* .. [else treat 2nd as 0]  */
+      msu2pair+=*(msu2-1);              /* ..  */
+      if (var2units>2) msu2pair++;      /* .. +1 if any more  */
+      }
+
+    /* The calculation is working in units, which may have leading zeros,  */
+    /* but the exponent was calculated on the assumption that they are  */
+    /* both left-aligned.  Adjust the exponent to compensate: add the  */
+    /* number of leading zeros in var1 msu and subtract those in var2 msu.  */
+    /* [This is actually done by counting the digits and negating, as  */
+    /* lead1=DECDPUN-digits1, and similarly for lead2.]  */
+    for (pow=&powers[1]; *msu1>=*pow; pow++) exponent--;
+    for (pow=&powers[1]; *msu2>=*pow; pow++) exponent++;
+
+    /* Now, if doing an integer divide or remainder, ensure that  */
+    /* the result will be Unit-aligned.  To do this, shift the var1  */
+    /* accumulator towards least if need be.  (It's much easier to  */
+    /* do this now than to reassemble the residue afterwards, if  */
+    /* doing a remainder.)  Also ensure the exponent is not negative.  */
+    if (!(op&DIVIDE)) {
+      Unit *u;                          /* work  */
+      /* save the initial 'false' padding of var1, in digits  */
+      var1initpad=(var1units-D2U(lhs->digits))*DECDPUN;
+      /* Determine the shift to do.  */
+      if (exponent<0) cut=-exponent;
+       else cut=DECDPUN-exponent%DECDPUN;
+      decShiftToLeast(var1, var1units, cut);
+      exponent+=cut;                    /* maintain numerical value  */
+      var1initpad-=cut;                 /* .. and reduce padding  */
+      /* clean any most-significant units which were just emptied  */
+      for (u=msu1; cut>=DECDPUN; cut-=DECDPUN, u--) *u=0;
+      } /* align  */
+     else { /* is DIVIDE  */
+      maxexponent=lhs->exponent-rhs->exponent;    /* save  */
+      /* optimization: if the first iteration will just produce 0,  */
+      /* preadjust to skip it [valid for DIVIDE only]  */
+      if (*msu1<*msu2) {
+        var2ulen--;                     /* shift down  */
+        exponent-=DECDPUN;              /* update the exponent  */
+        }
+      }
+
+    /* ---- start the long-division loops ------------------------------  */
+    accunits=0;                         /* no units accumulated yet  */
+    accdigits=0;                        /* .. or digits  */
+    accnext=acc+acclength-1;            /* -> msu of acc [NB: allows digits+1]  */
+    for (;;) {                          /* outer forever loop  */
+      thisunit=0;                       /* current unit assumed 0  */
+      /* find the next unit  */
+      for (;;) {                        /* inner forever loop  */
+        /* strip leading zero units [from either pre-adjust or from  */
+        /* subtract last time around].  Leave at least one unit.  */
+        for (; *msu1==0 && msu1>var1; msu1--) var1units--;
+
+        if (var1units<var2ulen) break;       /* var1 too low for subtract  */
+        if (var1units==var2ulen) {           /* unit-by-unit compare needed  */
+          /* compare the two numbers, from msu  */
+          const Unit *pv1, *pv2;
+          Unit v2;                           /* units to compare  */
+          pv2=msu2;                          /* -> msu  */
+          for (pv1=msu1; ; pv1--, pv2--) {
+            /* v1=*pv1 -- always OK  */
+            v2=0;                            /* assume in padding  */
+            if (pv2>=var2) v2=*pv2;          /* in range  */
+            if (*pv1!=v2) break;             /* no longer the same  */
+            if (pv1==var1) break;            /* done; leave pv1 as is  */
+            }
+          /* here when all inspected or a difference seen  */
+          if (*pv1<v2) break;                /* var1 too low to subtract  */
+          if (*pv1==v2) {                    /* var1 == var2  */
+            /* reach here if var1 and var2 are identical; subtraction  */
+            /* would increase digit by one, and the residue will be 0 so  */
+            /* the calculation is done; leave the loop with residue=0.  */
+            thisunit++;                      /* as though subtracted  */
+            *var1=0;                         /* set var1 to 0  */
+            var1units=1;                     /* ..  */
+            break;  /* from inner  */
+            } /* var1 == var2  */
+          /* *pv1>v2.  Prepare for real subtraction; the lengths are equal  */
+          /* Estimate the multiplier (there's always a msu1-1)...  */
+          /* Bring in two units of var2 to provide a good estimate.  */
+          mult=(Int)(((eInt)*msu1*(DECDPUNMAX+1)+*(msu1-1))/msu2pair);
+          } /* lengths the same  */
+         else { /* var1units > var2ulen, so subtraction is safe  */
+          /* The var2 msu is one unit towards the lsu of the var1 msu,  */
+          /* so only one unit for var2 can be used.  */
+          mult=(Int)(((eInt)*msu1*(DECDPUNMAX+1)+*(msu1-1))/msu2plus);
+          }
+        if (mult==0) mult=1;                 /* must always be at least 1  */
+        /* subtraction needed; var1 is > var2  */
+        thisunit=(Unit)(thisunit+mult);      /* accumulate  */
+        /* subtract var1-var2, into var1; only the overlap needs  */
+        /* processing, as this is an in-place calculation  */
+        shift=var2ulen-var2units;
+        #if DECTRACE
+          decDumpAr('1', &var1[shift], var1units-shift);
+          decDumpAr('2', var2, var2units);
+          printf("m=%ld\n", -mult);
+        #endif
+        decUnitAddSub(&var1[shift], var1units-shift,
+                      var2, var2units, 0,
+                      &var1[shift], -mult);
+        #if DECTRACE
+          decDumpAr('#', &var1[shift], var1units-shift);
+        #endif
+        /* var1 now probably has leading zeros; these are removed at the  */
+        /* top of the inner loop.  */
+        } /* inner loop  */
+
+      /* The next unit has been calculated in full; unless it's a  */
+      /* leading zero, add to acc  */
+      if (accunits!=0 || thisunit!=0) {      /* is first or non-zero  */
+        *accnext=thisunit;                   /* store in accumulator  */
+        /* account exactly for the new digits  */
+        if (accunits==0) {
+          accdigits++;                       /* at least one  */
+          for (pow=&powers[1]; thisunit>=*pow; pow++) accdigits++;
+          }
+         else accdigits+=DECDPUN;
+        accunits++;                          /* update count  */
+        accnext--;                           /* ready for next  */
+        if (accdigits>reqdigits) break;      /* have enough digits  */
+        }
+
+      /* if the residue is zero, the operation is done (unless divide  */
+      /* or divideInteger and still not enough digits yet)  */
+      if (*var1==0 && var1units==1) {        /* residue is 0  */
+        if (op&(REMAINDER|REMNEAR)) break;
+        if ((op&DIVIDE) && (exponent<=maxexponent)) break;
+        /* [drop through if divideInteger]  */
+        }
+      /* also done enough if calculating remainder or integer  */
+      /* divide and just did the last ('units') unit  */
+      if (exponent==0 && !(op&DIVIDE)) break;
+
+      /* to get here, var1 is less than var2, so divide var2 by the per-  */
+      /* Unit power of ten and go for the next digit  */
+      var2ulen--;                            /* shift down  */
+      exponent-=DECDPUN;                     /* update the exponent  */
+      } /* outer loop  */
+
+    /* ---- division is complete ---------------------------------------  */
+    /* here: acc      has at least reqdigits+1 of good results (or fewer  */
+    /*                if early stop), starting at accnext+1 (its lsu)  */
+    /*       var1     has any residue at the stopping point  */
+    /*       accunits is the number of digits collected in acc  */
+    if (accunits==0) {             /* acc is 0  */
+      accunits=1;                  /* show have a unit ..  */
+      accdigits=1;                 /* ..  */
+      *accnext=0;                  /* .. whose value is 0  */
+      }
+     else accnext++;               /* back to last placed  */
+    /* accnext now -> lowest unit of result  */
+
+    residue=0;                     /* assume no residue  */
+    if (op&DIVIDE) {
+      /* record the presence of any residue, for rounding  */
+      if (*var1!=0 || var1units>1) residue=1;
+       else { /* no residue  */
+        /* Had an exact division; clean up spurious trailing 0s.  */
+        /* There will be at most DECDPUN-1, from the final multiply,  */
+        /* and then only if the result is non-0 (and even) and the  */
+        /* exponent is 'loose'.  */
+        #if DECDPUN>1
+        Unit lsu=*accnext;
+        if (!(lsu&0x01) && (lsu!=0)) {
+          /* count the trailing zeros  */
+          Int drop=0;
+          for (;; drop++) {    /* [will terminate because lsu!=0]  */
+            if (exponent>=maxexponent) break;     /* don't chop real 0s  */
+            #if DECDPUN<=4
+              if ((lsu-QUOT10(lsu, drop+1)
+                  *powers[drop+1])!=0) break;     /* found non-0 digit  */
+            #else
+              if (lsu%powers[drop+1]!=0) break;   /* found non-0 digit  */
+            #endif
+            exponent++;
+            }
+          if (drop>0) {
+            accunits=decShiftToLeast(accnext, accunits, drop);
+            accdigits=decGetDigits(accnext, accunits);
+            accunits=D2U(accdigits);
+            /* [exponent was adjusted in the loop]  */
+            }
+          } /* neither odd nor 0  */
+        #endif
+        } /* exact divide  */
+      } /* divide  */
+     else /* op!=DIVIDE */ {
+      /* check for coefficient overflow  */
+      if (accdigits+exponent>reqdigits) {
+        *status|=DEC_Division_impossible;
+        break;
+        }
+      if (op & (REMAINDER|REMNEAR)) {
+        /* [Here, the exponent will be 0, because var1 was adjusted  */
+        /* appropriately.]  */
+        Int postshift;                       /* work  */
+        Flag wasodd=0;                       /* integer was odd  */
+        Unit *quotlsu;                       /* for save  */
+        Int  quotdigits;                     /* ..  */
+
+        bits=lhs->bits;                      /* remainder sign is always as lhs  */
+
+        /* Fastpath when residue is truly 0 is worthwhile [and  */
+        /* simplifies the code below]  */
+        if (*var1==0 && var1units==1) {      /* residue is 0  */
+          Int exp=lhs->exponent;             /* save min(exponents)  */
+          if (rhs->exponent<exp) exp=rhs->exponent;
+          uprv_decNumberZero(res);                /* 0 coefficient  */
+          #if DECSUBSET
+          if (set->extended)
+          #endif
+          res->exponent=exp;                 /* .. with proper exponent  */
+          res->bits=(uByte)(bits&DECNEG);          /* [cleaned]  */
+          decFinish(res, set, &residue, status);   /* might clamp  */
+          break;
+          }
+        /* note if the quotient was odd  */
+        if (*accnext & 0x01) wasodd=1;       /* acc is odd  */
+        quotlsu=accnext;                     /* save in case need to reinspect  */
+        quotdigits=accdigits;                /* ..  */
+
+        /* treat the residue, in var1, as the value to return, via acc  */
+        /* calculate the unused zero digits.  This is the smaller of:  */
+        /*   var1 initial padding (saved above)  */
+        /*   var2 residual padding, which happens to be given by:  */
+        postshift=var1initpad+exponent-lhs->exponent+rhs->exponent;
+        /* [the 'exponent' term accounts for the shifts during divide]  */
+        if (var1initpad<postshift) postshift=var1initpad;
+
+        /* shift var1 the requested amount, and adjust its digits  */
+        var1units=decShiftToLeast(var1, var1units, postshift);
+        accnext=var1;
+        accdigits=decGetDigits(var1, var1units);
+        accunits=D2U(accdigits);
+
+        exponent=lhs->exponent;         /* exponent is smaller of lhs & rhs  */
+        if (rhs->exponent<exponent) exponent=rhs->exponent;
+
+        /* Now correct the result if doing remainderNear; if it  */
+        /* (looking just at coefficients) is > rhs/2, or == rhs/2 and  */
+        /* the integer was odd then the result should be rem-rhs.  */
+        if (op&REMNEAR) {
+          Int compare, tarunits;        /* work  */
+          Unit *up;                     /* ..  */
+          /* calculate remainder*2 into the var1 buffer (which has  */
+          /* 'headroom' of an extra unit and hence enough space)  */
+          /* [a dedicated 'double' loop would be faster, here]  */
+          tarunits=decUnitAddSub(accnext, accunits, accnext, accunits,
+                                 0, accnext, 1);
+          /* decDumpAr('r', accnext, tarunits);  */
+
+          /* Here, accnext (var1) holds tarunits Units with twice the  */
+          /* remainder's coefficient, which must now be compared to the  */
+          /* RHS.  The remainder's exponent may be smaller than the RHS's.  */
+          compare=decUnitCompare(accnext, tarunits, rhs->lsu, D2U(rhs->digits),
+                                 rhs->exponent-exponent);
+          if (compare==BADINT) {             /* deep trouble  */
+            *status|=DEC_Insufficient_storage;
+            break;}
+
+          /* now restore the remainder by dividing by two; the lsu  */
+          /* is known to be even.  */
+          for (up=accnext; up<accnext+tarunits; up++) {
+            Int half;              /* half to add to lower unit  */
+            half=*up & 0x01;
+            *up/=2;                /* [shift]  */
+            if (!half) continue;
+            *(up-1)+=(DECDPUNMAX+1)/2;
+            }
+          /* [accunits still describes the original remainder length]  */
+
+          if (compare>0 || (compare==0 && wasodd)) { /* adjustment needed  */
+            Int exp, expunits, exprem;       /* work  */
+            /* This is effectively causing round-up of the quotient,  */
+            /* so if it was the rare case where it was full and all  */
+            /* nines, it would overflow and hence division-impossible  */
+            /* should be raised  */
+            Flag allnines=0;                 /* 1 if quotient all nines  */
+            if (quotdigits==reqdigits) {     /* could be borderline  */
+              for (up=quotlsu; ; up++) {
+                if (quotdigits>DECDPUN) {
+                  if (*up!=DECDPUNMAX) break;/* non-nines  */
+                  }
+                 else {                      /* this is the last Unit  */
+                  if (*up==powers[quotdigits]-1) allnines=1;
+                  break;
+                  }
+                quotdigits-=DECDPUN;         /* checked those digits  */
+                } /* up  */
+              } /* borderline check  */
+            if (allnines) {
+              *status|=DEC_Division_impossible;
+              break;}
+
+            /* rem-rhs is needed; the sign will invert.  Again, var1  */
+            /* can safely be used for the working Units array.  */
+            exp=rhs->exponent-exponent;      /* RHS padding needed  */
+            /* Calculate units and remainder from exponent.  */
+            expunits=exp/DECDPUN;
+            exprem=exp%DECDPUN;
+            /* subtract [A+B*(-m)]; the result will always be negative  */
+            accunits=-decUnitAddSub(accnext, accunits,
+                                    rhs->lsu, D2U(rhs->digits),
+                                    expunits, accnext, -(Int)powers[exprem]);
+            accdigits=decGetDigits(accnext, accunits); /* count digits exactly  */
+            accunits=D2U(accdigits);    /* and recalculate the units for copy  */
+            /* [exponent is as for original remainder]  */
+            bits^=DECNEG;               /* flip the sign  */
+            }
+          } /* REMNEAR  */
+        } /* REMAINDER or REMNEAR  */
+      } /* not DIVIDE  */
+
+    /* Set exponent and bits  */
+    res->exponent=exponent;
+    res->bits=(uByte)(bits&DECNEG);          /* [cleaned]  */
+
+    /* Now the coefficient.  */
+    decSetCoeff(res, set, accnext, accdigits, &residue, status);
+
+    decFinish(res, set, &residue, status);   /* final cleanup  */
+
+    #if DECSUBSET
+    /* If a divide then strip trailing zeros if subset [after round]  */
+    if (!set->extended && (op==DIVIDE)) decTrim(res, set, 0, 1, &dropped);
+    #endif
+    } while(0);                              /* end protected  */
+
+  if (varalloc!=NULL) free(varalloc);   /* drop any storage used  */
+  if (allocacc!=NULL) free(allocacc);   /* ..  */
+  #if DECSUBSET
+  if (allocrhs!=NULL) free(allocrhs);   /* ..  */
+  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
+  #endif
+  return res;
+  } /* decDivideOp  */
+
+/* ------------------------------------------------------------------ */
+/* decMultiplyOp -- multiplication operation                          */
+/*                                                                    */
+/*  This routine performs the multiplication C=A x B.                 */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X*X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*   status is the usual accumulator                                  */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+/* 'Classic' multiplication is used rather than Karatsuba, as the     */
+/* latter would give only a minor improvement for the short numbers   */
+/* expected to be handled most (and uses much more memory).           */
+/*                                                                    */
+/* There are two major paths here: the general-purpose ('old code')   */
+/* path which handles all DECDPUN values, and a fastpath version      */
+/* which is used if 64-bit ints are available, DECDPUN<=4, and more   */
+/* than two calls to decUnitAddSub would be made.                     */
+/*                                                                    */
+/* The fastpath version lumps units together into 8-digit or 9-digit  */
+/* chunks, and also uses a lazy carry strategy to minimise expensive  */
+/* 64-bit divisions.  The chunks are then broken apart again into     */
+/* units for continuing processing.  Despite this overhead, the       */
+/* fastpath can speed up some 16-digit operations by 10x (and much    */
+/* more for higher-precision calculations).                           */
+/*                                                                    */
+/* A buffer always has to be used for the accumulator; in the         */
+/* fastpath, buffers are also always needed for the chunked copies of */
+/* of the operand coefficients.                                       */
+/* Static buffers are larger than needed just for multiply, to allow  */
+/* for calls from other operations (notably exp).                     */
+/* ------------------------------------------------------------------ */
+#define FASTMUL (DECUSE64 && DECDPUN<5)
+static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
+                                 const decNumber *rhs, decContext *set,
+                                 uInt *status) {
+  Int    accunits;                 /* Units of accumulator in use  */
+  Int    exponent;                 /* work  */
+  Int    residue=0;                /* rounding residue  */
+  uByte  bits;                     /* result sign  */
+  Unit  *acc;                      /* -> accumulator Unit array  */
+  Int    needbytes;                /* size calculator  */
+  void  *allocacc=NULL;            /* -> allocated accumulator, iff allocated  */
+  Unit  accbuff[SD2U(DECBUFFER*4+1)]; /* buffer (+1 for DECBUFFER==0,  */
+                                   /* *4 for calls from other operations)  */
+  const Unit *mer, *mermsup;       /* work  */
+  Int   madlength;                 /* Units in multiplicand  */
+  Int   shift;                     /* Units to shift multiplicand by  */
+
+  #if FASTMUL
+    /* if DECDPUN is 1 or 3 work in base 10**9, otherwise  */
+    /* (DECDPUN is 2 or 4) then work in base 10**8  */
+    #if DECDPUN & 1                /* odd  */
+      #define FASTBASE 1000000000  /* base  */
+      #define FASTDIGS          9  /* digits in base  */
+      #define FASTLAZY         18  /* carry resolution point [1->18]  */
+    #else
+      #define FASTBASE  100000000
+      #define FASTDIGS          8
+      #define FASTLAZY       1844  /* carry resolution point [1->1844]  */
+    #endif
+    /* three buffers are used, two for chunked copies of the operands  */
+    /* (base 10**8 or base 10**9) and one base 2**64 accumulator with  */
+    /* lazy carry evaluation  */
+    uInt   zlhibuff[(DECBUFFER*2+1)/8+1]; /* buffer (+1 for DECBUFFER==0)  */
+    uInt  *zlhi=zlhibuff;                 /* -> lhs array  */
+    uInt  *alloclhi=NULL;                 /* -> allocated buffer, iff allocated  */
+    uInt   zrhibuff[(DECBUFFER*2+1)/8+1]; /* buffer (+1 for DECBUFFER==0)  */
+    uInt  *zrhi=zrhibuff;                 /* -> rhs array  */
+    uInt  *allocrhi=NULL;                 /* -> allocated buffer, iff allocated  */
+    uLong  zaccbuff[(DECBUFFER*2+1)/4+2]; /* buffer (+1 for DECBUFFER==0)  */
+    /* [allocacc is shared for both paths, as only one will run]  */
+    uLong *zacc=zaccbuff;          /* -> accumulator array for exact result  */
+    #if DECDPUN==1
+    Int    zoff;                   /* accumulator offset  */
+    #endif
+    uInt  *lip, *rip;              /* item pointers  */
+    uInt  *lmsi, *rmsi;            /* most significant items  */
+    Int    ilhs, irhs, iacc;       /* item counts in the arrays  */
+    Int    lazy;                   /* lazy carry counter  */
+    uLong  lcarry;                 /* uLong carry  */
+    uInt   carry;                  /* carry (NB not uLong)  */
+    Int    count;                  /* work  */
+    const  Unit *cup;              /* ..  */
+    Unit  *up;                     /* ..  */
+    uLong *lp;                     /* ..  */
+    Int    p;                      /* ..  */
+  #endif
+
+  #if DECSUBSET
+    decNumber *alloclhs=NULL;      /* -> allocated buffer, iff allocated  */
+    decNumber *allocrhs=NULL;      /* -> allocated buffer, iff allocated  */
+  #endif
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  /* precalculate result sign  */
+  bits=(uByte)((lhs->bits^rhs->bits)&DECNEG);
+
+  /* handle infinities and NaNs  */
+  if (SPECIALARGS) {               /* a special bit set  */
+    if (SPECIALARGS & (DECSNAN | DECNAN)) { /* one or two NaNs  */
+      decNaNs(res, lhs, rhs, set, status);
+      return res;}
+    /* one or two infinities; Infinity * 0 is invalid  */
+    if (((lhs->bits & DECINF)==0 && ISZERO(lhs))
+      ||((rhs->bits & DECINF)==0 && ISZERO(rhs))) {
+      *status|=DEC_Invalid_operation;
+      return res;}
+    uprv_decNumberZero(res);
+    res->bits=bits|DECINF;         /* infinity  */
+    return res;}
+
+  /* For best speed, as in DMSRCN [the original Rexx numerics  */
+  /* module], use the shorter number as the multiplier (rhs) and  */
+  /* the longer as the multiplicand (lhs) to minimise the number of  */
+  /* adds (partial products)  */
+  if (lhs->digits<rhs->digits) {   /* swap...  */
+    const decNumber *hold=lhs;
+    lhs=rhs;
+    rhs=hold;
+    }
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operands and set lostDigits status, as needed  */
+      if (lhs->digits>set->digits) {
+        alloclhs=decRoundOperand(lhs, set, status);
+        if (alloclhs==NULL) break;
+        lhs=alloclhs;
+        }
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    #if FASTMUL                    /* fastpath can be used  */
+    /* use the fast path if there are enough digits in the shorter  */
+    /* operand to make the setup and takedown worthwhile  */
+    #define NEEDTWO (DECDPUN*2)    /* within two decUnitAddSub calls  */
+    if (rhs->digits>NEEDTWO) {     /* use fastpath...  */
+      /* calculate the number of elements in each array  */
+      ilhs=(lhs->digits+FASTDIGS-1)/FASTDIGS; /* [ceiling]  */
+      irhs=(rhs->digits+FASTDIGS-1)/FASTDIGS; /* ..  */
+      iacc=ilhs+irhs;
+
+      /* allocate buffers if required, as usual  */
+      needbytes=ilhs*sizeof(uInt);
+      if (needbytes>(Int)sizeof(zlhibuff)) {
+        alloclhi=(uInt *)malloc(needbytes);
+        zlhi=alloclhi;}
+      needbytes=irhs*sizeof(uInt);
+      if (needbytes>(Int)sizeof(zrhibuff)) {
+        allocrhi=(uInt *)malloc(needbytes);
+        zrhi=allocrhi;}
+
+      /* Allocating the accumulator space needs a special case when  */
+      /* DECDPUN=1 because when converting the accumulator to Units  */
+      /* after the multiplication each 8-byte item becomes 9 1-byte  */
+      /* units.  Therefore iacc extra bytes are needed at the front  */
+      /* (rounded up to a multiple of 8 bytes), and the uLong  */
+      /* accumulator starts offset the appropriate number of units  */
+      /* to the right to avoid overwrite during the unchunking.  */
+
+      /* Make sure no signed int overflow below. This is always true */
+      /* if the given numbers have less digits than DEC_MAX_DIGITS. */
+      U_ASSERT(iacc <= INT32_MAX/sizeof(uLong));
+      needbytes=iacc*sizeof(uLong);
+      #if DECDPUN==1
+      zoff=(iacc+7)/8;        /* items to offset by  */
+      needbytes+=zoff*8;
+      #endif
+      if (needbytes>(Int)sizeof(zaccbuff)) {
+        allocacc=(uLong *)malloc(needbytes);
+        zacc=(uLong *)allocacc;}
+      if (zlhi==NULL||zrhi==NULL||zacc==NULL) {
+        *status|=DEC_Insufficient_storage;
+        break;}
+
+      acc=(Unit *)zacc;       /* -> target Unit array  */
+      #if DECDPUN==1
+      zacc+=zoff;             /* start uLong accumulator to right  */
+      #endif
+
+      /* assemble the chunked copies of the left and right sides  */
+      for (count=lhs->digits, cup=lhs->lsu, lip=zlhi; count>0; lip++)
+        for (p=0, *lip=0; p<FASTDIGS && count>0;
+             p+=DECDPUN, cup++, count-=DECDPUN)
+          *lip+=*cup*powers[p];
+      lmsi=lip-1;     /* save -> msi  */
+      for (count=rhs->digits, cup=rhs->lsu, rip=zrhi; count>0; rip++)
+        for (p=0, *rip=0; p<FASTDIGS && count>0;
+             p+=DECDPUN, cup++, count-=DECDPUN)
+          *rip+=*cup*powers[p];
+      rmsi=rip-1;     /* save -> msi  */
+
+      /* zero the accumulator  */
+      for (lp=zacc; lp<zacc+iacc; lp++) *lp=0;
+
+      /* Start the multiplication */
+      /* Resolving carries can dominate the cost of accumulating the  */
+      /* partial products, so this is only done when necessary.  */
+      /* Each uLong item in the accumulator can hold values up to  */
+      /* 2**64-1, and each partial product can be as large as  */
+      /* (10**FASTDIGS-1)**2.  When FASTDIGS=9, this can be added to  */
+      /* itself 18.4 times in a uLong without overflowing, so during  */
+      /* the main calculation resolution is carried out every 18th  */
+      /* add -- every 162 digits.  Similarly, when FASTDIGS=8, the  */
+      /* partial products can be added to themselves 1844.6 times in  */
+      /* a uLong without overflowing, so intermediate carry  */
+      /* resolution occurs only every 14752 digits.  Hence for common  */
+      /* short numbers usually only the one final carry resolution  */
+      /* occurs.  */
+      /* (The count is set via FASTLAZY to simplify experiments to  */
+      /* measure the value of this approach: a 35% improvement on a  */
+      /* [34x34] multiply.)  */
+      lazy=FASTLAZY;                         /* carry delay count  */
+      for (rip=zrhi; rip<=rmsi; rip++) {     /* over each item in rhs  */
+        lp=zacc+(rip-zrhi);                  /* where to add the lhs  */
+        for (lip=zlhi; lip<=lmsi; lip++, lp++) { /* over each item in lhs  */
+          *lp+=(uLong)(*lip)*(*rip);         /* [this should in-line]  */
+          } /* lip loop  */
+        lazy--;
+        if (lazy>0 && rip!=rmsi) continue;
+        lazy=FASTLAZY;                       /* reset delay count  */
+        /* spin up the accumulator resolving overflows  */
+        for (lp=zacc; lp<zacc+iacc; lp++) {
+          if (*lp<FASTBASE) continue;        /* it fits  */
+          lcarry=*lp/FASTBASE;               /* top part [slow divide]  */
+          /* lcarry can exceed 2**32-1, so check again; this check  */
+          /* and occasional extra divide (slow) is well worth it, as  */
+          /* it allows FASTLAZY to be increased to 18 rather than 4  */
+          /* in the FASTDIGS=9 case  */
+          if (lcarry<FASTBASE) carry=(uInt)lcarry;  /* [usual]  */
+           else { /* two-place carry [fairly rare]  */
+            uInt carry2=(uInt)(lcarry/FASTBASE);    /* top top part  */
+            *(lp+2)+=carry2;                        /* add to item+2  */
+            *lp-=((uLong)FASTBASE*FASTBASE*carry2); /* [slow]  */
+            carry=(uInt)(lcarry-((uLong)FASTBASE*carry2)); /* [inline]  */
+            }
+          *(lp+1)+=carry;                    /* add to item above [inline]  */
+          *lp-=((uLong)FASTBASE*carry);      /* [inline]  */
+          } /* carry resolution  */
+        } /* rip loop  */
+
+      /* The multiplication is complete; time to convert back into  */
+      /* units.  This can be done in-place in the accumulator and in  */
+      /* 32-bit operations, because carries were resolved after the  */
+      /* final add.  This needs N-1 divides and multiplies for  */
+      /* each item in the accumulator (which will become up to N  */
+      /* units, where 2<=N<=9).  */
+      for (lp=zacc, up=acc; lp<zacc+iacc; lp++) {
+        uInt item=(uInt)*lp;                 /* decapitate to uInt  */
+        for (p=0; p<FASTDIGS-DECDPUN; p+=DECDPUN, up++) {
+          uInt part=item/(DECDPUNMAX+1);
+          *up=(Unit)(item-(part*(DECDPUNMAX+1)));
+          item=part;
+          } /* p  */
+        *up=(Unit)item; up++;                /* [final needs no division]  */
+        } /* lp  */
+      accunits=up-acc;                       /* count of units  */
+      }
+     else { /* here to use units directly, without chunking ['old code']  */
+    #endif
+
+      /* if accumulator will be too long for local storage, then allocate  */
+      acc=accbuff;                 /* -> assume buffer for accumulator  */
+      needbytes=(D2U(lhs->digits)+D2U(rhs->digits))*sizeof(Unit);
+      if (needbytes>(Int)sizeof(accbuff)) {
+        allocacc=(Unit *)malloc(needbytes);
+        if (allocacc==NULL) {*status|=DEC_Insufficient_storage; break;}
+        acc=(Unit *)allocacc;                /* use the allocated space  */
+        }
+
+      /* Now the main long multiplication loop */
+      /* Unlike the equivalent in the IBM Java implementation, there  */
+      /* is no advantage in calculating from msu to lsu.  So, do it  */
+      /* by the book, as it were.  */
+      /* Each iteration calculates ACC=ACC+MULTAND*MULT  */
+      accunits=1;                  /* accumulator starts at '0'  */
+      *acc=0;                      /* .. (lsu=0)  */
+      shift=0;                     /* no multiplicand shift at first  */
+      madlength=D2U(lhs->digits);  /* this won't change  */
+      mermsup=rhs->lsu+D2U(rhs->digits); /* -> msu+1 of multiplier  */
+
+      for (mer=rhs->lsu; mer<mermsup; mer++) {
+        /* Here, *mer is the next Unit in the multiplier to use  */
+        /* If non-zero [optimization] add it...  */
+        if (*mer!=0) accunits=decUnitAddSub(&acc[shift], accunits-shift,
+                                            lhs->lsu, madlength, 0,
+                                            &acc[shift], *mer)
+                                            + shift;
+         else { /* extend acc with a 0; it will be used shortly  */
+          *(acc+accunits)=0;       /* [this avoids length of <=0 later]  */
+          accunits++;
+          }
+        /* multiply multiplicand by 10**DECDPUN for next Unit to left  */
+        shift++;                   /* add this for 'logical length'  */
+        } /* n  */
+    #if FASTMUL
+      } /* unchunked units  */
+    #endif
+    /* common end-path  */
+    #if DECTRACE
+      decDumpAr('*', acc, accunits);         /* Show exact result  */
+    #endif
+
+    /* acc now contains the exact result of the multiplication,  */
+    /* possibly with a leading zero unit; build the decNumber from  */
+    /* it, noting if any residue  */
+    res->bits=bits;                          /* set sign  */
+    res->digits=decGetDigits(acc, accunits); /* count digits exactly  */
+
+    /* There can be a 31-bit wrap in calculating the exponent.  */
+    /* This can only happen if both input exponents are negative and  */
+    /* both their magnitudes are large.  If there was a wrap, set a  */
+    /* safe very negative exponent, from which decFinalize() will  */
+    /* raise a hard underflow shortly.  */
+    exponent=lhs->exponent+rhs->exponent;    /* calculate exponent  */
+    if (lhs->exponent<0 && rhs->exponent<0 && exponent>0)
+      exponent=-2*DECNUMMAXE;                /* force underflow  */
+    res->exponent=exponent;                  /* OK to overwrite now  */
+
+
+    /* Set the coefficient.  If any rounding, residue records  */
+    decSetCoeff(res, set, acc, res->digits, &residue, status);
+    decFinish(res, set, &residue, status);   /* final cleanup  */
+    } while(0);                         /* end protected  */
+
+  if (allocacc!=NULL) free(allocacc);   /* drop any storage used  */
+  #if DECSUBSET
+  if (allocrhs!=NULL) free(allocrhs);   /* ..  */
+  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
+  #endif
+  #if FASTMUL
+  if (allocrhi!=NULL) free(allocrhi);   /* ..  */
+  if (alloclhi!=NULL) free(alloclhi);   /* ..  */
+  #endif
+  return res;
+  } /* decMultiplyOp  */
+
+/* ------------------------------------------------------------------ */
+/* decExpOp -- effect exponentiation                                  */
+/*                                                                    */
+/*   This computes C = exp(A)                                         */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context; note that rounding mode has no effect        */
+/*                                                                    */
+/* C must have space for set->digits digits. status is updated but    */
+/* not set.                                                           */
+/*                                                                    */
+/* Restrictions:                                                      */
+/*                                                                    */
+/*   digits, emax, and -emin in the context must be less than         */
+/*   2*DEC_MAX_MATH (1999998), and the rhs must be within these       */
+/*   bounds or a zero.  This is an internal routine, so these         */
+/*   restrictions are contractual and not enforced.                   */
+/*                                                                    */
+/* A finite result is rounded using DEC_ROUND_HALF_EVEN; it will      */
+/* almost always be correctly rounded, but may be up to 1 ulp in      */
+/* error in rare cases.                                               */
+/*                                                                    */
+/* Finite results will always be full precision and Inexact, except   */
+/* when A is a zero or -Infinity (giving 1 or 0 respectively).        */
+/* ------------------------------------------------------------------ */
+/* This approach used here is similar to the algorithm described in   */
+/*                                                                    */
+/*   Variable Precision Exponential Function, T. E. Hull and          */
+/*   A. Abrham, ACM Transactions on Mathematical Software, Vol 12 #2, */
+/*   pp79-91, ACM, June 1986.                                         */
+/*                                                                    */
+/* with the main difference being that the iterations in the series   */
+/* evaluation are terminated dynamically (which does not require the  */
+/* extra variable-precision variables which are expensive in this     */
+/* context).                                                          */
+/*                                                                    */
+/* The error analysis in Hull & Abrham's paper applies except for the */
+/* round-off error accumulation during the series evaluation.  This   */
+/* code does not precalculate the number of iterations and so cannot  */
+/* use Horner's scheme.  Instead, the accumulation is done at double- */
+/* precision, which ensures that the additions of the terms are exact */
+/* and do not accumulate round-off (and any round-off errors in the   */
+/* terms themselves move 'to the right' faster than they can          */
+/* accumulate).  This code also extends the calculation by allowing,  */
+/* in the spirit of other decNumber operators, the input to be more   */
+/* precise than the result (the precision used is based on the more   */
+/* precise of the input or requested result).                         */
+/*                                                                    */
+/* Implementation notes:                                              */
+/*                                                                    */
+/* 1. This is separated out as decExpOp so it can be called from      */
+/*    other Mathematical functions (notably Ln) with a wider range    */
+/*    than normal.  In particular, it can handle the slightly wider   */
+/*    (double) range needed by Ln (which has to be able to calculate  */
+/*    exp(-x) where x can be the tiniest number (Ntiny).              */
+/*                                                                    */
+/* 2. Normalizing x to be <=0.1 (instead of <=1) reduces loop         */
+/*    iterations by appoximately a third with additional (although    */
+/*    diminishing) returns as the range is reduced to even smaller    */
+/*    fractions.  However, h (the power of 10 used to correct the     */
+/*    result at the end, see below) must be kept <=8 as otherwise     */
+/*    the final result cannot be computed.  Hence the leverage is a   */
+/*    sliding value (8-h), where potentially the range is reduced     */
+/*    more for smaller values.                                        */
+/*                                                                    */
+/*    The leverage that can be applied in this way is severely        */
+/*    limited by the cost of the raise-to-the power at the end,       */
+/*    which dominates when the number of iterations is small (less    */
+/*    than ten) or when rhs is short.  As an example, the adjustment  */
+/*    x**10,000,000 needs 31 multiplications, all but one full-width. */
+/*                                                                    */
+/* 3. The restrictions (especially precision) could be raised with    */
+/*    care, but the full decNumber range seems very hard within the   */
+/*    32-bit limits.                                                  */
+/*                                                                    */
+/* 4. The working precisions for the static buffers are twice the     */
+/*    obvious size to allow for calls from decNumberPower.            */
+/* ------------------------------------------------------------------ */
+decNumber * decExpOp(decNumber *res, const decNumber *rhs,
+                         decContext *set, uInt *status) {
+  uInt ignore=0;                   /* working status  */
+  Int h;                           /* adjusted exponent for 0.xxxx  */
+  Int p;                           /* working precision  */
+  Int residue;                     /* rounding residue  */
+  uInt needbytes;                  /* for space calculations  */
+  const decNumber *x=rhs;          /* (may point to safe copy later)  */
+  decContext aset, tset, dset;     /* working contexts  */
+  Int comp;                        /* work  */
+
+  /* the argument is often copied to normalize it, so (unusually) it  */
+  /* is treated like other buffers, using DECBUFFER, +1 in case  */
+  /* DECBUFFER is 0  */
+  decNumber bufr[D2N(DECBUFFER*2+1)];
+  decNumber *allocrhs=NULL;        /* non-NULL if rhs buffer allocated  */
+
+  /* the working precision will be no more than set->digits+8+1  */
+  /* so for on-stack buffers DECBUFFER+9 is used, +1 in case DECBUFFER  */
+  /* is 0 (and twice that for the accumulator)  */
+
+  /* buffer for t, term (working precision plus)  */
+  decNumber buft[D2N(DECBUFFER*2+9+1)];
+  decNumber *allocbuft=NULL;       /* -> allocated buft, iff allocated  */
+  decNumber *t=buft;               /* term  */
+  /* buffer for a, accumulator (working precision * 2), at least 9  */
+  decNumber bufa[D2N(DECBUFFER*4+18+1)];
+  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber *a=bufa;               /* accumulator  */
+  /* decNumber for the divisor term; this needs at most 9 digits  */
+  /* and so can be fixed size [16 so can use standard context]  */
+  decNumber bufd[D2N(16)];
+  decNumber *d=bufd;               /* divisor  */
+  decNumber numone;                /* constant 1  */
+
+  #if DECCHECK
+  Int iterations=0;                /* for later sanity check  */
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  do {                                  /* protect allocated storage  */
+    if (SPECIALARG) {                   /* handle infinities and NaNs  */
+      if (decNumberIsInfinite(rhs)) {   /* an infinity  */
+        if (decNumberIsNegative(rhs))   /* -Infinity -> +0  */
+          uprv_decNumberZero(res);
+         else uprv_decNumberCopy(res, rhs);  /* +Infinity -> self  */
+        }
+       else decNaNs(res, rhs, NULL, set, status); /* a NaN  */
+      break;}
+
+    if (ISZERO(rhs)) {                  /* zeros -> exact 1  */
+      uprv_decNumberZero(res);               /* make clean 1  */
+      *res->lsu=1;                      /* ..  */
+      break;}                           /* [no status to set]  */
+
+    /* e**x when 0 < x < 0.66 is < 1+3x/2, hence can fast-path  */
+    /* positive and negative tiny cases which will result in inexact  */
+    /* 1.  This also allows the later add-accumulate to always be  */
+    /* exact (because its length will never be more than twice the  */
+    /* working precision).  */
+    /* The comparator (tiny) needs just one digit, so use the  */
+    /* decNumber d for it (reused as the divisor, etc., below); its  */
+    /* exponent is such that if x is positive it will have  */
+    /* set->digits-1 zeros between the decimal point and the digit,  */
+    /* which is 4, and if x is negative one more zero there as the  */
+    /* more precise result will be of the form 0.9999999 rather than  */
+    /* 1.0000001.  Hence, tiny will be 0.0000004  if digits=7 and x>0  */
+    /* or 0.00000004 if digits=7 and x<0.  If RHS not larger than  */
+    /* this then the result will be 1.000000  */
+    uprv_decNumberZero(d);                   /* clean  */
+    *d->lsu=4;                          /* set 4 ..  */
+    d->exponent=-set->digits;           /* * 10**(-d)  */
+    if (decNumberIsNegative(rhs)) d->exponent--;  /* negative case  */
+    comp=decCompare(d, rhs, 1);         /* signless compare  */
+    if (comp==BADINT) {
+      *status|=DEC_Insufficient_storage;
+      break;}
+    if (comp>=0) {                      /* rhs < d  */
+      Int shift=set->digits-1;
+      uprv_decNumberZero(res);               /* set 1  */
+      *res->lsu=1;                      /* ..  */
+      res->digits=decShiftToMost(res->lsu, 1, shift);
+      res->exponent=-shift;                  /* make 1.0000...  */
+      *status|=DEC_Inexact | DEC_Rounded;    /* .. inexactly  */
+      break;} /* tiny  */
+
+    /* set up the context to be used for calculating a, as this is  */
+    /* used on both paths below  */
+    uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64);
+    /* accumulator bounds are as requested (could underflow)  */
+    aset.emax=set->emax;                /* usual bounds  */
+    aset.emin=set->emin;                /* ..  */
+    aset.clamp=0;                       /* and no concrete format  */
+
+    /* calculate the adjusted (Hull & Abrham) exponent (where the  */
+    /* decimal point is just to the left of the coefficient msd)  */
+    h=rhs->exponent+rhs->digits;
+    /* if h>8 then 10**h cannot be calculated safely; however, when  */
+    /* h=8 then exp(|rhs|) will be at least exp(1E+7) which is at  */
+    /* least 6.59E+4342944, so (due to the restriction on Emax/Emin)  */
+    /* overflow (or underflow to 0) is guaranteed -- so this case can  */
+    /* be handled by simply forcing the appropriate excess  */
+    if (h>8) {                          /* overflow/underflow  */
+      /* set up here so Power call below will over or underflow to  */
+      /* zero; set accumulator to either 2 or 0.02  */
+      /* [stack buffer for a is always big enough for this]  */
+      uprv_decNumberZero(a);
+      *a->lsu=2;                        /* not 1 but < exp(1)  */
+      if (decNumberIsNegative(rhs)) a->exponent=-2; /* make 0.02  */
+      h=8;                              /* clamp so 10**h computable  */
+      p=9;                              /* set a working precision  */
+      }
+     else {                             /* h<=8  */
+      Int maxlever=(rhs->digits>8?1:0);
+      /* [could/should increase this for precisions >40 or so, too]  */
+
+      /* if h is 8, cannot normalize to a lower upper limit because  */
+      /* the final result will not be computable (see notes above),  */
+      /* but leverage can be applied whenever h is less than 8.  */
+      /* Apply as much as possible, up to a MAXLEVER digits, which  */
+      /* sets the tradeoff against the cost of the later a**(10**h).  */
+      /* As h is increased, the working precision below also  */
+      /* increases to compensate for the "constant digits at the  */
+      /* front" effect.  */
+      Int lever=MINI(8-h, maxlever);    /* leverage attainable  */
+      Int use=-rhs->digits-lever;       /* exponent to use for RHS  */
+      h+=lever;                         /* apply leverage selected  */
+      if (h<0) {                        /* clamp  */
+        use+=h;                         /* [may end up subnormal]  */
+        h=0;
+        }
+      /* Take a copy of RHS if it needs normalization (true whenever x>=1)  */
+      if (rhs->exponent!=use) {
+        decNumber *newrhs=bufr;         /* assume will fit on stack  */
+        needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
+        if (needbytes>sizeof(bufr)) {   /* need malloc space  */
+          allocrhs=(decNumber *)malloc(needbytes);
+          if (allocrhs==NULL) {         /* hopeless -- abandon  */
+            *status|=DEC_Insufficient_storage;
+            break;}
+          newrhs=allocrhs;              /* use the allocated space  */
+          }
+        uprv_decNumberCopy(newrhs, rhs);     /* copy to safe space  */
+        newrhs->exponent=use;           /* normalize; now <1  */
+        x=newrhs;                       /* ready for use  */
+        /* decNumberShow(x);  */
+        }
+
+      /* Now use the usual power series to evaluate exp(x).  The  */
+      /* series starts as 1 + x + x^2/2 ... so prime ready for the  */
+      /* third term by setting the term variable t=x, the accumulator  */
+      /* a=1, and the divisor d=2.  */
+
+      /* First determine the working precision.  From Hull & Abrham  */
+      /* this is set->digits+h+2.  However, if x is 'over-precise' we  */
+      /* need to allow for all its digits to potentially participate  */
+      /* (consider an x where all the excess digits are 9s) so in  */
+      /* this case use x->digits+h+2  */
+      p=MAXI(x->digits, set->digits)+h+2;    /* [h<=8]  */
+
+      /* a and t are variable precision, and depend on p, so space  */
+      /* must be allocated for them if necessary  */
+
+      /* the accumulator needs to be able to hold 2p digits so that  */
+      /* the additions on the second and subsequent iterations are  */
+      /* sufficiently exact.  */
+      needbytes=sizeof(decNumber)+(D2U(p*2)-1)*sizeof(Unit);
+      if (needbytes>sizeof(bufa)) {     /* need malloc space  */
+        allocbufa=(decNumber *)malloc(needbytes);
+        if (allocbufa==NULL) {          /* hopeless -- abandon  */
+          *status|=DEC_Insufficient_storage;
+          break;}
+        a=allocbufa;                    /* use the allocated space  */
+        }
+      /* the term needs to be able to hold p digits (which is  */
+      /* guaranteed to be larger than x->digits, so the initial copy  */
+      /* is safe); it may also be used for the raise-to-power  */
+      /* calculation below, which needs an extra two digits  */
+      needbytes=sizeof(decNumber)+(D2U(p+2)-1)*sizeof(Unit);
+      if (needbytes>sizeof(buft)) {     /* need malloc space  */
+        allocbuft=(decNumber *)malloc(needbytes);
+        if (allocbuft==NULL) {          /* hopeless -- abandon  */
+          *status|=DEC_Insufficient_storage;
+          break;}
+        t=allocbuft;                    /* use the allocated space  */
+        }
+
+      uprv_decNumberCopy(t, x);              /* term=x  */
+      uprv_decNumberZero(a); *a->lsu=1;      /* accumulator=1  */
+      uprv_decNumberZero(d); *d->lsu=2;      /* divisor=2  */
+      uprv_decNumberZero(&numone); *numone.lsu=1; /* constant 1 for increment  */
+
+      /* set up the contexts for calculating a, t, and d  */
+      uprv_decContextDefault(&tset, DEC_INIT_DECIMAL64);
+      dset=tset;
+      /* accumulator bounds are set above, set precision now  */
+      aset.digits=p*2;                  /* double  */
+      /* term bounds avoid any underflow or overflow  */
+      tset.digits=p;
+      tset.emin=DEC_MIN_EMIN;           /* [emax is plenty]  */
+      /* [dset.digits=16, etc., are sufficient]  */
+
+      /* finally ready to roll  */
+      for (;;) {
+        #if DECCHECK
+        iterations++;
+        #endif
+        /* only the status from the accumulation is interesting  */
+        /* [but it should remain unchanged after first add]  */
+        decAddOp(a, a, t, &aset, 0, status);           /* a=a+t  */
+        decMultiplyOp(t, t, x, &tset, &ignore);        /* t=t*x  */
+        decDivideOp(t, t, d, &tset, DIVIDE, &ignore);  /* t=t/d  */
+        /* the iteration ends when the term cannot affect the result,  */
+        /* if rounded to p digits, which is when its value is smaller  */
+        /* than the accumulator by p+1 digits.  There must also be  */
+        /* full precision in a.  */
+        if (((a->digits+a->exponent)>=(t->digits+t->exponent+p+1))
+            && (a->digits>=p)) break;
+        decAddOp(d, d, &numone, &dset, 0, &ignore);    /* d=d+1  */
+        } /* iterate  */
+
+      #if DECCHECK
+      /* just a sanity check; comment out test to show always  */
+      if (iterations>p+3)
+        printf("Exp iterations=%ld, status=%08lx, p=%ld, d=%ld\n",
+               (LI)iterations, (LI)*status, (LI)p, (LI)x->digits);
+      #endif
+      } /* h<=8  */
+
+    /* apply postconditioning: a=a**(10**h) -- this is calculated  */
+    /* at a slightly higher precision than Hull & Abrham suggest  */
+    if (h>0) {
+      Int seenbit=0;               /* set once a 1-bit is seen  */
+      Int i;                       /* counter  */
+      Int n=powers[h];             /* always positive  */
+      aset.digits=p+2;             /* sufficient precision  */
+      /* avoid the overhead and many extra digits of decNumberPower  */
+      /* as all that is needed is the short 'multipliers' loop; here  */
+      /* accumulate the answer into t  */
+      uprv_decNumberZero(t); *t->lsu=1; /* acc=1  */
+      for (i=1;;i++){              /* for each bit [top bit ignored]  */
+        /* abandon if have had overflow or terminal underflow  */
+        if (*status & (DEC_Overflow|DEC_Underflow)) { /* interesting?  */
+          if (*status&DEC_Overflow || ISZERO(t)) break;}
+        n=n<<1;                    /* move next bit to testable position  */
+        if (n<0) {                 /* top bit is set  */
+          seenbit=1;               /* OK, have a significant bit  */
+          decMultiplyOp(t, t, a, &aset, status); /* acc=acc*x  */
+          }
+        if (i==31) break;          /* that was the last bit  */
+        if (!seenbit) continue;    /* no need to square 1  */
+        decMultiplyOp(t, t, t, &aset, status); /* acc=acc*acc [square]  */
+        } /*i*/ /* 32 bits  */
+      /* decNumberShow(t);  */
+      a=t;                         /* and carry on using t instead of a  */
+      }
+
+    /* Copy and round the result to res  */
+    residue=1;                          /* indicate dirt to right ..  */
+    if (ISZERO(a)) residue=0;           /* .. unless underflowed to 0  */
+    aset.digits=set->digits;            /* [use default rounding]  */
+    decCopyFit(res, a, &aset, &residue, status); /* copy & shorten  */
+    decFinish(res, set, &residue, status);       /* cleanup/set flags  */
+    } while(0);                         /* end protected  */
+
+  if (allocrhs !=NULL) free(allocrhs);  /* drop any storage used  */
+  if (allocbufa!=NULL) free(allocbufa); /* ..  */
+  if (allocbuft!=NULL) free(allocbuft); /* ..  */
+  /* [status is handled by caller]  */
+  return res;
+  } /* decExpOp  */
+
+/* ------------------------------------------------------------------ */
+/* Initial-estimate natural logarithm table                           */
+/*                                                                    */
+/*   LNnn -- 90-entry 16-bit table for values from .10 through .99.   */
+/*           The result is a 4-digit encode of the coefficient (c=the */
+/*           top 14 bits encoding 0-9999) and a 2-digit encode of the */
+/*           exponent (e=the bottom 2 bits encoding 0-3)              */
+/*                                                                    */
+/*           The resulting value is given by:                         */
+/*                                                                    */
+/*             v = -c * 10**(-e-3)                                    */
+/*                                                                    */
+/*           where e and c are extracted from entry k = LNnn[x-10]    */
+/*           where x is truncated (NB) into the range 10 through 99,  */
+/*           and then c = k>>2 and e = k&3.                           */
+/* ------------------------------------------------------------------ */
+static const uShort LNnn[90]={9016,  8652,  8316,  8008,  7724,  7456,  7208,
+  6972,  6748,  6540,  6340,  6148,  5968,  5792,  5628,  5464,  5312,
+  5164,  5020,  4884,  4748,  4620,  4496,  4376,  4256,  4144,  4032,
+ 39233, 38181, 37157, 36157, 35181, 34229, 33297, 32389, 31501, 30629,
+ 29777, 28945, 28129, 27329, 26545, 25777, 25021, 24281, 23553, 22837,
+ 22137, 21445, 20769, 20101, 19445, 18801, 18165, 17541, 16925, 16321,
+ 15721, 15133, 14553, 13985, 13421, 12865, 12317, 11777, 11241, 10717,
+ 10197,  9685,  9177,  8677,  8185,  7697,  7213,  6737,  6269,  5801,
+  5341,  4889,  4437, 39930, 35534, 31186, 26886, 22630, 18418, 14254,
+ 10130,  6046, 20055};
+
+/* ------------------------------------------------------------------ */
+/* decLnOp -- effect natural logarithm                                */
+/*                                                                    */
+/*   This computes C = ln(A)                                          */
+/*                                                                    */
+/*   res is C, the result.  C may be A                                */
+/*   rhs is A                                                         */
+/*   set is the context; note that rounding mode has no effect        */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Notable cases:                                                     */
+/*   A<0 -> Invalid                                                   */
+/*   A=0 -> -Infinity (Exact)                                         */
+/*   A=+Infinity -> +Infinity (Exact)                                 */
+/*   A=1 exactly -> 0 (Exact)                                         */
+/*                                                                    */
+/* Restrictions (as for Exp):                                         */
+/*                                                                    */
+/*   digits, emax, and -emin in the context must be less than         */
+/*   DEC_MAX_MATH+11 (1000010), and the rhs must be within these      */
+/*   bounds or a zero.  This is an internal routine, so these         */
+/*   restrictions are contractual and not enforced.                   */
+/*                                                                    */
+/* A finite result is rounded using DEC_ROUND_HALF_EVEN; it will      */
+/* almost always be correctly rounded, but may be up to 1 ulp in      */
+/* error in rare cases.                                               */
+/* ------------------------------------------------------------------ */
+/* The result is calculated using Newton's method, with each          */
+/* iteration calculating a' = a + x * exp(-a) - 1.  See, for example, */
+/* Epperson 1989.                                                     */
+/*                                                                    */
+/* The iteration ends when the adjustment x*exp(-a)-1 is tiny enough. */
+/* This has to be calculated at the sum of the precision of x and the */
+/* working precision.                                                 */
+/*                                                                    */
+/* Implementation notes:                                              */
+/*                                                                    */
+/* 1. This is separated out as decLnOp so it can be called from       */
+/*    other Mathematical functions (e.g., Log 10) with a wider range  */
+/*    than normal.  In particular, it can handle the slightly wider   */
+/*    (+9+2) range needed by a power function.                        */
+/*                                                                    */
+/* 2. The speed of this function is about 10x slower than exp, as     */
+/*    it typically needs 4-6 iterations for short numbers, and the    */
+/*    extra precision needed adds a squaring effect, twice.           */
+/*                                                                    */
+/* 3. Fastpaths are included for ln(10) and ln(2), up to length 40,   */
+/*    as these are common requests.  ln(10) is used by log10(x).      */
+/*                                                                    */
+/* 4. An iteration might be saved by widening the LNnn table, and     */
+/*    would certainly save at least one if it were made ten times     */
+/*    bigger, too (for truncated fractions 0.100 through 0.999).      */
+/*    However, for most practical evaluations, at least four or five  */
+/*    iterations will be neede -- so this would only speed up by      */
+/*    20-25% and that probably does not justify increasing the table  */
+/*    size.                                                           */
+/*                                                                    */
+/* 5. The static buffers are larger than might be expected to allow   */
+/*    for calls from decNumberPower.                                  */
+/* ------------------------------------------------------------------ */
+#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+decNumber * decLnOp(decNumber *res, const decNumber *rhs,
+                    decContext *set, uInt *status) {
+  uInt ignore=0;                   /* working status accumulator  */
+  uInt needbytes;                  /* for space calculations  */
+  Int residue;                     /* rounding residue  */
+  Int r;                           /* rhs=f*10**r [see below]  */
+  Int p;                           /* working precision  */
+  Int pp;                          /* precision for iteration  */
+  Int t;                           /* work  */
+
+  /* buffers for a (accumulator, typically precision+2) and b  */
+  /* (adjustment calculator, same size)  */
+  decNumber bufa[D2N(DECBUFFER+12)];
+  decNumber *allocbufa=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber *a=bufa;               /* accumulator/work  */
+  decNumber bufb[D2N(DECBUFFER*2+2)];
+  decNumber *allocbufb=NULL;       /* -> allocated bufa, iff allocated  */
+  decNumber *b=bufb;               /* adjustment/work  */
+
+  decNumber  numone;               /* constant 1  */
+  decNumber  cmp;                  /* work  */
+  decContext aset, bset;           /* working contexts  */
+
+  #if DECCHECK
+  Int iterations=0;                /* for later sanity check  */
+  if (decCheckOperands(res, DECUNUSED, rhs, set)) return res;
+  #endif
+
+  do {                                  /* protect allocated storage  */
+    if (SPECIALARG) {                   /* handle infinities and NaNs  */
+      if (decNumberIsInfinite(rhs)) {   /* an infinity  */
+        if (decNumberIsNegative(rhs))   /* -Infinity -> error  */
+          *status|=DEC_Invalid_operation;
+         else uprv_decNumberCopy(res, rhs);  /* +Infinity -> self  */
+        }
+       else decNaNs(res, rhs, NULL, set, status); /* a NaN  */
+      break;}
+
+    if (ISZERO(rhs)) {                  /* +/- zeros -> -Infinity  */
+      uprv_decNumberZero(res);               /* make clean  */
+      res->bits=DECINF|DECNEG;          /* set - infinity  */
+      break;}                           /* [no status to set]  */
+
+    /* Non-zero negatives are bad...  */
+    if (decNumberIsNegative(rhs)) {     /* -x -> error  */
+      *status|=DEC_Invalid_operation;
+      break;}
+
+    /* Here, rhs is positive, finite, and in range  */
+
+    /* lookaside fastpath code for ln(2) and ln(10) at common lengths  */
+    if (rhs->exponent==0 && set->digits<=40) {
+      #if DECDPUN==1
+      if (rhs->lsu[0]==0 && rhs->lsu[1]==1 && rhs->digits==2) { /* ln(10)  */
+      #else
+      if (rhs->lsu[0]==10 && rhs->digits==2) {                  /* ln(10)  */
+      #endif
+        aset=*set; aset.round=DEC_ROUND_HALF_EVEN;
+        #define LN10 "2.302585092994045684017991454684364207601"
+        uprv_decNumberFromString(res, LN10, &aset);
+        *status|=(DEC_Inexact | DEC_Rounded); /* is inexact  */
+        break;}
+      if (rhs->lsu[0]==2 && rhs->digits==1) { /* ln(2)  */
+        aset=*set; aset.round=DEC_ROUND_HALF_EVEN;
+        #define LN2 "0.6931471805599453094172321214581765680755"
+        uprv_decNumberFromString(res, LN2, &aset);
+        *status|=(DEC_Inexact | DEC_Rounded);
+        break;}
+      } /* integer and short  */
+
+    /* Determine the working precision.  This is normally the  */
+    /* requested precision + 2, with a minimum of 9.  However, if  */
+    /* the rhs is 'over-precise' then allow for all its digits to  */
+    /* potentially participate (consider an rhs where all the excess  */
+    /* digits are 9s) so in this case use rhs->digits+2.  */
+    p=MAXI(rhs->digits, MAXI(set->digits, 7))+2;
+
+    /* Allocate space for the accumulator and the high-precision  */
+    /* adjustment calculator, if necessary.  The accumulator must  */
+    /* be able to hold p digits, and the adjustment up to  */
+    /* rhs->digits+p digits.  They are also made big enough for 16  */
+    /* digits so that they can be used for calculating the initial  */
+    /* estimate.  */
+    needbytes=sizeof(decNumber)+(D2U(MAXI(p,16))-1)*sizeof(Unit);
+    if (needbytes>sizeof(bufa)) {     /* need malloc space  */
+      allocbufa=(decNumber *)malloc(needbytes);
+      if (allocbufa==NULL) {          /* hopeless -- abandon  */
+        *status|=DEC_Insufficient_storage;
+        break;}
+      a=allocbufa;                    /* use the allocated space  */
+      }
+    pp=p+rhs->digits;
+    needbytes=sizeof(decNumber)+(D2U(MAXI(pp,16))-1)*sizeof(Unit);
+    if (needbytes>sizeof(bufb)) {     /* need malloc space  */
+      allocbufb=(decNumber *)malloc(needbytes);
+      if (allocbufb==NULL) {          /* hopeless -- abandon  */
+        *status|=DEC_Insufficient_storage;
+        break;}
+      b=allocbufb;                    /* use the allocated space  */
+      }
+
+    /* Prepare an initial estimate in acc. Calculate this by  */
+    /* considering the coefficient of x to be a normalized fraction,  */
+    /* f, with the decimal point at far left and multiplied by  */
+    /* 10**r.  Then, rhs=f*10**r and 0.1<=f<1, and  */
+    /*   ln(x) = ln(f) + ln(10)*r  */
+    /* Get the initial estimate for ln(f) from a small lookup  */
+    /* table (see above) indexed by the first two digits of f,  */
+    /* truncated.  */
+
+    uprv_decContextDefault(&aset, DEC_INIT_DECIMAL64); /* 16-digit extended  */
+    r=rhs->exponent+rhs->digits;        /* 'normalised' exponent  */
+    uprv_decNumberFromInt32(a, r);           /* a=r  */
+    uprv_decNumberFromInt32(b, 2302585);     /* b=ln(10) (2.302585)  */
+    b->exponent=-6;                     /*  ..  */
+    decMultiplyOp(a, a, b, &aset, &ignore);  /* a=a*b  */
+    /* now get top two digits of rhs into b by simple truncate and  */
+    /* force to integer  */
+    residue=0;                          /* (no residue)  */
+    aset.digits=2; aset.round=DEC_ROUND_DOWN;
+    decCopyFit(b, rhs, &aset, &residue, &ignore); /* copy & shorten  */
+    b->exponent=0;                      /* make integer  */
+    t=decGetInt(b);                     /* [cannot fail]  */
+    if (t<10) t=X10(t);                 /* adjust single-digit b  */
+    t=LNnn[t-10];                       /* look up ln(b)  */
+    uprv_decNumberFromInt32(b, t>>2);        /* b=ln(b) coefficient  */
+    b->exponent=-(t&3)-3;               /* set exponent  */
+    b->bits=DECNEG;                     /* ln(0.10)->ln(0.99) always -ve  */
+    aset.digits=16; aset.round=DEC_ROUND_HALF_EVEN; /* restore  */
+    decAddOp(a, a, b, &aset, 0, &ignore); /* acc=a+b  */
+    /* the initial estimate is now in a, with up to 4 digits correct.  */
+    /* When rhs is at or near Nmax the estimate will be low, so we  */
+    /* will approach it from below, avoiding overflow when calling exp.  */
+
+    uprv_decNumberZero(&numone); *numone.lsu=1;   /* constant 1 for adjustment  */
+
+    /* accumulator bounds are as requested (could underflow, but  */
+    /* cannot overflow)  */
+    aset.emax=set->emax;
+    aset.emin=set->emin;
+    aset.clamp=0;                       /* no concrete format  */
+    /* set up a context to be used for the multiply and subtract  */
+    bset=aset;
+    bset.emax=DEC_MAX_MATH*2;           /* use double bounds for the  */
+    bset.emin=-DEC_MAX_MATH*2;          /* adjustment calculation  */
+                                        /* [see decExpOp call below]  */
+    /* for each iteration double the number of digits to calculate,  */
+    /* up to a maximum of p  */
+    pp=9;                               /* initial precision  */
+    /* [initially 9 as then the sequence starts 7+2, 16+2, and  */
+    /* 34+2, which is ideal for standard-sized numbers]  */
+    aset.digits=pp;                     /* working context  */
+    bset.digits=pp+rhs->digits;         /* wider context  */
+    for (;;) {                          /* iterate  */
+      #if DECCHECK
+      iterations++;
+      if (iterations>24) break;         /* consider 9 * 2**24  */
+      #endif
+      /* calculate the adjustment (exp(-a)*x-1) into b.  This is a  */
+      /* catastrophic subtraction but it really is the difference  */
+      /* from 1 that is of interest.  */
+      /* Use the internal entry point to Exp as it allows the double  */
+      /* range for calculating exp(-a) when a is the tiniest subnormal.  */
+      a->bits^=DECNEG;                  /* make -a  */
+      decExpOp(b, a, &bset, &ignore);   /* b=exp(-a)  */
+      a->bits^=DECNEG;                  /* restore sign of a  */
+      /* now multiply by rhs and subtract 1, at the wider precision  */
+      decMultiplyOp(b, b, rhs, &bset, &ignore);        /* b=b*rhs  */
+      decAddOp(b, b, &numone, &bset, DECNEG, &ignore); /* b=b-1  */
+
+      /* the iteration ends when the adjustment cannot affect the  */
+      /* result by >=0.5 ulp (at the requested digits), which  */
+      /* is when its value is smaller than the accumulator by  */
+      /* set->digits+1 digits (or it is zero) -- this is a looser  */
+      /* requirement than for Exp because all that happens to the  */
+      /* accumulator after this is the final rounding (but note that  */
+      /* there must also be full precision in a, or a=0).  */
+
+      if (decNumberIsZero(b) ||
+          (a->digits+a->exponent)>=(b->digits+b->exponent+set->digits+1)) {
+        if (a->digits==p) break;
+        if (decNumberIsZero(a)) {
+          decCompareOp(&cmp, rhs, &numone, &aset, COMPARE, &ignore); /* rhs=1 ?  */
+          if (cmp.lsu[0]==0) a->exponent=0;            /* yes, exact 0  */
+           else *status|=(DEC_Inexact | DEC_Rounded);  /* no, inexact  */
+          break;
+          }
+        /* force padding if adjustment has gone to 0 before full length  */
+        if (decNumberIsZero(b)) b->exponent=a->exponent-p;
+        }
+
+      /* not done yet ...  */
+      decAddOp(a, a, b, &aset, 0, &ignore);  /* a=a+b for next estimate  */
+      if (pp==p) continue;                   /* precision is at maximum  */
+      /* lengthen the next calculation  */
+      pp=pp*2;                               /* double precision  */
+      if (pp>p) pp=p;                        /* clamp to maximum  */
+      aset.digits=pp;                        /* working context  */
+      bset.digits=pp+rhs->digits;            /* wider context  */
+      } /* Newton's iteration  */
+
+    #if DECCHECK
+    /* just a sanity check; remove the test to show always  */
+    if (iterations>24)
+      printf("Ln iterations=%ld, status=%08lx, p=%ld, d=%ld\n",
+            (LI)iterations, (LI)*status, (LI)p, (LI)rhs->digits);
+    #endif
+
+    /* Copy and round the result to res  */
+    residue=1;                          /* indicate dirt to right  */
+    if (ISZERO(a)) residue=0;           /* .. unless underflowed to 0  */
+    aset.digits=set->digits;            /* [use default rounding]  */
+    decCopyFit(res, a, &aset, &residue, status); /* copy & shorten  */
+    decFinish(res, set, &residue, status);       /* cleanup/set flags  */
+    } while(0);                         /* end protected  */
+
+  if (allocbufa!=NULL) free(allocbufa); /* drop any storage used  */
+  if (allocbufb!=NULL) free(allocbufb); /* ..  */
+  /* [status is handled by caller]  */
+  return res;
+  } /* decLnOp  */
+#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 406
+#pragma GCC diagnostic pop
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decQuantizeOp  -- force exponent to requested value                */
+/*                                                                    */
+/*   This computes C = op(A, B), where op adjusts the coefficient     */
+/*   of C (by rounding or shifting) such that the exponent (-scale)   */
+/*   of C has the value B or matches the exponent of B.               */
+/*   The numerical value of C will equal A, except for the effects of */
+/*   any rounding that occurred.                                      */
+/*                                                                    */
+/*   res is C, the result.  C may be A or B                           */
+/*   lhs is A, the number to adjust                                   */
+/*   rhs is B, the requested exponent                                 */
+/*   set is the context                                               */
+/*   quant is 1 for quantize or 0 for rescale                         */
+/*   status is the status accumulator (this can be called without     */
+/*          risk of control loss)                                     */
+/*                                                                    */
+/* C must have space for set->digits digits.                          */
+/*                                                                    */
+/* Unless there is an error or the result is infinite, the exponent   */
+/* after the operation is guaranteed to be that requested.            */
+/* ------------------------------------------------------------------ */
+static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
+                                 const decNumber *rhs, decContext *set,
+                                 Flag quant, uInt *status) {
+  #if DECSUBSET
+  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
+  decNumber *allocrhs=NULL;        /* .., rhs  */
+  #endif
+  const decNumber *inrhs=rhs;      /* save original rhs  */
+  Int   reqdigits=set->digits;     /* requested DIGITS  */
+  Int   reqexp;                    /* requested exponent [-scale]  */
+  Int   residue=0;                 /* rounding residue  */
+  Int   etiny=set->emin-(reqdigits-1);
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operands and set lostDigits status, as needed  */
+      if (lhs->digits>reqdigits) {
+        alloclhs=decRoundOperand(lhs, set, status);
+        if (alloclhs==NULL) break;
+        lhs=alloclhs;
+        }
+      if (rhs->digits>reqdigits) { /* [this only checks lostDigits]  */
+        allocrhs=decRoundOperand(rhs, set, status);
+        if (allocrhs==NULL) break;
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    /* Handle special values  */
+    if (SPECIALARGS) {
+      /* NaNs get usual processing  */
+      if (SPECIALARGS & (DECSNAN | DECNAN))
+        decNaNs(res, lhs, rhs, set, status);
+      /* one infinity but not both is bad  */
+      else if ((lhs->bits ^ rhs->bits) & DECINF)
+        *status|=DEC_Invalid_operation;
+      /* both infinity: return lhs  */
+      else uprv_decNumberCopy(res, lhs);          /* [nop if in place]  */
+      break;
+      }
+
+    /* set requested exponent  */
+    if (quant) reqexp=inrhs->exponent;  /* quantize -- match exponents  */
+     else {                             /* rescale -- use value of rhs  */
+      /* Original rhs must be an integer that fits and is in range,  */
+      /* which could be from -1999999997 to +999999999, thanks to  */
+      /* subnormals  */
+      reqexp=decGetInt(inrhs);               /* [cannot fail]  */
+      }
+
+    #if DECSUBSET
+    if (!set->extended) etiny=set->emin;     /* no subnormals  */
+    #endif
+
+    if (reqexp==BADINT                       /* bad (rescale only) or ..  */
+     || reqexp==BIGODD || reqexp==BIGEVEN    /* very big (ditto) or ..  */
+     || (reqexp<etiny)                       /* < lowest  */
+     || (reqexp>set->emax)) {                /* > emax  */
+      *status|=DEC_Invalid_operation;
+      break;}
+
+    /* the RHS has been processed, so it can be overwritten now if necessary  */
+    if (ISZERO(lhs)) {                       /* zero coefficient unchanged  */
+      uprv_decNumberCopy(res, lhs);               /* [nop if in place]  */
+      res->exponent=reqexp;                  /* .. just set exponent  */
+      #if DECSUBSET
+      if (!set->extended) res->bits=0;       /* subset specification; no -0  */
+      #endif
+      }
+     else {                                  /* non-zero lhs  */
+      Int adjust=reqexp-lhs->exponent;       /* digit adjustment needed  */
+      /* if adjusted coefficient will definitely not fit, give up now  */
+      if ((lhs->digits-adjust)>reqdigits) {
+        *status|=DEC_Invalid_operation;
+        break;
+        }
+
+      if (adjust>0) {                        /* increasing exponent  */
+        /* this will decrease the length of the coefficient by adjust  */
+        /* digits, and must round as it does so  */
+        decContext workset;                  /* work  */
+        workset=*set;                        /* clone rounding, etc.  */
+        workset.digits=lhs->digits-adjust;   /* set requested length  */
+        /* [note that the latter can be <1, here]  */
+        decCopyFit(res, lhs, &workset, &residue, status); /* fit to result  */
+        decApplyRound(res, &workset, residue, status);    /* .. and round  */
+        residue=0;                                        /* [used]  */
+        /* If just rounded a 999s case, exponent will be off by one;  */
+        /* adjust back (after checking space), if so.  */
+        if (res->exponent>reqexp) {
+          /* re-check needed, e.g., for quantize(0.9999, 0.001) under  */
+          /* set->digits==3  */
+          if (res->digits==reqdigits) {      /* cannot shift by 1  */
+            *status&=~(DEC_Inexact | DEC_Rounded); /* [clean these]  */
+            *status|=DEC_Invalid_operation;
+            break;
+            }
+          res->digits=decShiftToMost(res->lsu, res->digits, 1); /* shift  */
+          res->exponent--;                   /* (re)adjust the exponent.  */
+          }
+        #if DECSUBSET
+        if (ISZERO(res) && !set->extended) res->bits=0; /* subset; no -0  */
+        #endif
+        } /* increase  */
+       else /* adjust<=0 */ {                /* decreasing or = exponent  */
+        /* this will increase the length of the coefficient by -adjust  */
+        /* digits, by adding zero or more trailing zeros; this is  */
+        /* already checked for fit, above  */
+        uprv_decNumberCopy(res, lhs);             /* [it will fit]  */
+        /* if padding needed (adjust<0), add it now...  */
+        if (adjust<0) {
+          res->digits=decShiftToMost(res->lsu, res->digits, -adjust);
+          res->exponent+=adjust;             /* adjust the exponent  */
+          }
+        } /* decrease  */
+      } /* non-zero  */
+
+    /* Check for overflow [do not use Finalize in this case, as an  */
+    /* overflow here is a "don't fit" situation]  */
+    if (res->exponent>set->emax-res->digits+1) {  /* too big  */
+      *status|=DEC_Invalid_operation;
+      break;
+      }
+     else {
+      decFinalize(res, set, &residue, status);    /* set subnormal flags  */
+      *status&=~DEC_Underflow;          /* suppress Underflow [as per 754]  */
+      }
+    } while(0);                         /* end protected  */
+
+  #if DECSUBSET
+  if (allocrhs!=NULL) free(allocrhs);   /* drop any storage used  */
+  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
+  #endif
+  return res;
+  } /* decQuantizeOp  */
+
+/* ------------------------------------------------------------------ */
+/* decCompareOp -- compare, min, or max two Numbers                   */
+/*                                                                    */
+/*   This computes C = A ? B and carries out one of four operations:  */
+/*     COMPARE    -- returns the signum (as a number) giving the      */
+/*                   result of a comparison unless one or both        */
+/*                   operands is a NaN (in which case a NaN results)  */
+/*     COMPSIG    -- as COMPARE except that a quiet NaN raises        */
+/*                   Invalid operation.                               */
+/*     COMPMAX    -- returns the larger of the operands, using the    */
+/*                   754 maxnum operation                             */
+/*     COMPMAXMAG -- ditto, comparing absolute values                 */
+/*     COMPMIN    -- the 754 minnum operation                         */
+/*     COMPMINMAG -- ditto, comparing absolute values                 */
+/*     COMTOTAL   -- returns the signum (as a number) giving the      */
+/*                   result of a comparison using 754 total ordering  */
+/*                                                                    */
+/*   res is C, the result.  C may be A and/or B (e.g., X=X?X)         */
+/*   lhs is A                                                         */
+/*   rhs is B                                                         */
+/*   set is the context                                               */
+/*   op  is the operation flag                                        */
+/*   status is the usual accumulator                                  */
+/*                                                                    */
+/* C must have space for one digit for COMPARE or set->digits for     */
+/* COMPMAX, COMPMIN, COMPMAXMAG, or COMPMINMAG.                       */
+/* ------------------------------------------------------------------ */
+/* The emphasis here is on speed for common cases, and avoiding       */
+/* coefficient comparison if possible.                                */
+/* ------------------------------------------------------------------ */
+static decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
+                         const decNumber *rhs, decContext *set,
+                         Flag op, uInt *status) {
+  #if DECSUBSET
+  decNumber *alloclhs=NULL;        /* non-NULL if rounded lhs allocated  */
+  decNumber *allocrhs=NULL;        /* .., rhs  */
+  #endif
+  Int   result=0;                  /* default result value  */
+  uByte merged;                    /* work  */
+
+  #if DECCHECK
+  if (decCheckOperands(res, lhs, rhs, set)) return res;
+  #endif
+
+  do {                             /* protect allocated storage  */
+    #if DECSUBSET
+    if (!set->extended) {
+      /* reduce operands and set lostDigits status, as needed  */
+      if (lhs->digits>set->digits) {
+        alloclhs=decRoundOperand(lhs, set, status);
+        if (alloclhs==NULL) {result=BADINT; break;}
+        lhs=alloclhs;
+        }
+      if (rhs->digits>set->digits) {
+        allocrhs=decRoundOperand(rhs, set, status);
+        if (allocrhs==NULL) {result=BADINT; break;}
+        rhs=allocrhs;
+        }
+      }
+    #endif
+    /* [following code does not require input rounding]  */
+
+    /* If total ordering then handle differing signs 'up front'  */
+    if (op==COMPTOTAL) {                /* total ordering  */
+      if (decNumberIsNegative(lhs) && !decNumberIsNegative(rhs)) {
+        result=-1;
+        break;
+        }
+      if (!decNumberIsNegative(lhs) && decNumberIsNegative(rhs)) {
+        result=+1;
+        break;
+        }
+      }
+
+    /* handle NaNs specially; let infinities drop through  */
+    /* This assumes sNaN (even just one) leads to NaN.  */
+    merged=(lhs->bits | rhs->bits) & (DECSNAN | DECNAN);
+    if (merged) {                       /* a NaN bit set  */
+      if (op==COMPARE);                 /* result will be NaN  */
+       else if (op==COMPSIG)            /* treat qNaN as sNaN  */
+        *status|=DEC_Invalid_operation | DEC_sNaN;
+       else if (op==COMPTOTAL) {        /* total ordering, always finite  */
+        /* signs are known to be the same; compute the ordering here  */
+        /* as if the signs are both positive, then invert for negatives  */
+        if (!decNumberIsNaN(lhs)) result=-1;
+         else if (!decNumberIsNaN(rhs)) result=+1;
+         /* here if both NaNs  */
+         else if (decNumberIsSNaN(lhs) && decNumberIsQNaN(rhs)) result=-1;
+         else if (decNumberIsQNaN(lhs) && decNumberIsSNaN(rhs)) result=+1;
+         else { /* both NaN or both sNaN  */
+          /* now it just depends on the payload  */
+          result=decUnitCompare(lhs->lsu, D2U(lhs->digits),
+                                rhs->lsu, D2U(rhs->digits), 0);
+          /* [Error not possible, as these are 'aligned']  */
+          } /* both same NaNs  */
+        if (decNumberIsNegative(lhs)) result=-result;
+        break;
+        } /* total order  */
+
+       else if (merged & DECSNAN);           /* sNaN -> qNaN  */
+       else { /* here if MIN or MAX and one or two quiet NaNs  */
+        /* min or max -- 754 rules ignore single NaN  */
+        if (!decNumberIsNaN(lhs) || !decNumberIsNaN(rhs)) {
+          /* just one NaN; force choice to be the non-NaN operand  */
+          op=COMPMAX;
+          if (lhs->bits & DECNAN) result=-1; /* pick rhs  */
+                             else result=+1; /* pick lhs  */
+          break;
+          }
+        } /* max or min  */
+      op=COMPNAN;                            /* use special path  */
+      decNaNs(res, lhs, rhs, set, status);   /* propagate NaN  */
+      break;
+      }
+    /* have numbers  */
+    if (op==COMPMAXMAG || op==COMPMINMAG) result=decCompare(lhs, rhs, 1);
+     else result=decCompare(lhs, rhs, 0);    /* sign matters  */
+    } while(0);                              /* end protected  */
+
+  if (result==BADINT) *status|=DEC_Insufficient_storage; /* rare  */
+   else {
+    if (op==COMPARE || op==COMPSIG ||op==COMPTOTAL) { /* returning signum  */
+      if (op==COMPTOTAL && result==0) {
+        /* operands are numerically equal or same NaN (and same sign,  */
+        /* tested first); if identical, leave result 0  */
+        if (lhs->exponent!=rhs->exponent) {
+          if (lhs->exponent<rhs->exponent) result=-1;
+           else result=+1;
+          if (decNumberIsNegative(lhs)) result=-result;
+          } /* lexp!=rexp  */
+        } /* total-order by exponent  */
+      uprv_decNumberZero(res);               /* [always a valid result]  */
+      if (result!=0) {                  /* must be -1 or +1  */
+        *res->lsu=1;
+        if (result<0) res->bits=DECNEG;
+        }
+      }
+     else if (op==COMPNAN);             /* special, drop through  */
+     else {                             /* MAX or MIN, non-NaN result  */
+      Int residue=0;                    /* rounding accumulator  */
+      /* choose the operand for the result  */
+      const decNumber *choice;
+      if (result==0) { /* operands are numerically equal  */
+        /* choose according to sign then exponent (see 754)  */
+        uByte slhs=(lhs->bits & DECNEG);
+        uByte srhs=(rhs->bits & DECNEG);
+        #if DECSUBSET
+        if (!set->extended) {           /* subset: force left-hand  */
+          op=COMPMAX;
+          result=+1;
+          }
+        else
+        #endif
+        if (slhs!=srhs) {          /* signs differ  */
+          if (slhs) result=-1;     /* rhs is max  */
+               else result=+1;     /* lhs is max  */
+          }
+         else if (slhs && srhs) {  /* both negative  */
+          if (lhs->exponent<rhs->exponent) result=+1;
+                                      else result=-1;
+          /* [if equal, use lhs, technically identical]  */
+          }
+         else {                    /* both positive  */
+          if (lhs->exponent>rhs->exponent) result=+1;
+                                      else result=-1;
+          /* [ditto]  */
+          }
+        } /* numerically equal  */
+      /* here result will be non-0; reverse if looking for MIN  */
+      if (op==COMPMIN || op==COMPMINMAG) result=-result;
+      choice=(result>0 ? lhs : rhs);    /* choose  */
+      /* copy chosen to result, rounding if need be  */
+      decCopyFit(res, choice, set, &residue, status);
+      decFinish(res, set, &residue, status);
+      }
+    }
+  #if DECSUBSET
+  if (allocrhs!=NULL) free(allocrhs);   /* free any storage used  */
+  if (alloclhs!=NULL) free(alloclhs);   /* ..  */
+  #endif
+  return res;
+  } /* decCompareOp  */
+
+/* ------------------------------------------------------------------ */
+/* decCompare -- compare two decNumbers by numerical value            */
+/*                                                                    */
+/*  This routine compares A ? B without altering them.                */
+/*                                                                    */
+/*  Arg1 is A, a decNumber which is not a NaN                         */
+/*  Arg2 is B, a decNumber which is not a NaN                         */
+/*  Arg3 is 1 for a sign-independent compare, 0 otherwise             */
+/*                                                                    */
+/*  returns -1, 0, or 1 for A<B, A==B, or A>B, or BADINT if failure   */
+/*  (the only possible failure is an allocation error)                */
+/* ------------------------------------------------------------------ */
+static Int decCompare(const decNumber *lhs, const decNumber *rhs,
+                      Flag abs_c) {
+  Int   result;                    /* result value  */
+  Int   sigr;                      /* rhs signum  */
+  Int   compare;                   /* work  */
+
+  result=1;                                  /* assume signum(lhs)  */
+  if (ISZERO(lhs)) result=0;
+  if (abs_c) {
+    if (ISZERO(rhs)) return result;          /* LHS wins or both 0  */
+    /* RHS is non-zero  */
+    if (result==0) return -1;                /* LHS is 0; RHS wins  */
+    /* [here, both non-zero, result=1]  */
+    }
+   else {                                    /* signs matter  */
+    if (result && decNumberIsNegative(lhs)) result=-1;
+    sigr=1;                                  /* compute signum(rhs)  */
+    if (ISZERO(rhs)) sigr=0;
+     else if (decNumberIsNegative(rhs)) sigr=-1;
+    if (result > sigr) return +1;            /* L > R, return 1  */
+    if (result < sigr) return -1;            /* L < R, return -1  */
+    if (result==0) return 0;                   /* both 0  */
+    }
+
+  /* signums are the same; both are non-zero  */
+  if ((lhs->bits | rhs->bits) & DECINF) {    /* one or more infinities  */
+    if (decNumberIsInfinite(rhs)) {
+      if (decNumberIsInfinite(lhs)) result=0;/* both infinite  */
+       else result=-result;                  /* only rhs infinite  */
+      }
+    return result;
+    }
+  /* must compare the coefficients, allowing for exponents  */
+  if (lhs->exponent>rhs->exponent) {         /* LHS exponent larger  */
+    /* swap sides, and sign  */
+    const decNumber *temp=lhs;
+    lhs=rhs;
+    rhs=temp;
+    result=-result;
+    }
+  compare=decUnitCompare(lhs->lsu, D2U(lhs->digits),
+                         rhs->lsu, D2U(rhs->digits),
+                         rhs->exponent-lhs->exponent);
+  if (compare!=BADINT) compare*=result;      /* comparison succeeded  */
+  return compare;
+  } /* decCompare  */
+
+/* ------------------------------------------------------------------ */
+/* decUnitCompare -- compare two >=0 integers in Unit arrays          */
+/*                                                                    */
+/*  This routine compares A ? B*10**E where A and B are unit arrays   */
+/*  A is a plain integer                                              */
+/*  B has an exponent of E (which must be non-negative)               */
+/*                                                                    */
+/*  Arg1 is A first Unit (lsu)                                        */
+/*  Arg2 is A length in Units                                         */
+/*  Arg3 is B first Unit (lsu)                                        */
+/*  Arg4 is B length in Units                                         */
+/*  Arg5 is E (0 if the units are aligned)                            */
+/*                                                                    */
+/*  returns -1, 0, or 1 for A<B, A==B, or A>B, or BADINT if failure   */
+/*  (the only possible failure is an allocation error, which can      */
+/*  only occur if E!=0)                                               */
+/* ------------------------------------------------------------------ */
+static Int decUnitCompare(const Unit *a, Int alength,
+                          const Unit *b, Int blength, Int exp) {
+  Unit  *acc;                      /* accumulator for result  */
+  Unit  accbuff[SD2U(DECBUFFER*2+1)]; /* local buffer  */
+  Unit  *allocacc=NULL;            /* -> allocated acc buffer, iff allocated  */
+  Int   accunits, need;            /* units in use or needed for acc  */
+  const Unit *l, *r, *u;           /* work  */
+  Int   expunits, exprem, result;  /* ..  */
+
+  if (exp==0) {                    /* aligned; fastpath  */
+    if (alength>blength) return 1;
+    if (alength<blength) return -1;
+    /* same number of units in both -- need unit-by-unit compare  */
+    l=a+alength-1;
+    r=b+alength-1;
+    for (;l>=a; l--, r--) {
+      if (*l>*r) return 1;
+      if (*l<*r) return -1;
+      }
+    return 0;                      /* all units match  */
+    } /* aligned  */
+
+  /* Unaligned.  If one is >1 unit longer than the other, padded  */
+  /* approximately, then can return easily  */
+  if (alength>blength+(Int)D2U(exp)) return 1;
+  if (alength+1<blength+(Int)D2U(exp)) return -1;
+
+  /* Need to do a real subtract.  For this, a result buffer is needed  */
+  /* even though only the sign is of interest.  Its length needs  */
+  /* to be the larger of alength and padded blength, +2  */
+  need=blength+D2U(exp);                /* maximum real length of B  */
+  if (need<alength) need=alength;
+  need+=2;
+  acc=accbuff;                          /* assume use local buffer  */
+  if (need*sizeof(Unit)>sizeof(accbuff)) {
+    allocacc=(Unit *)malloc(need*sizeof(Unit));
+    if (allocacc==NULL) return BADINT;  /* hopeless -- abandon  */
+    acc=allocacc;
+    }
+  /* Calculate units and remainder from exponent.  */
+  expunits=exp/DECDPUN;
+  exprem=exp%DECDPUN;
+  /* subtract [A+B*(-m)]  */
+  accunits=decUnitAddSub(a, alength, b, blength, expunits, acc,
+                         -(Int)powers[exprem]);
+  /* [UnitAddSub result may have leading zeros, even on zero]  */
+  if (accunits<0) result=-1;            /* negative result  */
+   else {                               /* non-negative result  */
+    /* check units of the result before freeing any storage  */
+    for (u=acc; u<acc+accunits-1 && *u==0;) u++;
+    result=(*u==0 ? 0 : +1);
+    }
+  /* clean up and return the result  */
+  if (allocacc!=NULL) free(allocacc);   /* drop any storage used  */
+  return result;
+  } /* decUnitCompare  */
+
+/* ------------------------------------------------------------------ */
+/* decUnitAddSub -- add or subtract two >=0 integers in Unit arrays   */
+/*                                                                    */
+/*  This routine performs the calculation:                            */
+/*                                                                    */
+/*  C=A+(B*M)                                                         */
+/*                                                                    */
+/*  Where M is in the range -DECDPUNMAX through +DECDPUNMAX.          */
+/*                                                                    */
+/*  A may be shorter or longer than B.                                */
+/*                                                                    */
+/*  Leading zeros are not removed after a calculation.  The result is */
+/*  either the same length as the longer of A and B (adding any       */
+/*  shift), or one Unit longer than that (if a Unit carry occurred).  */
+/*                                                                    */
+/*  A and B content are not altered unless C is also A or B.          */
+/*  C may be the same array as A or B, but only if no zero padding is */
+/*  requested (that is, C may be B only if bshift==0).                */
+/*  C is filled from the lsu; only those units necessary to complete  */
+/*  the calculation are referenced.                                   */
+/*                                                                    */
+/*  Arg1 is A first Unit (lsu)                                        */
+/*  Arg2 is A length in Units                                         */
+/*  Arg3 is B first Unit (lsu)                                        */
+/*  Arg4 is B length in Units                                         */
+/*  Arg5 is B shift in Units  (>=0; pads with 0 units if positive)    */
+/*  Arg6 is C first Unit (lsu)                                        */
+/*  Arg7 is M, the multiplier                                         */
+/*                                                                    */
+/*  returns the count of Units written to C, which will be non-zero   */
+/*  and negated if the result is negative.  That is, the sign of the  */
+/*  returned Int is the sign of the result (positive for zero) and    */
+/*  the absolute value of the Int is the count of Units.              */
+/*                                                                    */
+/*  It is the caller's responsibility to make sure that C size is     */
+/*  safe, allowing space if necessary for a one-Unit carry.           */
+/*                                                                    */
+/*  This routine is severely performance-critical; *any* change here  */
+/*  must be measured (timed) to assure no performance degradation.    */
+/*  In particular, trickery here tends to be counter-productive, as   */
+/*  increased complexity of code hurts register optimizations on      */
+/*  register-poor architectures.  Avoiding divisions is nearly        */
+/*  always a Good Idea, however.                                      */
+/*                                                                    */
+/* Special thanks to Rick McGuire (IBM Cambridge, MA) and Dave Clark  */
+/* (IBM Warwick, UK) for some of the ideas used in this routine.      */
+/* ------------------------------------------------------------------ */
+static Int decUnitAddSub(const Unit *a, Int alength,
+                         const Unit *b, Int blength, Int bshift,
+                         Unit *c, Int m) {
+  const Unit *alsu=a;              /* A lsu [need to remember it]  */
+  Unit *clsu=c;                    /* C ditto  */
+  Unit *minC;                      /* low water mark for C  */
+  Unit *maxC;                      /* high water mark for C  */
+  eInt carry=0;                    /* carry integer (could be Long)  */
+  Int  add;                        /* work  */
+  #if DECDPUN<=4                   /* myriadal, millenary, etc.  */
+  Int  est;                        /* estimated quotient  */
+  #endif
+
+  #if DECTRACE
+  if (alength<1 || blength<1)
+    printf("decUnitAddSub: alen blen m %ld %ld [%ld]\n", alength, blength, m);
+  #endif
+
+  maxC=c+alength;                  /* A is usually the longer  */
+  minC=c+blength;                  /* .. and B the shorter  */
+  if (bshift!=0) {                 /* B is shifted; low As copy across  */
+    minC+=bshift;
+    /* if in place [common], skip copy unless there's a gap [rare]  */
+    if (a==c && bshift<=alength) {
+      c+=bshift;
+      a+=bshift;
+      }
+     else for (; c<clsu+bshift; a++, c++) {  /* copy needed  */
+      if (a<alsu+alength) *c=*a;
+       else *c=0;
+      }
+    }
+  if (minC>maxC) { /* swap  */
+    Unit *hold=minC;
+    minC=maxC;
+    maxC=hold;
+    }
+
+  /* For speed, do the addition as two loops; the first where both A  */
+  /* and B contribute, and the second (if necessary) where only one or  */
+  /* other of the numbers contribute.  */
+  /* Carry handling is the same (i.e., duplicated) in each case.  */
+  for (; c<minC; c++) {
+    carry+=*a;
+    a++;
+    carry+=((eInt)*b)*m;                /* [special-casing m=1/-1  */
+    b++;                                /* here is not a win]  */
+    /* here carry is new Unit of digits; it could be +ve or -ve  */
+    if ((ueInt)carry<=DECDPUNMAX) {     /* fastpath 0-DECDPUNMAX  */
+      *c=(Unit)carry;
+      carry=0;
+      continue;
+      }
+    #if DECDPUN==4                           /* use divide-by-multiply  */
+      if (carry>=0) {
+        est=(((ueInt)carry>>11)*53687)>>18;
+        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
+        carry=est;                           /* likely quotient [89%]  */
+        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
+        carry++;
+        *c-=DECDPUNMAX+1;
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      est=(((ueInt)carry>>11)*53687)>>18;
+      *c=(Unit)(carry-est*(DECDPUNMAX+1));
+      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
+      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
+      carry++;
+      *c-=DECDPUNMAX+1;
+    #elif DECDPUN==3
+      if (carry>=0) {
+        est=(((ueInt)carry>>3)*16777)>>21;
+        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
+        carry=est;                           /* likely quotient [99%]  */
+        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
+        carry++;
+        *c-=DECDPUNMAX+1;
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      est=(((ueInt)carry>>3)*16777)>>21;
+      *c=(Unit)(carry-est*(DECDPUNMAX+1));
+      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
+      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
+      carry++;
+      *c-=DECDPUNMAX+1;
+    #elif DECDPUN<=2
+      /* Can use QUOT10 as carry <= 4 digits  */
+      if (carry>=0) {
+        est=QUOT10(carry, DECDPUN);
+        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
+        carry=est;                           /* quotient  */
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      est=QUOT10(carry, DECDPUN);
+      *c=(Unit)(carry-est*(DECDPUNMAX+1));
+      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
+    #else
+      /* remainder operator is undefined if negative, so must test  */
+      if ((ueInt)carry<(DECDPUNMAX+1)*2) {   /* fastpath carry +1  */
+        *c=(Unit)(carry-(DECDPUNMAX+1));     /* [helps additions]  */
+        carry=1;
+        continue;
+        }
+      if (carry>=0) {
+        *c=(Unit)(carry%(DECDPUNMAX+1));
+        carry=carry/(DECDPUNMAX+1);
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      *c=(Unit)(carry%(DECDPUNMAX+1));
+      carry=carry/(DECDPUNMAX+1)-(DECDPUNMAX+1);
+    #endif
+    } /* c  */
+
+  /* now may have one or other to complete  */
+  /* [pretest to avoid loop setup/shutdown]  */
+  if (c<maxC) for (; c<maxC; c++) {
+    if (a<alsu+alength) {               /* still in A  */
+      carry+=*a;
+      a++;
+      }
+     else {                             /* inside B  */
+      carry+=((eInt)*b)*m;
+      b++;
+      }
+    /* here carry is new Unit of digits; it could be +ve or -ve and  */
+    /* magnitude up to DECDPUNMAX squared  */
+    if ((ueInt)carry<=DECDPUNMAX) {     /* fastpath 0-DECDPUNMAX  */
+      *c=(Unit)carry;
+      carry=0;
+      continue;
+      }
+    /* result for this unit is negative or >DECDPUNMAX  */
+    #if DECDPUN==4                           /* use divide-by-multiply  */
+      if (carry>=0) {
+        est=(((ueInt)carry>>11)*53687)>>18;
+        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
+        carry=est;                           /* likely quotient [79.7%]  */
+        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
+        carry++;
+        *c-=DECDPUNMAX+1;
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      est=(((ueInt)carry>>11)*53687)>>18;
+      *c=(Unit)(carry-est*(DECDPUNMAX+1));
+      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
+      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
+      carry++;
+      *c-=DECDPUNMAX+1;
+    #elif DECDPUN==3
+      if (carry>=0) {
+        est=(((ueInt)carry>>3)*16777)>>21;
+        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
+        carry=est;                           /* likely quotient [99%]  */
+        if (*c<DECDPUNMAX+1) continue;       /* estimate was correct  */
+        carry++;
+        *c-=DECDPUNMAX+1;
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      est=(((ueInt)carry>>3)*16777)>>21;
+      *c=(Unit)(carry-est*(DECDPUNMAX+1));
+      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
+      if (*c<DECDPUNMAX+1) continue;         /* was OK  */
+      carry++;
+      *c-=DECDPUNMAX+1;
+    #elif DECDPUN<=2
+      if (carry>=0) {
+        est=QUOT10(carry, DECDPUN);
+        *c=(Unit)(carry-est*(DECDPUNMAX+1)); /* remainder  */
+        carry=est;                           /* quotient  */
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      est=QUOT10(carry, DECDPUN);
+      *c=(Unit)(carry-est*(DECDPUNMAX+1));
+      carry=est-(DECDPUNMAX+1);              /* correctly negative  */
+    #else
+      if ((ueInt)carry<(DECDPUNMAX+1)*2){    /* fastpath carry 1  */
+        *c=(Unit)(carry-(DECDPUNMAX+1));
+        carry=1;
+        continue;
+        }
+      /* remainder operator is undefined if negative, so must test  */
+      if (carry>=0) {
+        *c=(Unit)(carry%(DECDPUNMAX+1));
+        carry=carry/(DECDPUNMAX+1);
+        continue;
+        }
+      /* negative case  */
+      carry=carry+(eInt)(DECDPUNMAX+1)*(DECDPUNMAX+1); /* make positive  */
+      *c=(Unit)(carry%(DECDPUNMAX+1));
+      carry=carry/(DECDPUNMAX+1)-(DECDPUNMAX+1);
+    #endif
+    } /* c  */
+
+  /* OK, all A and B processed; might still have carry or borrow  */
+  /* return number of Units in the result, negated if a borrow  */
+  if (carry==0) return c-clsu;     /* no carry, so no more to do  */
+  if (carry>0) {                   /* positive carry  */
+    *c=(Unit)carry;                /* place as new unit  */
+    c++;                           /* ..  */
+    return c-clsu;
+    }
+  /* -ve carry: it's a borrow; complement needed  */
+  add=1;                           /* temporary carry...  */
+  for (c=clsu; c<maxC; c++) {
+    add=DECDPUNMAX+add-*c;
+    if (add<=DECDPUNMAX) {
+      *c=(Unit)add;
+      add=0;
+      }
+     else {
+      *c=0;
+      add=1;
+      }
+    }
+  /* add an extra unit iff it would be non-zero  */
+  #if DECTRACE
+    printf("UAS borrow: add %ld, carry %ld\n", add, carry);
+  #endif
+  if ((add-carry-1)!=0) {
+    *c=(Unit)(add-carry-1);
+    c++;                      /* interesting, include it  */
+    }
+  return clsu-c;              /* -ve result indicates borrowed  */
+  } /* decUnitAddSub  */
+
+/* ------------------------------------------------------------------ */
+/* decTrim -- trim trailing zeros or normalize                        */
+/*                                                                    */
+/*   dn is the number to trim or normalize                            */
+/*   set is the context to use to check for clamp                     */
+/*   all is 1 to remove all trailing zeros, 0 for just fraction ones  */
+/*   noclamp is 1 to unconditional (unclamped) trim                   */
+/*   dropped returns the number of discarded trailing zeros           */
+/*   returns dn                                                       */
+/*                                                                    */
+/* If clamp is set in the context then the number of zeros trimmed    */
+/* may be limited if the exponent is high.                            */
+/* All fields are updated as required.  This is a utility operation,  */
+/* so special values are unchanged and no error is possible.          */
+/* ------------------------------------------------------------------ */
+static decNumber * decTrim(decNumber *dn, decContext *set, Flag all,
+                           Flag noclamp, Int *dropped) {
+  Int   d, exp;                    /* work  */
+  uInt  cut;                       /* ..  */
+  Unit  *up;                       /* -> current Unit  */
+
+  #if DECCHECK
+  if (decCheckOperands(dn, DECUNUSED, DECUNUSED, DECUNCONT)) return dn;
+  #endif
+
+  *dropped=0;                           /* assume no zeros dropped  */
+  if ((dn->bits & DECSPECIAL)           /* fast exit if special ..  */
+    || (*dn->lsu & 0x01)) return dn;    /* .. or odd  */
+  if (ISZERO(dn)) {                     /* .. or 0  */
+    dn->exponent=0;                     /* (sign is preserved)  */
+    return dn;
+    }
+
+  /* have a finite number which is even  */
+  exp=dn->exponent;
+  cut=1;                           /* digit (1-DECDPUN) in Unit  */
+  up=dn->lsu;                      /* -> current Unit  */
+  for (d=0; d<dn->digits-1; d++) { /* [don't strip the final digit]  */
+    /* slice by powers  */
+    #if DECDPUN<=4
+      uInt quot=QUOT10(*up, cut);
+      if ((*up-quot*powers[cut])!=0) break;  /* found non-0 digit  */
+    #else
+      if (*up%powers[cut]!=0) break;         /* found non-0 digit  */
+    #endif
+    /* have a trailing 0  */
+    if (!all) {                    /* trimming  */
+      /* [if exp>0 then all trailing 0s are significant for trim]  */
+      if (exp<=0) {                /* if digit might be significant  */
+        if (exp==0) break;         /* then quit  */
+        exp++;                     /* next digit might be significant  */
+        }
+      }
+    cut++;                         /* next power  */
+    if (cut>DECDPUN) {             /* need new Unit  */
+      up++;
+      cut=1;
+      }
+    } /* d  */
+  if (d==0) return dn;             /* none to drop  */
+
+  /* may need to limit drop if clamping  */
+  if (set->clamp && !noclamp) {
+    Int maxd=set->emax-set->digits+1-dn->exponent;
+    if (maxd<=0) return dn;        /* nothing possible  */
+    if (d>maxd) d=maxd;
+    }
+
+  /* effect the drop  */
+  decShiftToLeast(dn->lsu, D2U(dn->digits), d);
+  dn->exponent+=d;                 /* maintain numerical value  */
+  dn->digits-=d;                   /* new length  */
+  *dropped=d;                      /* report the count  */
+  return dn;
+  } /* decTrim  */
+
+/* ------------------------------------------------------------------ */
+/* decReverse -- reverse a Unit array in place                        */
+/*                                                                    */
+/*   ulo    is the start of the array                                 */
+/*   uhi    is the end of the array (highest Unit to include)         */
+/*                                                                    */
+/* The units ulo through uhi are reversed in place (if the number     */
+/* of units is odd, the middle one is untouched).  Note that the      */
+/* digit(s) in each unit are unaffected.                              */
+/* ------------------------------------------------------------------ */
+static void decReverse(Unit *ulo, Unit *uhi) {
+  Unit temp;
+  for (; ulo<uhi; ulo++, uhi--) {
+    temp=*ulo;
+    *ulo=*uhi;
+    *uhi=temp;
+    }
+  return;
+  } /* decReverse  */
+
+/* ------------------------------------------------------------------ */
+/* decShiftToMost -- shift digits in array towards most significant   */
+/*                                                                    */
+/*   uar    is the array                                              */
+/*   digits is the count of digits in use in the array                */
+/*   shift  is the number of zeros to pad with (least significant);   */
+/*     it must be zero or positive                                    */
+/*                                                                    */
+/*   returns the new length of the integer in the array, in digits    */
+/*                                                                    */
+/* No overflow is permitted (that is, the uar array must be known to  */
+/* be large enough to hold the result, after shifting).               */
+/* ------------------------------------------------------------------ */
+static Int decShiftToMost(Unit *uar, Int digits, Int shift) {
+  Unit  *target, *source, *first;  /* work  */
+  Int   cut;                       /* odd 0's to add  */
+  uInt  next;                      /* work  */
+
+  if (shift==0) return digits;     /* [fastpath] nothing to do  */
+  if ((digits+shift)<=DECDPUN) {   /* [fastpath] single-unit case  */
+    *uar=(Unit)(*uar*powers[shift]);
+    return digits+shift;
+    }
+
+  next=0;                          /* all paths  */
+  source=uar+D2U(digits)-1;        /* where msu comes from  */
+  target=source+D2U(shift);        /* where upper part of first cut goes  */
+  cut=DECDPUN-MSUDIGITS(shift);    /* where to slice  */
+  if (cut==0) {                    /* unit-boundary case  */
+    for (; source>=uar; source--, target--) *target=*source;
+    }
+   else {
+    first=uar+D2U(digits+shift)-1; /* where msu of source will end up  */
+    for (; source>=uar; source--, target--) {
+      /* split the source Unit and accumulate remainder for next  */
+      #if DECDPUN<=4
+        uInt quot=QUOT10(*source, cut);
+        uInt rem=*source-quot*powers[cut];
+        next+=quot;
+      #else
+        uInt rem=*source%powers[cut];
+        next+=*source/powers[cut];
+      #endif
+      if (target<=first) *target=(Unit)next;   /* write to target iff valid  */
+      next=rem*powers[DECDPUN-cut];            /* save remainder for next Unit  */
+      }
+    } /* shift-move  */
+
+  /* propagate any partial unit to one below and clear the rest  */
+  for (; target>=uar; target--) {
+    *target=(Unit)next;
+    next=0;
+    }
+  return digits+shift;
+  } /* decShiftToMost  */
+
+/* ------------------------------------------------------------------ */
+/* decShiftToLeast -- shift digits in array towards least significant */
+/*                                                                    */
+/*   uar   is the array                                               */
+/*   units is length of the array, in units                           */
+/*   shift is the number of digits to remove from the lsu end; it     */
+/*     must be zero or positive and <= than units*DECDPUN.            */
+/*                                                                    */
+/*   returns the new length of the integer in the array, in units     */
+/*                                                                    */
+/* Removed digits are discarded (lost).  Units not required to hold   */
+/* the final result are unchanged.                                    */
+/* ------------------------------------------------------------------ */
+static Int decShiftToLeast(Unit *uar, Int units, Int shift) {
+  Unit  *target, *up;              /* work  */
+  Int   cut, count;                /* work  */
+  Int   quot, rem;                 /* for division  */
+
+  if (shift==0) return units;      /* [fastpath] nothing to do  */
+  if (shift==units*DECDPUN) {      /* [fastpath] little to do  */
+    *uar=0;                        /* all digits cleared gives zero  */
+    return 1;                      /* leaves just the one  */
+    }
+
+  target=uar;                      /* both paths  */
+  cut=MSUDIGITS(shift);
+  if (cut==DECDPUN) {              /* unit-boundary case; easy  */
+    up=uar+D2U(shift);
+    for (; up<uar+units; target++, up++) *target=*up;
+    return target-uar;
+    }
+
+  /* messier  */
+  up=uar+D2U(shift-cut);           /* source; correct to whole Units  */
+  count=units*DECDPUN-shift;       /* the maximum new length  */
+  #if DECDPUN<=4
+    quot=QUOT10(*up, cut);
+  #else
+    quot=*up/powers[cut];
+  #endif
+  for (; ; target++) {
+    *target=(Unit)quot;
+    count-=(DECDPUN-cut);
+    if (count<=0) break;
+    up++;
+    quot=*up;
+    #if DECDPUN<=4
+      quot=QUOT10(quot, cut);
+      rem=*up-quot*powers[cut];
+    #else
+      rem=quot%powers[cut];
+      quot=quot/powers[cut];
+    #endif
+    *target=(Unit)(*target+rem*powers[DECDPUN-cut]);
+    count-=cut;
+    if (count<=0) break;
+    }
+  return target-uar+1;
+  } /* decShiftToLeast  */
+
+#if DECSUBSET
+/* ------------------------------------------------------------------ */
+/* decRoundOperand -- round an operand  [used for subset only]        */
+/*                                                                    */
+/*   dn is the number to round (dn->digits is > set->digits)          */
+/*   set is the relevant context                                      */
+/*   status is the status accumulator                                 */
+/*                                                                    */
+/*   returns an allocated decNumber with the rounded result.          */
+/*                                                                    */
+/* lostDigits and other status may be set by this.                    */
+/*                                                                    */
+/* Since the input is an operand, it must not be modified.            */
+/* Instead, return an allocated decNumber, rounded as required.       */
+/* It is the caller's responsibility to free the allocated storage.   */
+/*                                                                    */
+/* If no storage is available then the result cannot be used, so NULL */
+/* is returned.                                                       */
+/* ------------------------------------------------------------------ */
+static decNumber *decRoundOperand(const decNumber *dn, decContext *set,
+                                  uInt *status) {
+  decNumber *res;                       /* result structure  */
+  uInt newstatus=0;                     /* status from round  */
+  Int  residue=0;                       /* rounding accumulator  */
+
+  /* Allocate storage for the returned decNumber, big enough for the  */
+  /* length specified by the context  */
+  res=(decNumber *)malloc(sizeof(decNumber)
+                          +(D2U(set->digits)-1)*sizeof(Unit));
+  if (res==NULL) {
+    *status|=DEC_Insufficient_storage;
+    return NULL;
+    }
+  decCopyFit(res, dn, set, &residue, &newstatus);
+  decApplyRound(res, set, residue, &newstatus);
+
+  /* If that set Inexact then "lost digits" is raised...  */
+  if (newstatus & DEC_Inexact) newstatus|=DEC_Lost_digits;
+  *status|=newstatus;
+  return res;
+  } /* decRoundOperand  */
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decCopyFit -- copy a number, truncating the coefficient if needed  */
+/*                                                                    */
+/*   dest is the target decNumber                                     */
+/*   src  is the source decNumber                                     */
+/*   set is the context [used for length (digits) and rounding mode]  */
+/*   residue is the residue accumulator                               */
+/*   status contains the current status to be updated                 */
+/*                                                                    */
+/* (dest==src is allowed and will be a no-op if fits)                 */
+/* All fields are updated as required.                                */
+/* ------------------------------------------------------------------ */
+static void decCopyFit(decNumber *dest, const decNumber *src,
+                       decContext *set, Int *residue, uInt *status) {
+  dest->bits=src->bits;
+  dest->exponent=src->exponent;
+  decSetCoeff(dest, set, src->lsu, src->digits, residue, status);
+  } /* decCopyFit  */
+
+/* ------------------------------------------------------------------ */
+/* decSetCoeff -- set the coefficient of a number                     */
+/*                                                                    */
+/*   dn    is the number whose coefficient array is to be set.        */
+/*         It must have space for set->digits digits                  */
+/*   set   is the context [for size]                                  */
+/*   lsu   -> lsu of the source coefficient [may be dn->lsu]          */
+/*   len   is digits in the source coefficient [may be dn->digits]    */
+/*   residue is the residue accumulator.  This has values as in       */
+/*         decApplyRound, and will be unchanged unless the            */
+/*         target size is less than len.  In this case, the           */
+/*         coefficient is truncated and the residue is updated to     */
+/*         reflect the previous residue and the dropped digits.       */
+/*   status is the status accumulator, as usual                       */
+/*                                                                    */
+/* The coefficient may already be in the number, or it can be an      */
+/* external intermediate array.  If it is in the number, lsu must ==  */
+/* dn->lsu and len must == dn->digits.                                */
+/*                                                                    */
+/* Note that the coefficient length (len) may be < set->digits, and   */
+/* in this case this merely copies the coefficient (or is a no-op     */
+/* if dn->lsu==lsu).                                                  */
+/*                                                                    */
+/* Note also that (only internally, from decQuantizeOp and            */
+/* decSetSubnormal) the value of set->digits may be less than one,    */
+/* indicating a round to left.  This routine handles that case        */
+/* correctly; caller ensures space.                                   */
+/*                                                                    */
+/* dn->digits, dn->lsu (and as required), and dn->exponent are        */
+/* updated as necessary.   dn->bits (sign) is unchanged.              */
+/*                                                                    */
+/* DEC_Rounded status is set if any digits are discarded.             */
+/* DEC_Inexact status is set if any non-zero digits are discarded, or */
+/*                       incoming residue was non-0 (implies rounded) */
+/* ------------------------------------------------------------------ */
+/* mapping array: maps 0-9 to canonical residues, so that a residue  */
+/* can be adjusted in the range [-1, +1] and achieve correct rounding  */
+/*                             0  1  2  3  4  5  6  7  8  9  */
+static const uByte resmap[10]={0, 3, 3, 3, 3, 5, 7, 7, 7, 7};
+static void decSetCoeff(decNumber *dn, decContext *set, const Unit *lsu,
+                        Int len, Int *residue, uInt *status) {
+  Int   discard;              /* number of digits to discard  */
+  uInt  cut;                  /* cut point in Unit  */
+  const Unit *up;             /* work  */
+  Unit  *target;              /* ..  */
+  Int   count;                /* ..  */
+  #if DECDPUN<=4
+  uInt  temp;                 /* ..  */
+  #endif
+
+  discard=len-set->digits;    /* digits to discard  */
+  if (discard<=0) {           /* no digits are being discarded  */
+    if (dn->lsu!=lsu) {       /* copy needed  */
+      /* copy the coefficient array to the result number; no shift needed  */
+      count=len;              /* avoids D2U  */
+      up=lsu;
+      for (target=dn->lsu; count>0; target++, up++, count-=DECDPUN)
+        *target=*up;
+      dn->digits=len;         /* set the new length  */
+      }
+    /* dn->exponent and residue are unchanged, record any inexactitude  */
+    if (*residue!=0) *status|=(DEC_Inexact | DEC_Rounded);
+    return;
+    }
+
+  /* some digits must be discarded ...  */
+  dn->exponent+=discard;      /* maintain numerical value  */
+  *status|=DEC_Rounded;       /* accumulate Rounded status  */
+  if (*residue>1) *residue=1; /* previous residue now to right, so reduce  */
+
+  if (discard>len) {          /* everything, +1, is being discarded  */
+    /* guard digit is 0  */
+    /* residue is all the number [NB could be all 0s]  */
+    if (*residue<=0) {        /* not already positive  */
+      count=len;              /* avoids D2U  */
+      for (up=lsu; count>0; up++, count-=DECDPUN) if (*up!=0) { /* found non-0  */
+        *residue=1;
+        break;                /* no need to check any others  */
+        }
+      }
+    if (*residue!=0) *status|=DEC_Inexact; /* record inexactitude  */
+    *dn->lsu=0;               /* coefficient will now be 0  */
+    dn->digits=1;             /* ..  */
+    return;
+    } /* total discard  */
+
+  /* partial discard [most common case]  */
+  /* here, at least the first (most significant) discarded digit exists  */
+
+  /* spin up the number, noting residue during the spin, until get to  */
+  /* the Unit with the first discarded digit.  When reach it, extract  */
+  /* it and remember its position  */
+  count=0;
+  for (up=lsu;; up++) {
+    count+=DECDPUN;
+    if (count>=discard) break; /* full ones all checked  */
+    if (*up!=0) *residue=1;
+    } /* up  */
+
+  /* here up -> Unit with first discarded digit  */
+  cut=discard-(count-DECDPUN)-1;
+  if (cut==DECDPUN-1) {       /* unit-boundary case (fast)  */
+    Unit half=(Unit)powers[DECDPUN]>>1;
+    /* set residue directly  */
+    if (*up>=half) {
+      if (*up>half) *residue=7;
+      else *residue+=5;       /* add sticky bit  */
+      }
+     else { /* <half  */
+      if (*up!=0) *residue=3; /* [else is 0, leave as sticky bit]  */
+      }
+    if (set->digits<=0) {     /* special for Quantize/Subnormal :-(  */
+      *dn->lsu=0;             /* .. result is 0  */
+      dn->digits=1;           /* ..  */
+      }
+     else {                   /* shift to least  */
+      count=set->digits;      /* now digits to end up with  */
+      dn->digits=count;       /* set the new length  */
+      up++;                   /* move to next  */
+      /* on unit boundary, so shift-down copy loop is simple  */
+      for (target=dn->lsu; count>0; target++, up++, count-=DECDPUN)
+        *target=*up;
+      }
+    } /* unit-boundary case  */
+
+   else { /* discard digit is in low digit(s), and not top digit  */
+    uInt  discard1;                /* first discarded digit  */
+    uInt  quot, rem;               /* for divisions  */
+    if (cut==0) quot=*up;          /* is at bottom of unit  */
+     else /* cut>0 */ {            /* it's not at bottom of unit  */
+      #if DECDPUN<=4
+        U_ASSERT(/* cut >= 0 &&*/ cut <= 4);
+        quot=QUOT10(*up, cut);
+        rem=*up-quot*powers[cut];
+      #else
+        rem=*up%powers[cut];
+        quot=*up/powers[cut];
+      #endif
+      if (rem!=0) *residue=1;
+      }
+    /* discard digit is now at bottom of quot  */
+    #if DECDPUN<=4
+      temp=(quot*6554)>>16;        /* fast /10  */
+      /* Vowels algorithm here not a win (9 instructions)  */
+      discard1=quot-X10(temp);
+      quot=temp;
+    #else
+      discard1=quot%10;
+      quot=quot/10;
+    #endif
+    /* here, discard1 is the guard digit, and residue is everything  */
+    /* else [use mapping array to accumulate residue safely]  */
+    *residue+=resmap[discard1];
+    cut++;                         /* update cut  */
+    /* here: up -> Unit of the array with bottom digit  */
+    /*       cut is the division point for each Unit  */
+    /*       quot holds the uncut high-order digits for the current unit  */
+    if (set->digits<=0) {          /* special for Quantize/Subnormal :-(  */
+      *dn->lsu=0;                  /* .. result is 0  */
+      dn->digits=1;                /* ..  */
+      }
+     else {                        /* shift to least needed  */
+      count=set->digits;           /* now digits to end up with  */
+      dn->digits=count;            /* set the new length  */
+      /* shift-copy the coefficient array to the result number  */
+      for (target=dn->lsu; ; target++) {
+        *target=(Unit)quot;
+        count-=(DECDPUN-cut);
+        if (count<=0) break;
+        up++;
+        quot=*up;
+        #if DECDPUN<=4
+          quot=QUOT10(quot, cut);
+          rem=*up-quot*powers[cut];
+        #else
+          rem=quot%powers[cut];
+          quot=quot/powers[cut];
+        #endif
+        *target=(Unit)(*target+rem*powers[DECDPUN-cut]);
+        count-=cut;
+        if (count<=0) break;
+        } /* shift-copy loop  */
+      } /* shift to least  */
+    } /* not unit boundary  */
+
+  if (*residue!=0) *status|=DEC_Inexact; /* record inexactitude  */
+  return;
+  } /* decSetCoeff  */
+
+/* ------------------------------------------------------------------ */
+/* decApplyRound -- apply pending rounding to a number                */
+/*                                                                    */
+/*   dn    is the number, with space for set->digits digits           */
+/*   set   is the context [for size and rounding mode]                */
+/*   residue indicates pending rounding, being any accumulated        */
+/*         guard and sticky information.  It may be:                  */
+/*         6-9: rounding digit is >5                                  */
+/*         5:   rounding digit is exactly half-way                    */
+/*         1-4: rounding digit is <5 and >0                           */
+/*         0:   the coefficient is exact                              */
+/*        -1:   as 1, but the hidden digits are subtractive, that     */
+/*              is, of the opposite sign to dn.  In this case the     */
+/*              coefficient must be non-0.  This case occurs when     */
+/*              subtracting a small number (which can be reduced to   */
+/*              a sticky bit); see decAddOp.                          */
+/*   status is the status accumulator, as usual                       */
+/*                                                                    */
+/* This routine applies rounding while keeping the length of the      */
+/* coefficient constant.  The exponent and status are unchanged       */
+/* except if:                                                         */
+/*                                                                    */
+/*   -- the coefficient was increased and is all nines (in which      */
+/*      case Overflow could occur, and is handled directly here so    */
+/*      the caller does not need to re-test for overflow)             */
+/*                                                                    */
+/*   -- the coefficient was decreased and becomes all nines (in which */
+/*      case Underflow could occur, and is also handled directly).    */
+/*                                                                    */
+/* All fields in dn are updated as required.                          */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+static void decApplyRound(decNumber *dn, decContext *set, Int residue,
+                          uInt *status) {
+  Int  bump;                  /* 1 if coefficient needs to be incremented  */
+                              /* -1 if coefficient needs to be decremented  */
+
+  if (residue==0) return;     /* nothing to apply  */
+
+  bump=0;                     /* assume a smooth ride  */
+
+  /* now decide whether, and how, to round, depending on mode  */
+  switch (set->round) {
+    case DEC_ROUND_05UP: {    /* round zero or five up (for reround)  */
+      /* This is the same as DEC_ROUND_DOWN unless there is a  */
+      /* positive residue and the lsd of dn is 0 or 5, in which case  */
+      /* it is bumped; when residue is <0, the number is therefore  */
+      /* bumped down unless the final digit was 1 or 6 (in which  */
+      /* case it is bumped down and then up -- a no-op)  */
+      Int lsd5=*dn->lsu%5;     /* get lsd and quintate  */
+      if (residue<0 && lsd5!=1) bump=-1;
+       else if (residue>0 && lsd5==0) bump=1;
+      /* [bump==1 could be applied directly; use common path for clarity]  */
+      break;} /* r-05  */
+
+    case DEC_ROUND_DOWN: {
+      /* no change, except if negative residue  */
+      if (residue<0) bump=-1;
+      break;} /* r-d  */
+
+    case DEC_ROUND_HALF_DOWN: {
+      if (residue>5) bump=1;
+      break;} /* r-h-d  */
+
+    case DEC_ROUND_HALF_EVEN: {
+      if (residue>5) bump=1;            /* >0.5 goes up  */
+       else if (residue==5) {           /* exactly 0.5000...  */
+        /* 0.5 goes up iff [new] lsd is odd  */
+        if (*dn->lsu & 0x01) bump=1;
+        }
+      break;} /* r-h-e  */
+
+    case DEC_ROUND_HALF_UP: {
+      if (residue>=5) bump=1;
+      break;} /* r-h-u  */
+
+    case DEC_ROUND_UP: {
+      if (residue>0) bump=1;
+      break;} /* r-u  */
+
+    case DEC_ROUND_CEILING: {
+      /* same as _UP for positive numbers, and as _DOWN for negatives  */
+      /* [negative residue cannot occur on 0]  */
+      if (decNumberIsNegative(dn)) {
+        if (residue<0) bump=-1;
+        }
+       else {
+        if (residue>0) bump=1;
+        }
+      break;} /* r-c  */
+
+    case DEC_ROUND_FLOOR: {
+      /* same as _UP for negative numbers, and as _DOWN for positive  */
+      /* [negative residue cannot occur on 0]  */
+      if (!decNumberIsNegative(dn)) {
+        if (residue<0) bump=-1;
+        }
+       else {
+        if (residue>0) bump=1;
+        }
+      break;} /* r-f  */
+
+    default: {      /* e.g., DEC_ROUND_MAX  */
+      *status|=DEC_Invalid_context;
+      #if DECTRACE || (DECCHECK && DECVERB)
+      printf("Unknown rounding mode: %d\n", set->round);
+      #endif
+      break;}
+    } /* switch  */
+
+  /* now bump the number, up or down, if need be  */
+  if (bump==0) return;                       /* no action required  */
+
+  /* Simply use decUnitAddSub unless bumping up and the number is  */
+  /* all nines.  In this special case set to 100... explicitly  */
+  /* and adjust the exponent by one (as otherwise could overflow  */
+  /* the array)  */
+  /* Similarly handle all-nines result if bumping down.  */
+  if (bump>0) {
+    Unit *up;                                /* work  */
+    uInt count=dn->digits;                   /* digits to be checked  */
+    for (up=dn->lsu; ; up++) {
+      if (count<=DECDPUN) {
+        /* this is the last Unit (the msu)  */
+        if (*up!=powers[count]-1) break;     /* not still 9s  */
+        /* here if it, too, is all nines  */
+        *up=(Unit)powers[count-1];           /* here 999 -> 100 etc.  */
+        for (up=up-1; up>=dn->lsu; up--) *up=0; /* others all to 0  */
+        dn->exponent++;                      /* and bump exponent  */
+        /* [which, very rarely, could cause Overflow...]  */
+        if ((dn->exponent+dn->digits)>set->emax+1) {
+          decSetOverflow(dn, set, status);
+          }
+        return;                              /* done  */
+        }
+      /* a full unit to check, with more to come  */
+      if (*up!=DECDPUNMAX) break;            /* not still 9s  */
+      count-=DECDPUN;
+      } /* up  */
+    } /* bump>0  */
+   else {                                    /* -1  */
+    /* here checking for a pre-bump of 1000... (leading 1, all  */
+    /* other digits zero)  */
+    Unit *up, *sup;                          /* work  */
+    uInt count=dn->digits;                   /* digits to be checked  */
+    for (up=dn->lsu; ; up++) {
+      if (count<=DECDPUN) {
+        /* this is the last Unit (the msu)  */
+        if (*up!=powers[count-1]) break;     /* not 100..  */
+        /* here if have the 1000... case  */
+        sup=up;                              /* save msu pointer  */
+        *up=(Unit)powers[count]-1;           /* here 100 in msu -> 999  */
+        /* others all to all-nines, too  */
+        for (up=up-1; up>=dn->lsu; up--) *up=(Unit)powers[DECDPUN]-1;
+        dn->exponent--;                      /* and bump exponent  */
+
+        /* iff the number was at the subnormal boundary (exponent=etiny)  */
+        /* then the exponent is now out of range, so it will in fact get  */
+        /* clamped to etiny and the final 9 dropped.  */
+        /* printf(">> emin=%d exp=%d sdig=%d\n", set->emin,  */
+        /*        dn->exponent, set->digits);  */
+        if (dn->exponent+1==set->emin-set->digits+1) {
+          if (count==1 && dn->digits==1) *sup=0;  /* here 9 -> 0[.9]  */
+           else {
+            *sup=(Unit)powers[count-1]-1;    /* here 999.. in msu -> 99..  */
+            dn->digits--;
+            }
+          dn->exponent++;
+          *status|=DEC_Underflow | DEC_Subnormal | DEC_Inexact | DEC_Rounded;
+          }
+        return;                              /* done  */
+        }
+
+      /* a full unit to check, with more to come  */
+      if (*up!=0) break;                     /* not still 0s  */
+      count-=DECDPUN;
+      } /* up  */
+
+    } /* bump<0  */
+
+  /* Actual bump needed.  Do it.  */
+  decUnitAddSub(dn->lsu, D2U(dn->digits), uarrone, 1, 0, dn->lsu, bump);
+  } /* decApplyRound  */
+
+#if DECSUBSET
+/* ------------------------------------------------------------------ */
+/* decFinish -- finish processing a number                            */
+/*                                                                    */
+/*   dn is the number                                                 */
+/*   set is the context                                               */
+/*   residue is the rounding accumulator (as in decApplyRound)        */
+/*   status is the accumulator                                        */
+/*                                                                    */
+/* This finishes off the current number by:                           */
+/*    1. If not extended:                                             */
+/*       a. Converting a zero result to clean '0'                     */
+/*       b. Reducing positive exponents to 0, if would fit in digits  */
+/*    2. Checking for overflow and subnormals (always)                */
+/* Note this is just Finalize when no subset arithmetic.              */
+/* All fields are updated as required.                                */
+/* ------------------------------------------------------------------ */
+static void decFinish(decNumber *dn, decContext *set, Int *residue,
+                      uInt *status) {
+  if (!set->extended) {
+    if ISZERO(dn) {                /* value is zero  */
+      dn->exponent=0;              /* clean exponent ..  */
+      dn->bits=0;                  /* .. and sign  */
+      return;                      /* no error possible  */
+      }
+    if (dn->exponent>=0) {         /* non-negative exponent  */
+      /* >0; reduce to integer if possible  */
+      if (set->digits >= (dn->exponent+dn->digits)) {
+        dn->digits=decShiftToMost(dn->lsu, dn->digits, dn->exponent);
+        dn->exponent=0;
+        }
+      }
+    } /* !extended  */
+
+  decFinalize(dn, set, residue, status);
+  } /* decFinish  */
+#endif
+
+/* ------------------------------------------------------------------ */
+/* decFinalize -- final check, clamp, and round of a number           */
+/*                                                                    */
+/*   dn is the number                                                 */
+/*   set is the context                                               */
+/*   residue is the rounding accumulator (as in decApplyRound)        */
+/*   status is the status accumulator                                 */
+/*                                                                    */
+/* This finishes off the current number by checking for subnormal     */
+/* results, applying any pending rounding, checking for overflow,     */
+/* and applying any clamping.                                         */
+/* Underflow and overflow conditions are raised as appropriate.       */
+/* All fields are updated as required.                                */
+/* ------------------------------------------------------------------ */
+static void decFinalize(decNumber *dn, decContext *set, Int *residue,
+                        uInt *status) {
+  Int shift;                            /* shift needed if clamping  */
+  Int tinyexp=set->emin-dn->digits+1;   /* precalculate subnormal boundary  */
+
+  /* Must be careful, here, when checking the exponent as the  */
+  /* adjusted exponent could overflow 31 bits [because it may already  */
+  /* be up to twice the expected].  */
+
+  /* First test for subnormal.  This must be done before any final  */
+  /* round as the result could be rounded to Nmin or 0.  */
+  if (dn->exponent<=tinyexp) {          /* prefilter  */
+    Int comp;
+    decNumber nmin;
+    /* A very nasty case here is dn == Nmin and residue<0  */
+    if (dn->exponent<tinyexp) {
+      /* Go handle subnormals; this will apply round if needed.  */
+      decSetSubnormal(dn, set, residue, status);
+      return;
+      }
+    /* Equals case: only subnormal if dn=Nmin and negative residue  */
+    uprv_decNumberZero(&nmin);
+    nmin.lsu[0]=1;
+    nmin.exponent=set->emin;
+    comp=decCompare(dn, &nmin, 1);                /* (signless compare)  */
+    if (comp==BADINT) {                           /* oops  */
+      *status|=DEC_Insufficient_storage;          /* abandon...  */
+      return;
+      }
+    if (*residue<0 && comp==0) {                  /* neg residue and dn==Nmin  */
+      decApplyRound(dn, set, *residue, status);   /* might force down  */
+      decSetSubnormal(dn, set, residue, status);
+      return;
+      }
+    }
+
+  /* now apply any pending round (this could raise overflow).  */
+  if (*residue!=0) decApplyRound(dn, set, *residue, status);
+
+  /* Check for overflow [redundant in the 'rare' case] or clamp  */
+  if (dn->exponent<=set->emax-set->digits+1) return;   /* neither needed  */
+
+
+  /* here when might have an overflow or clamp to do  */
+  if (dn->exponent>set->emax-dn->digits+1) {           /* too big  */
+    decSetOverflow(dn, set, status);
+    return;
+    }
+  /* here when the result is normal but in clamp range  */
+  if (!set->clamp) return;
+
+  /* here when need to apply the IEEE exponent clamp (fold-down)  */
+  shift=dn->exponent-(set->emax-set->digits+1);
+
+  /* shift coefficient (if non-zero)  */
+  if (!ISZERO(dn)) {
+    dn->digits=decShiftToMost(dn->lsu, dn->digits, shift);
+    }
+  dn->exponent-=shift;   /* adjust the exponent to match  */
+  *status|=DEC_Clamped;  /* and record the dirty deed  */
+  return;
+  } /* decFinalize  */
+
+/* ------------------------------------------------------------------ */
+/* decSetOverflow -- set number to proper overflow value              */
+/*                                                                    */
+/*   dn is the number (used for sign [only] and result)               */
+/*   set is the context [used for the rounding mode, etc.]            */
+/*   status contains the current status to be updated                 */
+/*                                                                    */
+/* This sets the sign of a number and sets its value to either        */
+/* Infinity or the maximum finite value, depending on the sign of     */
+/* dn and the rounding mode, following IEEE 754 rules.                */
+/* ------------------------------------------------------------------ */
+static void decSetOverflow(decNumber *dn, decContext *set, uInt *status) {
+  Flag needmax=0;                  /* result is maximum finite value  */
+  uByte sign=dn->bits&DECNEG;      /* clean and save sign bit  */
+
+  if (ISZERO(dn)) {                /* zero does not overflow magnitude  */
+    Int emax=set->emax;                      /* limit value  */
+    if (set->clamp) emax-=set->digits-1;     /* lower if clamping  */
+    if (dn->exponent>emax) {                 /* clamp required  */
+      dn->exponent=emax;
+      *status|=DEC_Clamped;
+      }
+    return;
+    }
+
+  uprv_decNumberZero(dn);
+  switch (set->round) {
+    case DEC_ROUND_DOWN: {
+      needmax=1;                   /* never Infinity  */
+      break;} /* r-d  */
+    case DEC_ROUND_05UP: {
+      needmax=1;                   /* never Infinity  */
+      break;} /* r-05  */
+    case DEC_ROUND_CEILING: {
+      if (sign) needmax=1;         /* Infinity if non-negative  */
+      break;} /* r-c  */
+    case DEC_ROUND_FLOOR: {
+      if (!sign) needmax=1;        /* Infinity if negative  */
+      break;} /* r-f  */
+    default: break;                /* Infinity in all other cases  */
+    }
+  if (needmax) {
+    decSetMaxValue(dn, set);
+    dn->bits=sign;                 /* set sign  */
+    }
+   else dn->bits=sign|DECINF;      /* Value is +/-Infinity  */
+  *status|=DEC_Overflow | DEC_Inexact | DEC_Rounded;
+  } /* decSetOverflow  */
+
+/* ------------------------------------------------------------------ */
+/* decSetMaxValue -- set number to +Nmax (maximum normal value)       */
+/*                                                                    */
+/*   dn is the number to set                                          */
+/*   set is the context [used for digits and emax]                    */
+/*                                                                    */
+/* This sets the number to the maximum positive value.                */
+/* ------------------------------------------------------------------ */
+static void decSetMaxValue(decNumber *dn, decContext *set) {
+  Unit *up;                        /* work  */
+  Int count=set->digits;           /* nines to add  */
+  dn->digits=count;
+  /* fill in all nines to set maximum value  */
+  for (up=dn->lsu; ; up++) {
+    if (count>DECDPUN) *up=DECDPUNMAX;  /* unit full o'nines  */
+     else {                             /* this is the msu  */
+      *up=(Unit)(powers[count]-1);
+      break;
+      }
+    count-=DECDPUN;                /* filled those digits  */
+    } /* up  */
+  dn->bits=0;                      /* + sign  */
+  dn->exponent=set->emax-set->digits+1;
+  } /* decSetMaxValue  */
+
+/* ------------------------------------------------------------------ */
+/* decSetSubnormal -- process value whose exponent is <Emin           */
+/*                                                                    */
+/*   dn is the number (used as input as well as output; it may have   */
+/*         an allowed subnormal value, which may need to be rounded)  */
+/*   set is the context [used for the rounding mode]                  */
+/*   residue is any pending residue                                   */
+/*   status contains the current status to be updated                 */
+/*                                                                    */
+/* If subset mode, set result to zero and set Underflow flags.        */
+/*                                                                    */
+/* Value may be zero with a low exponent; this does not set Subnormal */
+/* but the exponent will be clamped to Etiny.                         */
+/*                                                                    */
+/* Otherwise ensure exponent is not out of range, and round as        */
+/* necessary.  Underflow is set if the result is Inexact.             */
+/* ------------------------------------------------------------------ */
+static void decSetSubnormal(decNumber *dn, decContext *set, Int *residue,
+                            uInt *status) {
+  decContext workset;         /* work  */
+  Int        etiny, adjust;   /* ..  */
+
+  #if DECSUBSET
+  /* simple set to zero and 'hard underflow' for subset  */
+  if (!set->extended) {
+    uprv_decNumberZero(dn);
+    /* always full overflow  */
+    *status|=DEC_Underflow | DEC_Subnormal | DEC_Inexact | DEC_Rounded;
+    return;
+    }
+  #endif
+
+  /* Full arithmetic -- allow subnormals, rounded to minimum exponent  */
+  /* (Etiny) if needed  */
+  etiny=set->emin-(set->digits-1);      /* smallest allowed exponent  */
+
+  if ISZERO(dn) {                       /* value is zero  */
+    /* residue can never be non-zero here  */
+    #if DECCHECK
+      if (*residue!=0) {
+        printf("++ Subnormal 0 residue %ld\n", (LI)*residue);
+        *status|=DEC_Invalid_operation;
+        }
+    #endif
+    if (dn->exponent<etiny) {           /* clamp required  */
+      dn->exponent=etiny;
+      *status|=DEC_Clamped;
+      }
+    return;
+    }
+
+  *status|=DEC_Subnormal;               /* have a non-zero subnormal  */
+  adjust=etiny-dn->exponent;            /* calculate digits to remove  */
+  if (adjust<=0) {                      /* not out of range; unrounded  */
+    /* residue can never be non-zero here, except in the Nmin-residue  */
+    /* case (which is a subnormal result), so can take fast-path here  */
+    /* it may already be inexact (from setting the coefficient)  */
+    if (*status&DEC_Inexact) *status|=DEC_Underflow;
+    return;
+    }
+
+  /* adjust>0, so need to rescale the result so exponent becomes Etiny  */
+  /* [this code is similar to that in rescale]  */
+  workset=*set;                         /* clone rounding, etc.  */
+  workset.digits=dn->digits-adjust;     /* set requested length  */
+  workset.emin-=adjust;                 /* and adjust emin to match  */
+  /* [note that the latter can be <1, here, similar to Rescale case]  */
+  decSetCoeff(dn, &workset, dn->lsu, dn->digits, residue, status);
+  decApplyRound(dn, &workset, *residue, status);
+
+  /* Use 754 default rule: Underflow is set iff Inexact  */
+  /* [independent of whether trapped]  */
+  if (*status&DEC_Inexact) *status|=DEC_Underflow;
+
+  /* if rounded up a 999s case, exponent will be off by one; adjust  */
+  /* back if so [it will fit, because it was shortened earlier]  */
+  if (dn->exponent>etiny) {
+    dn->digits=decShiftToMost(dn->lsu, dn->digits, 1);
+    dn->exponent--;                     /* (re)adjust the exponent.  */
+    }
+
+  /* if rounded to zero, it is by definition clamped...  */
+  if (ISZERO(dn)) *status|=DEC_Clamped;
+  } /* decSetSubnormal  */
+
+/* ------------------------------------------------------------------ */
+/* decCheckMath - check entry conditions for a math function          */
+/*                                                                    */
+/*   This checks the context and the operand                          */
+/*                                                                    */
+/*   rhs is the operand to check                                      */
+/*   set is the context to check                                      */
+/*   status is unchanged if both are good                             */
+/*                                                                    */
+/* returns non-zero if status is changed, 0 otherwise                 */
+/*                                                                    */
+/* Restrictions enforced:                                             */
+/*                                                                    */
+/*   digits, emax, and -emin in the context must be less than         */
+/*   DEC_MAX_MATH (999999), and A must be within these bounds if      */
+/*   non-zero.  Invalid_operation is set in the status if a           */
+/*   restriction is violated.                                         */
+/* ------------------------------------------------------------------ */
+static uInt decCheckMath(const decNumber *rhs, decContext *set,
+                         uInt *status) {
+  uInt save=*status;                         /* record  */
+  if (set->digits>DEC_MAX_MATH
+   || set->emax>DEC_MAX_MATH
+   || -set->emin>DEC_MAX_MATH) *status|=DEC_Invalid_context;
+   else if ((rhs->digits>DEC_MAX_MATH
+     || rhs->exponent+rhs->digits>DEC_MAX_MATH+1
+     || rhs->exponent+rhs->digits<2*(1-DEC_MAX_MATH))
+     && !ISZERO(rhs)) *status|=DEC_Invalid_operation;
+  return (*status!=save);
+  } /* decCheckMath  */
+
+/* ------------------------------------------------------------------ */
+/* decGetInt -- get integer from a number                             */
+/*                                                                    */
+/*   dn is the number [which will not be altered]                     */
+/*                                                                    */
+/*   returns one of:                                                  */
+/*     BADINT if there is a non-zero fraction                         */
+/*     the converted integer                                          */
+/*     BIGEVEN if the integer is even and magnitude > 2*10**9         */
+/*     BIGODD  if the integer is odd  and magnitude > 2*10**9         */
+/*                                                                    */
+/* This checks and gets a whole number from the input decNumber.      */
+/* The sign can be determined from dn by the caller when BIGEVEN or   */
+/* BIGODD is returned.                                                */
+/* ------------------------------------------------------------------ */
+static Int decGetInt(const decNumber *dn) {
+  Int  theInt;                          /* result accumulator  */
+  const Unit *up;                       /* work  */
+  Int  got;                             /* digits (real or not) processed  */
+  Int  ilength=dn->digits+dn->exponent; /* integral length  */
+  Flag neg=decNumberIsNegative(dn);     /* 1 if -ve  */
+
+  /* The number must be an integer that fits in 10 digits  */
+  /* Assert, here, that 10 is enough for any rescale Etiny  */
+  #if DEC_MAX_EMAX > 999999999
+    #error GetInt may need updating [for Emax]
+  #endif
+  #if DEC_MIN_EMIN < -999999999
+    #error GetInt may need updating [for Emin]
+  #endif
+  if (ISZERO(dn)) return 0;             /* zeros are OK, with any exponent  */
+
+  up=dn->lsu;                           /* ready for lsu  */
+  theInt=0;                             /* ready to accumulate  */
+  if (dn->exponent>=0) {                /* relatively easy  */
+    /* no fractional part [usual]; allow for positive exponent  */
+    got=dn->exponent;
+    }
+   else { /* -ve exponent; some fractional part to check and discard  */
+    Int count=-dn->exponent;            /* digits to discard  */
+    /* spin up whole units until reach the Unit with the unit digit  */
+    for (; count>=DECDPUN; up++) {
+      if (*up!=0) return BADINT;        /* non-zero Unit to discard  */
+      count-=DECDPUN;
+      }
+    if (count==0) got=0;                /* [a multiple of DECDPUN]  */
+     else {                             /* [not multiple of DECDPUN]  */
+      Int rem;                          /* work  */
+      /* slice off fraction digits and check for non-zero  */
+      #if DECDPUN<=4
+        theInt=QUOT10(*up, count);
+        rem=*up-theInt*powers[count];
+      #else
+        rem=*up%powers[count];          /* slice off discards  */
+        theInt=*up/powers[count];
+      #endif
+      if (rem!=0) return BADINT;        /* non-zero fraction  */
+      /* it looks good  */
+      got=DECDPUN-count;                /* number of digits so far  */
+      up++;                             /* ready for next  */
+      }
+    }
+  /* now it's known there's no fractional part  */
+
+  /* tricky code now, to accumulate up to 9.3 digits  */
+  if (got==0) {theInt=*up; got+=DECDPUN; up++;} /* ensure lsu is there  */
+
+  if (ilength<11) {
+    Int save=theInt;
+    /* collect any remaining unit(s)  */
+    for (; got<ilength; up++) {
+      theInt+=*up*powers[got];
+      got+=DECDPUN;
+      }
+    if (ilength==10) {                  /* need to check for wrap  */
+      if (theInt/(Int)powers[got-DECDPUN]!=(Int)*(up-1)) ilength=11;
+         /* [that test also disallows the BADINT result case]  */
+       else if (neg && theInt>1999999997) ilength=11;
+       else if (!neg && theInt>999999999) ilength=11;
+      if (ilength==11) theInt=save;     /* restore correct low bit  */
+      }
+    }
+
+  if (ilength>10) {                     /* too big  */
+    if (theInt&1) return BIGODD;        /* bottom bit 1  */
+    return BIGEVEN;                     /* bottom bit 0  */
+    }
+
+  if (neg) theInt=-theInt;              /* apply sign  */
+  return theInt;
+  } /* decGetInt  */
+
+/* ------------------------------------------------------------------ */
+/* decDecap -- decapitate the coefficient of a number                 */
+/*                                                                    */
+/*   dn   is the number to be decapitated                             */
+/*   drop is the number of digits to be removed from the left of dn;  */
+/*     this must be <= dn->digits (if equal, the coefficient is       */
+/*     set to 0)                                                      */
+/*                                                                    */
+/* Returns dn; dn->digits will be <= the initial digits less drop     */
+/* (after removing drop digits there may be leading zero digits       */
+/* which will also be removed).  Only dn->lsu and dn->digits change.  */
+/* ------------------------------------------------------------------ */
+static decNumber *decDecap(decNumber *dn, Int drop) {
+  Unit *msu;                            /* -> target cut point  */
+  Int cut;                              /* work  */
+  if (drop>=dn->digits) {               /* losing the whole thing  */
+    #if DECCHECK
+    if (drop>dn->digits)
+      printf("decDecap called with drop>digits [%ld>%ld]\n",
+             (LI)drop, (LI)dn->digits);
+    #endif
+    dn->lsu[0]=0;
+    dn->digits=1;
+    return dn;
+    }
+  msu=dn->lsu+D2U(dn->digits-drop)-1;   /* -> likely msu  */
+  cut=MSUDIGITS(dn->digits-drop);       /* digits to be in use in msu  */
+  if (cut!=DECDPUN) *msu%=powers[cut];  /* clear left digits  */
+  /* that may have left leading zero digits, so do a proper count...  */
+  dn->digits=decGetDigits(dn->lsu, msu-dn->lsu+1);
+  return dn;
+  } /* decDecap  */
+
+/* ------------------------------------------------------------------ */
+/* decBiStr -- compare string with pairwise options                   */
+/*                                                                    */
+/*   targ is the string to compare                                    */
+/*   str1 is one of the strings to compare against (length may be 0)  */
+/*   str2 is the other; it must be the same length as str1            */
+/*                                                                    */
+/*   returns 1 if strings compare equal, (that is, it is the same     */
+/*   length as str1 and str2, and each character of targ is in either */
+/*   str1 or str2 in the corresponding position), or 0 otherwise      */
+/*                                                                    */
+/* This is used for generic caseless compare, including the awkward   */
+/* case of the Turkish dotted and dotless Is.  Use as (for example):  */
+/*   if (decBiStr(test, "mike", "MIKE")) ...                          */
+/* ------------------------------------------------------------------ */
+static Flag decBiStr(const char *targ, const char *str1, const char *str2) {
+  for (;;targ++, str1++, str2++) {
+    if (*targ!=*str1 && *targ!=*str2) return 0;
+    /* *targ has a match in one (or both, if terminator)  */
+    if (*targ=='\0') break;
+    } /* forever  */
+  return 1;
+  } /* decBiStr  */
+
+/* ------------------------------------------------------------------ */
+/* decNaNs -- handle NaN operand or operands                          */
+/*                                                                    */
+/*   res     is the result number                                     */
+/*   lhs     is the first operand                                     */
+/*   rhs     is the second operand, or NULL if none                   */
+/*   context is used to limit payload length                          */
+/*   status  contains the current status                              */
+/*   returns res in case convenient                                   */
+/*                                                                    */
+/* Called when one or both operands is a NaN, and propagates the      */
+/* appropriate result to res.  When an sNaN is found, it is changed   */
+/* to a qNaN and Invalid operation is set.                            */
+/* ------------------------------------------------------------------ */
+static decNumber * decNaNs(decNumber *res, const decNumber *lhs,
+                           const decNumber *rhs, decContext *set,
+                           uInt *status) {
+  /* This decision tree ends up with LHS being the source pointer,  */
+  /* and status updated if need be  */
+  if (lhs->bits & DECSNAN)
+    *status|=DEC_Invalid_operation | DEC_sNaN;
+   else if (rhs==NULL);
+   else if (rhs->bits & DECSNAN) {
+    lhs=rhs;
+    *status|=DEC_Invalid_operation | DEC_sNaN;
+    }
+   else if (lhs->bits & DECNAN);
+   else lhs=rhs;
+
+  /* propagate the payload  */
+  if (lhs->digits<=set->digits) uprv_decNumberCopy(res, lhs); /* easy  */
+   else { /* too long  */
+    const Unit *ul;
+    Unit *ur, *uresp1;
+    /* copy safe number of units, then decapitate  */
+    res->bits=lhs->bits;                /* need sign etc.  */
+    uresp1=res->lsu+D2U(set->digits);
+    for (ur=res->lsu, ul=lhs->lsu; ur<uresp1; ur++, ul++) *ur=*ul;
+    res->digits=D2U(set->digits)*DECDPUN;
+    /* maybe still too long  */
+    if (res->digits>set->digits) decDecap(res, res->digits-set->digits);
+    }
+
+  res->bits&=~DECSNAN;        /* convert any sNaN to NaN, while  */
+  res->bits|=DECNAN;          /* .. preserving sign  */
+  res->exponent=0;            /* clean exponent  */
+                              /* [coefficient was copied/decapitated]  */
+  return res;
+  } /* decNaNs  */
+
+/* ------------------------------------------------------------------ */
+/* decStatus -- apply non-zero status                                 */
+/*                                                                    */
+/*   dn     is the number to set if error                             */
+/*   status contains the current status (not yet in context)          */
+/*   set    is the context                                            */
+/*                                                                    */
+/* If the status is an error status, the number is set to a NaN,      */
+/* unless the error was an overflow, divide-by-zero, or underflow,    */
+/* in which case the number will have already been set.               */
+/*                                                                    */
+/* The context status is then updated with the new status.  Note that */
+/* this may raise a signal, so control may never return from this     */
+/* routine (hence resources must be recovered before it is called).   */
+/* ------------------------------------------------------------------ */
+static void decStatus(decNumber *dn, uInt status, decContext *set) {
+  if (status & DEC_NaNs) {              /* error status -> NaN  */
+    /* if cause was an sNaN, clear and propagate [NaN is already set up]  */
+    if (status & DEC_sNaN) status&=~DEC_sNaN;
+     else {
+      uprv_decNumberZero(dn);                /* other error: clean throughout  */
+      dn->bits=DECNAN;                  /* and make a quiet NaN  */
+      }
+    }
+  uprv_decContextSetStatus(set, status);     /* [may not return]  */
+  return;
+  } /* decStatus  */
+
+/* ------------------------------------------------------------------ */
+/* decGetDigits -- count digits in a Units array                      */
+/*                                                                    */
+/*   uar is the Unit array holding the number (this is often an       */
+/*          accumulator of some sort)                                 */
+/*   len is the length of the array in units [>=1]                    */
+/*                                                                    */
+/*   returns the number of (significant) digits in the array          */
+/*                                                                    */
+/* All leading zeros are excluded, except the last if the array has   */
+/* only zero Units.                                                   */
+/* ------------------------------------------------------------------ */
+/* This may be called twice during some operations.  */
+static Int decGetDigits(Unit *uar, Int len) {
+  Unit *up=uar+(len-1);            /* -> msu  */
+  Int  digits=(len-1)*DECDPUN+1;   /* possible digits excluding msu  */
+  #if DECDPUN>4
+  uInt const *pow;                 /* work  */
+  #endif
+                                   /* (at least 1 in final msu)  */
+  #if DECCHECK
+  if (len<1) printf("decGetDigits called with len<1 [%ld]\n", (LI)len);
+  #endif
+
+  for (; up>=uar; up--) {
+    if (*up==0) {                  /* unit is all 0s  */
+      if (digits==1) break;        /* a zero has one digit  */
+      digits-=DECDPUN;             /* adjust for 0 unit  */
+      continue;}
+    /* found the first (most significant) non-zero Unit  */
+    #if DECDPUN>1                  /* not done yet  */
+    if (*up<10) break;             /* is 1-9  */
+    digits++;
+    #if DECDPUN>2                  /* not done yet  */
+    if (*up<100) break;            /* is 10-99  */
+    digits++;
+    #if DECDPUN>3                  /* not done yet  */
+    if (*up<1000) break;           /* is 100-999  */
+    digits++;
+    #if DECDPUN>4                  /* count the rest ...  */
+    for (pow=&powers[4]; *up>=*pow; pow++) digits++;
+    #endif
+    #endif
+    #endif
+    #endif
+    break;
+    } /* up  */
+  return digits;
+  } /* decGetDigits  */
+
+#if DECTRACE | DECCHECK
+/* ------------------------------------------------------------------ */
+/* decNumberShow -- display a number [debug aid]                      */
+/*   dn is the number to show                                         */
+/*                                                                    */
+/* Shows: sign, exponent, coefficient (msu first), digits             */
+/*    or: sign, special-value                                         */
+/* ------------------------------------------------------------------ */
+/* this is public so other modules can use it  */
+void uprv_decNumberShow(const decNumber *dn) {
+  const Unit *up;                  /* work  */
+  uInt u, d;                       /* ..  */
+  Int cut;                         /* ..  */
+  char isign='+';                  /* main sign  */
+  if (dn==NULL) {
+    printf("NULL\n");
+    return;}
+  if (decNumberIsNegative(dn)) isign='-';
+  printf(" >> %c ", isign);
+  if (dn->bits&DECSPECIAL) {       /* Is a special value  */
+    if (decNumberIsInfinite(dn)) printf("Infinity");
+     else {                                  /* a NaN  */
+      if (dn->bits&DECSNAN) printf("sNaN");  /* signalling NaN  */
+       else printf("NaN");
+      }
+    /* if coefficient and exponent are 0, no more to do  */
+    if (dn->exponent==0 && dn->digits==1 && *dn->lsu==0) {
+      printf("\n");
+      return;}
+    /* drop through to report other information  */
+    printf(" ");
+    }
+
+  /* now carefully display the coefficient  */
+  up=dn->lsu+D2U(dn->digits)-1;         /* msu  */
+  printf("%ld", (LI)*up);
+  for (up=up-1; up>=dn->lsu; up--) {
+    u=*up;
+    printf(":");
+    for (cut=DECDPUN-1; cut>=0; cut--) {
+      d=u/powers[cut];
+      u-=d*powers[cut];
+      printf("%ld", (LI)d);
+      } /* cut  */
+    } /* up  */
+  if (dn->exponent!=0) {
+    char esign='+';
+    if (dn->exponent<0) esign='-';
+    printf(" E%c%ld", esign, (LI)abs(dn->exponent));
+    }
+  printf(" [%ld]\n", (LI)dn->digits);
+  } /* decNumberShow  */
+#endif
+
+#if DECTRACE || DECCHECK
+/* ------------------------------------------------------------------ */
+/* decDumpAr -- display a unit array [debug/check aid]                */
+/*   name is a single-character tag name                              */
+/*   ar   is the array to display                                     */
+/*   len  is the length of the array in Units                         */
+/* ------------------------------------------------------------------ */
+static void decDumpAr(char name, const Unit *ar, Int len) {
+  Int i;
+  const char *spec;
+  #if DECDPUN==9
+    spec="%09d ";
+  #elif DECDPUN==8
+    spec="%08d ";
+  #elif DECDPUN==7
+    spec="%07d ";
+  #elif DECDPUN==6
+    spec="%06d ";
+  #elif DECDPUN==5
+    spec="%05d ";
+  #elif DECDPUN==4
+    spec="%04d ";
+  #elif DECDPUN==3
+    spec="%03d ";
+  #elif DECDPUN==2
+    spec="%02d ";
+  #else
+    spec="%d ";
+  #endif
+  printf("  :%c: ", name);
+  for (i=len-1; i>=0; i--) {
+    if (i==len-1) printf("%ld ", (LI)ar[i]);
+     else printf(spec, ar[i]);
+    }
+  printf("\n");
+  return;}
+#endif
+
+#if DECCHECK
+/* ------------------------------------------------------------------ */
+/* decCheckOperands -- check operand(s) to a routine                  */
+/*   res is the result structure (not checked; it will be set to      */
+/*          quiet NaN if error found (and it is not NULL))            */
+/*   lhs is the first operand (may be DECUNRESU)                      */
+/*   rhs is the second (may be DECUNUSED)                             */
+/*   set is the context (may be DECUNCONT)                            */
+/*   returns 0 if both operands, and the context are clean, or 1      */
+/*     otherwise (in which case the context will show an error,       */
+/*     unless NULL).  Note that res is not cleaned; caller should     */
+/*     handle this so res=NULL case is safe.                          */
+/* The caller is expected to abandon immediately if 1 is returned.    */
+/* ------------------------------------------------------------------ */
+static Flag decCheckOperands(decNumber *res, const decNumber *lhs,
+                             const decNumber *rhs, decContext *set) {
+  Flag bad=0;
+  if (set==NULL) {                 /* oops; hopeless  */
+    #if DECTRACE || DECVERB
+    printf("Reference to context is NULL.\n");
+    #endif
+    bad=1;
+    return 1;}
+   else if (set!=DECUNCONT
+     && (set->digits<1 || set->round>=DEC_ROUND_MAX)) {
+    bad=1;
+    #if DECTRACE || DECVERB
+    printf("Bad context [digits=%ld round=%ld].\n",
+           (LI)set->digits, (LI)set->round);
+    #endif
+    }
+   else {
+    if (res==NULL) {
+      bad=1;
+      #if DECTRACE
+      /* this one not DECVERB as standard tests include NULL  */
+      printf("Reference to result is NULL.\n");
+      #endif
+      }
+    if (!bad && lhs!=DECUNUSED) bad=(decCheckNumber(lhs));
+    if (!bad && rhs!=DECUNUSED) bad=(decCheckNumber(rhs));
+    }
+  if (bad) {
+    if (set!=DECUNCONT) uprv_decContextSetStatus(set, DEC_Invalid_operation);
+    if (res!=DECUNRESU && res!=NULL) {
+      uprv_decNumberZero(res);
+      res->bits=DECNAN;       /* qNaN  */
+      }
+    }
+  return bad;
+  } /* decCheckOperands  */
+
+/* ------------------------------------------------------------------ */
+/* decCheckNumber -- check a number                                   */
+/*   dn is the number to check                                        */
+/*   returns 0 if the number is clean, or 1 otherwise                 */
+/*                                                                    */
+/* The number is considered valid if it could be a result from some   */
+/* operation in some valid context.                                   */
+/* ------------------------------------------------------------------ */
+static Flag decCheckNumber(const decNumber *dn) {
+  const Unit *up;             /* work  */
+  uInt maxuint;               /* ..  */
+  Int ae, d, digits;          /* ..  */
+  Int emin, emax;             /* ..  */
+
+  if (dn==NULL) {             /* hopeless  */
+    #if DECTRACE
+    /* this one not DECVERB as standard tests include NULL  */
+    printf("Reference to decNumber is NULL.\n");
+    #endif
+    return 1;}
+
+  /* check special values  */
+  if (dn->bits & DECSPECIAL) {
+    if (dn->exponent!=0) {
+      #if DECTRACE || DECVERB
+      printf("Exponent %ld (not 0) for a special value [%02x].\n",
+             (LI)dn->exponent, dn->bits);
+      #endif
+      return 1;}
+
+    /* 2003.09.08: NaNs may now have coefficients, so next tests Inf only  */
+    if (decNumberIsInfinite(dn)) {
+      if (dn->digits!=1) {
+        #if DECTRACE || DECVERB
+        printf("Digits %ld (not 1) for an infinity.\n", (LI)dn->digits);
+        #endif
+        return 1;}
+      if (*dn->lsu!=0) {
+        #if DECTRACE || DECVERB
+        printf("LSU %ld (not 0) for an infinity.\n", (LI)*dn->lsu);
+        #endif
+        decDumpAr('I', dn->lsu, D2U(dn->digits));
+        return 1;}
+      } /* Inf  */
+    /* 2002.12.26: negative NaNs can now appear through proposed IEEE  */
+    /*             concrete formats (decimal64, etc.).  */
+    return 0;
+    }
+
+  /* check the coefficient  */
+  if (dn->digits<1 || dn->digits>DECNUMMAXP) {
+    #if DECTRACE || DECVERB
+    printf("Digits %ld in number.\n", (LI)dn->digits);
+    #endif
+    return 1;}
+
+  d=dn->digits;
+
+  for (up=dn->lsu; d>0; up++) {
+    if (d>DECDPUN) maxuint=DECDPUNMAX;
+     else {                   /* reached the msu  */
+      maxuint=powers[d]-1;
+      if (dn->digits>1 && *up<powers[d-1]) {
+        #if DECTRACE || DECVERB
+        printf("Leading 0 in number.\n");
+        uprv_decNumberShow(dn);
+        #endif
+        return 1;}
+      }
+    if (*up>maxuint) {
+      #if DECTRACE || DECVERB
+      printf("Bad Unit [%08lx] in %ld-digit number at offset %ld [maxuint %ld].\n",
+              (LI)*up, (LI)dn->digits, (LI)(up-dn->lsu), (LI)maxuint);
+      #endif
+      return 1;}
+    d-=DECDPUN;
+    }
+
+  /* check the exponent.  Note that input operands can have exponents  */
+  /* which are out of the set->emin/set->emax and set->digits range  */
+  /* (just as they can have more digits than set->digits).  */
+  ae=dn->exponent+dn->digits-1;    /* adjusted exponent  */
+  emax=DECNUMMAXE;
+  emin=DECNUMMINE;
+  digits=DECNUMMAXP;
+  if (ae<emin-(digits-1)) {
+    #if DECTRACE || DECVERB
+    printf("Adjusted exponent underflow [%ld].\n", (LI)ae);
+    uprv_decNumberShow(dn);
+    #endif
+    return 1;}
+  if (ae>+emax) {
+    #if DECTRACE || DECVERB
+    printf("Adjusted exponent overflow [%ld].\n", (LI)ae);
+    uprv_decNumberShow(dn);
+    #endif
+    return 1;}
+
+  return 0;              /* it's OK  */
+  } /* decCheckNumber  */
+
+/* ------------------------------------------------------------------ */
+/* decCheckInexact -- check a normal finite inexact result has digits */
+/*   dn is the number to check                                        */
+/*   set is the context (for status and precision)                    */
+/*   sets Invalid operation, etc., if some digits are missing         */
+/* [this check is not made for DECSUBSET compilation or when          */
+/* subnormal is not set]                                              */
+/* ------------------------------------------------------------------ */
+static void decCheckInexact(const decNumber *dn, decContext *set) {
+  #if !DECSUBSET && DECEXTFLAG
+    if ((set->status & (DEC_Inexact|DEC_Subnormal))==DEC_Inexact
+     && (set->digits!=dn->digits) && !(dn->bits & DECSPECIAL)) {
+      #if DECTRACE || DECVERB
+      printf("Insufficient digits [%ld] on normal Inexact result.\n",
+             (LI)dn->digits);
+      uprv_decNumberShow(dn);
+      #endif
+      uprv_decContextSetStatus(set, DEC_Invalid_operation);
+      }
+  #else
+    /* next is a noop for quiet compiler  */
+    if (dn!=NULL && dn->digits==0) set->status|=DEC_Invalid_operation;
+  #endif
+  return;
+  } /* decCheckInexact  */
+#endif
+
+#if DECALLOC
+#undef malloc
+#undef free
+/* ------------------------------------------------------------------ */
+/* decMalloc -- accountable allocation routine                        */
+/*   n is the number of bytes to allocate                             */
+/*                                                                    */
+/* Semantics is the same as the stdlib malloc routine, but bytes      */
+/* allocated are accounted for globally, and corruption fences are    */
+/* added before and after the 'actual' storage.                       */
+/* ------------------------------------------------------------------ */
+/* This routine allocates storage with an extra twelve bytes; 8 are   */
+/* at the start and hold:                                             */
+/*   0-3 the original length requested                                */
+/*   4-7 buffer corruption detection fence (DECFENCE, x4)             */
+/* The 4 bytes at the end also hold a corruption fence (DECFENCE, x4) */
+/* ------------------------------------------------------------------ */
+static void *decMalloc(size_t n) {
+  uInt  size=n+12;                 /* true size  */
+  void  *alloc;                    /* -> allocated storage  */
+  uByte *b, *b0;                   /* work  */
+  uInt  uiwork;                    /* for macros  */
+
+  alloc=malloc(size);              /* -> allocated storage  */
+  if (alloc==NULL) return NULL;    /* out of strorage  */
+  b0=(uByte *)alloc;               /* as bytes  */
+  decAllocBytes+=n;                /* account for storage  */
+  UBFROMUI(alloc, n);              /* save n  */
+  /* printf(" alloc ++ dAB: %ld (%ld)\n", (LI)decAllocBytes, (LI)n);  */
+  for (b=b0+4; b<b0+8; b++) *b=DECFENCE;
+  for (b=b0+n+8; b<b0+n+12; b++) *b=DECFENCE;
+  return b0+8;                     /* -> play area  */
+  } /* decMalloc  */
+
+/* ------------------------------------------------------------------ */
+/* decFree -- accountable free routine                                */
+/*   alloc is the storage to free                                     */
+/*                                                                    */
+/* Semantics is the same as the stdlib malloc routine, except that    */
+/* the global storage accounting is updated and the fences are        */
+/* checked to ensure that no routine has written 'out of bounds'.     */
+/* ------------------------------------------------------------------ */
+/* This routine first checks that the fences have not been corrupted. */
+/* It then frees the storage using the 'truw' storage address (that   */
+/* is, offset by 8).                                                  */
+/* ------------------------------------------------------------------ */
+static void decFree(void *alloc) {
+  uInt  n;                         /* original length  */
+  uByte *b, *b0;                   /* work  */
+  uInt  uiwork;                    /* for macros  */
+
+  if (alloc==NULL) return;         /* allowed; it's a nop  */
+  b0=(uByte *)alloc;               /* as bytes  */
+  b0-=8;                           /* -> true start of storage  */
+  n=UBTOUI(b0);                    /* lift length  */
+  for (b=b0+4; b<b0+8; b++) if (*b!=DECFENCE)
+    printf("=== Corrupt byte [%02x] at offset %d from %ld ===\n", *b,
+           b-b0-8, (LI)b0);
+  for (b=b0+n+8; b<b0+n+12; b++) if (*b!=DECFENCE)
+    printf("=== Corrupt byte [%02x] at offset +%d from %ld, n=%ld ===\n", *b,
+           b-b0-8, (LI)b0, (LI)n);
+  free(b0);                        /* drop the storage  */
+  decAllocBytes-=n;                /* account for storage  */
+  /* printf(" free -- dAB: %d (%d)\n", decAllocBytes, -n);  */
+  } /* decFree  */
+#define malloc(a) decMalloc(a)
+#define free(a) decFree(a)
+#endif
index 7182e78..b83cdb9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /* ------------------------------------------------------------------ */
 /* Decimal Number arithmetic module header                            */
index a45b7d8..294d5f5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /* ------------------------------------------------------------------ */
 /* decNumber package local type, tuning, and macro definitions        */
index 07cdd79..78c01f2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 63ae50c..719f0aa 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b07bcdd..af1ccd2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fcb5516..c8998f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 8cecc8c..67bc96d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 613c2dd..f03143a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -49,7 +49,6 @@
 #include "unicode/utf16.h"
 #include "unicode/numsys.h"
 #include "unicode/localpointer.h"
-#include "unicode/ustring.h"
 #include "uresimp.h"
 #include "ucurrimp.h"
 #include "charstr.h"
index 4b74396..1bf742d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 76e8053..82f154e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 3a02e46..bb96fc7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 005c36f..a1a1006 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 487d9a3..716ab4a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 7c4772b..65a2313 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 675b5c4..62569d5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 54a54c3..d92d425 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 67f8f2b..01a9813 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 131d76b..934fd4b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fd0e354..94dca9c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 55ced94..8e1c83f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 4d7c3f4..ab5b557 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a51ebc4..45cb49a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index a4058c6..9b01bad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6dd4380..c6e4b64 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -1368,7 +1368,7 @@ DateFormatSymbols::setZoneStrings(const UnicodeString* const *strings, int32_t r
 
 //------------------------------------------------------
 
-const char16_t * U_EXPORT2
+const UChar * U_EXPORT2
 DateFormatSymbols::getPatternUChars(void)
 {
     return gPatternChars;
index 36fa173..d0dc344 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 743b534..48068d3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*******************************************************************************
 * Copyright (C) 2008-2016, International Business Machines Corporation and
index c863a68..07129db 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*******************************************************************************
 * Copyright (C) 2008-2016, International Business Machines Corporation and
index 5ce3630..17e7ec7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -475,7 +475,7 @@ struct AllowedHourFormatsSink : public ResourceSink {
         }
     }
 
-    AllowedHourFormat getHourFormatFromUnicodeString(const UnicodeString &s) {
+    AllowedHourFormat getHourFormatFromUnicodeString(UnicodeString s) {
         if (s.length() == 1) {
             if (s[0] == LOW_H) { return ALLOWED_HOUR_FORMAT_h; }
             if (s[0] == CAP_H) { return ALLOWED_HOUR_FORMAT_H; }
index 38afd5f..00a7075 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -15,9 +15,6 @@
 #define __DTPTNGEN_IMPL_H__
 
 #include "unicode/udatpg.h"
-
-#include "unicode/strenum.h"
-#include "unicode/unistr.h"
 #include "uvector.h"
 
 // TODO(claireho): Split off Builder class.
index 6847f1d..41b61ae 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 900bed7..9be926f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 60ecc74..7afea1b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 995dd6a..10735ad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index acd7c3c..723b32c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c2a398d..4c736b4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9a64792..ff4deae 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 12cea9a..7003a18 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -12,8 +12,6 @@
 
 #include "digitlst.h"
 
-#if !UCONFIG_NO_FORMATTING
-
 U_NAMESPACE_BEGIN
 
 /**
@@ -37,5 +35,4 @@ static const int64_t MAX_INT64_IN_DOUBLE = 0x001FFFFFFFFFFFFFLL;
 
 U_NAMESPACE_END
 
-#endif // #if !UCONFIG_NO_FORMATTING
 #endif
index e5abbe9..e951b30 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index abcec97..6a004a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f3ac12c..b1fe42b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 47d4b3f..eb405f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 01c8754..4af889d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a835d5b..954150c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 9a25dd8..e830f89 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0485cca..1108222 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e62044b..1b31360 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index b307416..27303a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index c025be4..7bba33f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index bde6466..e0f291b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index d54cff5..869d3a9 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuin59.dll</OutputFile>
+      <OutputFile>..\..\bin\icuin58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\icuin.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuin59d.dll</OutputFile>
+      <OutputFile>..\..\bin\icuin58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\icuind.pdb</ProgramDatabaseFile>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuin59.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuin58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\icuin.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuin59d.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuin58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\icuind.pdb</ProgramDatabaseFile>
     <ClCompile Include="datefmt.cpp" />
     <ClCompile Include="dayperiodrules.cpp" />
     <ClCompile Include="dcfmtsym.cpp" />
-    <ClCompile Include="decContext.cpp" />
+    <ClCompile Include="decContext.c" />
     <ClCompile Include="decfmtst.cpp" />
     <ClCompile Include="decimalformatpattern.cpp" />
     <ClCompile Include="decimfmt.cpp" />
-    <ClCompile Include="decNumber.cpp" />
+    <ClCompile Include="decNumber.c" />
     <ClCompile Include="digitlst.cpp" />
     <ClCompile Include="dtfmtsym.cpp" />
     <ClCompile Include="dtitvfmt.cpp" />
     <ClCompile Include="udateintervalformat.cpp" />
     <ClCompile Include="udatpg.cpp" />
     <ClCompile Include="ufieldpositer.cpp" />
-    <ClCompile Include="ulocdata.cpp" />
+    <ClCompile Include="ulocdata.c" />
     <ClCompile Include="umsg.cpp" />
     <ClCompile Include="unum.cpp" />
     <ClCompile Include="unumsys.cpp" />
     <ClCompile Include="upluralrules.cpp" />
     <ClCompile Include="utf16collationiterator.cpp" />
     <ClCompile Include="utf8collationiterator.cpp" />
-    <ClCompile Include="utmscale.cpp" />
+    <ClCompile Include="utmscale.c" />
     <ClCompile Include="vtzone.cpp" />
     <ClCompile Include="vzone.cpp" />
     <ClCompile Include="windtfmt.cpp">
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index c7b477c..57bf52f 100644 (file)
     <ClCompile Include="dcfmtsym.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="decContext.cpp">
+    <ClCompile Include="decContext.c">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="decfmtst.cpp">
     <ClCompile Include="decimfmt.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="decNumber.cpp">
+    <ClCompile Include="decNumber.c">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="digitlst.cpp">
     <ClCompile Include="ufieldpositer.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="ulocdata.cpp">
+    <ClCompile Include="ulocdata.c">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="umsg.cpp">
     <ClCompile Include="upluralrules.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="utmscale.cpp">
+    <ClCompile Include="utmscale.c">
       <Filter>formatting</Filter>
     </ClCompile>
     <ClCompile Include="vtzone.cpp">
index 278f9ef..3033c4f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2003-2014, International Business Machines Corporation
index b5e0f96..12d46c7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index 2d4f8a3..c78828f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 8edc561..efffb61 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 4fd0e07..123b245 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 062733e..7f6faed 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 17b4e07..93ab800 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f05b2ac..6aef7ea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 801dbe0..b5a9156 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -26,7 +26,6 @@
 #include "unicode/decimfmt.h"
 #include "uresimp.h"
 #include "unicode/ures.h"
-#include "unicode/ustring.h"
 #include "ureslocs.h"
 #include "cstring.h"
 #include "mutex.h"
@@ -42,7 +41,7 @@
 #include "standardplural.h"
 #include "unifiedcache.h"
 
-#define MEAS_UNIT_COUNT 135
+#define MEAS_UNIT_COUNT 138
 #define WIDTH_INDEX_COUNT (UMEASFMT_WIDTH_NARROW + 1)
 
 U_NAMESPACE_BEGIN
@@ -289,8 +288,10 @@ struct UnitDataSink : public ResourceSink {
             return;
         }
 
-        // We no longer handle units like "coordinate" here (which do not have plural variants)
-        if (value.getType() == URES_TABLE) {
+        if (value.getType() == URES_STRING) {
+            // Units like "coordinate" that don't have plural variants
+            setFormatterIfAbsent(StandardPlural::OTHER, value, 0, errorCode);
+        } else if (value.getType() == URES_TABLE) {
             // Units that have plural variants
             ResourceTable patternTableTable = value.getTable(errorCode);
             if (U_FAILURE(errorCode)) { return; }
@@ -332,8 +333,6 @@ struct UnitDataSink : public ResourceSink {
                     consumeCompoundPattern(key, value, errorCode);
                 }
             }
-        } else if (uprv_strcmp(key, "coordinate") == 0) {
-            // special handling but we need to determine what that is
         } else {
             type = key;
             ResourceTable subtypeTable = value.getTable(errorCode);
index 15497ef..d780b80 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -40,20 +40,21 @@ static const int32_t gOffsets[] = {
     16,
     20,
     24,
-    285,
-    295,
-    306,
-    310,
-    316,
-    320,
-    340,
-    341,
-    352,
-    358,
-    363,
-    367,
-    371,
-    396
+    28,
+    288,
+    298,
+    309,
+    313,
+    319,
+    323,
+    342,
+    343,
+    354,
+    360,
+    365,
+    369,
+    373,
+    398
 };
 
 static const int32_t gIndexes[] = {
@@ -63,20 +64,21 @@ static const int32_t gIndexes[] = {
     16,
     20,
     24,
-    24,
-    34,
-    45,
+    28,
+    28,
+    38,
     49,
-    55,
+    53,
     59,
-    79,
-    80,
-    91,
-    97,
-    102,
-    106,
-    110,
-    135
+    63,
+    82,
+    83,
+    94,
+    100,
+    105,
+    109,
+    113,
+    138
 };
 
 // Must be sorted alphabetically.
@@ -86,6 +88,7 @@ static const char * const gTypes[] = {
     "area",
     "concentr",
     "consumption",
+    "coordinate",
     "currency",
     "digital",
     "duration",
@@ -128,6 +131,10 @@ static const char * const gSubTypes[] = {
     "liter-per-kilometer",
     "mile-per-gallon",
     "mile-per-gallon-imperial",
+    "east",
+    "north",
+    "south",
+    "west",
     "ADP",
     "AED",
     "AFA",
@@ -171,7 +178,6 @@ static const char * const gSubTypes[] = {
     "BTN",
     "BWP",
     "BYB",
-    "BYN",
     "BYR",
     "BZD",
     "CAD",
@@ -442,7 +448,6 @@ static const char * const gSubTypes[] = {
     "nautical-mile",
     "parsec",
     "picometer",
-    "point",
     "yard",
     "lux",
     "carat",
@@ -504,14 +509,14 @@ static const char * const gSubTypes[] = {
 
 // Must be sorted by first value and then second value.
 static int32_t unitPerUnitToSingleUnit[][4] = {
-        {327, 297, 16, 0},
-        {329, 303, 16, 2},
-        {331, 297, 16, 3},
-        {331, 385, 4, 2},
-        {331, 386, 4, 3},
-        {346, 383, 3, 1},
-        {349, 11, 15, 4},
-        {388, 327, 4, 1}
+        {330, 300, 17, 0},
+        {332, 306, 17, 2},
+        {334, 300, 17, 3},
+        {334, 387, 4, 2},
+        {334, 388, 4, 3},
+        {348, 385, 3, 1},
+        {351, 11, 16, 4},
+        {390, 330, 4, 1}
 };
 
 MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) {
@@ -610,456 +615,460 @@ MeasureUnit *MeasureUnit::createMilePerGallonImperial(UErrorCode &status) {
     return MeasureUnit::create(4, 3, status);
 }
 
-// MeasureUnit *MeasureUnit::createEast(UErrorCode &status) {...}
+MeasureUnit *MeasureUnit::createEast(UErrorCode &status) {
+    return MeasureUnit::create(5, 0, status);
+}
 
-// MeasureUnit *MeasureUnit::createNorth(UErrorCode &status) {...}
+MeasureUnit *MeasureUnit::createNorth(UErrorCode &status) {
+    return MeasureUnit::create(5, 1, status);
+}
 
-// MeasureUnit *MeasureUnit::createSouth(UErrorCode &status) {...}
+MeasureUnit *MeasureUnit::createSouth(UErrorCode &status) {
+    return MeasureUnit::create(5, 2, status);
+}
 
-// MeasureUnit *MeasureUnit::createWest(UErrorCode &status) {...}
+MeasureUnit *MeasureUnit::createWest(UErrorCode &status) {
+    return MeasureUnit::create(5, 3, status);
+}
 
 MeasureUnit *MeasureUnit::createBit(UErrorCode &status) {
-    return MeasureUnit::create(6, 0, status);
+    return MeasureUnit::create(7, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createByte(UErrorCode &status) {
-    return MeasureUnit::create(6, 1, status);
+    return MeasureUnit::create(7, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) {
-    return MeasureUnit::create(6, 2, status);
+    return MeasureUnit::create(7, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) {
-    return MeasureUnit::create(6, 3, status);
+    return MeasureUnit::create(7, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) {
-    return MeasureUnit::create(6, 4, status);
+    return MeasureUnit::create(7, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) {
-    return MeasureUnit::create(6, 5, status);
+    return MeasureUnit::create(7, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) {
-    return MeasureUnit::create(6, 6, status);
+    return MeasureUnit::create(7, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) {
-    return MeasureUnit::create(6, 7, status);
+    return MeasureUnit::create(7, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) {
-    return MeasureUnit::create(6, 8, status);
+    return MeasureUnit::create(7, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) {
-    return MeasureUnit::create(6, 9, status);
+    return MeasureUnit::create(7, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createCentury(UErrorCode &status) {
-    return MeasureUnit::create(7, 0, status);
+    return MeasureUnit::create(8, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createDay(UErrorCode &status) {
-    return MeasureUnit::create(7, 1, status);
+    return MeasureUnit::create(8, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createHour(UErrorCode &status) {
-    return MeasureUnit::create(7, 2, status);
+    return MeasureUnit::create(8, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) {
-    return MeasureUnit::create(7, 3, status);
+    return MeasureUnit::create(8, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) {
-    return MeasureUnit::create(7, 4, status);
+    return MeasureUnit::create(8, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) {
-    return MeasureUnit::create(7, 5, status);
+    return MeasureUnit::create(8, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) {
-    return MeasureUnit::create(7, 6, status);
+    return MeasureUnit::create(8, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) {
-    return MeasureUnit::create(7, 7, status);
+    return MeasureUnit::create(8, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) {
-    return MeasureUnit::create(7, 8, status);
+    return MeasureUnit::create(8, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) {
-    return MeasureUnit::create(7, 9, status);
+    return MeasureUnit::create(8, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createYear(UErrorCode &status) {
-    return MeasureUnit::create(7, 10, status);
+    return MeasureUnit::create(8, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) {
-    return MeasureUnit::create(8, 0, status);
+    return MeasureUnit::create(9, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) {
-    return MeasureUnit::create(8, 1, status);
+    return MeasureUnit::create(9, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) {
-    return MeasureUnit::create(8, 2, status);
+    return MeasureUnit::create(9, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) {
-    return MeasureUnit::create(8, 3, status);
+    return MeasureUnit::create(9, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) {
-    return MeasureUnit::create(9, 0, status);
+    return MeasureUnit::create(10, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) {
-    return MeasureUnit::create(9, 1, status);
+    return MeasureUnit::create(10, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) {
-    return MeasureUnit::create(9, 2, status);
+    return MeasureUnit::create(10, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) {
-    return MeasureUnit::create(9, 3, status);
+    return MeasureUnit::create(10, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) {
-    return MeasureUnit::create(9, 4, status);
+    return MeasureUnit::create(10, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) {
-    return MeasureUnit::create(9, 5, status);
+    return MeasureUnit::create(10, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) {
-    return MeasureUnit::create(10, 0, status);
+    return MeasureUnit::create(11, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) {
-    return MeasureUnit::create(10, 1, status);
+    return MeasureUnit::create(11, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) {
-    return MeasureUnit::create(10, 2, status);
+    return MeasureUnit::create(11, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) {
-    return MeasureUnit::create(10, 3, status);
+    return MeasureUnit::create(11, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
-    return MeasureUnit::create(11, 0, status);
+    return MeasureUnit::create(12, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) {
-    return MeasureUnit::create(11, 1, status);
+    return MeasureUnit::create(12, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) {
-    return MeasureUnit::create(11, 2, status);
+    return MeasureUnit::create(12, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
-    return MeasureUnit::create(11, 3, status);
+    return MeasureUnit::create(12, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
-    return MeasureUnit::create(11, 4, status);
+    return MeasureUnit::create(12, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
-    return MeasureUnit::create(11, 5, status);
+    return MeasureUnit::create(12, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
-    return MeasureUnit::create(11, 6, status);
+    return MeasureUnit::create(12, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
-    return MeasureUnit::create(11, 7, status);
+    return MeasureUnit::create(12, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
-    return MeasureUnit::create(11, 8, status);
+    return MeasureUnit::create(12, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
-    return MeasureUnit::create(11, 9, status);
+    return MeasureUnit::create(12, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
-    return MeasureUnit::create(11, 10, status);
+    return MeasureUnit::create(12, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
-    return MeasureUnit::create(11, 11, status);
+    return MeasureUnit::create(12, 11, status);
 }
 
 MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
-    return MeasureUnit::create(11, 12, status);
+    return MeasureUnit::create(12, 12, status);
 }
 
 MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
-    return MeasureUnit::create(11, 13, status);
+    return MeasureUnit::create(12, 13, status);
 }
 
 MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
-    return MeasureUnit::create(11, 14, status);
+    return MeasureUnit::create(12, 14, status);
 }
 
 MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
-    return MeasureUnit::create(11, 15, status);
+    return MeasureUnit::create(12, 15, status);
 }
 
 MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
-    return MeasureUnit::create(11, 16, status);
+    return MeasureUnit::create(12, 16, status);
 }
 
 MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
-    return MeasureUnit::create(11, 17, status);
-}
-
-MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
-    return MeasureUnit::create(11, 18, status);
+    return MeasureUnit::create(12, 17, status);
 }
 
 MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
-    return MeasureUnit::create(11, 19, status);
+    return MeasureUnit::create(12, 18, status);
 }
 
 MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
-    return MeasureUnit::create(12, 0, status);
+    return MeasureUnit::create(13, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
-    return MeasureUnit::create(13, 0, status);
+    return MeasureUnit::create(14, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
-    return MeasureUnit::create(13, 1, status);
+    return MeasureUnit::create(14, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
-    return MeasureUnit::create(13, 2, status);
+    return MeasureUnit::create(14, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
-    return MeasureUnit::create(13, 3, status);
+    return MeasureUnit::create(14, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
-    return MeasureUnit::create(13, 4, status);
+    return MeasureUnit::create(14, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
-    return MeasureUnit::create(13, 5, status);
+    return MeasureUnit::create(14, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
-    return MeasureUnit::create(13, 6, status);
+    return MeasureUnit::create(14, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
-    return MeasureUnit::create(13, 7, status);
+    return MeasureUnit::create(14, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
-    return MeasureUnit::create(13, 8, status);
+    return MeasureUnit::create(14, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
-    return MeasureUnit::create(13, 9, status);
+    return MeasureUnit::create(14, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
-    return MeasureUnit::create(13, 10, status);
+    return MeasureUnit::create(14, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
-    return MeasureUnit::create(14, 0, status);
+    return MeasureUnit::create(15, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) {
-    return MeasureUnit::create(14, 1, status);
+    return MeasureUnit::create(15, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) {
-    return MeasureUnit::create(14, 2, status);
+    return MeasureUnit::create(15, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) {
-    return MeasureUnit::create(14, 3, status);
+    return MeasureUnit::create(15, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) {
-    return MeasureUnit::create(14, 4, status);
+    return MeasureUnit::create(15, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) {
-    return MeasureUnit::create(14, 5, status);
+    return MeasureUnit::create(15, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
-    return MeasureUnit::create(15, 0, status);
+    return MeasureUnit::create(16, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
-    return MeasureUnit::create(15, 1, status);
+    return MeasureUnit::create(16, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
-    return MeasureUnit::create(15, 2, status);
+    return MeasureUnit::create(16, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
-    return MeasureUnit::create(15, 3, status);
+    return MeasureUnit::create(16, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
-    return MeasureUnit::create(15, 4, status);
+    return MeasureUnit::create(16, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
-    return MeasureUnit::create(16, 0, status);
+    return MeasureUnit::create(17, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
-    return MeasureUnit::create(16, 1, status);
+    return MeasureUnit::create(17, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
-    return MeasureUnit::create(16, 2, status);
+    return MeasureUnit::create(17, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
-    return MeasureUnit::create(16, 3, status);
+    return MeasureUnit::create(17, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) {
-    return MeasureUnit::create(17, 0, status);
+    return MeasureUnit::create(18, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) {
-    return MeasureUnit::create(17, 1, status);
+    return MeasureUnit::create(18, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createGenericTemperature(UErrorCode &status) {
-    return MeasureUnit::create(17, 2, status);
+    return MeasureUnit::create(18, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) {
-    return MeasureUnit::create(17, 3, status);
+    return MeasureUnit::create(18, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) {
-    return MeasureUnit::create(18, 0, status);
+    return MeasureUnit::create(19, 0, status);
 }
 
 MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) {
-    return MeasureUnit::create(18, 1, status);
+    return MeasureUnit::create(19, 1, status);
 }
 
 MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) {
-    return MeasureUnit::create(18, 2, status);
+    return MeasureUnit::create(19, 2, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) {
-    return MeasureUnit::create(18, 3, status);
+    return MeasureUnit::create(19, 3, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) {
-    return MeasureUnit::create(18, 4, status);
+    return MeasureUnit::create(19, 4, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) {
-    return MeasureUnit::create(18, 5, status);
+    return MeasureUnit::create(19, 5, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) {
-    return MeasureUnit::create(18, 6, status);
+    return MeasureUnit::create(19, 6, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) {
-    return MeasureUnit::create(18, 7, status);
+    return MeasureUnit::create(19, 7, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) {
-    return MeasureUnit::create(18, 8, status);
+    return MeasureUnit::create(19, 8, status);
 }
 
 MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) {
-    return MeasureUnit::create(18, 9, status);
+    return MeasureUnit::create(19, 9, status);
 }
 
 MeasureUnit *MeasureUnit::createCup(UErrorCode &status) {
-    return MeasureUnit::create(18, 10, status);
+    return MeasureUnit::create(19, 10, status);
 }
 
 MeasureUnit *MeasureUnit::createCupMetric(UErrorCode &status) {
-    return MeasureUnit::create(18, 11, status);
+    return MeasureUnit::create(19, 11, status);
 }
 
 MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) {
-    return MeasureUnit::create(18, 12, status);
+    return MeasureUnit::create(19, 12, status);
 }
 
 MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
-    return MeasureUnit::create(18, 13, status);
+    return MeasureUnit::create(19, 13, status);
 }
 
 MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
-    return MeasureUnit::create(18, 14, status);
+    return MeasureUnit::create(19, 14, status);
 }
 
 MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) {
-    return MeasureUnit::create(18, 15, status);
+    return MeasureUnit::create(19, 15, status);
 }
 
 MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
-    return MeasureUnit::create(18, 16, status);
+    return MeasureUnit::create(19, 16, status);
 }
 
 MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
-    return MeasureUnit::create(18, 17, status);
+    return MeasureUnit::create(19, 17, status);
 }
 
 MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
-    return MeasureUnit::create(18, 18, status);
+    return MeasureUnit::create(19, 18, status);
 }
 
 MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
-    return MeasureUnit::create(18, 19, status);
+    return MeasureUnit::create(19, 19, status);
 }
 
 MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
-    return MeasureUnit::create(18, 20, status);
+    return MeasureUnit::create(19, 20, status);
 }
 
 MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) {
-    return MeasureUnit::create(18, 21, status);
+    return MeasureUnit::create(19, 21, status);
 }
 
 MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
-    return MeasureUnit::create(18, 22, status);
+    return MeasureUnit::create(19, 22, status);
 }
 
 MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
-    return MeasureUnit::create(18, 23, status);
+    return MeasureUnit::create(19, 23, status);
 }
 
 MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
-    return MeasureUnit::create(18, 24, status);
+    return MeasureUnit::create(19, 24, status);
 }
 
 // End generated code
index d9084f8..3459e71 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 94a0286..4658528 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 1cece1a..d8e38f0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 69e92b8..1451592 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4c743de..2ba4c8f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 3eb1882..6b5b1e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrlist.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 05941e8..94777b8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrs.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -23,7 +23,6 @@
 #include "nfrule.h"
 #include "nfrlist.h"
 #include "patternprops.h"
-#include "putilimp.h"
 
 #ifdef RBNF_DEBUG
 #include "cmemory.h"
@@ -545,7 +544,7 @@ NFRuleSet::findNormalRule(int64_t number) const
         // an explanation of the rollback rule).  If we do, roll back
         // one rule and return that one instead of the one we'd normally
         // return
-        if (result->shouldRollBack(number)) {
+        if (result->shouldRollBack((double)number)) {
             if (hi == 1) { // bad rule set, no prior rule to rollback to from this base
                 return NULL;
             }
@@ -830,20 +829,18 @@ int64_t util64_fromDouble(double d) {
     return result;
 }
 
-int64_t util64_pow(int32_t base, uint16_t exponent)  { 
-    if (base == 0) {
+int64_t util64_pow(int32_t r, uint32_t e)  { 
+    if (r == 0) {
         return 0;
+    } else if (e == 0) {
+        return 1;
+    } else {
+        int64_t n = r;
+        while (--e > 0) {
+            n *= r;
+        }
+        return n;
     }
-    int64_t result = 1;
-    int64_t pow = base;
-    while (exponent > 0) { 
-        if ((exponent & 1) == 1) { 
-            result *= pow; 
-        } 
-        pow *= pow; 
-        exponent >>= 1; 
-    } 
-    return result;
 }
 
 static const uint8_t asciiDigits[] = { 
index d28c29c..b6aa579 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrs.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -88,7 +88,7 @@ private:
 int64_t util64_fromDouble(double d);
 
 // raise radix to the power exponent, only non-negative exponents
-int64_t util64_pow(int32_t radix, uint16_t exponent);
+int64_t util64_pow(int32_t radix, uint32_t exponent);
 
 // convert n to digit string in buffer, return length of string
 uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
index f24be11..a188fe1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfrule.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -30,7 +30,6 @@
 #include "nfrlist.h"
 #include "nfsubs.h"
 #include "patternprops.h"
-#include "putilimp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -716,12 +715,6 @@ NFRule::_appendRuleText(UnicodeString& result) const
     result.append(gSemicolon);
 }
 
-int64_t NFRule::getDivisor() const
-{
-    return util64_pow(radix, exponent);
-}
-
-
 //-----------------------------------------------------------------------
 // formatting
 //-----------------------------------------------------------------------
@@ -756,7 +749,7 @@ NFRule::doFormat(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32
             toInsertInto.insert(pos, ruleText.tempSubString(pluralRuleEnd + 2));
         }
         toInsertInto.insert(pos,
-            rulePatternFormat->format((int32_t)(number/util64_pow(radix, exponent)), status));
+            rulePatternFormat->format((int32_t)(number/uprv_pow(radix, exponent)), status));
         if (pluralRuleStart > 0) {
             toInsertInto.insert(pos, ruleText.tempSubString(0, pluralRuleStart));
         }
@@ -805,10 +798,10 @@ NFRule::doFormat(double number, UnicodeString& toInsertInto, int32_t pos, int32_
         if (0 <= pluralVal && pluralVal < 1) {
             // We're in a fractional rule, and we have to match the NumeratorSubstitution behavior.
             // 2.3 can become 0.2999999999999998 for the fraction due to rounding errors.
-            pluralVal = uprv_round(pluralVal * util64_pow(radix, exponent));
+            pluralVal = uprv_round(pluralVal * uprv_pow(radix, exponent));
         }
         else {
-            pluralVal = pluralVal / util64_pow(radix, exponent);
+            pluralVal = pluralVal / uprv_pow(radix, exponent);
         }
         toInsertInto.insert(pos, rulePatternFormat->format((int32_t)(pluralVal), status));
         if (pluralRuleStart > 0) {
@@ -834,7 +827,7 @@ NFRule::doFormat(double number, UnicodeString& toInsertInto, int32_t pos, int32_
 * this one in its list; false if it should use this rule
 */
 UBool
-NFRule::shouldRollBack(int64_t number) const
+NFRule::shouldRollBack(double number) const
 {
     // we roll back if the rule contains a modulus substitution,
     // the number being formatted is an even multiple of the rule's
@@ -854,7 +847,7 @@ NFRule::shouldRollBack(int64_t number) const
     // multiple of 100.  This is called the "rollback rule."
     if ((sub1 != NULL && sub1->isModulusSubstitution()) || (sub2 != NULL && sub2->isModulusSubstitution())) {
         int64_t re = util64_pow(radix, exponent);
-        return (number % re) == 0 && (baseValue % re) != 0;
+        return uprv_fmod(number, (double)re) == 0 && (baseValue % re) != 0;
     }
     return FALSE;
 }
index 809119c..fe00cbe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -17,6 +17,7 @@
 #include "unicode/utypes.h"
 #include "unicode/uobject.h"
 #include "unicode/unistr.h"
+#include "putilimp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -65,7 +66,7 @@ public:
 
     UChar getDecimalPoint() const { return decimalPoint; }
 
-    int64_t getDivisor() const;
+    double getDivisor() const { return uprv_pow(radix, exponent); }
 
     void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
     void doFormat(double  number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
@@ -76,7 +77,7 @@ public:
                   double upperBound,
                   Formattable& result) const;
 
-    UBool shouldRollBack(int64_t number) const;
+    UBool shouldRollBack(double number) const;
 
     void _appendRuleText(UnicodeString& result) const;
 
index f77ebb1..16bbdc1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfsubs.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -20,7 +20,6 @@
 
 #include "nfsubs.h"
 #include "digitlst.h"
-#include "fmtableimp.h"
 
 #if U_HAVE_RBNF
 
@@ -69,24 +68,27 @@ public:
 SameValueSubstitution::~SameValueSubstitution() {}
 
 class MultiplierSubstitution : public NFSubstitution {
-    int64_t divisor;
+    double divisor;
+    int64_t ldivisor;
 
 public:
     MultiplierSubstitution(int32_t _pos,
-        const NFRule *rule,
+        double _divisor,
         const NFRuleSet* _ruleSet,
         const UnicodeString& description,
         UErrorCode& status)
-        : NFSubstitution(_pos, _ruleSet, description, status), divisor(rule->getDivisor())
+        : NFSubstitution(_pos, _ruleSet, description, status), divisor(_divisor)
     {
+        ldivisor = util64_fromDouble(divisor);
         if (divisor == 0) {
             status = U_PARSE_ERROR;
         }
     }
     virtual ~MultiplierSubstitution();
 
-    virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { 
-        divisor = util64_pow(radix, exponent);
+    virtual void setDivisor(int32_t radix, int32_t exponent, UErrorCode& status) { 
+        divisor = uprv_pow(radix, exponent);
+        ldivisor = util64_fromDouble(divisor);
 
         if(divisor == 0) {
             status = U_PARSE_ERROR;
@@ -96,14 +98,14 @@ public:
     virtual UBool operator==(const NFSubstitution& rhs) const;
 
     virtual int64_t transformNumber(int64_t number) const {
-        return number / divisor;
+        return number / ldivisor;
     }
 
     virtual double transformNumber(double number) const {
         if (getRuleSet()) {
             return uprv_floor(number / divisor);
         } else {
-            return number / divisor;
+            return number/divisor;
         }
     }
 
@@ -123,19 +125,21 @@ public:
 MultiplierSubstitution::~MultiplierSubstitution() {}
 
 class ModulusSubstitution : public NFSubstitution {
-    int64_t  divisor;
+    double divisor;
+    int64_t  ldivisor;
     const NFRule* ruleToUse;
 public:
     ModulusSubstitution(int32_t pos,
-        const NFRule* rule,
+        double _divisor,
         const NFRule* rulePredecessor,
         const NFRuleSet* ruleSet,
         const UnicodeString& description,
         UErrorCode& status);
     virtual ~ModulusSubstitution();
 
-    virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { 
-        divisor = util64_pow(radix, exponent);
+    virtual void setDivisor(int32_t radix, int32_t exponent, UErrorCode& status) { 
+        divisor = uprv_pow(radix, exponent);
+        ldivisor = util64_fromDouble(divisor);
 
         if (divisor == 0) {
             status = U_PARSE_ERROR;
@@ -147,7 +151,7 @@ public:
     virtual void doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
     virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
 
-    virtual int64_t transformNumber(int64_t number) const { return number % divisor; }
+    virtual int64_t transformNumber(int64_t number) const { return number % ldivisor; }
     virtual double transformNumber(double number) const { return uprv_fmod(number, divisor); }
 
     virtual UBool doParse(const UnicodeString& text, 
@@ -349,7 +353,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
 
         // otherwise, return a MultiplierSubstitution
         else {
-            return new MultiplierSubstitution(pos, rule, ruleSet,
+            return new MultiplierSubstitution(pos, rule->getDivisor(), ruleSet,
                 description, status);
         }
 
@@ -379,7 +383,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
 
         // otherwise, return a ModulusSubstitution
         else {
-            return new ModulusSubstitution(pos, rule, predecessor,
+            return new ModulusSubstitution(pos, rule->getDivisor(), predecessor,
                 ruleSet, description, status);
         }
 
@@ -487,7 +491,7 @@ NFSubstitution::~NFSubstitution()
  * @param exponent The exponent of the divisor
  */
 void
-NFSubstitution::setDivisor(int32_t /*radix*/, int16_t /*exponent*/, UErrorCode& /*status*/) {
+NFSubstitution::setDivisor(int32_t /*radix*/, int32_t /*exponent*/, UErrorCode& /*status*/) {
   // a no-op for all substitutions except multiplier and modulus substitutions
 }
 
@@ -568,38 +572,23 @@ void
 NFSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t _pos, int32_t recursionCount, UErrorCode& status) const
 {
     if (ruleSet != NULL) {
-        // Perform a transformation on the number that is dependent
+        // perform a transformation on the number that is dependent
         // on the type of substitution this is, then just call its
         // rule set's format() method to format the result
         ruleSet->format(transformNumber(number), toInsertInto, _pos + this->pos, recursionCount, status);
     } else if (numberFormat != NULL) {
-        if (number <= MAX_INT64_IN_DOUBLE) {
-            // or perform the transformation on the number (preserving
-            // the result's fractional part if the formatter it set
-            // to show it), then use that formatter's format() method
-            // to format the result
-            double numberToFormat = transformNumber((double)number);
-            if (numberFormat->getMaximumFractionDigits() == 0) {
-                numberToFormat = uprv_floor(numberToFormat);
-            }
+        // or perform the transformation on the number (preserving
+        // the result's fractional part if the formatter it set
+        // to show it), then use that formatter's format() method
+        // to format the result
+        double numberToFormat = transformNumber((double)number);
+        if (numberFormat->getMaximumFractionDigits() == 0) {
+            numberToFormat = uprv_floor(numberToFormat);
+        }
 
-            UnicodeString temp;
-            numberFormat->format(numberToFormat, temp, status);
-            toInsertInto.insert(_pos + this->pos, temp);
-        } 
-        else { 
-            // We have gone beyond double precision. Something has to give. 
-            // We're favoring accuracy of the large number over potential rules 
-            // that round like a CompactDecimalFormat, which is not a common use case. 
-            // 
-            // Perform a transformation on the number that is dependent 
-            // on the type of substitution this is, then just call its 
-            // rule set's format() method to format the result 
-            int64_t numberToFormat = transformNumber(number); 
-            UnicodeString temp;
-            numberFormat->format(numberToFormat, temp, status);
-            toInsertInto.insert(_pos + this->pos, temp);
-        } 
+        UnicodeString temp;
+        numberFormat->format(numberToFormat, temp, status);
+        toInsertInto.insert(_pos + this->pos, temp);
     }
 }
 
@@ -820,20 +809,22 @@ UBool MultiplierSubstitution::operator==(const NFSubstitution& rhs) const
  * regular rule.
  */
 ModulusSubstitution::ModulusSubstitution(int32_t _pos,
-                                         const NFRule* rule,
+                                         double _divisor,
                                          const NFRule* predecessor,
                                          const NFRuleSet* _ruleSet,
                                          const UnicodeString& description,
                                          UErrorCode& status)
  : NFSubstitution(_pos, _ruleSet, description, status)
- , divisor(rule->getDivisor())
+ , divisor(_divisor)
  , ruleToUse(NULL)
 {
+  ldivisor = util64_fromDouble(_divisor);
+
   // the owning rule's divisor controls the behavior of this
   // substitution: rather than keeping a backpointer to the rule,
   // we keep a copy of the divisor
 
-  if (divisor == 0) {
+  if (ldivisor == 0) {
       status = U_PARSE_ERROR;
   }
 
index e8b2591..62d963d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 ******************************************************************************
 *   file name:  nfsubs.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -91,7 +91,7 @@ public:
      * @param radix The radix of the divisor
      * @param exponent The exponent of the divisor
      */
-    virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status);
+    virtual void setDivisor(int32_t radix, int32_t exponent, UErrorCode& status);
     
     /**
      * Replaces result with the string describing the substitution.
index 589c824..da02067 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d309452..79d1be3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 62d1290..600873e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a01b04e..a9856bd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ea9aed1..ef08519 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -529,7 +529,7 @@ UnicodeString& NumberFormat::format(const DigitList &number,
                       FieldPositionIterator* posIter,
                       UErrorCode& status) const {
     // DecimalFormat overrides this function, and handles DigitList based big decimals.
-    // Other subclasses (ChoiceFormat) do not (yet) handle DigitLists,
+    // Other subclasses (ChoiceFormat, RuleBasedNumberFormat) do not (yet) handle DigitLists,
     // so this default implementation falls back to formatting decimal numbers as doubles.
     if (U_FAILURE(status)) {
         return appendTo;
@@ -547,7 +547,7 @@ NumberFormat::format(const DigitList &number,
                      FieldPosition& pos,
                      UErrorCode &status) const { 
     // DecimalFormat overrides this function, and handles DigitList based big decimals.
-    // Other subclasses (ChoiceFormat) do not (yet) handle DigitLists,
+    // Other subclasses (ChoiceFormat, RuleBasedNumberFormat) do not (yet) handle DigitLists,
     // so this default implementation falls back to formatting decimal numbers as doubles.
     if (U_FAILURE(status)) {
         return appendTo;
@@ -1188,7 +1188,7 @@ void NumberFormat::setCurrency(const UChar* theCurrency, UErrorCode& ec) {
     }
 }
 
-const char16_t* NumberFormat::getCurrency() const {
+const UChar* NumberFormat::getCurrency() const {
     return fCurrency;
 }
 
index a05c7e0..ce7c4d5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -230,7 +230,7 @@ void NumberingSystem::setAlgorithmic(UBool c) {
     algorithmic = c;
 }
 
-void NumberingSystem::setDesc(const UnicodeString &d) {
+void NumberingSystem::setDesc(UnicodeString d) {
     desc.setTo(d);
 }
 void NumberingSystem::setName(const char *n) {
index 3e5cc33..c4683b0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 00a59d1..65b532a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ccc0cf9..13b364d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f66ac67..278273f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index bcfd68a..e244fee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index ea40020..f6a51a7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index df86d8d..81e9c7a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e14ef6d..8a000ce 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c4155cb..cb5ee08 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -17,8 +17,6 @@
 #include "unicode/plurrule.h"
 #include "unicode/upluralrules.h"
 #include "unicode/ures.h"
-#include "unicode/numfmt.h"
-#include "unicode/decimfmt.h"
 #include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
@@ -38,6 +36,7 @@
 #include "digitinterval.h" 
 #include "visibledigits.h"
 
+
 #if !UCONFIG_NO_FORMATTING
 
 U_NAMESPACE_BEGIN
@@ -248,26 +247,6 @@ PluralRules::select(double number) const {
 }
 
 UnicodeString
-PluralRules::select(const Formattable& obj, const NumberFormat& fmt, UErrorCode& status) const {
-    if (U_SUCCESS(status)) {
-        const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(&fmt);
-        if (decFmt != NULL) {
-            VisibleDigitsWithExponent digits;
-            decFmt->initVisibleDigitsWithExponent(obj, digits, status);
-            if (U_SUCCESS(status)) {
-                return select(digits);
-            }
-        } else {
-            double number = obj.getDouble(status);
-            if (U_SUCCESS(status)) {
-                return select(number);
-            }
-        }
-    }
-    return UnicodeString();
-}
-
-UnicodeString
 PluralRules::select(const FixedDecimal &number) const {
     if (mRules == NULL) {
         return UnicodeString(TRUE, PLURAL_DEFAULT_RULE, -1);
index 9f5f66c..c6e4767 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -24,7 +24,6 @@
 #include "unicode/format.h"
 #include "unicode/locid.h"
 #include "unicode/parseerr.h"
-#include "unicode/strenum.h"
 #include "unicode/ures.h"
 #include "uvector.h"
 #include "hash.h"
index d9de8ad..086ce41 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index 99f6d2d..2131491 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index acf579e..7387ce0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1abb0db..21adf19 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 208e064..c44357a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index ca3fb3d..f7bb6b5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index f05c549..fc4fd43 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 #include "unicode/udata.h"
 #include "unicode/udisplaycontext.h"
 #include "unicode/brkiter.h"
-#include "unicode/ucasemap.h"
+#include "nfrs.h"
 
 #include "cmemory.h"
 #include "cstring.h"
 #include "patternprops.h"
 #include "uresimp.h"
-#include "nfrs.h"
-#include "digitlst.h"
 
 // debugging
 // #define RBNF_DEBUG
@@ -1081,76 +1079,17 @@ RuleBasedNumberFormat::findRuleSet(const UnicodeString& name, UErrorCode& status
 }
 
 UnicodeString&
-RuleBasedNumberFormat::format(const DigitList &number,
-                      UnicodeString &appendTo,
-                      FieldPositionIterator *posIter,
-                      UErrorCode &status) const {
-    if (U_FAILURE(status)) {
-        return appendTo;
-    }
-    DigitList copy(number);
-    if (copy.fitsIntoInt64(false)) {
-        format(((DigitList &)number).getInt64(), appendTo, posIter, status);
-    }
-    else {
-        copy.roundAtExponent(0);
-        if (copy.fitsIntoInt64(false)) {
-            format(number.getDouble(), appendTo, posIter, status);
-        }
-        else {
-            // We're outside of our normal range that this framework can handle.
-            // The DecimalFormat will provide more accurate results.
-
-            // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J.
-            NumberFormat *decimalFormat = NumberFormat::createInstance(locale, UNUM_DECIMAL, status);
-            Formattable f;
-            f.adoptDigitList(new DigitList(number));
-            decimalFormat->format(f, appendTo, posIter, status);
-            delete decimalFormat;
-        }
-    }
-    return appendTo;
-}
-
-
-UnicodeString&
-RuleBasedNumberFormat::format(const DigitList &number,
-                     UnicodeString& appendTo,
-                     FieldPosition& pos,
-                     UErrorCode &status) const {
-    if (U_FAILURE(status)) {
-        return appendTo;
-    }
-    DigitList copy(number);
-    if (copy.fitsIntoInt64(false)) {
-        format(((DigitList &)number).getInt64(), appendTo, pos, status);
-    }
-    else {
-        copy.roundAtExponent(0);
-        if (copy.fitsIntoInt64(false)) {
-            format(number.getDouble(), appendTo, pos, status);
-        }
-        else {
-            // We're outside of our normal range that this framework can handle.
-            // The DecimalFormat will provide more accurate results.
-
-            // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J.
-            NumberFormat *decimalFormat = NumberFormat::createInstance(locale, UNUM_DECIMAL, status);
-            Formattable f;
-            f.adoptDigitList(new DigitList(number));
-            decimalFormat->format(f, appendTo, pos, status);
-            delete decimalFormat;
-        }
-    }
-    return appendTo;
-}
-
-UnicodeString&
 RuleBasedNumberFormat::format(int32_t number,
                               UnicodeString& toAppendTo,
-                              FieldPosition& pos) const
+                              FieldPosition& /* pos */) const
 {
-    return format((int64_t)number, toAppendTo, pos);
+    if (defaultRuleSet) {
+        UErrorCode status = U_ZERO_ERROR;
+        int32_t startPos = toAppendTo.length();
+        defaultRuleSet->format((int64_t)number, toAppendTo, toAppendTo.length(), 0, status);
+        adjustForCapitalizationContext(startPos, toAppendTo);
+    }
+    return toAppendTo;
 }
 
 
@@ -1161,7 +1100,9 @@ RuleBasedNumberFormat::format(int64_t number,
 {
     if (defaultRuleSet) {
         UErrorCode status = U_ZERO_ERROR;
-        format(number, defaultRuleSet, toAppendTo, status);
+        int32_t startPos = toAppendTo.length();
+        defaultRuleSet->format(number, toAppendTo, toAppendTo.length(), 0, status);
+        adjustForCapitalizationContext(startPos, toAppendTo);
     }
     return toAppendTo;
 }
@@ -1173,11 +1114,11 @@ RuleBasedNumberFormat::format(double number,
                               FieldPosition& /* pos */) const
 {
     int32_t startPos = toAppendTo.length();
-    UErrorCode status = U_ZERO_ERROR;
     if (defaultRuleSet) {
+        UErrorCode status = U_ZERO_ERROR;
         defaultRuleSet->format(number, toAppendTo, toAppendTo.length(), 0, status);
     }
-    return adjustForCapitalizationContext(startPos, toAppendTo, status);
+    return adjustForCapitalizationContext(startPos, toAppendTo);
 }
 
 
@@ -1185,10 +1126,24 @@ UnicodeString&
 RuleBasedNumberFormat::format(int32_t number,
                               const UnicodeString& ruleSetName,
                               UnicodeString& toAppendTo,
-                              FieldPosition& pos,
+                              FieldPosition& /* pos */,
                               UErrorCode& status) const
 {
-    return format((int64_t)number, ruleSetName, toAppendTo, pos, status);
+    // return format((int64_t)number, ruleSetName, toAppendTo, pos, status);
+    if (U_SUCCESS(status)) {
+        if (ruleSetName.indexOf(gPercentPercent, 2, 0) == 0) {
+            // throw new IllegalArgumentException("Can't use internal rule set");
+            status = U_ILLEGAL_ARGUMENT_ERROR;
+        } else {
+            NFRuleSet *rs = findRuleSet(ruleSetName, status);
+            if (rs) {
+                int32_t startPos = toAppendTo.length();
+                rs->format((int64_t)number, toAppendTo, toAppendTo.length(), 0, status);
+                adjustForCapitalizationContext(startPos, toAppendTo);
+            }
+        }
+    }
+    return toAppendTo;
 }
 
 
@@ -1206,7 +1161,9 @@ RuleBasedNumberFormat::format(int64_t number,
         } else {
             NFRuleSet *rs = findRuleSet(ruleSetName, status);
             if (rs) {
-                format(number, rs, toAppendTo, status);
+                int32_t startPos = toAppendTo.length();
+                rs->format(number, toAppendTo, toAppendTo.length(), 0, status);
+                adjustForCapitalizationContext(startPos, toAppendTo);
             }
         }
     }
@@ -1230,72 +1187,27 @@ RuleBasedNumberFormat::format(double number,
             if (rs) {
                 int32_t startPos = toAppendTo.length();
                 rs->format(number, toAppendTo, toAppendTo.length(), 0, status);
-                adjustForCapitalizationContext(startPos, toAppendTo, status);
+                adjustForCapitalizationContext(startPos, toAppendTo);
             }
         }
     }
     return toAppendTo;
 }
 
-/**
- * Bottleneck through which all the public format() methods
- * that take a long pass. By the time we get here, we know
- * which rule set we're using to do the formatting.
- * @param number The number to format
- * @param ruleSet The rule set to use to format the number
- * @return The text that resulted from formatting the number
- */
-UnicodeString&
-RuleBasedNumberFormat::format(int64_t number, NFRuleSet *ruleSet, UnicodeString& toAppendTo, UErrorCode& status) const
-{
-    // all API format() routines that take a double vector through
-    // here.  We have these two identical functions-- one taking a
-    // double and one taking a long-- the couple digits of precision
-    // that long has but double doesn't (both types are 8 bytes long,
-    // but double has to borrow some of the mantissa bits to hold
-    // the exponent).
-    // Create an empty string buffer where the result will
-    // be built, and pass it to the rule set (along with an insertion
-    // position of 0 and the number being formatted) to the rule set
-    // for formatting
-
-    if (U_SUCCESS(status)) {
-        if (number == U_INT64_MIN) {
-            // We can't handle this value right now. Provide an accurate default value.
-
-            // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J.
-            NumberFormat *decimalFormat = NumberFormat::createInstance(locale, UNUM_DECIMAL, status);
-            Formattable f;
-            FieldPosition pos(FieldPosition::DONT_CARE);
-            DigitList *digitList = new DigitList();
-            digitList->set(number);
-            f.adoptDigitList(digitList);
-            decimalFormat->format(f, toAppendTo, pos, status);
-            delete decimalFormat;
-        }
-        else {
-            int32_t startPos = toAppendTo.length();
-            ruleSet->format(number, toAppendTo, toAppendTo.length(), 0, status);
-            adjustForCapitalizationContext(startPos, toAppendTo, status);
-        }
-    }
-    return toAppendTo;
-}
-
 UnicodeString&
 RuleBasedNumberFormat::adjustForCapitalizationContext(int32_t startPos,
-                                                      UnicodeString& currentResult,
-                                                      UErrorCode& status) const
+                                                      UnicodeString& currentResult) const
 {
 #if !UCONFIG_NO_BREAK_ITERATION
-    UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
-    if (capitalizationContext != UDISPCTX_CAPITALIZATION_NONE && startPos == 0 && currentResult.length() > 0) {
+    if (startPos==0 && currentResult.length() > 0) {
         // capitalize currentResult according to context
         UChar32 ch = currentResult.char32At(0);
-        if (u_islower(ch) && U_SUCCESS(status) && capitalizationBrkIter != NULL &&
-              ( capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
-                (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && capitalizationForUIListMenu) ||
-                (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_STANDALONE && capitalizationForStandAlone)) ) {
+        UErrorCode status = U_ZERO_ERROR;
+        UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
+        if ( u_islower(ch) && U_SUCCESS(status) && capitalizationBrkIter!= NULL &&
+              ( capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
+                (capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && capitalizationForUIListMenu) ||
+                (capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_STANDALONE && capitalizationForStandAlone)) ) {
             // titlecase first word of currentResult, here use sentence iterator unlike current implementations
             // in LocaleDisplayNamesImpl::adjustForUsageAndContext and RelativeDateFormat::format
             currentResult.toTitle(capitalizationBrkIter, locale, U_TITLECASE_NO_LOWERCASE | U_TITLECASE_NO_BREAK_ADJUSTMENT);
index 9cb1b0e..1e4b593 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b998c69..32ab156 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4b596ac..4f568de 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 52a961d..29e39a5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6ed89b1..17f7526 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 61ce972..1099dbf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 3569e42..36a07d9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 5501981..85937f3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) {1999-2001}, International Business Machines Corporation and others. All Rights Reserved.
index d8d0384..0385766 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index b4b4678..573c079 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d98613f..2b35c95 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 4e9ad6a..2657cf3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  regexcmp.cpp
@@ -2637,16 +2637,6 @@ void  RegexCompile::findCaseInsensitiveStarters(UChar32 c, UnicodeSet *starterCh
 }
 
 
-// Increment with overflow check.
-// val and delta will both be positive.
-
-static int32_t safeIncrement(int32_t val, int32_t delta) {
-    if (INT32_MAX - val > delta) {
-        return val + delta;
-    } else {
-        return INT32_MAX;
-    }
-}
 
 
 //------------------------------------------------------------------------------
@@ -2747,7 +2737,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->add(URX_VAL(op));
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2760,7 +2750,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(*s);
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2797,7 +2787,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(*s);
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2812,7 +2802,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(sc);
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2829,7 +2819,7 @@ void   RegexCompile::matchStartType() {
                  fRXPat->fInitialChars->addAll(s);
                  numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2846,7 +2836,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(s);
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2865,7 +2855,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->addAll(s);
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2889,7 +2879,7 @@ void   RegexCompile::matchStartType() {
                 }
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2905,7 +2895,7 @@ void   RegexCompile::matchStartType() {
                 fRXPat->fInitialChars->complement();
                 numInitialStrings += 2;
             }
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             atStart = FALSE;
             break;
 
@@ -2985,7 +2975,7 @@ void   RegexCompile::matchStartType() {
                     fRXPat->fInitialStringLen = stringLen;
                 }
 
-                currentLen = safeIncrement(currentLen, stringLen);
+                currentLen += stringLen;
                 atStart = FALSE;
             }
             break;
@@ -3010,7 +3000,7 @@ void   RegexCompile::matchStartType() {
                     fRXPat->fInitialChars->addAll(s);
                     numInitialStrings += 2;  // Matching on an initial string not possible.
                 }
-                currentLen = safeIncrement(currentLen, stringLen);
+                currentLen += stringLen;
                 atStart = FALSE;
             }
             break;
@@ -3268,7 +3258,7 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
         case URX_DOTANY_ALL:    // . matches one or two.
         case URX_DOTANY:
         case URX_DOTANY_UNIX:
-            currentLen = safeIncrement(currentLen, 1);
+            currentLen++;
             break;
 
 
@@ -3320,7 +3310,7 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
             {
                 loc++;
                 int32_t stringLenOp = (int32_t)fRXPat->fCompiledPat->elementAti(loc);
-                currentLen = safeIncrement(currentLen, URX_VAL(stringLenOp));
+                currentLen += URX_VAL(stringLenOp);
             }
             break;
 
@@ -3333,7 +3323,7 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
                 //       Assume a min length of one for now.  A min length of zero causes
                 //        optimization failures for a pattern like "string"+
                 // currentLen += URX_VAL(stringLenOp);
-                currentLen = safeIncrement(currentLen, 1);
+                currentLen += 1;
             }
             break;
 
@@ -3443,6 +3433,18 @@ int32_t   RegexCompile::minMatchLength(int32_t start, int32_t end) {
     return currentLen;
 }
 
+// Increment with overflow check.
+// val and delta will both be positive.
+
+static int32_t safeIncrement(int32_t val, int32_t delta) {
+    if (INT32_MAX - val > delta) {
+        return val + delta;
+    } else {
+        return INT32_MAX;
+    }
+}
+
+
 //------------------------------------------------------------------------------
 //
 //   maxMatchLength    Calculate the length of the longest string that could
index f2aeea9..578fdcf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  regexcmp.h
index 8b12096..8a5c829 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------------------------------
 //
index d555669..6c476e7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2012 International Business Machines Corporation
@@ -19,7 +19,8 @@
 U_NAMESPACE_BEGIN
 
 CaseFoldingUTextIterator::CaseFoldingUTextIterator(UText &text) :
-   fUText(text), fFoldChars(NULL), fFoldLength(0) {
+   fUText(text), fcsp(NULL), fFoldChars(NULL), fFoldLength(0) {
+   fcsp = ucase_getSingleton();
 }
 
 CaseFoldingUTextIterator::~CaseFoldingUTextIterator() {}
@@ -34,7 +35,7 @@ UChar32 CaseFoldingUTextIterator::next() {
         if (originalC == U_SENTINEL) {
             return originalC;
         }
-        fFoldLength = ucase_toFullFolding(originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
+        fFoldLength = ucase_toFullFolding(fcsp, originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
         if (fFoldLength >= UCASE_MAX_STRING_LENGTH || fFoldLength < 0) {
             // input code point folds to a single code point, possibly itself.
             // See comment in ucase.h for explanation of return values from ucase_toFullFoldings.
@@ -64,7 +65,8 @@ UBool CaseFoldingUTextIterator::inExpansion() {
 
 
 CaseFoldingUCharIterator::CaseFoldingUCharIterator(const UChar *chars, int64_t start, int64_t limit) :
-   fChars(chars), fIndex(start), fLimit(limit), fFoldChars(NULL), fFoldLength(0) {
+   fChars(chars), fIndex(start), fLimit(limit), fcsp(NULL), fFoldChars(NULL), fFoldLength(0) {
+   fcsp = ucase_getSingleton();
 }
 
 
@@ -82,7 +84,7 @@ UChar32 CaseFoldingUCharIterator::next() {
         }
         U16_NEXT(fChars, fIndex, fLimit, originalC);
 
-        fFoldLength = ucase_toFullFolding(originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
+        fFoldLength = ucase_toFullFolding(fcsp, originalC, &fFoldChars, U_FOLD_CASE_DEFAULT);
         if (fFoldLength >= UCASE_MAX_STRING_LENGTH || fFoldLength < 0) {
             // input code point folds to a single code point, possibly itself.
             // See comment in ucase.h for explanation of return values from ucase_toFullFoldings.
index 51db882..b2fcc3f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2002-2015 International Business Machines Corporation
@@ -374,6 +374,7 @@ class CaseFoldingUTextIterator: public UMemory {
                                   //  folding of the same code point from the orignal UText.
       private:
         UText             &fUText;
+        const  UCaseProps *fcsp;
         const  UChar      *fFoldChars;
         int32_t            fFoldLength;
         int32_t            fFoldIndex;
@@ -403,6 +404,7 @@ class CaseFoldingUCharIterator: public UMemory {
         const  UChar      *fChars;
         int64_t            fIndex;
         int64_t            fLimit;
+        const  UCaseProps *fcsp;
         const  UChar      *fFoldChars;
         int32_t            fFoldLength;
         int32_t            fFoldIndex;
index 4f12e87..d62c529 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  regexst.h
index 3f54233..a8705b0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  regexst.h
index 41bb4a9..d6157f5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 9cfabbe..c5651ae 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 66de31d..81ddc23 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5e5a645..817dd05 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 38bfe96..dd4894e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -15,7 +15,6 @@
 #if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/dtfmtsym.h"
-#include "unicode/ucasemap.h"
 #include "unicode/ureldatefmt.h"
 #include "unicode/udisplaycontext.h"
 #include "unicode/unum.h"
index 839198b..00cafc8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -20,7 +20,7 @@
 #include "unicode/udisplaycontext.h"
 #include "unicode/uchar.h"
 #include "unicode/brkiter.h"
-#include "unicode/ucasemap.h"
+
 #include "reldtfmt.h"
 #include "cmemory.h"
 #include "uresimp.h"
index c3b3044..3a11dfb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 53c801e..0e795f2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **************************************************************************
@@ -3566,14 +3566,7 @@ GC_Done:
                         }
                     }
                     fp = StateSave(fp, fp->fPatIdx, status);
-                } else {
-                    // Increment time-out counter. (StateSave() does it if count >= minCount)
-                    fTickCounter--;
-                    if (fTickCounter <= 0) {
-                        IncrementTime(status);    // Re-initializes fTickCounter
-                    }
                 }
-
                 fp->fPatIdx = opValue + 4;    // Loop back.
             }
             break;
@@ -3630,11 +3623,6 @@ GC_Done:
                     // We haven't met the minimum number of matches yet.
                     //   Loop back for another one.
                     fp->fPatIdx = opValue + 4;    // Loop back.
-                    // Increment time-out counter. (StateSave() does it if count >= minCount)
-                    fTickCounter--;
-                    if (fTickCounter <= 0) {
-                        IncrementTime(status);    // Re-initializes fTickCounter
-                    }
                 } else {
                     // We do have the minimum number of matches.
 
@@ -5111,12 +5099,6 @@ GC_Done:
                         }
                     }
                     fp = StateSave(fp, fp->fPatIdx, status);
-                } else {
-                    // Increment time-out counter. (StateSave() does it if count >= minCount)
-                    fTickCounter--;
-                    if (fTickCounter <= 0) {
-                        IncrementTime(status);    // Re-initializes fTickCounter
-                    }
                 }
                 fp->fPatIdx = opValue + 4;    // Loop back.
             }
@@ -5174,10 +5156,6 @@ GC_Done:
                     // We haven't met the minimum number of matches yet.
                     //   Loop back for another one.
                     fp->fPatIdx = opValue + 4;    // Loop back.
-                    fTickCounter--;
-                    if (fTickCounter <= 0) {
-                        IncrementTime(status);    // Re-initializes fTickCounter
-                    }
                 } else {
                     // We do have the minimum number of matches.
 
index 70a6ed3..89837f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ed038d5..a563578 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b8aee1a..817df2e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 //
 //  file:  repattrn.cpp
index ab65f10..4852667 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index adf032d..56a43f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 073e839..ff853b8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 385c3e3..e8de3b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f944b68..f6dbb49 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 29aee36..041fea5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index a36d1a5..3a5d55a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 82f482b..ca962c6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b6d67bc..58be1f6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 1526f92..f6d97b5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index ca9a210..a11a8a3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index a7e105b..fcb618a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 28d8b25..faed6de 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index fc23370..336af78 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e17d14c..a06a80f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -1189,22 +1189,13 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
         // Create a TimeZoneRule for initial time
         if (firstStdStart < firstDstStart) {
             initialRule = new InitialTimeZoneRule(tzid+UnicodeString(DST_STR), getRawOffset(), dstRule->getDSTSavings());
-            if (initialRule == NULL) {
-                status = U_MEMORY_ALLOCATION_ERROR;
-                deleteTransitionRules();
-                return;
-            }
             firstTransition = new TimeZoneTransition(firstStdStart, *initialRule, *stdRule);
         } else {
             initialRule = new InitialTimeZoneRule(tzid+UnicodeString(STD_STR), getRawOffset(), 0);
-            if (initialRule == NULL) {
-                status = U_MEMORY_ALLOCATION_ERROR;
-                deleteTransitionRules();
-                return;
-            }
             firstTransition = new TimeZoneTransition(firstDstStart, *initialRule, *dstRule);
         }
-        if (firstTransition == NULL) {
+        // Check for null pointers.
+        if (initialRule == NULL || firstTransition == NULL) {
             status = U_MEMORY_ALLOCATION_ERROR;
             deleteTransitionRules();
             return;
index 72ffffc..297786f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2015, International Business Machines
index b309b55..abf2b4b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 3c06704..85cc162 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -48,7 +48,6 @@
 #include "unicode/simpletz.h"
 #include "unicode/rbtz.h"
 #include "unicode/tzfmt.h"
-#include "unicode/ucasemap.h"
 #include "unicode/utf16.h"
 #include "unicode/vtzone.h"
 #include "unicode/udisplaycontext.h"
@@ -65,7 +64,6 @@
 #include <float.h>
 #include "smpdtfst.h"
 #include "sharednumberformat.h"
-#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 #include "charstr.h"
 #include "uvector.h"
index db59a4b..fbb2ab5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index cc80909..586b4e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -16,7 +16,6 @@
 #ifndef SMPDTFST_H
 #define SMPDTFST_H
 
-#include "unicode/uobject.h"
 #include "unicode/utypes.h"
 
 #if !UCONFIG_NO_FORMATTING
index 1228948..f6f1873 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0391034..c39bae1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 33e1d60..56c63c3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index aa9e7ae..a04f57f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 8ebdb30..83112ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2001-2011, International Business Machines Corporation
index 0eef3d4..d76b652 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index feec058..a452db9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c556567..6daee6e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index dfd5f3c..81c539e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index a1c25df..64e4be3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 113f61c..a161745 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9b37d7f..b589616 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -97,7 +97,7 @@ void TitlecaseTransliterator::handleTransliterate(
     int32_t start;
     for (start = offsets.start - 1; start >= offsets.contextStart; start -= U16_LENGTH(c)) {
         c = text.char32At(start);
-        type=ucase_getTypeOrIgnorable(c);
+        type=ucase_getTypeOrIgnorable(fCsp, c);
         if(type>0) { // cased
             doTitle=FALSE;
             break;
@@ -118,19 +118,19 @@ void TitlecaseTransliterator::handleTransliterate(
 
     UnicodeString tmp;
     const UChar *s;
-    int32_t textPos, delta, result;
+    int32_t textPos, delta, result, locCache=0;
 
     for(textPos=offsets.start; textPos<offsets.limit;) {
         csc.cpStart=textPos;
         c=text.char32At(textPos);
         csc.cpLimit=textPos+=U16_LENGTH(c);
 
-        type=ucase_getTypeOrIgnorable(c);
+        type=ucase_getTypeOrIgnorable(fCsp, c);
         if(type>=0) { // not case-ignorable
             if(doTitle) {
-                result=ucase_toFullTitle(c, utrans_rep_caseContextIterator, &csc, &s, UCASE_LOC_ROOT);
+                result=ucase_toFullTitle(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);
             } else {
-                result=ucase_toFullLower(c, utrans_rep_caseContextIterator, &csc, &s, UCASE_LOC_ROOT);
+                result=ucase_toFullLower(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);
             }
             doTitle = (UBool)(type==0); // doTitle=isUncased
 
index 166378f..a6380e3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index bf078d9..b6db309 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index a69fe57..6386e23 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 50dac8b..1669546 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 6dae6f1..6d1bc31 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index e311431..616e598 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 098dba9..a34792e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 677a04e..eae44e7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 2bc20bd..8a2f98b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 3dadf79..7c29f25 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 6fc35c8..334963f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b276636..f5d2799 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 5e42f06..63cfdff 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
index 7f26d19..161675a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 #include "unicode/calendar.h"
 #include "unicode/tzfmt.h"
 #include "unicode/numsys.h"
-#include "unicode/strenum.h"
 #include "unicode/uchar.h"
 #include "unicode/udat.h"
-#include "unicode/ustring.h"
 #include "tzgnames.h"
 #include "cmemory.h"
 #include "cstring.h"
index b14e983..4fc726e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -18,7 +18,6 @@
 #include "unicode/rbtz.h"
 #include "unicode/simpleformatter.h"
 #include "unicode/simpletz.h"
-#include "unicode/strenum.h"
 #include "unicode/vtzone.h"
 
 #include "cmemory.h"
index 2bd7613..61a0984 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 689fdeb..6aefd13 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1b26318..f52d5c2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -15,7 +15,6 @@
 
 #if !UCONFIG_NO_FORMATTING
 
-#include "unicode/strenum.h"
 #include "unicode/ustring.h"
 #include "unicode/timezone.h"
 
index 9251f9e..6b913bb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index f4ede7c..2cfd7ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 3199b78..76e259c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 282d84c..ccca97b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f29cbe4..8139208 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ucln_in.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 35a8a23..b609fce 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -6,7 +6,7 @@
 *                Corporation and others. All Rights Reserved.
 ******************************************************************************
 *   file name:  ucln_in.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e53dc92..4f83794 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a251fc4..7c9e8f6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -10,7 +10,7 @@
 *
 * Private implementation header for C collation
 *   file name:  ucol_imp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index d159702..314b766 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol_res.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -680,7 +680,6 @@ ucol_getKeywordValuesForLocale(const char* /*key*/, const char* locale,
         return NULL;
     }
     memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
-    ulist_resetList(sink.values);  // Initialize the iterator.
     en->context = sink.values;
     sink.values = NULL;  // Avoid deletion in the sink destructor.
     return en;
index ad064f2..491fc85 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucol_sit.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 596ce03..9c73afd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 46f69cf..dd69d9f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 5e06dd6..3b8a36a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 44ba6b9..e6eec44 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 9ba82b5..d8824af 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udatpg.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 64de856..b1c9c64 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 103c91c..eb71725 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 62b6f83..da9f8d3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/i18n/ulocdata.c b/source/i18n/ulocdata.c
new file mode 100644 (file)
index 0000000..587a743
--- /dev/null
@@ -0,0 +1,386 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*                                                                            *
+* Copyright (C) 2003-2016, International Business Machines                   *
+*                Corporation and others. All Rights Reserved.                *
+*                                                                            *
+******************************************************************************
+*   file name:  ulocdata.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2003Oct21
+*   created by: Ram Viswanadha,John Emmons
+*/
+
+#include "cmemory.h"
+#include "unicode/ustring.h"
+#include "unicode/ures.h"
+#include "unicode/uloc.h"
+#include "unicode/ulocdata.h"
+#include "uresimp.h"
+#include "ureslocs.h"
+#include "ulocimp.h"
+
+#define MEASUREMENT_SYSTEM  "MeasurementSystem"
+#define PAPER_SIZE          "PaperSize"
+
+/** A locale data object.
+ *  For usage in C programs.
+ *  @draft ICU 3.4
+ */
+struct ULocaleData {
+    /**
+     * Controls the "No Substitute" behavior of this locale data object
+     */
+    UBool noSubstitute;
+
+    /**
+     * Pointer to the resource bundle associated with this locale data object
+     */
+    UResourceBundle *bundle;
+
+    /**
+     * Pointer to the lang resource bundle associated with this locale data object
+     */
+    UResourceBundle *langBundle;
+};
+
+U_CAPI ULocaleData* U_EXPORT2
+ulocdata_open(const char *localeID, UErrorCode *status)
+{
+   ULocaleData *uld;
+
+   if (U_FAILURE(*status)) {
+       return NULL;
+   }
+
+   uld = (ULocaleData *)uprv_malloc(sizeof(ULocaleData));
+   if (uld == NULL) {
+      *status = U_MEMORY_ALLOCATION_ERROR;
+      return(NULL);
+   }
+
+   uld->langBundle = NULL;
+
+   uld->noSubstitute = FALSE;
+   uld->bundle = ures_open(NULL, localeID, status);
+   uld->langBundle = ures_open(U_ICUDATA_LANG, localeID, status);
+
+   if (U_FAILURE(*status)) {
+      uprv_free(uld);
+      return NULL;
+   }
+
+   return uld;
+}
+
+U_CAPI void U_EXPORT2
+ulocdata_close(ULocaleData *uld)
+{
+    if ( uld != NULL ) {
+       ures_close(uld->langBundle);
+       ures_close(uld->bundle);
+       uprv_free(uld);
+    }
+}
+
+U_CAPI void U_EXPORT2
+ulocdata_setNoSubstitute(ULocaleData *uld, UBool setting)
+{
+   uld->noSubstitute = setting;
+}
+
+U_CAPI UBool U_EXPORT2
+ulocdata_getNoSubstitute(ULocaleData *uld)
+{
+   return uld->noSubstitute;
+}
+
+U_CAPI USet* U_EXPORT2
+ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
+                        uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status){
+
+    static const char* const exemplarSetTypes[] = { "ExemplarCharacters", 
+                                                    "AuxExemplarCharacters", 
+                                                    "ExemplarCharactersIndex",
+                                                    "ExemplarCharactersPunctuation"};
+    const UChar *exemplarChars = NULL;
+    int32_t len = 0;
+    UErrorCode localStatus = U_ZERO_ERROR;
+
+    if (U_FAILURE(*status))
+        return NULL;
+
+    exemplarChars = ures_getStringByKey(uld->bundle, exemplarSetTypes[extype], &len, &localStatus);
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status))
+        return NULL;
+
+    if(fillIn != NULL)
+        uset_applyPattern(fillIn, exemplarChars, len,
+                          USET_IGNORE_SPACE | options, status);
+    else
+        fillIn = uset_openPatternOptions(exemplarChars, len,
+                                         USET_IGNORE_SPACE | options, status);
+
+    return fillIn;
+
+}
+
+U_CAPI int32_t U_EXPORT2
+ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,
+                      UChar *result, int32_t resultLength, UErrorCode *status){
+
+    static const char* const delimiterKeys[] =  {
+        "quotationStart",
+        "quotationEnd",
+        "alternateQuotationStart",
+        "alternateQuotationEnd"
+    };
+
+    UResourceBundle *delimiterBundle;
+    int32_t len = 0;
+    const UChar *delimiter = NULL;
+    UErrorCode localStatus = U_ZERO_ERROR;
+
+    if (U_FAILURE(*status))
+        return 0;
+
+    delimiterBundle = ures_getByKey(uld->bundle, "delimiters", NULL, &localStatus);
+
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status)){
+        ures_close(delimiterBundle);
+        return 0;
+    }
+
+    delimiter = ures_getStringByKey(delimiterBundle, delimiterKeys[type], &len, &localStatus);
+    ures_close(delimiterBundle);
+
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status)){
+        return 0;
+    }
+
+    u_strncpy(result,delimiter, resultLength);
+    return len;
+}
+
+static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, const char *measurementType, UErrorCode *status){
+    char region[ULOC_COUNTRY_CAPACITY];
+    UResourceBundle *rb;
+    UResourceBundle *measTypeBundle = NULL;
+    
+    ulocimp_getRegionForSupplementalData(localeID, TRUE, region, ULOC_COUNTRY_CAPACITY, status);
+    
+    rb = ures_openDirect(NULL, "supplementalData", status);
+    ures_getByKey(rb, "measurementData", rb, status);
+    if (rb != NULL) {
+        UResourceBundle *measDataBundle = ures_getByKey(rb, region, NULL, status);
+        if (U_SUCCESS(*status)) {
+               measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status);
+        }
+        if (*status == U_MISSING_RESOURCE_ERROR) {
+            *status = U_ZERO_ERROR;
+            if (measDataBundle != NULL) {
+                ures_close(measDataBundle);
+            }
+            measDataBundle = ures_getByKey(rb, "001", NULL, status);
+            measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status);
+        }
+        ures_close(measDataBundle);
+    }
+    ures_close(rb);
+    return measTypeBundle;
+}
+
+U_CAPI UMeasurementSystem U_EXPORT2
+ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status){
+
+    UResourceBundle* measurement=NULL;
+    UMeasurementSystem system = UMS_LIMIT;
+
+    if(status == NULL || U_FAILURE(*status)){
+        return system;
+    }
+
+    measurement = measurementTypeBundleForLocale(localeID, MEASUREMENT_SYSTEM, status);
+    system = (UMeasurementSystem) ures_getInt(measurement, status);
+
+    ures_close(measurement);
+
+    return system;
+
+}
+
+U_CAPI void U_EXPORT2
+ulocdata_getPaperSize(const char* localeID, int32_t *height, int32_t *width, UErrorCode *status){
+    UResourceBundle* paperSizeBundle = NULL;
+    const int32_t* paperSize=NULL;
+    int32_t len = 0;
+
+    if(status == NULL || U_FAILURE(*status)){
+        return;
+    }
+
+    paperSizeBundle = measurementTypeBundleForLocale(localeID, PAPER_SIZE, status);
+    paperSize = ures_getIntVector(paperSizeBundle, &len,  status);
+
+    if(U_SUCCESS(*status)){
+        if(len < 2){
+            *status = U_INTERNAL_PROGRAM_ERROR;
+        }else{
+            *height = paperSize[0];
+            *width  = paperSize[1];
+        }
+    }
+
+    ures_close(paperSizeBundle);
+
+}
+
+U_CAPI void U_EXPORT2
+ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status) {
+    UResourceBundle *rb = NULL;
+    rb = ures_openDirect(NULL, "supplementalData", status);
+    ures_getVersionByKey(rb, "cldrVersion", versionArray, status);
+    ures_close(rb);
+}
+
+U_CAPI int32_t U_EXPORT2
+ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
+                                 UChar *result,
+                                 int32_t resultCapacity,
+                                 UErrorCode *status) {
+    UResourceBundle *patternBundle;
+    int32_t len = 0;
+    const UChar *pattern = NULL;
+    UErrorCode localStatus = U_ZERO_ERROR;
+
+    if (U_FAILURE(*status))
+        return 0;
+
+    patternBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", NULL, &localStatus);
+
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status)){
+        ures_close(patternBundle);
+        return 0;
+    }
+
+    pattern = ures_getStringByKey(patternBundle, "pattern", &len, &localStatus);
+    ures_close(patternBundle);
+
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status)){
+        return 0;
+    }
+
+    u_strncpy(result, pattern, resultCapacity);
+    return len;
+}
+
+
+U_CAPI int32_t U_EXPORT2
+ulocdata_getLocaleSeparator(ULocaleData *uld,
+                            UChar *result,
+                            int32_t resultCapacity,
+                            UErrorCode *status)  {
+    UResourceBundle *separatorBundle;
+    int32_t len = 0;
+    const UChar *separator = NULL;
+    UErrorCode localStatus = U_ZERO_ERROR;
+    UChar *p0, *p1;
+    static const UChar sub0[4] = { 0x007b, 0x0030, 0x007d , 0x0000 }; /* {0} */
+    static const UChar sub1[4] = { 0x007b, 0x0031, 0x007d , 0x0000 }; /* {1} */
+    static const int32_t subLen = 3;
+
+    if (U_FAILURE(*status))
+        return 0;
+
+    separatorBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", NULL, &localStatus);
+
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status)){
+        ures_close(separatorBundle);
+        return 0;
+    }
+
+    separator = ures_getStringByKey(separatorBundle, "separator", &len, &localStatus);
+    ures_close(separatorBundle);
+
+    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
+        localStatus = U_MISSING_RESOURCE_ERROR;
+    }
+
+    if (localStatus != U_ZERO_ERROR) {
+        *status = localStatus;
+    }
+
+    if (U_FAILURE(*status)){
+        return 0;
+    }
+
+    /* For backwards compatibility, if we have a pattern, return the portion between {0} and {1} */
+    p0=u_strstr(separator, sub0);
+    p1=u_strstr(separator, sub1);
+    if (p0!=NULL && p1!=NULL && p0<=p1) {
+        separator = (const UChar *)p0 + subLen;
+        len = p1 - separator;
+        /* Desired separator is no longer zero-terminated; handle that if necessary */
+        if (len < resultCapacity) {
+            u_strncpy(result, separator, len);
+            result[len] = 0;
+            return len;
+        }
+    }
+
+    u_strncpy(result, separator, resultCapacity);
+    return len;
+}
index 623e069..179ab84 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  umsg.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 43ef1c7..e3538d3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  umsg_imp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 86c55d1..88a78d6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index e8e171f..7ae8302 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index a56f1a6..44abbea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 4d6eaa0..7d85113 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 1442f75..c7b361f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -15,7 +15,6 @@
 #include "unicode/utypes.h"
 #include "unicode/uobject.h"
 #include "unicode/locid.h"
-#include "unicode/unistr.h"
 
 #if !UCONFIG_NO_COLLATION
 
index 3541207..90073b2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6ebf539..8776e21 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index c9f0f11..ab3c28f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index f2bd2ec..4feaa1b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
@@ -47,7 +47,6 @@ U_NAMESPACE_BEGIN
 
 struct CollationData;
 
-class CharacterIterator;
 class CollationIterator;
 class RuleBasedCollator;
 class UCollationPCE;
index 7e467df..e41be2e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -58,7 +58,7 @@
 
 #include "unicode/uobject.h"
 #include "unicode/ucol.h"
-#include "unicode/unorm.h"
+#include "unicode/normlzr.h"
 #include "unicode/locid.h"
 #include "unicode/uniset.h"
 #include "unicode/umisc.h"
@@ -158,7 +158,7 @@ class CollationKey;
 * @see         CollationKey
 * @see         CollationElementIterator
 * @see         Locale
-* @see         Normalizer2
+* @see         Normalizer
 * @version     2.0 11/15/01
 */
 
@@ -393,8 +393,8 @@ public:
      * is less than, greater than or equal to another string array.
      * <p>Example of use:
      * <pre>
-     * .       char16_t ABC[] = {0x41, 0x42, 0x43, 0};  // = "ABC"
-     * .       char16_t abc[] = {0x61, 0x62, 0x63, 0};  // = "abc"
+     * .       UChar ABC[] = {0x41, 0x42, 0x43, 0};  // = "ABC"
+     * .       UChar abc[] = {0x61, 0x62, 0x63, 0};  // = "abc"
      * .       UErrorCode status = U_ZERO_ERROR;
      * .       Collator *myCollation =
      * .                         Collator::createInstance(Locale::getUS(), status);
@@ -420,8 +420,8 @@ public:
      *         target
      * @deprecated ICU 2.6 use the overload with UErrorCode &
      */
-    virtual EComparisonResult compare(const char16_t* source, int32_t sourceLength,
-                                      const char16_t* target, int32_t targetLength)
+    virtual EComparisonResult compare(const UChar* source, int32_t sourceLength,
+                                      const UChar* target, int32_t targetLength)
                                       const;
 
     /**
@@ -440,8 +440,8 @@ public:
      * than target
      * @stable ICU 2.6
      */
-    virtual UCollationResult compare(const char16_t* source, int32_t sourceLength,
-                                      const char16_t* target, int32_t targetLength,
+    virtual UCollationResult compare(const UChar* source, int32_t sourceLength,
+                                      const UChar* target, int32_t targetLength,
                                       UErrorCode &status) const = 0;
 
     /**
@@ -517,7 +517,7 @@ public:
      * @see CollationKey#compare
      * @stable ICU 2.0
      */
-    virtual CollationKey& getCollationKey(const char16_t*source,
+    virtual CollationKey& getCollationKey(const UChar*source,
                                           int32_t sourceLength,
                                           CollationKey& key,
                                           UErrorCode& status) const = 0;
@@ -911,7 +911,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop one or more (if contraction) char16_ts to which the variable top should be set
+     * @param varTop one or more (if contraction) UChars to which the variable top should be set
      * @param len length of variable top string. If -1 it is considered to be zero terminated.
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
@@ -920,7 +920,7 @@ public:
      * @return variable top primary weight
      * @deprecated ICU 53 Call setMaxVariable() instead.
      */
-    virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status) = 0;
+    virtual uint32_t setVariableTop(const UChar *varTop, int32_t len, UErrorCode &status) = 0;
 
     /**
      * Sets the variable top to the primary weight of the specified string.
@@ -929,7 +929,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop a UnicodeString size 1 or more (if contraction) of char16_ts to which the variable top should be set
+     * @param varTop a UnicodeString size 1 or more (if contraction) of UChars to which the variable top should be set
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
      *    U_ILLEGAL_ARGUMENT_ERROR if the variable top is beyond
@@ -1002,7 +1002,7 @@ public:
                               int32_t resultLength) const = 0;
 
     /**
-     * Get the sort key as an array of bytes from a char16_t buffer.
+     * Get the sort key as an array of bytes from a UChar buffer.
      * Sort key byte arrays are zero-terminated and can be compared using
      * strcmp().
      *
@@ -1020,7 +1020,7 @@ public:
      * @return Number of bytes needed for storing the sort key
      * @stable ICU 2.2
      */
-    virtual int32_t getSortKey(const char16_t*source, int32_t sourceLength,
+    virtual int32_t getSortKey(const UChar*source, int32_t sourceLength,
                                uint8_t*result, int32_t resultLength) const = 0;
 
     /**
index 3fbe5da..1fcc5c5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index e321df8..65c5b39 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -46,7 +46,7 @@ class U_I18N_API CurrencyAmount: public Measure {
      * is invalid, then this will be set to a failing value.
      * @stable ICU 3.0
      */
-    CurrencyAmount(const Formattable& amount, ConstChar16Ptr isoCode,
+    CurrencyAmount(const Formattable& amount, const UChar* isoCode,
                    UErrorCode &ec);
 
     /**
@@ -59,7 +59,7 @@ class U_I18N_API CurrencyAmount: public Measure {
      * then this will be set to a failing value.
      * @stable ICU 3.0
      */
-    CurrencyAmount(double amount, ConstChar16Ptr isoCode,
+    CurrencyAmount(double amount, const UChar* isoCode,
                    UErrorCode &ec);
 
     /**
@@ -115,14 +115,14 @@ class U_I18N_API CurrencyAmount: public Measure {
      * Return the ISO currency code of this object.
      * @stable ICU 3.0
      */
-    inline const char16_t* getISOCurrency() const;
+    inline const UChar* getISOCurrency() const;
 };
 
 inline const CurrencyUnit& CurrencyAmount::getCurrency() const {
     return (const CurrencyUnit&) getUnit();
 }
 
-inline const char16_t* CurrencyAmount::getISOCurrency() const {
+inline const UChar* CurrencyAmount::getISOCurrency() const {
     return getCurrency().getISOCurrency();
 }
 
index 33c18b0..acf8b53 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index fd0f9f2..9ca4dc5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -28,7 +28,7 @@ U_NAMESPACE_BEGIN
 
 /**
  * A unit of currency, such as USD (U.S. dollars) or JPY (Japanese
- * yen).  This class is a thin wrapper over a char16_t string that
+ * yen).  This class is a thin wrapper over a UChar string that
  * subclasses MeasureUnit, for use with Measure and MeasureFormat.
  *
  * @author Alan Liu
@@ -44,7 +44,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit {
      * then this will be set to a failing value.
      * @stable ICU 3.0
      */
-    CurrencyUnit(ConstChar16Ptr isoCode, UErrorCode &ec);
+    CurrencyUnit(const UChar* isoCode, UErrorCode &ec);
 
     /**
      * Copy constructor
@@ -93,16 +93,16 @@ class U_I18N_API CurrencyUnit: public MeasureUnit {
      * Return the ISO currency code of this object.
      * @stable ICU 3.0
      */
-    inline const char16_t* getISOCurrency() const;
+    inline const UChar* getISOCurrency() const;
 
  private:
     /**
      * The ISO 4217 code of this object.
      */
-    char16_t isoCode[4];
+    UChar isoCode[4];
 };
 
-inline const char16_t* CurrencyUnit::getISOCurrency() const {
+inline const UChar* CurrencyUnit::getISOCurrency() const {
     return isoCode;
 }
 
index 3da0797..3114126 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 3a502d0..946227a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -35,7 +35,6 @@
 #include "unicode/uobject.h"
 #include "unicode/locid.h"
 #include "unicode/unum.h"
-#include "unicode/unistr.h"
 
 /**
  * \file
@@ -393,7 +392,7 @@ public:
      * Returns that pattern stored in currecy info. Internal API for use by NumberFormat API.
      * @internal
      */
-    inline const char16_t* getCurrencyPattern(void) const;
+    inline const UChar* getCurrencyPattern(void) const;
 #endif  /* U_HIDE_INTERNAL_API */
 
 private:
@@ -424,7 +423,7 @@ private:
 
     char actualLocale[ULOC_FULLNAME_CAPACITY];
     char validLocale[ULOC_FULLNAME_CAPACITY];
-    const char16_t* currPattern;
+    const UChar* currPattern;
 
     UnicodeString currencySpcBeforeSym[UNUM_CURRENCY_SPACING_COUNT];
     UnicodeString currencySpcAfterSym[UNUM_CURRENCY_SPACING_COUNT];
@@ -492,7 +491,7 @@ DecimalFormatSymbols::getLocale() const {
 }
 
 #ifndef U_HIDE_INTERNAL_API
-inline const char16_t*
+inline const UChar*
 DecimalFormatSymbols::getCurrencyPattern() const {
     return currPattern;
 }
index 1deff5b..7339399 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -604,7 +604,7 @@ template class U_I18N_API    EnumSet<UNumberFormatAttribute,
  * including prefix and suffix, determines the format width.  For example, in
  * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
  *
- * <li>The width is counted in 16-bit code units (char16_ts).
+ * <li>The width is counted in 16-bit code units (UChars).
  *
  * <li>Some parameters which usually do not matter have meaning when padding is
  * used, because the pattern width is significant with padding.  In the pattern
@@ -1961,14 +1961,14 @@ public:
      * @param ec input-output error code
      * @stable ICU 3.0
      */
-    virtual void setCurrency(const char16_t* theCurrency, UErrorCode& ec);
+    virtual void setCurrency(const UChar* theCurrency, UErrorCode& ec);
 
     /**
      * Sets the currency used to display currency amounts.  See
-     * setCurrency(const char16_t*, UErrorCode&).
-     * @deprecated ICU 3.0. Use setCurrency(const char16_t*, UErrorCode&).
+     * setCurrency(const UChar*, UErrorCode&).
+     * @deprecated ICU 3.0. Use setCurrency(const UChar*, UErrorCode&).
      */
-    virtual void setCurrency(const char16_t* theCurrency);
+    virtual void setCurrency(const UChar* theCurrency);
 
     /**
      * Sets the <tt>Currency Context</tt> object used to display currency.
@@ -2108,7 +2108,7 @@ private:
     void parse(const UnicodeString& text,
                Formattable& result,
                ParsePosition& pos,
-               char16_t* currency) const;
+               UChar* currency) const;
 
     enum {
         fgStatusInfinite,
@@ -2124,7 +2124,7 @@ private:
                    int8_t type,
                    ParsePosition& parsePosition,
                    DigitList& digits, UBool* status,
-                   char16_t* currency) const;
+                   UChar* currency) const;
 
     // Mixed style parsing for currency.
     // It parses against the current currency pattern
@@ -2135,7 +2135,7 @@ private:
                            ParsePosition& parsePosition,
                            DigitList& digits,
                            UBool* status,
-                           char16_t* currency) const;
+                           UChar* currency) const;
 
     int32_t skipPadding(const UnicodeString& text, int32_t position) const;
 
@@ -2146,7 +2146,7 @@ private:
                          const UnicodeString* affixPat,
                          UBool complexCurrencyParsing,
                          int8_t type,
-                         char16_t* currency) const;
+                         UChar* currency) const;
 
     static UnicodeString& trimMarksFromAffix(const UnicodeString& affix, UnicodeString& trimmedAffix);
 
@@ -2169,7 +2169,7 @@ private:
                                 const UnicodeString& input,
                                 int32_t pos,
                                 int8_t type,
-                                char16_t* currency) const;
+                                UChar* currency) const;
 
     static int32_t match(const UnicodeString& text, int32_t pos, UChar32 ch);
 
@@ -2195,11 +2195,11 @@ private:
     void setupCurrencyAffixPatterns(UErrorCode& status);
 
     // get the currency rounding with respect to currency usage
-    double getCurrencyRounding(const char16_t* currency,
+    double getCurrencyRounding(const UChar* currency,
                                UErrorCode* ec) const;
 
     // get the currency fraction with respect to currency usage
-    int getCurrencyFractionDigits(const char16_t* currency,
+    int getCurrencyFractionDigits(const UChar* currency,
                                   UErrorCode* ec) const;
 
     // hashtable operations
@@ -2271,7 +2271,7 @@ protected:
      * have a capacity of at least 4
      * @internal
      */
-    virtual void getEffectiveCurrency(char16_t* result, UErrorCode& ec) const;
+    virtual void getEffectiveCurrency(UChar* result, UErrorCode& ec) const;
 
   /** number of integer digits
    * @stable ICU 2.4
index fe914b4..7573478 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -25,7 +25,6 @@
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/calendar.h"
-#include "unicode/strenum.h"
 #include "unicode/uobject.h"
 #include "unicode/locid.h"
 #include "unicode/udat.h"
@@ -427,13 +426,13 @@ public:
      * doesn't specify any time separator, and always recognized when parsing.
      * @internal
      */
-    static const char16_t DEFAULT_TIME_SEPARATOR = 0x003a;  // ':'
+    static const UChar DEFAULT_TIME_SEPARATOR = 0x003a;  // ':'
 
     /**
      * This alternate time separator is always recognized when parsing.
      * @internal
      */
-    static const char16_t ALTERNATE_TIME_SEPARATOR = 0x002e;  // '.'
+    static const UChar ALTERNATE_TIME_SEPARATOR = 0x002e;  // '.'
 
     /**
      * Gets the time separator string. For example: ":".
@@ -567,7 +566,7 @@ public:
      * @return    the non-localized date-time pattern characters
      * @stable ICU 2.0
      */
-    static const char16_t * U_EXPORT2 getPatternUChars(void);
+    static const UChar * U_EXPORT2 getPatternUChars(void);
 
     /**
      * Gets localized date-time pattern characters. For example: 'u', 't', etc.
@@ -978,7 +977,7 @@ private:
      * Returns the date format field index of the pattern character c,
      * or UDAT_FIELD_COUNT if c is not a pattern character.
      */
-    static UDateFormatField U_EXPORT2 getPatternCharIndex(char16_t c);
+    static UDateFormatField U_EXPORT2 getPatternCharIndex(UChar c);
 
     /**
      * Returns TRUE if f (with its pattern character repeated count times) is a numeric field.
@@ -988,7 +987,7 @@ private:
     /**
      * Returns TRUE if c (repeated count times) is the pattern character for a numeric field.
      */
-    static UBool U_EXPORT2 isNumericPatternChar(char16_t c, int32_t count);
+    static UBool U_EXPORT2 isNumericPatternChar(UChar c, int32_t count);
 public:
 #ifndef U_HIDE_INTERNAL_API
     /**
index 5eaa559..68360b8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************************
 * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -996,7 +996,7 @@ private:
 
 
     // from calendar field to pattern letter
-    static const char16_t fgCalendarFieldToPatternLetter[];
+    static const UChar fgCalendarFieldToPatternLetter[];
 
 
     /**
index 9c64769..325eca6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 6fd5f5f..fd617ce 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -27,7 +27,6 @@ U_NAMESPACE_BEGIN
  */
 
 
-class CharString;
 class Hashtable;
 class FormatParser;
 class DateTimeMatcher;
@@ -518,7 +517,7 @@ private:
     DateTimeMatcher *skipMatcher;
     Hashtable *fAvailableFormatKeyHash;
     UnicodeString emptyString;
-    char16_t fDefaultHourFormatChar;
+    UChar fDefaultHourFormatChar;
 
     int32_t fAllowedHourFormats[7];  // Actually an array of AllowedHourFormat enum type, ending with UNKNOWN.
 
index 0767249..fa1294e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 0bcc8da..ad75b77 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 766a719..ac5daba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index b05318d..bce5251 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 4ad44f9..59c3638 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index e3c27d0..943d445 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2b4fe1d..756bba1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 1997-2013, International Business Machines Corporation and others.
index dac4255..37b3314 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index af72449..afef83e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -345,29 +345,35 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createKarat(UErrorCode &status);
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of concentr: milligram-per-deciliter.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of concentr: millimole-per-liter.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of concentr: part-per-million.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     static MeasureUnit *createPartPerMillion(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns unit of consumption: liter-per-100kilometers.
@@ -393,21 +399,55 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createMilePerGallon(UErrorCode &status);
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of consumption: mile-per-gallon-imperial.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns unit of coordinate: east.
+     * Caller owns returned value and must free it.
+     * @param status ICU error code.
+     * @draft ICU 58
+     */
+    static MeasureUnit *createEast(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
 
-    /*
-     * The following were draft ICU 58, but have been withdrawn:
-     * static MeasureUnit *createEast(UErrorCode &status);
-     * static MeasureUnit *createNorth(UErrorCode &status);
-     * static MeasureUnit *createSouth(UErrorCode &status);
-     * static MeasureUnit *createWest(UErrorCode &status);
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns unit of coordinate: north.
+     * Caller owns returned value and must free it.
+     * @param status ICU error code.
+     * @draft ICU 58
      */
+    static MeasureUnit *createNorth(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns unit of coordinate: south.
+     * Caller owns returned value and must free it.
+     * @param status ICU error code.
+     * @draft ICU 58
+     */
+    static MeasureUnit *createSouth(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns unit of coordinate: west.
+     * Caller owns returned value and must free it.
+     * @param status ICU error code.
+     * @draft ICU 58
+     */
+    static MeasureUnit *createWest(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns unit of digital: bit.
@@ -833,16 +873,6 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createPicometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Returns unit of length: point.
-     * Caller owns returned value and must free it.
-     * @param status ICU error code.
-     * @draft ICU 59
-     */
-    static MeasureUnit *createPoint(UErrorCode &status);
-#endif  /* U_HIDE_DRAFT_API */
-
     /**
      * Returns unit of length: yard.
      * Caller owns returned value and must free it.
@@ -1219,13 +1249,15 @@ class U_I18N_API MeasureUnit: public UObject {
      */
     static MeasureUnit *createGallon(UErrorCode &status);
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Returns unit of volume: gallon-imperial.
      * Caller owns returned value and must free it.
      * @param status ICU error code.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     static MeasureUnit *createGallonImperial(UErrorCode &status);
+#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns unit of volume: hectoliter.
index 99b7d7a..2bd78d2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index fef8010..1a99738 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 2007-2013, International Business Machines Corporation and
@@ -939,7 +939,7 @@ private:
      * @return the index of the list which matches the keyword s.
      */
     static int32_t findKeyword( const UnicodeString& s,
-                                const char16_t * const *list);
+                                const UChar * const *list);
 
     /**
      * Thin wrapper around the format(... AppendableWrapper ...) variant.
index b8dec36..d46e1fd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -931,7 +931,7 @@ public:
      * @param ec input-output error code
      * @stable ICU 3.0
      */
-    virtual void setCurrency(const char16_t* theCurrency, UErrorCode& ec);
+    virtual void setCurrency(const UChar* theCurrency, UErrorCode& ec);
 
     /**
      * Gets the currency used to display currency
@@ -940,7 +940,7 @@ public:
      * the currency in use, or a pointer to the empty string.
      * @stable ICU 2.6
      */
-    const char16_t* getCurrency() const;
+    const UChar* getCurrency() const;
        
     /**
      * Set a particular UDisplayContext value in the formatter, such as
@@ -1018,7 +1018,7 @@ protected:
      * have a capacity of at least 4
      * @internal
      */
-    virtual void getEffectiveCurrency(char16_t* result, UErrorCode& ec) const;
+    virtual void getEffectiveCurrency(UChar* result, UErrorCode& ec) const;
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -1065,7 +1065,7 @@ private:
     UBool      fLenient; // TRUE => lenient parse is enabled
 
     // ISO currency code
-    char16_t      fCurrency[4];
+    UChar      fCurrency[4];
 
     UDisplayContext fCapitalizationContext;
 
index 9ec3f13..4cc083f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -193,7 +193,7 @@ private:
 
     void setAlgorithmic(UBool algorithmic);
 
-    void setDesc(const UnicodeString &desc);
+    void setDesc(UnicodeString desc);
 
     void setName(const char* name);
 
index fd537c2..369a8b7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index a14f392..146e6be 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -29,9 +29,6 @@
 
 #include "unicode/format.h"
 #include "unicode/upluralrules.h"
-#ifndef U_HIDE_INTERNAL_API
-#include "unicode/numfmt.h"
-#endif  /* U_HIDE_INTERNAL_API */
 
 /**
  * Value returned by PluralRules::getUniqueKeywordValue() when there is no
@@ -349,22 +346,6 @@ public:
 
 #ifndef U_HIDE_INTERNAL_API
     /**
-     * Given a number and a format, returns the keyword of the first applicable
-     * rule for this PluralRules object.
-     * Note: This internal preview interface may be removed in the future if
-     * an architecturally cleaner solution reaches stable status.
-     * @param obj The numeric object for which the rule should be determined.
-     * @param fmt The NumberFormat specifying how the number will be formatted
-     *        (this can affect the plural form, e.g. "1 dollar" vs "1.0 dollars").
-     * @param status  Input/output parameter. If at entry this indicates a
-     *                failure status, the method returns immediately; otherwise
-     *                this is set to indicate the outcome of the call.
-     * @return The keyword of the selected rule. Undefined in the case of an error.
-     * @internal ICU 59 technology preview, may be removed in the future
-     */
-    UnicodeString select(const Formattable& obj, const NumberFormat& fmt, UErrorCode& status) const;
-
-    /**
       * @internal
       */
     UnicodeString select(const FixedDecimal &number) const;
index 3d9301b..d41ffbe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -866,52 +866,6 @@ public:
                                 FieldPosition& pos,
                                 UErrorCode& status) const;
 
-protected:
-    /**
-     * Format a decimal number.
-     * The number is a DigitList wrapper onto a floating point decimal number.
-     * The default implementation in NumberFormat converts the decimal number
-     * to a double and formats that.  Subclasses of NumberFormat that want
-     * to specifically handle big decimal numbers must override this method.
-     * class DecimalFormat does so.
-     *
-     * @param number    The number, a DigitList format Decimal Floating Point.
-     * @param appendTo  Output parameter to receive result.
-     *                  Result is appended to existing contents.
-     * @param posIter   On return, can be used to iterate over positions
-     *                  of fields generated by this format call.
-     * @param status    Output param filled with success/failure status.
-     * @return          Reference to 'appendTo' parameter.
-     * @internal
-     */
-    virtual UnicodeString& format(const DigitList &number,
-                                  UnicodeString& appendTo,
-                                  FieldPositionIterator* posIter,
-                                  UErrorCode& status) const;
-
-    /**
-     * Format a decimal number.
-     * The number is a DigitList wrapper onto a floating point decimal number.
-     * The default implementation in NumberFormat converts the decimal number
-     * to a double and formats that.  Subclasses of NumberFormat that want
-     * to specifically handle big decimal numbers must override this method.
-     * class DecimalFormat does so.
-     *
-     * @param number    The number, a DigitList format Decimal Floating Point.
-     * @param appendTo  Output parameter to receive result.
-     *                  Result is appended to existing contents.
-     * @param pos       On input: an alignment field, if desired.
-     *                  On output: the offsets of the alignment field.
-     * @param status    Output param filled with success/failure status.
-     * @return          Reference to 'appendTo' parameter.
-     * @internal
-     */
-    virtual UnicodeString& format(const DigitList &number,
-                                  UnicodeString& appendTo,
-                                  FieldPosition& pos,
-                                  UErrorCode& status) const;
-public:
-
   using NumberFormat::parse;
 
   /**
@@ -1077,8 +1031,7 @@ private:
     NFRule * initializeDefaultNaNRule(UErrorCode &status);
     const NFRule * getDefaultNaNRule() const;
     PluralFormat *createPluralFormat(UPluralType pluralType, const UnicodeString &pattern, UErrorCode& status) const;
-    UnicodeString& adjustForCapitalizationContext(int32_t startPos, UnicodeString& currentResult, UErrorCode& status) const;
-    UnicodeString& format(int64_t number, NFRuleSet *ruleSet, UnicodeString& toAppendTo, UErrorCode& status) const;
+    UnicodeString& adjustForCapitalizationContext(int32_t startPos, UnicodeString& currentResult) const;
 
 private:
     NFRuleSet **ruleSets;
index 6d652f6..4df5850 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6829f7b..d23a3ab 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  regex.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   indentation:4
 *
 *   created on: 2002oct22
@@ -350,17 +350,17 @@ public:
 private:
     /**
      * Cause a compilation error if an application accidentally attempts to
-     *   create a matcher with a (char16_t *) string as input rather than
+     *   create a matcher with a (UChar *) string as input rather than
      *   a UnicodeString.  Avoids a dangling reference to a temporary string.
      * <p>
-     * To efficiently work with char16_t *strings, wrap the data in a UnicodeString
+     * To efficiently work with UChar *strings, wrap the data in a UnicodeString
      * using one of the aliasing constructors, such as
-     * <code>UnicodeString(UBool isTerminated, const char16_t *text, int32_t textLength);</code>
+     * <code>UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength);</code>
      * or in a UText, using
-     * <code>utext_openUChars(UText *ut, const char16_t *text, int64_t textLength, UErrorCode *status);</code>
+     * <code>utext_openUChars(UText *ut, const UChar *text, int64_t textLength, UErrorCode *status);</code>
      *
      */
-    RegexMatcher *matcher(const char16_t *input,
+    RegexMatcher *matcher(const UChar *input,
         UErrorCode          &status) const;
 public:
 
@@ -748,17 +748,17 @@ public:
 private:
     /**
      * Cause a compilation error if an application accidentally attempts to
-     *   create a matcher with a (char16_t *) string as input rather than
+     *   create a matcher with a (UChar *) string as input rather than
      *   a UnicodeString.    Avoids a dangling reference to a temporary string.
      * <p>
-     * To efficiently work with char16_t *strings, wrap the data in a UnicodeString
+     * To efficiently work with UChar *strings, wrap the data in a UnicodeString
      * using one of the aliasing constructors, such as
-     * <code>UnicodeString(UBool isTerminated, const char16_t *text, int32_t textLength);</code>
+     * <code>UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength);</code>
      * or in a UText, using
-     * <code>utext_openUChars(UText *ut, const char16_t *text, int64_t textLength, UErrorCode *status);</code>
+     * <code>utext_openUChars(UText *ut, const UChar *text, int64_t textLength, UErrorCode *status);</code>
      *
      */
-    RegexMatcher(const UnicodeString &regexp, const char16_t *input,
+    RegexMatcher(const UnicodeString &regexp, const UChar *input,
         uint32_t flags, UErrorCode &status);
 public:
 
@@ -1156,17 +1156,17 @@ public:
 private:
     /**
      * Cause a compilation error if an application accidentally attempts to
-     *   reset a matcher with a (char16_t *) string as input rather than
+     *   reset a matcher with a (UChar *) string as input rather than
      *   a UnicodeString.    Avoids a dangling reference to a temporary string.
      * <p>
-     * To efficiently work with char16_t *strings, wrap the data in a UnicodeString
+     * To efficiently work with UChar *strings, wrap the data in a UnicodeString
      * using one of the aliasing constructors, such as
-     * <code>UnicodeString(UBool isTerminated, const char16_t *text, int32_t textLength);</code>
+     * <code>UnicodeString(UBool isTerminated, const UChar *text, int32_t textLength);</code>
      * or in a UText, using
-     * <code>utext_openUChars(UText *ut, const char16_t *text, int64_t textLength, UErrorCode *status);</code>
+     * <code>utext_openUChars(UText *ut, const UChar *text, int64_t textLength, UErrorCode *status);</code>
      *
      */
-    RegexMatcher &reset(const char16_t *input);
+    RegexMatcher &reset(const UChar *input);
 public:
 
    /**
index 80b2929..6bb6c74 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 09d9620..e91d206 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************
@@ -230,7 +230,6 @@ typedef enum UDateDirection {
 
 U_NAMESPACE_BEGIN
 
-class BreakIterator;
 class RelativeDateTimeCacheData;
 class SharedNumberFormat;
 class SharedPluralRules;
@@ -415,6 +414,7 @@ public:
             UnicodeString& appendTo,
             UErrorCode& status) const;
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Format a combination of URelativeDateTimeUnit and numeric offset
      * using a numeric style, e.g. "1 week ago", "in 1 week",
@@ -430,7 +430,7 @@ public:
      *                  appended.
      * @param status    ICU error code returned here.
      * @return          appendTo
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString& formatNumeric(
             double offset,
@@ -453,13 +453,14 @@ public:
      *                  appended.
      * @param status    ICU error code returned here.
      * @return          appendTo
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UnicodeString& format(
             double offset,
             URelativeDateTimeUnit unit,
             UnicodeString& appendTo,
             UErrorCode& status) const;
+#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Combines a relative date string and a time string in this object's
index 15023d5..0035a6e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 65f7f10..0acfcce 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 08e9d44..37a8f2b 100755 (executable)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5b80263..d71fe36 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 4733e75..e6cf28d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 * Copyright (C) 1997-2016, International Business Machines Corporation and
@@ -1170,7 +1170,7 @@ public:
      * @param field The UDateFormatField to get
      * @stable ICU 54
      */
-    const NumberFormat * getNumberFormatForField(char16_t field) const;
+    const NumberFormat * getNumberFormatForField(UChar field) const;
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -1262,7 +1262,7 @@ private:
      *                  succeeds.
      */
     void subFormat(UnicodeString &appendTo,
-                   char16_t ch,
+                   UChar ch,
                    int32_t count,
                    UDisplayContext capitalizationContext,
                    int32_t fieldNum,
@@ -1294,7 +1294,7 @@ private:
      * Return true if the given format character, occuring count
      * times, represents a numeric field.
      */
-    static UBool isNumeric(char16_t formatChar, int32_t count);
+    static UBool isNumeric(UChar formatChar, int32_t count);
 
     /**
      * Returns TRUE if the patternOffset is at the start of a numeric field.
@@ -1412,7 +1412,7 @@ private:
      * @return the new start position if matching succeeded; a negative number
      * indicating matching failure, otherwise.
      */
-    int32_t subParse(const UnicodeString& text, int32_t& start, char16_t ch, int32_t count,
+    int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
                      UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], int32_t& saveHebrewMonth, Calendar& cal,
                      int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType, SimpleDateFormatMutableNFs &mutableNFs,
                      int32_t *dayPeriod=NULL) const;
@@ -1523,12 +1523,12 @@ private:
     /**
      * Map calendar field letter into calendar field level.
      */
-    static int32_t getLevelFromChar(char16_t ch);
+    static int32_t getLevelFromChar(UChar ch);
 
     /**
      * Tell if a character can be used to define a field in a format string.
      */
-    static UBool isSyntaxChar(char16_t ch);
+    static UBool isSyntaxChar(UChar ch);
 
     /**
      * The formatting pattern for this formatter.
index 1f42460..814e29c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************
index 57b5b32..ec50151 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 24ba213..c48ea38 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -308,8 +308,8 @@ public:
     * than target
     * @stable ICU 2.6
     */
-    virtual UCollationResult compare(const char16_t* source, int32_t sourceLength,
-                                     const char16_t* target, int32_t targetLength,
+    virtual UCollationResult compare(const UChar* source, int32_t sourceLength,
+                                     const UChar* target, int32_t targetLength,
                                      UErrorCode &status) const;
 
     /**
@@ -377,7 +377,7 @@ public:
      * @see CollationKey
      * @stable ICU 2.0
      */
-    virtual CollationKey& getCollationKey(const char16_t *source,
+    virtual CollationKey& getCollationKey(const UChar *source,
                                           int32_t sourceLength,
                                           CollationKey& key,
                                           UErrorCode& status) const;
@@ -552,7 +552,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop one or more (if contraction) char16_ts to which the variable top should be set
+     * @param varTop one or more (if contraction) UChars to which the variable top should be set
      * @param len length of variable top string. If -1 it is considered to be zero terminated.
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
@@ -561,7 +561,7 @@ public:
      * @return variable top primary weight
      * @deprecated ICU 53 Call setMaxVariable() instead.
      */
-    virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status);
+    virtual uint32_t setVariableTop(const UChar *varTop, int32_t len, UErrorCode &status);
 
     /**
      * Sets the variable top to the primary weight of the specified string.
@@ -570,7 +570,7 @@ public:
      * the top of one of the supported reordering groups,
      * and it must not be beyond the last of those groups.
      * See setMaxVariable().
-     * @param varTop a UnicodeString size 1 or more (if contraction) of char16_ts to which the variable top should be set
+     * @param varTop a UnicodeString size 1 or more (if contraction) of UChars to which the variable top should be set
      * @param status error code. If error code is set, the return value is undefined. Errors set by this function are: <br>
      *    U_CE_NOT_FOUND_ERROR if more than one character was passed and there is no such contraction<br>
      *    U_ILLEGAL_ARGUMENT_ERROR if the variable top is beyond
@@ -631,7 +631,7 @@ public:
                                int32_t resultLength) const;
 
     /**
-     * Get the sort key as an array of bytes from a char16_t buffer.
+     * Get the sort key as an array of bytes from a UChar buffer.
      *
      * Note that sort keys are often less efficient than simply doing comparison.
      * For more details, see the ICU User Guide.
@@ -646,7 +646,7 @@ public:
      * @return Number of bytes needed for storing the sort key
      * @stable ICU 2.2
      */
-    virtual int32_t getSortKey(const char16_t *source, int32_t sourceLength,
+    virtual int32_t getSortKey(const UChar *source, int32_t sourceLength,
                                uint8_t *result, int32_t resultLength) const;
 
     /**
@@ -821,17 +821,17 @@ private:
     void adoptTailoring(CollationTailoring *t, UErrorCode &errorCode);
 
     // Both lengths must be <0 or else both must be >=0.
-    UCollationResult doCompare(const char16_t *left, int32_t leftLength,
-                               const char16_t *right, int32_t rightLength,
+    UCollationResult doCompare(const UChar *left, int32_t leftLength,
+                               const UChar *right, int32_t rightLength,
                                UErrorCode &errorCode) const;
     UCollationResult doCompare(const uint8_t *left, int32_t leftLength,
                                const uint8_t *right, int32_t rightLength,
                                UErrorCode &errorCode) const;
 
-    void writeSortKey(const char16_t *s, int32_t length,
+    void writeSortKey(const UChar *s, int32_t length,
                       SortKeyByteSink &sink, UErrorCode &errorCode) const;
 
-    void writeIdenticalLevel(const char16_t *s, const char16_t *limit,
+    void writeIdenticalLevel(const UChar *s, const UChar *limit,
                              SortKeyByteSink &sink, UErrorCode &errorCode) const;
 
     const CollationSettings &getDefaultSettings() const;
index 83dee31..8cfe7e5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*************************************************************************
 * Copyright (c) 1997-2016, International Business Machines Corporation
@@ -863,7 +863,7 @@ private:
      * @param id zone id string
      * @return the pointer of the ID resource, or NULL.
      */
-    static const char16_t* findID(const UnicodeString& id);
+    static const UChar* findID(const UnicodeString& id);
 
     /**
      * Resolve a link in Olson tzdata.  When the given id is known and it's not a link,
@@ -873,7 +873,7 @@ private:
      * @param id zone id string
      * @return the dereferenced zone or NULL
      */
-    static const char16_t* dereferOlsonLink(const UnicodeString& id);
+    static const UChar* dereferOlsonLink(const UnicodeString& id);
 
     /**
      * Returns the region code associated with the given zone,
@@ -881,7 +881,7 @@ private:
      * @param id zone id string
      * @return the region associated with the given zone
      */
-    static const char16_t* getRegion(const UnicodeString& id);
+    static const UChar* getRegion(const UnicodeString& id);
 
   public:
 #ifndef U_HIDE_INTERNAL_API
@@ -893,7 +893,7 @@ private:
      * @return the region associated with the given zone
      * @internal
      */
-    static const char16_t* getRegion(const UnicodeString& id, UErrorCode& status);
+    static const UChar* getRegion(const UnicodeString& id, UErrorCode& status);
 #endif  /* U_HIDE_INTERNAL_API */
 
   private:
index fa59f10..a19a1f3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 274bfa6..ff132f8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 8f24585..b90d4a0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index bccba54..b068791 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -1319,7 +1319,7 @@ inline int32_t Transliterator::getMaximumContextLength(void) const {
 inline void Transliterator::setID(const UnicodeString& id) {
     ID = id;
     // NUL-terminate the ID string, which is a non-aliased copy.
-    ID.append((char16_t)0);
+    ID.append((UChar)0);
     ID.truncate(ID.length()-1);
 }
 
index 724ff4d..faf4b81 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -942,7 +942,7 @@ private:
      * @param parsedLen the parsed length, or 0 on failure.
      * @return the parsed offset in milliseconds.
      */
-    int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, char16_t separator,
+    int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, UChar separator,
         int32_t& parsedLen) const;
 
     /**
@@ -982,7 +982,7 @@ private:
      * @param maxFields The maximum fields
      * @return The offset string
      */
-    static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, char16_t sep,
+    static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, UChar sep,
         OffsetFields minFields, OffsetFields maxFields, UnicodeString& result);
 
     /**
@@ -1012,7 +1012,7 @@ private:
      * @param maxFields The maximum Fields to be parsed
      * @return Parsed offset, 0 or positive number.
      */
-    static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, char16_t sep,
+    static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, UChar sep,
         OffsetFields minFields, OffsetFields maxFields);
 
     /**
index 60f0e5e..8861a7d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1647fda..51b3ae1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index a476c68..53c34fe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c765e78..29c0845 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -425,8 +425,8 @@ enum UCalendarDateFields {
    */
   UCAL_IS_LEAP_MONTH,
 
-    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-     * it is needed for layout of Calendar, DateFormat, and other objects */
+    // Do not conditionalize with #ifndef U_HIDE_DEPRECATED_API,
+    // it is needed for layout of Calendar, DateFormat, and other objects
     /**
      * One more than the highest normal UCalendarDateFields value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
index ecabd9e..eae88f8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -131,7 +131,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
   UCOL_ATTRIBUTE_VALUE_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UColAttributeValue;
 
 /**
@@ -204,7 +204,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UCOL_REORDER_CODE_LIMIT         = 0x1005
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UColReorderCode;
 
 /**
@@ -342,8 +342,8 @@ typedef enum {
       */
      UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, 
 
-    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-     * it is needed for layout of RuleBasedCollator object. */
+    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+    // it is needed for layout of RuleBasedCollator object.
     /**
      * One more than the highest normal UColAttribute value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
@@ -1067,7 +1067,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UCOL_BOUND_VALUE_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UColBoundMode;
 
 /**
index 4e967af..b841049 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 52ed5ad..470cbab 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *   file name:  ucsdet.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   indentation:4
  *
  *   created on: 2005Aug04
  * in a single language, and a minimum of a few hundred bytes worth of plain text
  * in the language are needed.  The detection process will attempt to
  * ignore html or xml style markup that could otherwise obscure the content.
- * <p>
- * An alternative to the ICU Charset Detector is the
- * Compact Encoding Detector, https://github.com/google/compact_enc_det.
- * It often gives more accurate results, especially with short input samples.
  */
  
 
@@ -399,7 +395,7 @@ ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 /**
   * Enable or disable individual charset encoding.
   * A name of charset encoding must be included in the names returned by
-  * {@link #ucsdet_getAllDetectableCharsets()}.
+  * {@link #getAllDetectableCharsets()}.
   *
   * @param ucsd a Charset detector.
   * @param encoding encoding the name of charset encoding.
index 90aff20..cacfbe8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -763,19 +763,21 @@ typedef enum UDateFormatField {
     UDAT_RELATED_YEAR_FIELD = 34,
 #endif  /* U_HIDE_INTERNAL_API */
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * FieldPosition selector for 'b' field alignment.
      * Displays midnight and noon for 12am and 12pm, respectively, if available;
      * otherwise fall back to AM / PM.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_AM_PM_MIDNIGHT_NOON_FIELD = 35,
 
     /* FieldPosition selector for 'B' field alignment.
      * Displays flexible day periods, such as "in the morning", if available.
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_FLEXIBLE_DAY_PERIOD_FIELD = 36,
+#endif /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -795,7 +797,7 @@ typedef enum UDateFormatField {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UDAT_FIELD_COUNT = 38
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UDateFormatField;
 
 
@@ -817,7 +819,7 @@ typedef enum UDateFormatField {
  * of error (e.g., the input field is UDAT_FIELD_COUNT).
  * @stable ICU 4.4
  */
-U_CAPI UCalendarDateFields U_EXPORT2
+U_STABLE UCalendarDateFields U_EXPORT2
 udat_toCalendarDateField(UDateFormatField field);
 
 
@@ -849,7 +851,7 @@ udat_toCalendarDateField(UDateFormatField field);
  * an error occurred.
  * @stable ICU 2.0
  */
-U_CAPI UDateFormat* U_EXPORT2
+U_STABLE UDateFormat* U_EXPORT2
 udat_open(UDateFormatStyle  timeStyle,
           UDateFormatStyle  dateStyle,
           const char        *locale,
@@ -866,7 +868,7 @@ udat_open(UDateFormatStyle  timeStyle,
 * @param format The formatter to close.
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_close(UDateFormat* format);
 
 
@@ -900,8 +902,8 @@ typedef enum UDateFormatBooleanAttribute {
      */
     UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH = 3,
 
-    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-     * it is needed for layout of DateFormat object. */
+    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+    // it is needed for layout of DateFormat object.
     /**
      * One more than the highest normal UDateFormatBooleanAttribute value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
@@ -919,7 +921,7 @@ typedef enum UDateFormatBooleanAttribute {
  * @return The value of attr.
  * @stable ICU 53
  */
-U_CAPI UBool U_EXPORT2
+U_STABLE UBool U_EXPORT2
 udat_getBooleanAttribute(const UDateFormat* fmt, UDateFormatBooleanAttribute attr, UErrorCode* status);
 
 /**
@@ -932,7 +934,7 @@ udat_getBooleanAttribute(const UDateFormat* fmt, UDateFormatBooleanAttribute att
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 53
  */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_setBooleanAttribute(UDateFormat *fmt, UDateFormatBooleanAttribute attr, UBool newValue, UErrorCode* status);
 
 
@@ -964,7 +966,7 @@ U_NAMESPACE_END
  * @return A pointer to a UDateFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_CAPI UDateFormat* U_EXPORT2
+U_STABLE UDateFormat* U_EXPORT2
 udat_clone(const UDateFormat *fmt,
        UErrorCode *status);
 
@@ -986,7 +988,7 @@ udat_clone(const UDateFormat *fmt,
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_format(    const    UDateFormat*    format,
                         UDate           dateToFormat,
                         UChar*          result,
@@ -1016,7 +1018,7 @@ udat_format(    const    UDateFormat*    format,
 * @see UFieldPosition
 * @stable ICU 55
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_formatCalendar(    const UDateFormat*  format,
                         UCalendar*      calendar,
                         UChar*          result,
@@ -1051,7 +1053,7 @@ udat_formatCalendar(    const UDateFormat*  format,
 * @see UFieldPositionIterator
 * @stable ICU 55
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_formatForFields(   const UDateFormat* format,
                         UDate           dateToFormat,
                         UChar*          result,
@@ -1089,7 +1091,7 @@ udat_formatForFields(   const UDateFormat* format,
 * @see UFieldPositionIterator
 * @stable ICU 55
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_formatCalendarForFields( const UDateFormat* format,
                         UCalendar*      calendar,
                         UChar*          result,
@@ -1123,7 +1125,7 @@ udat_formatCalendarForFields( const UDateFormat* format,
 * @see udat_format
 * @stable ICU 2.0
 */
-U_CAPI UDate U_EXPORT2
+U_STABLE UDate U_EXPORT2
 udat_parse(const    UDateFormat*    format,
            const    UChar*          text,
                     int32_t         textLength,
@@ -1151,7 +1153,7 @@ udat_parse(const    UDateFormat*    format,
 * @see udat_format
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_parseCalendar(const    UDateFormat*    format,
                             UCalendar*      calendar,
                    const    UChar*          text,
@@ -1168,7 +1170,7 @@ udat_parseCalendar(const    UDateFormat*    format,
 * @see udat_setLenient
 * @stable ICU 2.0
 */
-U_CAPI UBool U_EXPORT2
+U_STABLE UBool U_EXPORT2
 udat_isLenient(const UDateFormat* fmt);
 
 /**
@@ -1180,7 +1182,7 @@ udat_isLenient(const UDateFormat* fmt);
 * @see dat_isLenient
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_setLenient(    UDateFormat*    fmt,
                     UBool          isLenient);
 
@@ -1193,7 +1195,7 @@ udat_setLenient(    UDateFormat*    fmt,
 * @see udat_setCalendar
 * @stable ICU 2.0
 */
-U_CAPI const UCalendar* U_EXPORT2
+U_STABLE const UCalendar* U_EXPORT2
 udat_getCalendar(const UDateFormat* fmt);
 
 /**
@@ -1205,7 +1207,7 @@ udat_getCalendar(const UDateFormat* fmt);
 * @see udat_setCalendar
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_setCalendar(            UDateFormat*    fmt,
                     const   UCalendar*      calendarToSet);
 
@@ -1218,7 +1220,7 @@ udat_setCalendar(            UDateFormat*    fmt,
 * @see udat_setNumberFormat
 * @stable ICU 2.0
 */
-U_CAPI const UNumberFormat* U_EXPORT2
+U_STABLE const UNumberFormat* U_EXPORT2
 udat_getNumberFormat(const UDateFormat* fmt);
 
 /**
@@ -1230,7 +1232,7 @@ udat_getNumberFormat(const UDateFormat* fmt);
 * @see udat_setNumberFormatForField
 * @stable ICU 54
 */
-U_CAPI const UNumberFormat* U_EXPORT2
+U_STABLE const UNumberFormat* U_EXPORT2
 udat_getNumberFormatForField(const UDateFormat* fmt, UChar field);
 
 /**
@@ -1248,7 +1250,7 @@ udat_getNumberFormatForField(const UDateFormat* fmt, UChar field);
 * @see udat_getNumberFormatForField
 * @stable ICU 54
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_adoptNumberFormatForFields(  UDateFormat* fmt,
                             const UChar* fields,
                                   UNumberFormat*  numberFormatToSet,
@@ -1265,7 +1267,7 @@ udat_adoptNumberFormatForFields(  UDateFormat* fmt,
 * @see udat_setNumberFormatForField
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_setNumberFormat(            UDateFormat*    fmt,
                         const   UNumberFormat*  numberFormatToSet);
 /**
@@ -1277,7 +1279,7 @@ udat_setNumberFormat(            UDateFormat*    fmt,
 * @see udat_getNumberFormat
 * @stable ICU 54
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_adoptNumberFormat(            UDateFormat*    fmt,
                                    UNumberFormat*  numberFormatToAdopt);
 /**
@@ -1289,7 +1291,7 @@ udat_adoptNumberFormat(            UDateFormat*    fmt,
 * @see udat_countAvailable
 * @stable ICU 2.0
 */
-U_CAPI const char* U_EXPORT2
+U_STABLE const char* U_EXPORT2
 udat_getAvailable(int32_t localeIndex);
 
 /**
@@ -1300,7 +1302,7 @@ udat_getAvailable(int32_t localeIndex);
 * @see udat_getAvailable
 * @stable ICU 2.0
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_countAvailable(void);
 
 /**
@@ -1313,7 +1315,7 @@ udat_countAvailable(void);
 * @see udat_Set2DigitYearStart
 * @stable ICU 2.0
 */
-U_CAPI UDate U_EXPORT2
+U_STABLE UDate U_EXPORT2
 udat_get2DigitYearStart(    const   UDateFormat     *fmt,
                                     UErrorCode      *status);
 
@@ -1327,7 +1329,7 @@ udat_get2DigitYearStart(    const   UDateFormat     *fmt,
 * @see udat_Set2DigitYearStart
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_set2DigitYearStart(    UDateFormat     *fmt,
                             UDate           d,
                             UErrorCode      *status);
@@ -1344,7 +1346,7 @@ udat_set2DigitYearStart(    UDateFormat     *fmt,
 * @see udat_applyPattern
 * @stable ICU 2.0
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_toPattern(    const   UDateFormat     *fmt,
                         UBool          localized,
                         UChar           *result,
@@ -1361,7 +1363,7 @@ udat_toPattern(    const   UDateFormat     *fmt,
 * @see udat_toPattern
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_applyPattern(            UDateFormat     *format,
                             UBool          localized,
                     const   UChar           *pattern,
@@ -1487,7 +1489,7 @@ typedef struct UDateFormatSymbols UDateFormatSymbols;
 * @see udat_setSymbols
 * @stable ICU 2.0
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_getSymbols(const   UDateFormat             *fmt,
                         UDateFormatSymbolType   type,
                         int32_t                 symbolIndex,
@@ -1507,7 +1509,7 @@ udat_getSymbols(const   UDateFormat             *fmt,
 * @see udat_setSymbols
 * @stable ICU 2.0
 */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 udat_countSymbols(    const    UDateFormat                *fmt,
                             UDateFormatSymbolType    type);
 
@@ -1526,7 +1528,7 @@ udat_countSymbols(    const    UDateFormat                *fmt,
 * @see udat_countSymbols
 * @stable ICU 2.0
 */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 udat_setSymbols(    UDateFormat             *format,
                     UDateFormatSymbolType   type,
                     int32_t                 symbolIndex,
@@ -1543,7 +1545,7 @@ udat_setSymbols(    UDateFormat             *format,
  * @return the locale name
  * @stable ICU 2.8
  */
-U_CAPI const char* U_EXPORT2
+U_STABLE const char* U_EXPORT2
 udat_getLocaleByType(const UDateFormat *fmt,
                      ULocDataLocaleType type,
                      UErrorCode* status);
@@ -1556,7 +1558,7 @@ udat_getLocaleByType(const UDateFormat *fmt,
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 51
  */
-U_CAPI void U_EXPORT2
+U_DRAFT void U_EXPORT2
 udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
 
 /**
@@ -1568,7 +1570,7 @@ udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
  * @return The UDisplayContextValue for the specified type.
  * @stable ICU 53
  */
-U_CAPI UDisplayContext U_EXPORT2
+U_STABLE UDisplayContext U_EXPORT2
 udat_getContext(const UDateFormat* fmt, UDisplayContextType type, UErrorCode* status);
 
 #ifndef U_HIDE_INTERNAL_API
index 9300ddc..582c437 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 76baa3d..47d3afb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udatpg.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -86,8 +86,8 @@ typedef enum UDateTimePatternField {
     /** @stable ICU 3.8 */
     UDATPG_ZONE_FIELD,
 
-    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-     * it is needed for layout of DateTimePatternGenerator object. */
+    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+    // it is needed for layout of DateTimePatternGenerator object.
     /**
      * One more than the highest normal UDateTimePatternField value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
index 3ae73b6..8dfa3df 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 9ba2a36..e4683d5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -57,7 +57,7 @@ typedef enum UFormattableType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UFMT_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UFormattableType;
 
 
index d015a23..c1e591e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index de8d853..ecf6fdc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ulocdata.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -55,7 +55,7 @@ typedef enum ULocaleDataExemplarSetType  {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     ULOCDATA_ES_COUNT=4
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } ULocaleDataExemplarSetType;
 
 /** The possible types of delimiters.
@@ -76,7 +76,7 @@ typedef enum ULocaleDataDelimiterType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     ULOCDATA_DELIMITER_COUNT = 4
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } ULocaleDataDelimiterType;
 
 /**
@@ -207,7 +207,7 @@ typedef enum UMeasurementSystem {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UMS_LIMIT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UMeasurementSystem;
 
 /**
index 5d235e4..b5f2ae9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -8,7 +8,7 @@
  ********************************************************************
  *
  *   file name:  umsg.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index ddcb0ad..1e98ff6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 065ce49..34d5442 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -25,7 +25,6 @@
 #include "unicode/parseerr.h"
 #include "unicode/uformattable.h"
 #include "unicode/udisplaycontext.h"
-#include "unicode/ufieldpositer.h"
 
 /**
  * \file
@@ -250,7 +249,7 @@ typedef enum UNumberFormatStyle {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UNUM_FORMAT_STYLE_COUNT=17,
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 
     /**
      * Default format
@@ -327,8 +326,8 @@ enum UCurrencySpacing {
     /** @stable ICU 4.8 */
     UNUM_CURRENCY_INSERT,
 
-    /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
-     * it is needed for layout of DecimalFormatSymbols object. */
+    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
+    // it is needed for layout of DecimalFormatSymbols object.
     /**
      * One more than the highest normal UCurrencySpacing value.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
@@ -372,7 +371,7 @@ typedef enum UNumberFormatFields {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UNUM_FIELD_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UNumberFormatFields;
 
 
@@ -554,59 +553,6 @@ unum_formatDouble(    const    UNumberFormat*  fmt,
             UFieldPosition  *pos, /* 0 if ignore */
             UErrorCode*     status);
 
-#ifndef U_HIDE_DRAFT_API
-/**
-* Format a double using a UNumberFormat according to the UNumberFormat's locale,
-* and initialize a UFieldPositionIterator that enumerates the subcomponents of
-* the resulting string.
-*
-* @param format
-*          The formatter to use.
-* @param number
-*          The number to format.
-* @param result
-*          A pointer to a buffer to receive the NULL-terminated formatted
-*          number. If the formatted number fits into dest but cannot be
-*          NULL-terminated (length == resultLength) then the error code is set
-*          to U_STRING_NOT_TERMINATED_WARNING. If the formatted number doesn't
-*          fit into result then the error code is set to
-*          U_BUFFER_OVERFLOW_ERROR.
-* @param resultLength
-*          The maximum size of result.
-* @param fpositer
-*          A pointer to a UFieldPositionIterator created by {@link #ufieldpositer_open}
-*          (may be NULL if field position information is not needed, but in this
-*          case it's preferable to use {@link #unum_formatDouble}). Iteration
-*          information already present in the UFieldPositionIterator is deleted,
-*          and the iterator is reset to apply to the fields in the formatted
-*          string created by this function call. The field values and indexes
-*          returned by {@link #ufieldpositer_next} represent fields denoted by
-*          the UNumberFormatFields enum. Fields are not returned in a guaranteed
-*          order. Fields cannot overlap, but they may nest. For example, 1234
-*          could format as "1,234" which might consist of a grouping separator
-*          field for ',' and an integer field encompassing the entire string.
-* @param status
-*          A pointer to an UErrorCode to receive any errors
-* @return
-*          The total buffer size needed; if greater than resultLength, the
-*          output was truncated.
-* @see unum_formatDouble
-* @see unum_parse
-* @see unum_parseDouble
-* @see UFieldPositionIterator
-* @see UNumberFormatFields
-* @draft ICU 59
-*/
-U_DRAFT int32_t U_EXPORT2
-unum_formatDoubleForFields(const UNumberFormat* format,
-                           double number,
-                           UChar* result,
-                           int32_t resultLength,
-                           UFieldPositionIterator* fpositer,
-                           UErrorCode* status);
-
-#endif  /* U_HIDE_DRAFT_API */
-
 /**
 * Format a decimal number using a UNumberFormat.
 * The number will be formatted according to the UNumberFormat's locale.
@@ -1345,7 +1291,7 @@ typedef enum UNumberFormatSymbol {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
   UNUM_FORMAT_SYMBOL_COUNT = 28
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UNumberFormatSymbol;
 
 /**
index 795ec60..46289c0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 99d93a4..52e34d8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/localpointer.h"
-#include "unicode/uenum.h"
-#ifndef U_HIDE_INTERNAL_API
-#include "unicode/unum.h"
-#endif  /* U_HIDE_INTERNAL_API */
 
 /**
  * \file
@@ -64,7 +60,7 @@ enum UPluralType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UPLURAL_TYPE_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 };
 /**
  * @stable ICU 50
@@ -87,7 +83,7 @@ typedef struct UPluralRules UPluralRules;  /**< C typedef for struct UPluralRule
  * @return A UPluralRules for the specified locale, or NULL if an error occurred.
  * @stable ICU 4.8
  */
-U_CAPI UPluralRules* U_EXPORT2
+U_STABLE UPluralRules* U_EXPORT2
 uplrules_open(const char *locale, UErrorCode *status);
 
 /**
@@ -99,7 +95,7 @@ uplrules_open(const char *locale, UErrorCode *status);
  * @return A UPluralRules for the specified locale, or NULL if an error occurred.
  * @stable ICU 50
  */
-U_CAPI UPluralRules* U_EXPORT2
+U_DRAFT UPluralRules* U_EXPORT2
 uplrules_openForType(const char *locale, UPluralType type, UErrorCode *status);
 
 /**
@@ -107,7 +103,7 @@ uplrules_openForType(const char *locale, UPluralType type, UErrorCode *status);
  * @param uplrules The UPluralRules object to close.
  * @stable ICU 4.8
  */
-U_CAPI void U_EXPORT2
+U_STABLE void U_EXPORT2
 uplrules_close(UPluralRules *uplrules);
 
 
@@ -142,55 +138,12 @@ U_NAMESPACE_END
  * @return The length of keyword.
  * @stable ICU 4.8
  */
-U_CAPI int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 uplrules_select(const UPluralRules *uplrules,
                double number,
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
 
-#ifndef U_HIDE_INTERNAL_API
-/**
- * Given a number, returns the keyword of the first rule that applies to the
- * number, according to the UPluralRules object and given the number format
- * specified by the UNumberFormat object.
- * Note: This internal preview interface may be removed in the future if
- * an architecturally cleaner solution reaches stable status.
- * @param uplrules The UPluralRules object specifying the rules.
- * @param number The number for which the rule has to be determined.
- * @param fmt The UNumberFormat specifying how the number will be formatted
- *        (this can affect the plural form, e.g. "1 dollar" vs "1.0 dollars").
- *        If this is NULL, the function behaves like uplrules_select.
- * @param keyword The keyword of the rule that applies to number.
- * @param capacity The capacity of the keyword buffer.
- * @param status A pointer to a UErrorCode to receive any errors.
- * @return The length of keyword.
- * @internal ICU 59 technology preview, may be removed in the future
- */
-U_INTERNAL int32_t U_EXPORT2
-uplrules_selectWithFormat(const UPluralRules *uplrules,
-                          double number,
-                          const UNumberFormat *fmt,
-                          UChar *keyword, int32_t capacity,
-                          UErrorCode *status);
-
-#endif  /* U_HIDE_INTERNAL_API */
-
-#ifndef U_HIDE_DRAFT_API
-/**
- * Creates a string enumeration of all plural rule keywords used in this
- * UPluralRules object. The rule "other" is always present by default.
- * @param uplrules The UPluralRules object specifying the rules for
- *        a given locale.
- * @param status A pointer to a UErrorCode to receive any errors.
- * @return a string enumeration over plural rule keywords, or NULL
- * upon error. The caller is responsible for closing the result.
- * @draft ICU 59
- */
-U_DRAFT UEnumeration* U_EXPORT2
-uplrules_getKeywords(const UPluralRules *uplrules,
-                     UErrorCode *status);
-#endif  /* U_HIDE_DRAFT_API */
-
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
 #endif
index f3e8214..ab85719 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  uregex.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   indentation:4
 *
 *   created on: 2004mar09
index a5de496..1b0f146 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -113,7 +113,7 @@ typedef enum URegionType {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     URGN_LIMIT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } URegionType;
 
 #if !UCONFIG_NO_FORMATTING
index 0fde188..40b3d59 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -34,7 +34,7 @@
  * for determining which unit to use, such as deciding between "in 7 days"
  * and "in 1 week".
  *
- * @stable ICU 57
+ * @draft ICU 57
  */
 
 /**
@@ -66,103 +66,104 @@ typedef enum UDateRelativeDateTimeFormatterStyle {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UDAT_STYLE_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } UDateRelativeDateTimeFormatterStyle;
 
+#ifndef U_HIDE_DRAFT_API
 /**
  * Represents the unit for formatting a relative date. e.g "in 5 days"
  * or "next year"
- * @stable ICU 57
+ * @draft ICU 57
  */
 typedef enum URelativeDateTimeUnit {
     /**
      * Specifies that relative unit is year, e.g. "last year",
      * "in 5 years". 
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_YEAR,
     /**
      * Specifies that relative unit is quarter, e.g. "last quarter",
      * "in 5 quarters".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_QUARTER,
     /**
      * Specifies that relative unit is month, e.g. "last month",
      * "in 5 months".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_MONTH,
     /**
      * Specifies that relative unit is week, e.g. "last week",
      * "in 5 weeks".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_WEEK,
     /**
      * Specifies that relative unit is day, e.g. "yesterday",
      * "in 5 days".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_DAY,
     /**
      * Specifies that relative unit is hour, e.g. "1 hour ago",
      * "in 5 hours".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_HOUR,
     /**
      * Specifies that relative unit is minute, e.g. "1 minute ago",
      * "in 5 minutes".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_MINUTE,
     /**
      * Specifies that relative unit is second, e.g. "1 second ago",
      * "in 5 seconds".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_SECOND,
     /**
      * Specifies that relative unit is Sunday, e.g. "last Sunday",
      * "this Sunday", "next Sunday", "in 5 Sundays".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_SUNDAY,
     /**
      * Specifies that relative unit is Monday, e.g. "last Monday",
      * "this Monday", "next Monday", "in 5 Mondays".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_MONDAY,
     /**
      * Specifies that relative unit is Tuesday, e.g. "last Tuesday",
      * "this Tuesday", "next Tuesday", "in 5 Tuesdays".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_TUESDAY,
     /**
      * Specifies that relative unit is Wednesday, e.g. "last Wednesday",
      * "this Wednesday", "next Wednesday", "in 5 Wednesdays".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_WEDNESDAY,
     /**
      * Specifies that relative unit is Thursday, e.g. "last Thursday",
      * "this Thursday", "next Thursday", "in 5 Thursdays". 
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_THURSDAY,
     /**
      * Specifies that relative unit is Friday, e.g. "last Friday",
      * "this Friday", "next Friday", "in 5 Fridays".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_FRIDAY,
     /**
      * Specifies that relative unit is Saturday, e.g. "last Saturday",
      * "this Saturday", "next Saturday", "in 5 Saturdays".
-     * @stable ICU 57
+     * @draft ICU 57
      */
     UDAT_REL_UNIT_SATURDAY,
 #ifndef U_HIDE_DEPRECATED_API
@@ -171,15 +172,18 @@ typedef enum URelativeDateTimeUnit {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     UDAT_REL_UNIT_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } URelativeDateTimeUnit;
+#endif  /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
 
 /**
  * Opaque URelativeDateTimeFormatter object for use in C programs.
- * @stable ICU 57
+ * @draft ICU 57
  */
 struct URelativeDateTimeFormatter;
-typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;  /**< C typedef for struct URelativeDateTimeFormatter. @stable ICU 57 */
+typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;  /**< C typedef for struct URelativeDateTimeFormatter. @draft ICU 57 */
 
 
 /**
@@ -212,9 +216,9 @@ typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;  /**< C ty
  * @return
  *          A pointer to a URelativeDateTimeFormatter object for the specified locale,
  *          or NULL if an error occurred.
- * @stable ICU 57
+ * @draft ICU 57
  */
-U_STABLE URelativeDateTimeFormatter* U_EXPORT2
+U_DRAFT URelativeDateTimeFormatter* U_EXPORT2
 ureldatefmt_open( const char*          locale,
                   UNumberFormat*       nfToAdopt,
                   UDateRelativeDateTimeFormatterStyle width,
@@ -225,9 +229,9 @@ ureldatefmt_open( const char*          locale,
  * Close a URelativeDateTimeFormatter object. Once closed it may no longer be used.
  * @param reldatefmt
  *            The URelativeDateTimeFormatter object to close.
- * @stable ICU 57
+ * @draft ICU 57
  */
-U_STABLE void U_EXPORT2
+U_DRAFT void U_EXPORT2
 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -241,7 +245,7 @@ U_NAMESPACE_BEGIN
  *
  * @see LocalPointerBase
  * @see LocalPointer
- * @stable ICU 57
+ * @draft ICU 57
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalURelativeDateTimeFormatterPointer, URelativeDateTimeFormatter, ureldatefmt_close);
 
@@ -275,9 +279,9 @@ U_NAMESPACE_END
  * @return
  *          The length of the formatted result; may be greater
  *          than resultCapacity, in which case an error is returned.
- * @stable ICU 57
+ * @draft ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_DRAFT int32_t U_EXPORT2
 ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -311,9 +315,9 @@ ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
  * @return
  *          The length of the formatted result; may be greater
  *          than resultCapacity, in which case an error is returned.
- * @stable ICU 57
+ * @draft ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_DRAFT int32_t U_EXPORT2
 ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -348,9 +352,9 @@ ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
  * @return
  *          The length of the formatted result; may be greater than resultCapacity,
  *          in which case an error is returned.
- * @stable ICU 57
+ * @draft ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_DRAFT int32_t U_EXPORT2
 ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     const UChar *     relativeDateString,
                     int32_t           relativeDateStringLen,
@@ -360,6 +364,8 @@ ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     int32_t           resultCapacity,
                     UErrorCode*       status );
 
+#endif  /* U_HIDE_DRAFT_API */
+
 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION */
 
 #endif
index ebfcdf7..b1d53f5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -196,7 +196,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     USEARCH_ATTRIBUTE_COUNT = 3
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } USearchAttribute;
 
 /**
@@ -272,7 +272,7 @@ typedef enum {
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
     USEARCH_ATTRIBUTE_VALUE_COUNT
-#endif  /* U_HIDE_DEPRECATED_API */
+#endif  // U_HIDE_DEPRECATED_API
 } USearchAttributeValue;
 
 /* open and close ------------------------------------------------------ */
index 6c2ac5e..40b7338 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
@@ -6,7 +6,7 @@
 * and others. All Rights Reserved.
 ***************************************************************************
 *   file name:  uspoof.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index d8b8a2e..8f3c42a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -283,14 +283,10 @@ typedef enum UDateTimeScale {
      */
     UDTS_UNIX_MICROSECONDS_TIME,
 
-#ifndef U_HIDE_DEPRECATED_API
     /**
      * The first unused time scale value. The limit of this enum
-     * @deprecated ICU 59 The numeric value may change over time, see ICU ticket #12420.
      */
     UDTS_MAX_SCALE
-#endif  /* U_HIDE_DEPRECATED_API */
-
 } UDateTimeScale;
 
 /**
@@ -427,15 +423,12 @@ typedef enum UTimeScaleValue {
 
 #endif /* U_HIDE_INTERNAL_API */
 
-#ifndef U_HIDE_DEPRECATED_API
     /**
      * The number of time scale values, in other words limit of this enum.
      * 
      * @see utmscale_getTimeScaleValue
-     * @deprecated ICU 59 The numeric value may change over time, see ICU ticket #12420.
      */
     UTSV_MAX_SCALE_VALUE=11
-#endif  /* U_HIDE_DEPRECATED_API */
 
 } UTimeScaleValue;
 
index d0f05cf..9d70eeb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 18265d3..75a5fca 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b8d2661..01170b4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -247,33 +247,6 @@ unum_formatDouble(    const    UNumberFormat*  fmt,
   return res.extract(result, resultLength, *status);
 }
 
-U_CAPI int32_t U_EXPORT2
-unum_formatDoubleForFields(const UNumberFormat* format,
-                           double number,
-                           UChar* result,
-                           int32_t resultLength,
-                           UFieldPositionIterator* fpositer,
-                           UErrorCode* status)
-{
-    if (U_FAILURE(*status))
-        return -1;
-
-    if (result == NULL ? resultLength != 0 : resultLength < 0) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return -1;
-    }
-
-    UnicodeString res;
-    if (result != NULL) {
-        // NULL destination for pure preflighting: empty dummy string
-        // otherwise, alias the destination buffer
-        res.setTo(result, 0, resultLength);
-    }
-
-    ((const NumberFormat*)format)->format(number, res, (FieldPositionIterator*)fpositer, *status);
-
-    return res.extract(result, resultLength, *status);
-}
 
 U_CAPI int32_t U_EXPORT2 
 unum_formatDecimal(const    UNumberFormat*  fmt,
index 4a0d0fa..f643e34 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 24e74e3..5e1eebf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
@@ -15,8 +15,6 @@
 #include "unicode/plurrule.h"
 #include "unicode/locid.h"
 #include "unicode/unistr.h"
-#include "unicode/unum.h"
-#include "unicode/numfmt.h"
 
 U_NAMESPACE_USE
 
@@ -56,48 +54,5 @@ uplrules_select(const UPluralRules *uplrules,
     return result.extract(keyword, capacity, *status);
 }
 
-U_CAPI int32_t U_EXPORT2
-uplrules_selectWithFormat(const UPluralRules *uplrules,
-                          double number,
-                          const UNumberFormat *fmt,
-                          UChar *keyword, int32_t capacity,
-                          UErrorCode *status)
-{
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-    const PluralRules* plrules = reinterpret_cast<const PluralRules*>(uplrules);
-    const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
-    if (plrules == NULL || nf == NULL || ((keyword == NULL)? capacity != 0 : capacity < 0)) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
-    }
-    Formattable obj(number);
-    UnicodeString result = plrules->select(obj, *nf, *status);
-    return result.extract(keyword, capacity, *status);
-}
-
-U_CAPI UEnumeration* U_EXPORT2
-uplrules_getKeywords(const UPluralRules *uplrules,
-                     UErrorCode *status)
-{
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-    const PluralRules* plrules = reinterpret_cast<const PluralRules*>(uplrules);
-    if (plrules == NULL) {
-        *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-    StringEnumeration *senum = plrules->getKeywords(*status);
-    if (U_FAILURE(*status)) {
-        return NULL;
-    }
-    if (senum == NULL) {
-        *status = U_MEMORY_ALLOCATION_ERROR;
-        return NULL;
-    }
-    return uenum_openFromStringEnumeration(senum, status);
-}
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
index 0c26bdf..b3e137a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index c7d3bcd..5c3f6eb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 79a6237..8e079ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************************
index 645db01..4bb3fc4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 92b3b0c..febaddc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
@@ -6,7 +6,7 @@
 * and others. All Rights Reserved.
 ***************************************************************************
 *   file name:  uspoof.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 75c52e0..4892b9d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***************************************************************************
@@ -6,7 +6,7 @@
  * and others. All Rights Reserved.
  ***************************************************************************
  *   file name:  uspoof_build.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index f478afa..587dc4e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uspoof_conf.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4a4f659..bc5e4a9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  uspoof_conf.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 745d5e8..a062d3e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a6b1e73..5307670 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
index 88b2e21..d587c9e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 7598b0e..733729f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index fd3a05e..505ab81 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 85d4b76..0a0205e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9a3ec45..8deb5ea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/i18n/utmscale.c b/source/i18n/utmscale.c
new file mode 100644 (file)
index 0000000..5b515f1
--- /dev/null
@@ -0,0 +1,116 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+* Copyright (C) 2004-2012, International Business Machines Corporation and
+* others. All Rights Reserved.
+*******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/utmscale.h"
+
+#define ticks        INT64_C(1)
+#define microseconds (ticks * 10)
+#define milliseconds (microseconds * 1000)
+#define seconds      (milliseconds * 1000)
+#define minutes      (seconds * 60)
+#define hours        (minutes * 60)
+#define days         (hours * 24)
+
+/* Constants generated by ICU4J com.ibm.icu.dev.tool.timescale.GenerateCTimeScaleData. */
+static const int64_t timeScaleTable[UDTS_MAX_SCALE][UTSV_MAX_SCALE_VALUE] = {
+  /*    units             epochOffset                     fromMin                        fromMax                            toMin                        toMax                    epochOffsetP1                epochOffsetM1              unitsRound                    minRound                     maxRound          */
+    {milliseconds, INT64_C(62135596800000),     INT64_C(-984472800485477),     INT64_C(860201606885477),     INT64_C(-9223372036854774999), INT64_C(9223372036854774999), INT64_C(62135596800001),     INT64_C(62135596799999),     INT64_C(5000),         INT64_C(-9223372036854770808), INT64_C(9223372036854770807)},
+    {seconds,      INT64_C(62135596800),        INT64_C(-984472800485),        INT64_C(860201606885),        U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(62135596801),        INT64_C(62135596799),        INT64_C(5000000),      INT64_C(-9223372036849775808), INT64_C(9223372036849775807)},
+    {milliseconds, INT64_C(62135596800000),     INT64_C(-984472800485477),     INT64_C(860201606885477),     INT64_C(-9223372036854774999), INT64_C(9223372036854774999), INT64_C(62135596800001),     INT64_C(62135596799999),     INT64_C(5000),         INT64_C(-9223372036854770808), INT64_C(9223372036854770807)},
+    {ticks,        INT64_C(504911232000000000), U_INT64_MIN,                   INT64_C(8718460804854775807), INT64_C(-8718460804854775808), U_INT64_MAX,                  INT64_C(504911232000000000), INT64_C(504911232000000000), INT64_C(0),            U_INT64_MIN,                   U_INT64_MAX},
+    {ticks,        INT64_C(0),                  U_INT64_MIN,                   U_INT64_MAX,                  U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(0),                  INT64_C(0),                  INT64_C(0),            U_INT64_MIN,                   U_INT64_MAX},
+    {seconds,      INT64_C(60052752000),        INT64_C(-982389955685),        INT64_C(862284451685),        U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(60052752001),        INT64_C(60052751999),        INT64_C(5000000),      INT64_C(-9223372036849775808), INT64_C(9223372036849775807)},
+    {seconds,      INT64_C(63113904000),        INT64_C(-985451107685),        INT64_C(859223299685),        U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(63113904001),        INT64_C(63113903999),        INT64_C(5000000),      INT64_C(-9223372036849775808), INT64_C(9223372036849775807)},
+    {days,         INT64_C(693594),             INT64_C(-11368793),            INT64_C(9981605),             U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(693595),             INT64_C(693593),             INT64_C(432000000000), INT64_C(-9223371604854775808), INT64_C(9223371604854775807)},
+    {days,         INT64_C(693594),             INT64_C(-11368793),            INT64_C(9981605),             U_INT64_MIN,                   U_INT64_MAX,                  INT64_C(693595),             INT64_C(693593),             INT64_C(432000000000), INT64_C(-9223371604854775808), INT64_C(9223371604854775807)},
+    {microseconds, INT64_C(62135596800000000),  INT64_C(-984472800485477580),  INT64_C(860201606885477580),  INT64_C(-9223372036854775804), INT64_C(9223372036854775804), INT64_C(62135596800000001),  INT64_C(62135596799999999),  INT64_C(5),            INT64_C(-9223372036854775803), INT64_C(9223372036854775802)},
+};
+
+U_CAPI int64_t U_EXPORT2
+utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status)
+{
+    if (status == NULL || U_FAILURE(*status)) {
+        return 0;
+    }
+
+    if (timeScale < UDTS_JAVA_TIME || UDTS_MAX_SCALE <= timeScale
+        || value < UTSV_UNITS_VALUE || UTSV_MAX_SCALE_VALUE <= value)
+    {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    return timeScaleTable[timeScale][value];
+}
+
+U_CAPI int64_t U_EXPORT2
+utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status)
+{
+    const int64_t *data;
+    
+    if (status == NULL || U_FAILURE(*status)) {
+        return 0;
+    }
+
+    if ((int32_t)timeScale < 0 || timeScale >= UDTS_MAX_SCALE) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    data = (const int64_t *)(&timeScaleTable[timeScale]);
+
+    if (otherTime < data[UTSV_FROM_MIN_VALUE] || otherTime > data[UTSV_FROM_MAX_VALUE]) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    
+    return (otherTime + data[UTSV_EPOCH_OFFSET_VALUE]) * data[UTSV_UNITS_VALUE];
+}
+
+U_CAPI int64_t U_EXPORT2
+utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status)
+{
+    const int64_t *data;
+    
+    if (status == NULL || U_FAILURE(*status)) {
+        return 0;
+    }
+
+    if ((int32_t)timeScale < 0 || timeScale >= UDTS_MAX_SCALE) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    data = (const int64_t *)(&timeScaleTable[timeScale]);
+
+    if (universalTime < data[UTSV_TO_MIN_VALUE] || universalTime > data[UTSV_TO_MAX_VALUE]) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    
+    if (universalTime < 0) {
+        if (universalTime < data[UTSV_MIN_ROUND_VALUE]) {
+            return (universalTime + data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_PLUS_1_VALUE];
+        }
+        
+        return (universalTime - data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_VALUE];
+    }
+    
+    if (universalTime > data[UTSV_MAX_ROUND_VALUE]) {
+        return (universalTime - data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_MINUS_1_VALUE];
+    }
+    
+    return (universalTime + data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_VALUE];
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
index 5124833..6a4c4a7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index e769f36..45b08f6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2802f18..434ee55 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 03cfc68..1fea350 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 2016, International Business Machines
index 35ac069..eba2a1b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************* * Copyright (C) 2015, International Business Machines
index b82327d..e0621cc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -358,7 +358,7 @@ static void millisToOffset(int32_t millis, UnicodeString& str) {
 /*
  * Create a default TZNAME from TZID
  */
-static void getDefaultTZName(const UnicodeString &tzid, UBool isDST, UnicodeString& zonename) {
+static void getDefaultTZName(const UnicodeString tzid, UBool isDST, UnicodeString& zonename) {
     zonename = tzid;
     if (isDST) {
         zonename += UNICODE_STRING_SIMPLE("(DST)");
index 7e3a554..8d2bef7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 17df92e..fc5df4d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index be5f384..10243a7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -13,7 +13,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -35,9 +35,7 @@
 #include "windtfmt.h"
 #include "wintzimpl.h"
 
-#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
-#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
@@ -94,83 +92,12 @@ UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Loc
     return result;
 }
 
-// TODO: This is copied in both winnmfmt.cpp and windtfmt.cpp, but really should
-// be factored out into a common helper for both.
-static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
-{
-    UErrorCode status = U_ZERO_ERROR;
-    char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
-
-    // Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
-    int32_t length = uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &status);
-
-    if (U_SUCCESS(status))
-    {
-        // Need it to be UTF-16, not 8-bit
-        // TODO: This seems like a good thing for a helper
-        wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
-        int32_t i;
-        for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
-        {
-            if (asciiBCP47Tag[i] == '\0')
-            {
-                break;
-            }
-            else
-            {
-                // normally just copy the character
-                bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
-            }
-        }
-
-        // Ensure it's null terminated
-        if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
-        {
-            bcp47Tag[i] = L'\0';
-        }
-        else
-        {
-            // Ran out of room.
-            bcp47Tag[UPRV_LENGTHOF(bcp47Tag) - 1] = L'\0';
-        }
-
-
-        wchar_t windowsLocaleName[LOCALE_NAME_MAX_LENGTH] = {};
-
-        // Note: On Windows versions below 10, there is no support for locale name aliases.
-        // This means that it will fail for locales where ICU has a completely different
-        // name (like ku vs ckb), and it will also not work for alternate sort locale
-        // names like "de-DE-u-co-phonebk".
-        
-        // TODO: We could add some sort of exception table for cases like ku vs ckb.
-
-        int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName));
-
-        if (length > 0)
-        {
-            *buffer = new UnicodeString(windowsLocaleName);
-        }
-        else
-        {
-            status = U_UNSUPPORTED_ERROR;
-        }
-    }
-    return status;
-}
-
 // TODO: Range-check timeStyle, dateStyle
 Win32DateFormat::Win32DateFormat(DateFormat::EStyle timeStyle, DateFormat::EStyle dateStyle, const Locale &locale, UErrorCode &status)
-  : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID(), fWindowsLocaleName(nullptr)
+  : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID()
 {
     if (U_SUCCESS(status)) {
-        GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
-        // Note: In the previous code, it would look up the LCID for the locale, and if
-        // the locale was not recognized then it would get an LCID of 0, which is a
-        // synonym for LOCALE_USER_DEFAULT on Windows.
-        // If the above method fails, then fWindowsLocaleName will remain as nullptr, and 
-        // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing
-        // LOCALE_USER_DEFAULT.
-
+        fLCID = locale.getLCID();
         fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
         uprv_memset(fTZI, 0, sizeof(TIME_ZONE_INFORMATION));
         adoptCalendar(Calendar::createInstance(locale, status));
@@ -188,7 +115,6 @@ Win32DateFormat::~Win32DateFormat()
 //    delete fCalendar;
     uprv_free(fTZI);
     delete fDateTimeMsg;
-    delete fWindowsLocaleName;
 }
 
 Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
@@ -202,14 +128,13 @@ Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
     this->fTimeStyle   = other.fTimeStyle;
     this->fDateStyle   = other.fDateStyle;
     this->fLocale      = other.fLocale;
+    this->fLCID        = other.fLCID;
 //    this->fCalendar    = other.fCalendar->clone();
     this->fZoneID      = other.fZoneID;
 
     this->fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
     *this->fTZI = *other.fTZI;
 
-    this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
-
     return *this;
 }
 
@@ -306,25 +231,18 @@ static const DWORD dfFlags[] = {DATE_LONGDATE, DATE_LONGDATE, DATE_SHORTDATE, DA
 
 void Win32DateFormat::formatDate(const SYSTEMTIME *st, UnicodeString &appendTo) const
 {
-    int result=0;
+    int result;
     wchar_t stackBuffer[STACK_BUFFER_SIZE];
     wchar_t *buffer = stackBuffer;
-    const wchar_t *localeName = nullptr;
 
-    if (fWindowsLocaleName != nullptr)
-    {
-        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
-    }
-
-    result = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE, NULL);
+    result = GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE);
 
     if (result == 0) {
         if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-            int newLength = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0, NULL);
+            int newLength = GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0);
 
             buffer = NEW_ARRAY(wchar_t, newLength);
-
-            GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength, NULL);
+            GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength);
         }
     }
 
@@ -342,22 +260,15 @@ void Win32DateFormat::formatTime(const SYSTEMTIME *st, UnicodeString &appendTo)
     int result;
     wchar_t stackBuffer[STACK_BUFFER_SIZE];
     wchar_t *buffer = stackBuffer;
-    const wchar_t *localeName = nullptr;
 
-    if (fWindowsLocaleName != nullptr)
-    {
-        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
-    }
-
-    result = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
+    result = GetTimeFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
 
     if (result == 0) {
         if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-            int newLength = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, NULL, 0);
+            int newLength = GetTimeFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, NULL, 0);
 
             buffer = NEW_ARRAY(wchar_t, newLength);
-
-            GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
+            GetDateFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
         }
     }
 
@@ -403,5 +314,5 @@ U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif // U_PLATFORM_USES_ONLY_WIN32_API
+#endif // U_PLATFORM_HAS_WIN32_API
 
index 3306905..58ac71b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -95,7 +95,7 @@ public:
      * <pre>
      * .   Base* polymorphic_pointer = createPolymorphicObject();
      * .   if (polymorphic_pointer->getDynamicClassID() ==
-     * .       derived::getStaticClassID()) ...
+     * .       erived::getStaticClassID()) ...
      * </pre>
      * @return          The class ID for all objects of this class.
      */
@@ -124,16 +124,15 @@ private:
     DateFormat::EStyle fTimeStyle;
     DateFormat::EStyle fDateStyle;
     Locale fLocale;
+    int32_t fLCID;
     UnicodeString fZoneID;
     TIME_ZONE_INFORMATION *fTZI;
-
-    UnicodeString* fWindowsLocaleName; // Stores the equivalent Windows locale name.
 };
 
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif // U_PLATFORM_USES_ONLY_WIN32_API
+#endif // U_PLATFORM_HAS_WIN32_API
 
 #endif // __WINDTFMT
index 3e03cb1..d7e9872 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -28,9 +28,7 @@
 #include "uassert.h"
 #include "locmap.h"
 
-#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
-#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
@@ -60,43 +58,43 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Win32NumberFormat)
  * end in ";0" then the return value should be multiplied by 10.
  * (e.g. "3" => 30, "3;2" => 320)
  */
-static UINT getGrouping(const wchar_t *grouping)
+static UINT getGrouping(const char *grouping)
 {
     UINT g = 0;
-    const wchar_t *s;
+       const char *s;
 
-    for (s = grouping; *s != L'\0'; s += 1) {
-        if (*s > L'0' && *s < L'9') {
-            g = g * 10 + (*s - L'0');
-        } else if (*s != L';') {
+    for (s = grouping; *s != '\0'; s += 1) {
+        if (*s > '0' && *s < '9') {
+            g = g * 10 + (*s - '0');
+        } else if (*s != ';') {
             break;
         }
     }
 
-    if (*s != L'0') {
+    if (*s != '0') {
         g *= 10;
     }
 
     return g;
 }
 
-static void getNumberFormat(NUMBERFMTW *fmt, const wchar_t *windowsLocaleName)
+static void getNumberFormat(NUMBERFMTW *fmt, int32_t lcid)
 {
-    wchar_t buf[10];
+    char buf[10];
 
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_IDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ILZERO,  (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_IDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ILZERO,  (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
 
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_SGROUPING, (LPWSTR)buf, 10);
+    GetLocaleInfoA(lcid, LOCALE_SGROUPING, buf, 10);
     fmt->Grouping = getGrouping(buf);
 
     fmt->lpDecimalSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_SDECIMAL,  fmt->lpDecimalSep,  6);
+    GetLocaleInfoW(lcid, LOCALE_SDECIMAL,  fmt->lpDecimalSep,  6);
 
     fmt->lpThousandSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_STHOUSAND, fmt->lpThousandSep, 6);
+    GetLocaleInfoW(lcid, LOCALE_STHOUSAND, fmt->lpThousandSep, 6);
 
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_INEGNUMBER, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_INEGNUMBER, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
 }
 
 static void freeNumberFormat(NUMBERFMTW *fmt)
@@ -107,27 +105,27 @@ static void freeNumberFormat(NUMBERFMTW *fmt)
     }
 }
 
-static void getCurrencyFormat(CURRENCYFMTW *fmt, const wchar_t *windowsLocaleName)
+static void getCurrencyFormat(CURRENCYFMTW *fmt, int32_t lcid)
 {
-    wchar_t buf[10];
+    char buf[10];
 
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ICURRDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ICURRDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
 
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONGROUPING, (LPWSTR)buf, sizeof(buf));
+    GetLocaleInfoA(lcid, LOCALE_SMONGROUPING, buf, sizeof(buf));
     fmt->Grouping = getGrouping(buf);
 
     fmt->lpDecimalSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONDECIMALSEP,  fmt->lpDecimalSep,  6);
+    GetLocaleInfoW(lcid, LOCALE_SMONDECIMALSEP,  fmt->lpDecimalSep,  6);
 
     fmt->lpThousandSep = NEW_ARRAY(wchar_t, 6);
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONTHOUSANDSEP, fmt->lpThousandSep, 6);
+    GetLocaleInfoW(lcid, LOCALE_SMONTHOUSANDSEP, fmt->lpThousandSep, 6);
 
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_INEGCURR,  (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ICURRENCY, (LPWSTR) &fmt->PositiveOrder, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_INEGCURR,  (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
+    GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ICURRENCY, (LPWSTR) &fmt->PositiveOrder, sizeof(UINT));
 
     fmt->lpCurrencySymbol = NEW_ARRAY(wchar_t, 8);
-    GetLocaleInfoEx(windowsLocaleName, LOCALE_SCURRENCY, (LPWSTR) fmt->lpCurrencySymbol, 8);
+    GetLocaleInfoW(lcid, LOCALE_SCURRENCY, (LPWSTR) fmt->lpCurrencySymbol, 8);
 }
 
 static void freeCurrencyFormat(CURRENCYFMTW *fmt)
@@ -139,84 +137,12 @@ static void freeCurrencyFormat(CURRENCYFMTW *fmt)
     }
 }
 
-// TODO: This is copied in both winnmfmt.cpp and windtfmt.cpp, but really should
-// be factored out into a common helper for both.
-static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
-{
-    UErrorCode status = U_ZERO_ERROR;
-    char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
-
-    // Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
-    int32_t length = uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &status);
-
-    if (U_SUCCESS(status))
-    {
-        // Need it to be UTF-16, not 8-bit
-        // TODO: This seems like a good thing for a helper
-        wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
-        int32_t i;
-        for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
-        {
-            if (asciiBCP47Tag[i] == '\0')
-            {
-                break;
-            }
-            else
-            {
-                // normally just copy the character
-                bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
-            }
-        }
-
-        // Ensure it's null terminated
-        if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
-        {
-            bcp47Tag[i] = L'\0';
-        }
-        else
-        {
-            // Ran out of room.
-            bcp47Tag[UPRV_LENGTHOF(bcp47Tag) - 1] = L'\0';
-        }
-
-
-        wchar_t windowsLocaleName[LOCALE_NAME_MAX_LENGTH] = {};
-
-        // Note: On Windows versions below 10, there is no support for locale name aliases.
-        // This means that it will fail for locales where ICU has a completely different
-        // name (like ku vs ckb), and it will also not work for alternate sort locale
-        // names like "de-DE-u-co-phonebk".
-
-        // TODO: We could add some sort of exception table for cases like ku vs ckb.
-
-        int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName));
-
-        if (length > 0)
-        {
-            *buffer = new UnicodeString(windowsLocaleName);
-        }
-        else
-        {
-            status = U_UNSUPPORTED_ERROR;
-        }
-    }
-    return status;
-}
-
 Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErrorCode &status)
-  : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(FALSE), fWindowsLocaleName(nullptr)
+  : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(FALSE)
 {
     if (!U_FAILURE(status)) {
         fLCID = locale.getLCID();
 
-        GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
-        // Note: In the previous code, it would look up the LCID for the locale, and if
-        // the locale was not recognized then it would get an LCID of 0, which is a
-        // synonym for LOCALE_USER_DEFAULT on Windows.
-        // If the above method fails, then fWindowsLocaleName will remain as nullptr, and 
-        // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing
-        // LOCALE_USER_DEFAULT.
-
         // Resolve actual locale to be used later
         UErrorCode tmpsts = U_ZERO_ERROR;
         char tmpLocID[ULOC_FULLNAME_CAPACITY];
@@ -226,19 +152,12 @@ Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErro
             fLocale = Locale((const char*)tmpLocID);
         }
 
-        const wchar_t *localeName = nullptr;
-
-        if (fWindowsLocaleName != nullptr)
-        {
-            localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
-        }
-
         fFormatInfo = (FormatInfo*)uprv_malloc(sizeof(FormatInfo));
 
         if (fCurrency) {
-            getCurrencyFormat(&fFormatInfo->currency, localeName);
+            getCurrencyFormat(&fFormatInfo->currency, fLCID);
         } else {
-            getNumberFormat(&fFormatInfo->number, localeName);
+            getNumberFormat(&fFormatInfo->number, fLCID);
         }
     }
 }
@@ -263,7 +182,6 @@ Win32NumberFormat::~Win32NumberFormat()
 
         uprv_free(fFormatInfo);
     }
-    delete fWindowsLocaleName;
 }
 
 Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
@@ -274,21 +192,13 @@ Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
     this->fLocale            = other.fLocale;
     this->fLCID              = other.fLCID;
     this->fFractionDigitsSet = other.fFractionDigitsSet;
-    this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
-    
-    const wchar_t *localeName = nullptr;
-
-    if (fWindowsLocaleName != nullptr)
-    {
-        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
-    }
 
     if (fCurrency) {
         freeCurrencyFormat(&fFormatInfo->currency);
-        getCurrencyFormat(&fFormatInfo->currency, localeName);
+        getCurrencyFormat(&fFormatInfo->currency, fLCID);
     } else {
         freeNumberFormat(&fFormatInfo->number);
-        getNumberFormat(&fFormatInfo->number, localeName);
+        getNumberFormat(&fFormatInfo->number, fLCID);
     }
 
     return *this;
@@ -389,13 +299,6 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
     formatInfo = *fFormatInfo;
     buffer[0] = 0x0000;
 
-    const wchar_t *localeName = nullptr;
-
-    if (fWindowsLocaleName != nullptr)
-    {
-        localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
-    }
-
     if (fCurrency) {
         if (fFractionDigitsSet) {
             formatInfo.currency.NumDigits = (UINT) numDigits;
@@ -405,17 +308,17 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
             formatInfo.currency.Grouping = 0;
         }
 
-        result = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, buffer, STACK_BUFFER_SIZE);
+        result = GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, buffer, STACK_BUFFER_SIZE);
 
         if (result == 0) {
             DWORD lastError = GetLastError();
 
             if (lastError == ERROR_INSUFFICIENT_BUFFER) {
-                int newLength = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, NULL, 0);
+                int newLength = GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, NULL, 0);
 
                 buffer = NEW_ARRAY(wchar_t, newLength);
                 buffer[0] = 0x0000;
-                GetCurrencyFormatEx(localeName, 0, nBuffer,  &formatInfo.currency, buffer, newLength);
+                GetCurrencyFormatW(fLCID, 0, nBuffer,  &formatInfo.currency, buffer, newLength);
             }
         }
     } else {
@@ -427,15 +330,15 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
             formatInfo.number.Grouping = 0;
         }
 
-        result = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, buffer, STACK_BUFFER_SIZE);
+        result = GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, buffer, STACK_BUFFER_SIZE);
 
         if (result == 0) {
             if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-                int newLength = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, NULL, 0);
+                int newLength = GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, NULL, 0);
 
                 buffer = NEW_ARRAY(wchar_t, newLength);
                 buffer[0] = 0x0000;
-                GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, buffer, newLength);
+                GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, buffer, newLength);
             }
         }
     }
index 6139c1f..dfc32dd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -128,7 +128,7 @@ public:
      * <pre>
      * .   Base* polymorphic_pointer = createPolymorphicObject();
      * .   if (polymorphic_pointer->getDynamicClassID() ==
-     * .       derived::getStaticClassID()) ...
+     * .       erived::getStaticClassID()) ...
      * </pre>
      * @return          The class ID for all objects of this class.
      */
@@ -155,7 +155,6 @@ private:
     FormatInfo *fFormatInfo;
     UBool fFractionDigitsSet;
 
-    UnicodeString* fWindowsLocaleName; // Stores the equivalent Windows locale name.
 };
 
 U_NAMESPACE_END
index 7a87d1c..30b9c49 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -13,7 +13,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API && !UCONFIG_NO_FORMATTING 
+#if U_PLATFORM_HAS_WIN32_API && !UCONFIG_NO_FORMATTING 
 
 #include "wintzimpl.h"
 
@@ -24,9 +24,7 @@
 #include "uassert.h"
 #include "cmemory.h"
 
-#ifndef WIN32_LEAN_AND_MEAN
 #   define WIN32_LEAN_AND_MEAN
-#endif
 #   define VC_EXTRALEAN
 #   define NOUSER
 #   define NOSERVICE
index 772ea95..c955b8c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 /**
  * \file 
  * \brief C API: Utilities for dealing w/ Windows time zones.
@@ -34,6 +34,6 @@ U_CAPI UBool U_EXPORT2
 uprv_getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar *icuid, int32_t length);
 
 
-#endif /* U_PLATFORM_USES_ONLY_WIN32_API */
+#endif /* U_PLATFORM_HAS_WIN32_API */
 
 #endif /* __WINTZIMPL */
index 84a9657..fdf333c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -17,7 +17,7 @@
 #include "unicode/ustring.h"
 #include "unicode/putil.h"
 #include "unicode/simpletz.h"
-#include "unicode/strenum.h"
+
 #include "umutex.h"
 #include "uvector.h"
 #include "cmemory.h"
@@ -28,7 +28,6 @@
 #include "uresimp.h"
 #include "uhash.h"
 #include "olsontz.h"
-#include "uinvchar.h"
 
 static UMutex gZoneMetaLock = U_MUTEX_INITIALIZER;
 
@@ -256,12 +255,6 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
     tzid.extract(utzid, ZID_KEY_MAX + 1, tmpStatus);
     U_ASSERT(tmpStatus == U_ZERO_ERROR);    // we checked the length of tzid already
 
-    if (!uprv_isInvariantUString(utzid, -1)) {
-        // All of known tz IDs are only containing ASCII invariant characters.
-        status = U_ILLEGAL_ARGUMENT_ERROR;
-        return NULL;
-    }
-
     // Check if it was already cached
     umtx_lock(&gZoneMetaLock);
     {
index 9dbcc87..84be555 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -41,11 +41,7 @@ public:
     /**
      * Return the canonical id for this tzid defined by CLDR, which might be the id itself.
      * This overload method returns a persistent const UChar*, which is guranteed to persist
-     * (a pointer to a resource). If the given system tzid is not known, U_ILLEGAL_ARGUMENT_ERROR
-     * is set in the status.
-     * @param tzid Zone ID
-     * @param status Receives the status
-     * @return The canonical ID for the input time zone ID
+     * (a pointer to a resource).
      */
     static const UChar* U_EXPORT2 getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status);
 
index bdf8496..2d7b36c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index f395ad4..9b694af 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9dbe9bb..92fd781 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b23bb4f..2ddf7ba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9abb872..46568f3 100644 (file)
@@ -118,7 +118,6 @@ ARFLAGS = @ARFLAGS@ r
 RANLIB = @RANLIB@
 COMPILE_LINK_ENVVAR = @COMPILE_LINK_ENVVAR@
 UCLN_NO_AUTO_CLEANUP = @UCLN_NO_AUTO_CLEANUP@
-SED = @SED@
 
 # Various flags for the tools
 
index 45dbe87..8484325 100644 (file)
@@ -55,7 +55,7 @@ DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
 CFLAGS += $(LIBCFLAGS)
 CXXFLAGS += $(LIBCXXFLAGS)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS) $(CPPFLAGSICUIO)
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS) $(CPPFLAGSICUIO)
 DEFS += -DU_IO_IMPLEMENTATION
 LDFLAGS += $(LDFLAGSICUIO)
 LIBS = $(LIBICUUC) $(LIBICUI18N) $(DEFAULT_LIBS)
index 1826fb7..3173e92 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuio59.dll</OutputFile>
+      <OutputFile>..\..\bin\icuio58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\icuio.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\icuio59d.dll</OutputFile>
+      <OutputFile>..\..\bin\icuio58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\icuiod.pdb</ProgramDatabaseFile>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuio59.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuio58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\icuio.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\icuio59d.dll</OutputFile>
+      <OutputFile>..\..\bin64\icuio58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\icuiod.pdb</ProgramDatabaseFile>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="locbund.cpp" />
-    <ClCompile Include="sprintf.cpp" />
-    <ClCompile Include="sscanf.cpp" />
+    <ClCompile Include="sprintf.c" />
+    <ClCompile Include="sscanf.c" />
     <ClCompile Include="ucln_io.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="ufile.cpp" />
-    <ClCompile Include="ufmt_cmn.cpp" />
+    <ClCompile Include="ufile.c" />
+    <ClCompile Include="ufmt_cmn.c" />
     <ClCompile Include="uprintf.cpp" />
-    <ClCompile Include="uprntf_p.cpp" />
-    <ClCompile Include="uscanf.cpp" />
-    <ClCompile Include="uscanf_p.cpp" />
-    <ClCompile Include="ustdio.cpp" />
+    <ClCompile Include="uprntf_p.c" />
+    <ClCompile Include="uscanf.c" />
+    <ClCompile Include="uscanf_p.c" />
+    <ClCompile Include="ustdio.c" />
     <ClCompile Include="ustream.cpp">
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
       <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 4a6841b..61252bf 100644 (file)
     <ClCompile Include="locbund.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="sprintf.cpp">
+    <ClCompile Include="sprintf.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="sscanf.cpp">
+    <ClCompile Include="sscanf.c">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="ucln_io.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="ufile.cpp">
+    <ClCompile Include="ufile.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="ufmt_cmn.cpp">
+    <ClCompile Include="ufmt_cmn.c">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="uprintf.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="uprntf_p.cpp">
+    <ClCompile Include="uprntf_p.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="uscanf.cpp">
+    <ClCompile Include="uscanf.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="uscanf_p.cpp">
+    <ClCompile Include="uscanf_p.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="ustdio.cpp">
+    <ClCompile Include="ustdio.c">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="ustream.cpp">
index 8e880b1..2984528 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5879e28..b9e1948 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
diff --git a/source/io/sprintf.c b/source/io/sprintf.c
new file mode 100644 (file)
index 0000000..ff143de
--- /dev/null
@@ -0,0 +1,262 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 2001-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File sprintf.c
+*
+* Modification History:
+*
+*   Date        Name            Description
+*   02/08/2001  george          Creation. Copied from uprintf.c
+*   03/27/2002  Mark Schneckloth Many fixes regarding alignment, null termination
+*       (mschneckloth@atomz.com) and other various problems.
+*   08/07/2003  george          Reunify printf implementations
+*******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
+
+#include "unicode/ustdio.h"
+#include "unicode/ustring.h"
+#include "unicode/putil.h"
+
+#include "uprintf.h"
+#include "locbund.h"
+
+#include "cmemory.h"
+#include <ctype.h>
+
+/* u_minstrncpy copies the minimum number of code units of (count or output->available) */
+static int32_t
+u_sprintf_write(void        *context,
+                const UChar *str,
+                int32_t     count)
+{
+    u_localized_print_string *output = (u_localized_print_string *)context;
+    int32_t size = ufmt_min(count, output->available);
+
+    u_strncpy(output->str + (output->len - output->available), str, size);
+    output->available -= size;
+    return size;
+}
+
+static int32_t
+u_sprintf_pad_and_justify(void                        *context,
+                          const u_printf_spec_info    *info,
+                          const UChar                 *result,
+                          int32_t                     resultLen)
+{
+    u_localized_print_string *output = (u_localized_print_string *)context;
+    int32_t written = 0;
+    int32_t lengthOfResult = resultLen;
+
+    resultLen = ufmt_min(resultLen, output->available);
+
+    /* pad and justify, if needed */
+    if(info->fWidth != -1 && resultLen < info->fWidth) {
+        int32_t paddingLeft = info->fWidth - resultLen;
+        int32_t outputPos = output->len - output->available;
+  
+        if (paddingLeft + resultLen > output->available) {
+            paddingLeft = output->available - resultLen;
+            if (paddingLeft < 0) {
+                paddingLeft = 0;
+            }
+            /* paddingLeft = output->available - resultLen;*/
+        }
+        written += paddingLeft;
+
+        /* left justify */
+        if(info->fLeft) {
+            written += u_sprintf_write(output, result, resultLen);
+            u_memset(&output->str[outputPos + resultLen], info->fPadChar, paddingLeft);
+            output->available -= paddingLeft;
+        }
+        /* right justify */
+        else {
+            u_memset(&output->str[outputPos], info->fPadChar, paddingLeft);
+            output->available -= paddingLeft;
+            written += u_sprintf_write(output, result, resultLen);
+        }
+    }
+    /* just write the formatted output */
+    else {
+        written = u_sprintf_write(output, result, resultLen);
+    }
+    
+    if (written >= 0 && lengthOfResult > written) {
+       return lengthOfResult;
+    }
+
+    return written;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_sprintf(UChar       *buffer,
+          const char    *patternSpecification,
+          ... )
+{
+    va_list ap;
+    int32_t written;
+
+    va_start(ap, patternSpecification);
+    written = u_vsnprintf(buffer, INT32_MAX, patternSpecification, ap);
+    va_end(ap);
+
+    return written;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_sprintf_u(UChar     *buffer,
+            const UChar    *patternSpecification,
+            ... )
+{
+    va_list ap;
+    int32_t written;
+
+    va_start(ap, patternSpecification);
+    written = u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap);
+    va_end(ap);
+
+    return written;
+}
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vsprintf(UChar       *buffer,
+           const char     *patternSpecification,
+           va_list         ap)
+{
+    return u_vsnprintf(buffer, INT32_MAX, patternSpecification, ap);
+}
+
+U_CAPI int32_t U_EXPORT2
+u_snprintf(UChar       *buffer,
+           int32_t         count,
+           const char    *patternSpecification,
+           ... )
+{
+    va_list ap;
+    int32_t written;
+
+    va_start(ap, patternSpecification);
+    written = u_vsnprintf(buffer, count, patternSpecification, ap);
+    va_end(ap);
+
+    return written;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_snprintf_u(UChar     *buffer,
+             int32_t        count,
+             const UChar    *patternSpecification,
+             ... )
+{
+    va_list ap;
+    int32_t written;
+
+    va_start(ap, patternSpecification);
+    written = u_vsnprintf_u(buffer, count, patternSpecification, ap);
+    va_end(ap);
+
+    return written;
+}
+
+U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vsnprintf(UChar       *buffer,
+            int32_t         count,
+            const char     *patternSpecification,
+            va_list         ap)
+{
+    int32_t written;
+    UChar *pattern;
+    UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
+    int32_t size = (int32_t)strlen(patternSpecification) + 1;
+
+    /* convert from the default codepage to Unicode */
+    if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
+        pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+        if(pattern == 0) {
+            return 0;
+        }
+    }
+    else {
+        pattern = patBuffer;
+    }
+    u_charsToUChars(patternSpecification, pattern, size);
+
+    /* do the work */
+    written = u_vsnprintf_u(buffer, count, pattern, ap);
+
+    /* clean up */
+    if (pattern != patBuffer) {
+        uprv_free(pattern);
+    }
+
+    return written;
+}
+
+U_CAPI int32_t U_EXPORT2 
+u_vsprintf_u(UChar       *buffer, 
+             const UChar *patternSpecification, 
+             va_list     ap) 
+{ 
+    return u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap); 
+} 
+
+static const u_printf_stream_handler g_sprintf_stream_handler = {
+    u_sprintf_write,
+    u_sprintf_pad_and_justify
+};
+
+U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vsnprintf_u(UChar    *buffer,
+              int32_t        count,
+              const UChar    *patternSpecification,
+              va_list        ap)
+{
+    int32_t          written = 0;   /* haven't written anything yet */
+    int32_t                     result = 0; /* test the return value of u_printf_parse */
+
+    u_localized_print_string outStr;
+
+    if (count < 0) {
+        count = INT32_MAX;
+    }
+
+    outStr.str = buffer;
+    outStr.len = count;
+    outStr.available = count;
+
+    if(u_locbund_init(&outStr.fBundle, "en_US_POSIX") == 0) {
+        return 0;
+    }
+
+    /* parse and print the whole format string */
+    result = u_printf_parse(&g_sprintf_stream_handler, patternSpecification, &outStr, &outStr, &outStr.fBundle, &written, ap);
+    
+    /* Terminate the buffer, if there's room. */
+    if (outStr.available > 0) {
+        buffer[outStr.len - outStr.available] = 0x0000;
+    }
+
+    /* Release the cloned bundle, if we cloned it. */
+    u_locbund_close(&outStr.fBundle);
+
+    /* parsing error */ 
+    if (result < 0) {
+       return result;
+    }
+    /* return # of UChars written */
+    return written;
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
diff --git a/source/io/sscanf.c b/source/io/sscanf.c
new file mode 100644 (file)
index 0000000..31ad896
--- /dev/null
@@ -0,0 +1,130 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 2000-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File sscanf.c
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   02/08/00    george      Creation. Copied from uscanf.c
+******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
+
+#include "unicode/putil.h"
+#include "unicode/ustdio.h"
+#include "unicode/ustring.h"
+#include "uscanf.h"
+#include "ufile.h"
+#include "ufmt_cmn.h"
+
+#include "cmemory.h"
+#include "cstring.h"
+
+
+U_CAPI int32_t U_EXPORT2
+u_sscanf(const UChar   *buffer,
+         const char    *patternSpecification,
+         ... )
+{
+    va_list ap;
+    int32_t converted;
+
+    va_start(ap, patternSpecification);
+    converted = u_vsscanf(buffer, patternSpecification, ap);
+    va_end(ap);
+
+    return converted;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_sscanf_u(const UChar    *buffer,
+           const UChar    *patternSpecification,
+           ... )
+{
+    va_list ap;
+    int32_t converted;
+
+    va_start(ap, patternSpecification);
+    converted = u_vsscanf_u(buffer, patternSpecification, ap);
+    va_end(ap);
+
+    return converted;
+}
+
+U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vsscanf(const UChar   *buffer,
+          const char    *patternSpecification,
+          va_list        ap)
+{
+    int32_t converted;
+    UChar *pattern;
+    UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
+    int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1;
+
+    /* convert from the default codepage to Unicode */
+    if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
+        pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+        if(pattern == 0) {
+            return 0;
+        }
+    }
+    else {
+        pattern = patBuffer;
+    }
+    u_charsToUChars(patternSpecification, pattern, size);
+
+    /* do the work */
+    converted = u_vsscanf_u(buffer, pattern, ap);
+
+    /* clean up */
+    if (pattern != patBuffer) {
+        uprv_free(pattern);
+    }
+
+    return converted;
+}
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vsscanf_u(const UChar *buffer,
+            const UChar *patternSpecification,
+            va_list     ap)
+{
+    int32_t         converted;
+    UFILE           inStr;
+
+    inStr.fConverter = NULL;
+    inStr.fFile = NULL;
+    inStr.fOwnFile = FALSE;
+#if !UCONFIG_NO_TRANSLITERATION
+    inStr.fTranslit = NULL;
+#endif
+    inStr.fUCBuffer[0] = 0;
+    inStr.str.fBuffer = (UChar *)buffer;
+    inStr.str.fPos = (UChar *)buffer;
+    inStr.str.fLimit = buffer + u_strlen(buffer);
+
+    if(u_locbund_init(&inStr.str.fBundle, "en_US_POSIX") == 0) {
+        return 0;
+    }
+
+    converted = u_scanf_parse(&inStr, patternSpecification, ap);
+
+    u_locbund_close(&inStr.str.fBundle);
+
+    /* return # of items converted */
+    return converted;
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
index 7a7216b..21a0baf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ucln_io.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 20dcb88..97d06a1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *                                                                            *
 ******************************************************************************
 *   file name:  ucln_io.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/io/ufile.c b/source/io/ufile.c
new file mode 100644 (file)
index 0000000..87ed3f1
--- /dev/null
@@ -0,0 +1,362 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1998-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File ufile.c
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   11/19/98    stephen     Creation.
+*   03/12/99    stephen     Modified for new C API.
+*   06/16/99    stephen     Changed T_LocaleBundle to u_locbund
+*   07/19/99    stephen     Fixed to use ucnv's default codepage.
+******************************************************************************
+*/
+
+/*
+ * fileno is not declared when building with GCC in strict mode.
+ */
+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
+#undef __STRICT_ANSI__
+#endif
+
+#include "locmap.h"
+#include "unicode/ustdio.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "ufile.h"
+#include "unicode/uloc.h"
+#include "unicode/ures.h"
+#include "unicode/ucnv.h"
+#include "unicode/ustring.h"
+#include "cstring.h"
+#include "cmemory.h"
+
+#if U_PLATFORM_USES_ONLY_WIN32_API && !defined(fileno)
+/* Windows likes to rename Unix-like functions */
+#define fileno _fileno
+#endif
+
+static UFILE*
+finit_owner(FILE         *f,
+              const char *locale,
+              const char *codepage,
+              UBool       takeOwnership
+              )
+{
+    UErrorCode status = U_ZERO_ERROR;
+    UFILE     *result;
+    if(f == NULL) {
+        return 0;
+    }
+    result = (UFILE*) uprv_malloc(sizeof(UFILE));
+    if(result == NULL) {
+        return 0;
+    }
+
+    uprv_memset(result, 0, sizeof(UFILE));
+    result->fFileno = fileno(f);
+
+#if U_PLATFORM_USES_ONLY_WIN32_API && _MSC_VER < 1900
+    /*
+     * Below is a very old workaround (ICU ticket:231).
+     *
+     * Previously, 'FILE*' from inside and outside ICU's DLL
+     * were different, because they pointed into local copies
+     * of the io block. At least by VS 2015 the implementation
+     * is something like:
+     *    stdio = _acrt_iob_func(0)
+     * .. which is a function call, so should return the same pointer
+     * regardless of call site.
+     * As of _MSC_VER 1900 this patch is retired, at 16 years old.
+     */
+    if (0 <= result->fFileno && result->fFileno <= 2) {
+        /* stdin, stdout and stderr need to be special cased for Windows 98 */
+#if _MSC_VER >= 1400
+        result->fFile = &__iob_func()[_fileno(f)];
+#else
+        result->fFile = &_iob[_fileno(f)];
+#endif
+    }
+    else
+#endif
+    {
+        result->fFile = f;
+    }
+
+    result->str.fBuffer = result->fUCBuffer;
+    result->str.fPos    = result->fUCBuffer;
+    result->str.fLimit  = result->fUCBuffer;
+
+#if !UCONFIG_NO_FORMATTING
+        /* if locale is 0, use the default */
+        if(u_locbund_init(&result->str.fBundle, locale) == 0) {
+            /* DO NOT FCLOSE HERE! */
+            uprv_free(result);
+            return 0;
+        }
+#endif
+
+    /* If the codepage is not "" use the ucnv_open default behavior */
+    if(codepage == NULL || *codepage != '\0') {
+        result->fConverter = ucnv_open(codepage, &status);
+    }
+    /* else result->fConverter is already memset'd to NULL. */
+
+    if(U_SUCCESS(status)) {
+        result->fOwnFile = takeOwnership;
+    }
+    else {
+#if !UCONFIG_NO_FORMATTING
+        u_locbund_close(&result->str.fBundle);
+#endif
+        /* DO NOT fclose here!!!!!! */
+        uprv_free(result);
+        result = NULL;
+    }
+
+    return result;
+}
+
+U_CAPI UFILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_finit(FILE          *f,
+        const char    *locale,
+        const char    *codepage)
+{
+    return finit_owner(f, locale, codepage, FALSE);
+}
+
+U_CAPI UFILE* U_EXPORT2
+u_fadopt(FILE         *f,
+        const char    *locale,
+        const char    *codepage)
+{
+    return finit_owner(f, locale, codepage, TRUE);
+}
+
+U_CAPI UFILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fopen(const char    *filename,
+        const char    *perm,
+        const char    *locale,
+        const char    *codepage)
+{
+    UFILE     *result;
+    FILE     *systemFile = fopen(filename, perm);
+    if(systemFile == 0) {
+        return 0;
+    }
+
+    result = finit_owner(systemFile, locale, codepage, TRUE);
+
+    if (!result) {
+        /* Something bad happened.
+           Maybe the converter couldn't be opened. */
+        fclose(systemFile);
+    }
+
+    return result; /* not a file leak */
+}
+
+U_CAPI UFILE* U_EXPORT2
+u_fopen_u(const UChar   *filename,
+        const char    *perm,
+        const char    *locale,
+        const char    *codepage)
+{
+    UFILE     *result;
+    char buffer[256];
+
+    u_austrcpy(buffer, filename);
+
+    result = u_fopen(buffer, perm, locale, codepage);
+#if U_PLATFORM_USES_ONLY_WIN32_API
+    /* Try Windows API _wfopen if the above fails. */
+    if (!result) {
+        FILE *systemFile = _wfopen(filename, (UChar*)perm);
+        if (systemFile) {
+            result = finit_owner(systemFile, locale, codepage, TRUE);
+        }
+        if (!result) {
+            /* Something bad happened.
+               Maybe the converter couldn't be opened. */
+            fclose(systemFile);
+        }
+    }
+#endif
+    return result; /* not a file leak */
+}
+
+U_CAPI UFILE* U_EXPORT2
+u_fstropen(UChar *stringBuf,
+           int32_t      capacity,
+           const char  *locale)
+{
+    UFILE *result;
+
+    if (capacity < 0) {
+        return NULL;
+    }
+
+    result = (UFILE*) uprv_malloc(sizeof(UFILE));
+    /* Null pointer test */
+    if (result == NULL) {
+       return NULL; /* Just get out. */
+    }
+    uprv_memset(result, 0, sizeof(UFILE));
+    result->str.fBuffer = stringBuf;
+    result->str.fPos    = stringBuf;
+    result->str.fLimit  = stringBuf+capacity;
+
+#if !UCONFIG_NO_FORMATTING
+    /* if locale is 0, use the default */
+    if(u_locbund_init(&result->str.fBundle, locale) == 0) {
+        /* DO NOT FCLOSE HERE! */
+        uprv_free(result);
+        return 0;
+    }
+#endif
+
+    return result;
+}
+
+U_CAPI UBool U_EXPORT2
+u_feof(UFILE  *f)
+{
+    UBool endOfBuffer;
+    if (f == NULL) {
+        return TRUE;
+    }
+    endOfBuffer = (UBool)(f->str.fPos >= f->str.fLimit);
+    if (f->fFile != NULL) {
+        return endOfBuffer && feof(f->fFile);
+    }
+    return endOfBuffer;
+}
+
+U_CAPI void U_EXPORT2
+u_fflush(UFILE *file)
+{
+    ufile_flush_translit(file);
+    ufile_flush_io(file);
+    if (file->fFile) {
+        fflush(file->fFile);
+    }
+    else if (file->str.fPos < file->str.fLimit) {
+        *(file->str.fPos++) = 0;
+    }
+    /* TODO: flush input */
+}
+
+U_CAPI void
+u_frewind(UFILE *file)
+{
+    u_fflush(file);
+    ucnv_reset(file->fConverter);
+    if (file->fFile) {
+        rewind(file->fFile);
+        file->str.fLimit = file->fUCBuffer;
+        file->str.fPos   = file->fUCBuffer;
+    }
+    else {
+        file->str.fPos = file->str.fBuffer;
+    }
+}
+
+U_CAPI void U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fclose(UFILE *file)
+{
+    if (file) {
+        u_fflush(file);
+        ufile_close_translit(file);
+
+        if(file->fOwnFile)
+            fclose(file->fFile);
+
+#if !UCONFIG_NO_FORMATTING
+        u_locbund_close(&file->str.fBundle);
+#endif
+
+        ucnv_close(file->fConverter);
+        uprv_free(file);
+    }
+}
+
+U_CAPI FILE* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgetfile(    UFILE         *f)
+{
+    return f->fFile;
+}
+
+#if !UCONFIG_NO_FORMATTING
+
+U_CAPI const char*  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgetlocale(    UFILE        *file)
+{
+    return file->str.fBundle.fLocale;
+}
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fsetlocale(UFILE      *file,
+             const char *locale)
+{
+    u_locbund_close(&file->str.fBundle);
+
+    return u_locbund_init(&file->str.fBundle, locale) == 0 ? -1 : 0;
+}
+
+#endif
+
+U_CAPI const char* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgetcodepage(UFILE        *file)
+{
+    UErrorCode     status = U_ZERO_ERROR;
+    const char     *codepage = NULL;
+
+    if (file->fConverter) {
+        codepage = ucnv_getName(file->fConverter, &status);
+        if(U_FAILURE(status))
+            return 0;
+    }
+    return codepage;
+}
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fsetcodepage(    const char    *codepage,
+               UFILE        *file)
+{
+    UErrorCode status = U_ZERO_ERROR;
+    int32_t retVal = -1;
+
+    /* We use the normal default codepage for this system, and not the one for the locale. */
+    if ((file->str.fPos == file->str.fBuffer) && (file->str.fLimit == file->str.fBuffer)) {
+        ucnv_close(file->fConverter);
+        file->fConverter = ucnv_open(codepage, &status);
+        if(U_SUCCESS(status)) {
+            retVal = 0;
+        }
+    }
+    return retVal;
+}
+
+
+U_CAPI UConverter * U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgetConverter(UFILE *file)
+{
+    return file->fConverter;
+}
+#if !UCONFIG_NO_FORMATTING
+U_CAPI const UNumberFormat* U_EXPORT2 u_fgetNumberFormat(UFILE *file)
+{
+    return u_locbund_getNumberFormat(&file->str.fBundle, UNUM_DECIMAL);
+}
+#endif
+
+#endif
index e85208f..3a1a223 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -25,8 +25,6 @@
 
 #if !UCONFIG_NO_CONVERSION
 
-#include <stdio.h>
-
 #include "unicode/ucnv.h"
 #include "unicode/utrans.h"
 #include "locbund.h"
diff --git a/source/io/ufmt_cmn.c b/source/io/ufmt_cmn.c
new file mode 100644 (file)
index 0000000..e24d0d7
--- /dev/null
@@ -0,0 +1,259 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1998-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File ufmt_cmn.c
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   12/02/98    stephen     Creation.
+*   03/12/99    stephen     Modified for new C API.
+*   03/15/99    stephen     Added defaultCPToUnicode, unicodeToDefaultCP
+*   07/19/99    stephen     Fixed bug in defaultCPToUnicode
+******************************************************************************
+*/
+
+#include "cstring.h"
+#include "cmemory.h"
+#include "ufmt_cmn.h"
+#include "unicode/uchar.h"
+#include "unicode/ucnv.h"
+#include "ustr_cnv.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+
+#define DIGIT_0     0x0030
+#define DIGIT_9     0x0039
+#define LOWERCASE_A 0x0061
+#define UPPERCASE_A 0x0041
+#define LOWERCASE_Z 0x007A
+#define UPPERCASE_Z 0x005A
+
+int
+ufmt_digitvalue(UChar c)
+{
+    if( ((c>=DIGIT_0)&&(c<=DIGIT_9)) ||
+        ((c>=LOWERCASE_A)&&(c<=LOWERCASE_Z)) ||
+        ((c>=UPPERCASE_A)&&(c<=UPPERCASE_Z))  )
+    {
+      return c - DIGIT_0 - (c >= 0x0041 ? (c >= 0x0061 ? 39 : 7) : 0);
+    }
+    else
+    {
+      return -1;
+    }
+}
+
+UBool
+ufmt_isdigit(UChar     c,
+             int32_t     radix)
+{
+    int digitVal = ufmt_digitvalue(c);
+
+    return (UBool)(digitVal < radix && digitVal >= 0);
+}
+
+#define TO_UC_DIGIT(a) a <= 9 ? (DIGIT_0 + a) : (0x0037 + a)
+#define TO_LC_DIGIT(a) a <= 9 ? (DIGIT_0 + a) : (0x0057 + a)
+
+void 
+ufmt_64tou(UChar     *buffer, 
+          int32_t   *len,
+          uint64_t  value, 
+          uint8_t  radix,
+          UBool     uselower,
+          int32_t   minDigits)
+{
+    int32_t  length = 0;
+    uint32_t digit;
+    UChar    *left, *right, temp;
+    
+    do {
+        digit = (uint32_t)(value % radix);
+        value = value / radix;
+        buffer[length++] = (UChar)(uselower ? TO_LC_DIGIT(digit) 
+            : TO_UC_DIGIT(digit));
+    } while(value);
+
+    /* pad with zeroes to make it minDigits long */
+    if(minDigits != -1 && length < minDigits) {
+        while(length < minDigits && length < *len)
+            buffer[length++] = DIGIT_0;  /*zero padding */
+    }
+
+    /* reverse the buffer */
+    left     = buffer;
+    right = buffer + length;
+    while(left < --right) {
+        temp     = *left;
+        *left++     = *right;
+        *right     = temp;
+    }
+    
+    *len = length;
+}
+
+void 
+ufmt_ptou(UChar    *buffer, 
+          int32_t   *len,
+          void      *value, 
+          UBool     uselower)
+{
+    int32_t i;
+    int32_t length = 0;
+    uint8_t *ptrIdx = (uint8_t *)&value;
+
+#if U_IS_BIG_ENDIAN
+    for (i = 0; i < (int32_t)sizeof(void *); i++)
+#else
+    for (i = (int32_t)sizeof(void *)-1; i >= 0 ; i--)
+#endif
+    {
+        uint8_t byteVal = ptrIdx[i];
+        uint16_t firstNibble = (uint16_t)(byteVal>>4);
+        uint16_t secondNibble = (uint16_t)(byteVal&0xF);
+        if (uselower) {
+            buffer[length++]=TO_LC_DIGIT(firstNibble);
+            buffer[length++]=TO_LC_DIGIT(secondNibble);
+        }
+        else {
+            buffer[length++]=TO_UC_DIGIT(firstNibble);
+            buffer[length++]=TO_UC_DIGIT(secondNibble);
+        }
+    }
+
+    *len = length;
+}
+
+int64_t
+ufmt_uto64(const UChar     *buffer, 
+          int32_t     *len,
+          int8_t     radix)
+{
+    const UChar     *limit;
+    int32_t         count;
+    int64_t        result;
+    
+    
+    /* intialize parameters */
+    limit     = buffer + *len;
+    count     = 0;
+    result    = 0;
+    
+    /* iterate through buffer */
+    while(ufmt_isdigit(*buffer, radix) && buffer < limit) {
+        
+        /* read the next digit */
+        result *= radix;
+        result += ufmt_digitvalue(*buffer++);
+        
+        /* increment our count */
+        ++count;
+    }
+    
+    *len = count;
+    return result;
+}
+
+#define NIBBLE_PER_BYTE 2
+void *
+ufmt_utop(const UChar     *buffer,
+          int32_t     *len)
+{
+    int32_t count, resultIdx, incVal, offset;
+    /* This union allows the pointer to be written as an array. */
+    union {
+        void *ptr;
+        uint8_t bytes[sizeof(void*)];
+    } result;
+    
+    /* intialize variables */
+    count      = 0;
+    offset     = 0;
+    result.ptr = NULL;
+
+    /* Skip the leading zeros */
+    while(buffer[count] == DIGIT_0 || u_isspace(buffer[count])) {
+        count++;
+        offset++;
+    }
+
+    /* iterate through buffer, stop when you hit the end */
+    while(ufmt_isdigit(buffer[count], 16) && count < *len) {
+        /* increment the count consumed */
+        ++count;
+    }
+
+    /* detect overflow */
+    if (count - offset > (int32_t)(sizeof(void*)*NIBBLE_PER_BYTE)) {
+        offset = count - (int32_t)(sizeof(void*)*NIBBLE_PER_BYTE);
+    }
+    
+    /* Initialize the direction of the input */
+#if U_IS_BIG_ENDIAN
+    incVal = -1;
+    resultIdx = (int32_t)(sizeof(void*) - 1);
+#else
+    incVal = 1;
+    resultIdx = 0;
+#endif
+    /* Write how much was consumed. */
+    *len = count;
+    while(--count >= offset) {
+        /* Get the first nibble of the byte */
+        uint8_t byte = (uint8_t)ufmt_digitvalue(buffer[count]);
+
+        if (count > offset) {
+            /* Get the second nibble of the byte when available */
+            byte = (uint8_t)(byte + (ufmt_digitvalue(buffer[--count]) << 4));
+        }
+        /* Write the byte into the array */
+        result.bytes[resultIdx] = byte;
+        resultIdx += incVal;
+    }
+
+    return result.ptr;
+}
+
+UChar*
+ufmt_defaultCPToUnicode(const char *s, int32_t sSize,
+                        UChar *target, int32_t tSize)
+{
+    UChar *alias;
+    UErrorCode status = U_ZERO_ERROR;
+    UConverter *defConverter = u_getDefaultConverter(&status);
+    
+    if(U_FAILURE(status) || defConverter == 0)
+        return 0;
+
+    if(sSize <= 0) {
+        sSize = uprv_strlen(s) + 1;
+    }
+    
+    /* perform the conversion in one swoop */
+    if(target != 0) {
+        
+        alias = target;
+        ucnv_toUnicode(defConverter, &alias, alias + tSize, &s, s + sSize - 1, 
+            NULL, TRUE, &status);
+        
+        
+        /* add the null terminator */
+        *alias = 0x0000;
+    }
+    
+    u_releaseDefaultConverter(defConverter);
+    
+    return target;
+}
+
+
+#endif
index 33b56a0..97079ed 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -26,7 +26,7 @@
 #include "unicode/utf16.h"
 
 #define UFMT_DEFAULT_BUFFER_SIZE 128
-#define MAX_UCHAR_BUFFER_SIZE(buffer) ((int32_t)(sizeof(buffer)/(U16_MAX_LENGTH*sizeof(UChar))))
+#define MAX_UCHAR_BUFFER_SIZE(buffer) (sizeof(buffer)/(U16_MAX_LENGTH*sizeof(UChar)))
 #define MAX_UCHAR_BUFFER_NEEDED(strLen) ((strLen+1)*U16_MAX_LENGTH*sizeof(UChar))
 
 /** 
index 342c2b4..8f38398 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index df1506e..ab52f6a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -30,7 +30,7 @@
  * C++ I/O stream API.
  */
 
-#if defined(__GLIBCXX__)
+#if !defined(_MSC_VER)
 namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 
index d433707..b12ef0e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 0fd6066..0a07e6b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/io/uprntf_p.c b/source/io/uprntf_p.c
new file mode 100644 (file)
index 0000000..9890b29
--- /dev/null
@@ -0,0 +1,1593 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1998-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File uprntf_p.c
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   11/23/98    stephen     Creation.
+*   03/12/99    stephen     Modified for new C API.
+*   08/07/2003  george      Reunify printf implementations
+******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
+
+#include "unicode/ustring.h"
+#include "unicode/utf16.h"
+#include "uprintf.h"
+#include "ufmt_cmn.h"
+#include "cmemory.h"
+#include "putilimp.h"
+
+/* ANSI style formatting */
+/* Use US-ASCII characters only for formatting */
+
+/* % */
+#define UFMT_SIMPLE_PERCENT {ufmt_simple_percent, u_printf_simple_percent_handler}
+/* s */
+#define UFMT_STRING         {ufmt_string, u_printf_string_handler}
+/* c */
+#define UFMT_CHAR           {ufmt_char, u_printf_char_handler}
+/* d, i */
+#define UFMT_INT            {ufmt_int, u_printf_integer_handler}
+/* u */
+#define UFMT_UINT           {ufmt_int, u_printf_uinteger_handler}
+/* o */
+#define UFMT_OCTAL          {ufmt_int, u_printf_octal_handler}
+/* x, X */
+#define UFMT_HEX            {ufmt_int, u_printf_hex_handler}
+/* f */
+#define UFMT_DOUBLE         {ufmt_double, u_printf_double_handler}
+/* e, E */
+#define UFMT_SCIENTIFIC     {ufmt_double, u_printf_scientific_handler}
+/* g, G */
+#define UFMT_SCIDBL         {ufmt_double, u_printf_scidbl_handler}
+/* n */
+#define UFMT_COUNT          {ufmt_count, u_printf_count_handler}
+
+/* non-ANSI extensions */
+/* Use US-ASCII characters only for formatting */
+
+/* p */
+#define UFMT_POINTER        {ufmt_pointer, u_printf_pointer_handler}
+/* V */
+#define UFMT_SPELLOUT       {ufmt_double, u_printf_spellout_handler}
+/* P */
+#define UFMT_PERCENT        {ufmt_double, u_printf_percent_handler}
+/* C  K is old format */
+#define UFMT_UCHAR          {ufmt_uchar, u_printf_uchar_handler}
+/* S  U is old format */
+#define UFMT_USTRING        {ufmt_ustring, u_printf_ustring_handler}
+
+
+#define UFMT_EMPTY {ufmt_empty, NULL}
+
+/**
+ * A u_printf handler function.  
+ * A u_printf handler is responsible for handling a single u_printf 
+ * format specification, for example 'd' or 's'.
+ * @param stream The UFILE to which to write output.
+ * @param info A pointer to a <TT>u_printf_spec_info</TT> struct containing
+ * information on the format specification.
+ * @param args A pointer to the argument data
+ * @return The number of Unicode characters written to <TT>stream</TT>.
+ */
+typedef int32_t U_EXPORT2
+u_printf_handler(const u_printf_stream_handler  *handler,
+
+                 void                           *context,
+                 ULocaleBundle                  *formatBundle,
+                 const u_printf_spec_info       *info,
+                 const ufmt_args                *args);
+
+typedef struct u_printf_info {
+    ufmt_type_info info;
+    u_printf_handler *handler;
+} u_printf_info;
+
+/**
+ * Struct encapsulating a single uprintf format specification.
+ */
+typedef struct u_printf_spec {
+  u_printf_spec_info    fInfo;        /* Information on this spec */
+  int32_t        fWidthPos;     /* Position of width in arg list */
+  int32_t        fPrecisionPos;    /* Position of precision in arg list */
+  int32_t        fArgPos;    /* Position of data in arg list */
+} u_printf_spec;
+
+#define UPRINTF_NUM_FMT_HANDLERS 108
+
+/* We do not use handlers for 0-0x1f */
+#define UPRINTF_BASE_FMT_HANDLERS 0x20
+
+/* buffer size for formatting */
+#define UPRINTF_BUFFER_SIZE 1024
+#define UPRINTF_SYMBOL_BUFFER_SIZE 8
+
+static const UChar gNullStr[] = {0x28, 0x6E, 0x75, 0x6C, 0x6C, 0x29, 0}; /* "(null)" */
+static const UChar gSpaceStr[] = {0x20, 0}; /* " " */
+
+/* Sets the sign of a format based on u_printf_spec_info */
+/* TODO: Is setting the prefix symbol to a positive sign a good idea in all locales? */
+static void
+u_printf_set_sign(UNumberFormat        *format,
+                   const u_printf_spec_info     *info,
+                   UChar *prefixBuffer,
+                   int32_t *prefixBufLen,
+                   UErrorCode *status)
+{
+    if(info->fShowSign) {
+        *prefixBufLen = unum_getTextAttribute(format,
+                                              UNUM_POSITIVE_PREFIX,
+                                              prefixBuffer,
+                                              *prefixBufLen,
+                                              status);
+        if (info->fSpace) {
+            /* Setting UNUM_PLUS_SIGN_SYMBOL affects the exponent too. */
+            /* unum_setSymbol(format, UNUM_PLUS_SIGN_SYMBOL, gSpaceStr, 1, &status); */
+            unum_setTextAttribute(format, UNUM_POSITIVE_PREFIX, gSpaceStr, 1, status);
+        }
+        else {
+            UChar plusSymbol[UPRINTF_SYMBOL_BUFFER_SIZE];
+            int32_t symbolLen;
+
+            symbolLen = unum_getSymbol(format,
+                UNUM_PLUS_SIGN_SYMBOL,
+                plusSymbol,
+                UPRV_LENGTHOF(plusSymbol),
+                status);
+            unum_setTextAttribute(format,
+                UNUM_POSITIVE_PREFIX,
+                plusSymbol,
+                symbolLen,
+                status);
+        }
+    }
+    else {
+        *prefixBufLen = 0;
+    }
+}
+
+static void
+u_printf_reset_sign(UNumberFormat        *format,
+                   const u_printf_spec_info     *info,
+                   UChar *prefixBuffer,
+                   int32_t *prefixBufLen,
+                   UErrorCode *status)
+{
+    if(info->fShowSign) {
+        unum_setTextAttribute(format,
+                              UNUM_POSITIVE_PREFIX,
+                              prefixBuffer,
+                              *prefixBufLen,
+                              status);
+    }
+}
+
+
+/* handle a '%' */
+static int32_t
+u_printf_simple_percent_handler(const u_printf_stream_handler  *handler,
+                                void                           *context,
+                                ULocaleBundle                  *formatBundle,
+                                const u_printf_spec_info       *info,
+                                const ufmt_args                *args)
+{
+    static const UChar PERCENT[] = { UP_PERCENT };
+
+    /* put a single '%' onto the output */
+    return handler->write(context, PERCENT, 1);
+}
+
+/* handle 's' */
+static int32_t
+u_printf_string_handler(const u_printf_stream_handler  *handler,
+                        void                           *context,
+                        ULocaleBundle                  *formatBundle,
+                        const u_printf_spec_info       *info,
+                        const ufmt_args                *args)
+{
+    UChar *s;
+    UChar buffer[UFMT_DEFAULT_BUFFER_SIZE];
+    int32_t len, written;
+    int32_t argSize;
+    const char *arg = (const char*)(args[0].ptrValue);
+
+    /* convert from the default codepage to Unicode */
+    if (arg) {
+        argSize = (int32_t)strlen(arg) + 1;
+        if (argSize >= MAX_UCHAR_BUFFER_SIZE(buffer)) {
+            s = ufmt_defaultCPToUnicode(arg, argSize,
+                    (UChar *)uprv_malloc(MAX_UCHAR_BUFFER_NEEDED(argSize)),
+                    MAX_UCHAR_BUFFER_NEEDED(argSize));
+            if(s == NULL) {
+                return 0;
+            }
+        }
+        else {
+            s = ufmt_defaultCPToUnicode(arg, argSize, buffer,
+                    UPRV_LENGTHOF(buffer));
+        }
+    }
+    else {
+        s = (UChar *)gNullStr;
+    }
+    len = u_strlen(s);
+
+    /* width = minimum # of characters to write */
+    /* precision = maximum # of characters to write */
+    if (info->fPrecision != -1 && info->fPrecision < len) {
+        len = info->fPrecision;
+    }
+
+    written = handler->pad_and_justify(context, info, s, len);
+
+    /* clean up */
+    if (gNullStr != s && buffer != s) {
+        uprv_free(s);
+    }
+
+    return written;
+}
+
+static int32_t
+u_printf_char_handler(const u_printf_stream_handler  *handler,
+                      void                           *context,
+                      ULocaleBundle                  *formatBundle,
+                      const u_printf_spec_info       *info,
+                      const ufmt_args                *args)
+{
+    UChar s[U16_MAX_LENGTH+1];
+    int32_t len = 1, written;
+    unsigned char arg = (unsigned char)(args[0].int64Value);
+
+    /* convert from default codepage to Unicode */
+    ufmt_defaultCPToUnicode((const char *)&arg, 2, s, UPRV_LENGTHOF(s));
+
+    /* Remember that this may be an MBCS character */
+    if (arg != 0) {
+        len = u_strlen(s);
+    }
+
+    /* width = minimum # of characters to write */
+    /* precision = maximum # of characters to write */
+    /* precision is ignored when handling a char */
+
+    written = handler->pad_and_justify(context, info, s, len);
+
+    return written;
+}
+
+static int32_t
+u_printf_double_handler(const u_printf_stream_handler  *handler,
+                        void                           *context,
+                        ULocaleBundle                  *formatBundle,
+                        const u_printf_spec_info       *info,
+                        const ufmt_args                *args)
+{
+    double        num         = (double) (args[0].doubleValue);
+    UNumberFormat  *format;
+    UChar          result[UPRINTF_BUFFER_SIZE];
+    UChar          prefixBuffer[UPRINTF_BUFFER_SIZE];
+    int32_t        prefixBufferLen = sizeof(prefixBuffer);
+    int32_t        minDecimalDigits;
+    int32_t        maxDecimalDigits;
+    int32_t        resultLen;
+    UErrorCode     status        = U_ZERO_ERROR;
+
+    prefixBuffer[0] = 0;
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLongDouble)
+    num &= DBL_MAX;*/
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* save the formatter's state */
+    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
+    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
+
+    /* set the appropriate flags and number of decimal digits on the formatter */
+    if(info->fPrecision != -1) {
+        /* set the # of decimal digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
+    }
+    else if(info->fAlt) {
+        /* '#' means always show decimal point */
+        /* copy of printf behavior on Solaris - '#' shows 6 digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+    else {
+        /* # of decimal digits is 6 if precision not specified regardless of locale */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+
+    /* set whether to show the sign */
+    if (info->fShowSign) {
+        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
+    }
+
+    /* format the number */
+    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+
+    if (U_FAILURE(status)) {
+        resultLen = 0;
+    }
+
+    /* restore the number format */
+    /* TODO: Is this needed? */
+    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
+    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
+
+    if (info->fShowSign) {
+        /* Reset back to original value regardless of what the error was */
+        UErrorCode localStatus = U_ZERO_ERROR;
+        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
+    }
+
+    return handler->pad_and_justify(context, info, result, resultLen);
+}
+
+/* HSYS */
+static int32_t
+u_printf_integer_handler(const u_printf_stream_handler  *handler,
+                         void                           *context,
+                         ULocaleBundle                  *formatBundle,
+                         const u_printf_spec_info       *info,
+                         const ufmt_args                *args)
+{
+    int64_t         num        = args[0].int64Value;
+    UNumberFormat   *format;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
+    int32_t         prefixBufferLen = sizeof(prefixBuffer);
+    int32_t         minDigits     = -1;
+    int32_t         resultLen;
+    UErrorCode      status        = U_ZERO_ERROR;
+
+    prefixBuffer[0] = 0;
+
+    /* mask off any necessary bits */
+    if (info->fIsShort)
+        num = (int16_t)num;
+    else if (!info->fIsLongLong)
+        num = (int32_t)num;
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* set the appropriate flags on the formatter */
+
+    /* set the minimum integer digits */
+    if(info->fPrecision != -1) {
+        /* set the minimum # of digits */
+        minDigits = unum_getAttribute(format, UNUM_MIN_INTEGER_DIGITS);
+        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, info->fPrecision);
+    }
+
+    /* set whether to show the sign */
+    if(info->fShowSign) {
+        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
+    }
+
+    /* format the number */
+    resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+
+    if (U_FAILURE(status)) {
+        resultLen = 0;
+    }
+
+    /* restore the number format */
+    if (minDigits != -1) {
+        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, minDigits);
+    }
+
+    if (info->fShowSign) {
+        /* Reset back to original value regardless of what the error was */
+        UErrorCode localStatus = U_ZERO_ERROR;
+        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
+    }
+
+    return handler->pad_and_justify(context, info, result, resultLen);
+}
+
+static int32_t
+u_printf_hex_handler(const u_printf_stream_handler  *handler,
+                     void                           *context,
+                     ULocaleBundle                  *formatBundle,
+                     const u_printf_spec_info       *info,
+                     const ufmt_args                *args)
+{
+    int64_t         num        = args[0].int64Value;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    int32_t         len        = UPRINTF_BUFFER_SIZE;
+
+
+    /* mask off any necessary bits */
+    if (info->fIsShort)
+        num &= UINT16_MAX;
+    else if (!info->fIsLongLong)
+        num &= UINT32_MAX;
+
+    /* format the number, preserving the minimum # of digits */
+    ufmt_64tou(result, &len, num, 16,
+        (UBool)(info->fSpec == 0x0078),
+        (info->fPrecision == -1 && info->fZero) ? info->fWidth : info->fPrecision);
+
+    /* convert to alt form, if desired */
+    if(num != 0 && info->fAlt && len < UPRINTF_BUFFER_SIZE - 2) {
+        /* shift the formatted string right by 2 chars */
+        memmove(result + 2, result, len * sizeof(UChar));
+        result[0] = 0x0030;
+        result[1] = info->fSpec;
+        len += 2;
+    }
+
+    return handler->pad_and_justify(context, info, result, len);
+}
+
+static int32_t
+u_printf_octal_handler(const u_printf_stream_handler  *handler,
+                       void                           *context,
+                       ULocaleBundle                  *formatBundle,
+                       const u_printf_spec_info       *info,
+                       const ufmt_args                *args)
+{
+    int64_t         num        = args[0].int64Value;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    int32_t         len        = UPRINTF_BUFFER_SIZE;
+
+
+    /* mask off any necessary bits */
+    if (info->fIsShort)
+        num &= UINT16_MAX;
+    else if (!info->fIsLongLong)
+        num &= UINT32_MAX;
+
+    /* format the number, preserving the minimum # of digits */
+    ufmt_64tou(result, &len, num, 8,
+        FALSE, /* doesn't matter for octal */
+        info->fPrecision == -1 && info->fZero ? info->fWidth : info->fPrecision);
+
+    /* convert to alt form, if desired */
+    if(info->fAlt && result[0] != 0x0030 && len < UPRINTF_BUFFER_SIZE - 1) {
+        /* shift the formatted string right by 1 char */
+        memmove(result + 1, result, len * sizeof(UChar));
+        result[0] = 0x0030;
+        len += 1;
+    }
+
+    return handler->pad_and_justify(context, info, result, len);
+}
+
+static int32_t
+u_printf_uinteger_handler(const u_printf_stream_handler *handler,
+                          void                          *context,
+                          ULocaleBundle                 *formatBundle,
+                          const u_printf_spec_info      *info,
+                          const ufmt_args               *args)
+{
+    int64_t         num        = args[0].int64Value;
+    UNumberFormat   *format;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    int32_t         minDigits     = -1;
+    int32_t         resultLen;
+    UErrorCode      status        = U_ZERO_ERROR;
+
+    /* TODO: Fix this once uint64_t can be formatted. */
+    if (info->fIsShort)
+        num &= UINT16_MAX;
+    else if (!info->fIsLongLong)
+        num &= UINT32_MAX;
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* set the appropriate flags on the formatter */
+
+    /* set the minimum integer digits */
+    if(info->fPrecision != -1) {
+        /* set the minimum # of digits */
+        minDigits = unum_getAttribute(format, UNUM_MIN_INTEGER_DIGITS);
+        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, info->fPrecision);
+    }
+
+    /* To mirror other stdio implementations, we ignore the sign argument */
+
+    /* format the number */
+    resultLen = unum_formatInt64(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+
+    if (U_FAILURE(status)) {
+        resultLen = 0;
+    }
+
+    /* restore the number format */
+    if (minDigits != -1) {
+        unum_setAttribute(format, UNUM_MIN_INTEGER_DIGITS, minDigits);
+    }
+
+    return handler->pad_and_justify(context, info, result, resultLen);
+}
+
+static int32_t
+u_printf_pointer_handler(const u_printf_stream_handler  *handler,
+                         void                           *context,
+                         ULocaleBundle                  *formatBundle,
+                         const u_printf_spec_info       *info,
+                         const ufmt_args                *args)
+{
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    int32_t         len  = UPRINTF_BUFFER_SIZE;
+
+    /* format the pointer in hex */
+    ufmt_ptou(result, &len, args[0].ptrValue, TRUE/*, info->fPrecision*/);
+
+    return handler->pad_and_justify(context, info, result, len);
+}
+
+static int32_t
+u_printf_scientific_handler(const u_printf_stream_handler  *handler,
+                            void                           *context,
+                            ULocaleBundle                  *formatBundle,
+                            const u_printf_spec_info       *info,
+                            const ufmt_args                *args)
+{
+    double          num         = (double) (args[0].doubleValue);
+    UNumberFormat   *format;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
+    int32_t         prefixBufferLen = sizeof(prefixBuffer);
+    int32_t         minDecimalDigits;
+    int32_t         maxDecimalDigits;
+    UErrorCode      status        = U_ZERO_ERROR;
+    UChar srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+    int32_t srcLen, expLen;
+    int32_t resultLen;
+    UChar expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+
+    prefixBuffer[0] = 0;
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLongDouble)
+    num &= DBL_MAX;*/
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(formatBundle, UNUM_SCIENTIFIC);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* set the appropriate flags on the formatter */
+
+    srcLen = unum_getSymbol(format,
+        UNUM_EXPONENTIAL_SYMBOL,
+        srcExpBuf,
+        sizeof(srcExpBuf),
+        &status);
+
+    /* Upper/lower case the e */
+    if (info->fSpec == (UChar)0x65 /* e */) {
+        expLen = u_strToLower(expBuf, (int32_t)sizeof(expBuf),
+            srcExpBuf, srcLen,
+            formatBundle->fLocale,
+            &status);
+    }
+    else {
+        expLen = u_strToUpper(expBuf, (int32_t)sizeof(expBuf),
+            srcExpBuf, srcLen,
+            formatBundle->fLocale,
+            &status);
+    }
+
+    unum_setSymbol(format,
+        UNUM_EXPONENTIAL_SYMBOL,
+        expBuf,
+        expLen,
+        &status);
+
+    /* save the formatter's state */
+    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
+    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
+
+    /* set the appropriate flags and number of decimal digits on the formatter */
+    if(info->fPrecision != -1) {
+        /* set the # of decimal digits */
+        if (info->fOrigSpec == (UChar)0x65 /* e */ || info->fOrigSpec == (UChar)0x45 /* E */) {
+            unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
+        }
+        else {
+            unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, 1);
+            unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, info->fPrecision);
+        }
+    }
+    else if(info->fAlt) {
+        /* '#' means always show decimal point */
+        /* copy of printf behavior on Solaris - '#' shows 6 digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+    else {
+        /* # of decimal digits is 6 if precision not specified */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+
+    /* set whether to show the sign */
+    if (info->fShowSign) {
+        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
+    }
+
+    /* format the number */
+    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+
+    if (U_FAILURE(status)) {
+        resultLen = 0;
+    }
+
+    /* restore the number format */
+    /* TODO: Is this needed? */
+    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
+    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
+
+    /* Since we're the only one using the scientific
+       format, we don't need to save the old exponent value. */
+    /*unum_setSymbol(format,
+        UNUM_EXPONENTIAL_SYMBOL,
+        srcExpBuf,
+        srcLen,
+        &status);*/
+
+    if (info->fShowSign) {
+        /* Reset back to original value regardless of what the error was */
+        UErrorCode localStatus = U_ZERO_ERROR;
+        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
+    }
+
+    return handler->pad_and_justify(context, info, result, resultLen);
+}
+
+static int32_t
+u_printf_percent_handler(const u_printf_stream_handler  *handler,
+                         void                           *context,
+                         ULocaleBundle                  *formatBundle,
+                         const u_printf_spec_info       *info,
+                         const ufmt_args                *args)
+{
+    double          num         = (double) (args[0].doubleValue);
+    UNumberFormat   *format;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
+    int32_t         prefixBufferLen = sizeof(prefixBuffer);
+    int32_t         minDecimalDigits;
+    int32_t         maxDecimalDigits;
+    int32_t         resultLen;
+    UErrorCode      status        = U_ZERO_ERROR;
+
+    prefixBuffer[0] = 0;
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLongDouble)
+    num &= DBL_MAX;*/
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(formatBundle, UNUM_PERCENT);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* save the formatter's state */
+    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
+    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
+
+    /* set the appropriate flags and number of decimal digits on the formatter */
+    if(info->fPrecision != -1) {
+        /* set the # of decimal digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
+    }
+    else if(info->fAlt) {
+        /* '#' means always show decimal point */
+        /* copy of printf behavior on Solaris - '#' shows 6 digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+    else {
+        /* # of decimal digits is 6 if precision not specified */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+
+    /* set whether to show the sign */
+    if (info->fShowSign) {
+        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
+    }
+
+    /* format the number */
+    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+
+    if (U_FAILURE(status)) {
+        resultLen = 0;
+    }
+
+    /* restore the number format */
+    /* TODO: Is this needed? */
+    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
+    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
+
+    if (info->fShowSign) {
+        /* Reset back to original value regardless of what the error was */
+        UErrorCode localStatus = U_ZERO_ERROR;
+        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
+    }
+
+    return handler->pad_and_justify(context, info, result, resultLen);
+}
+
+static int32_t
+u_printf_ustring_handler(const u_printf_stream_handler  *handler,
+                         void                           *context,
+                         ULocaleBundle                  *formatBundle,
+                         const u_printf_spec_info       *info,
+                         const ufmt_args                *args)
+{
+    int32_t len, written;
+    const UChar *arg = (const UChar*)(args[0].ptrValue);
+
+    /* allocate enough space for the buffer */
+    if (arg == NULL) {
+        arg = gNullStr;
+    }
+    len = u_strlen(arg);
+
+    /* width = minimum # of characters to write */
+    /* precision = maximum # of characters to write */
+    if (info->fPrecision != -1 && info->fPrecision < len) {
+        len = info->fPrecision;
+    }
+
+    /* determine if the string should be padded */
+    written = handler->pad_and_justify(context, info, arg, len);
+
+    return written;
+}
+
+static int32_t
+u_printf_uchar_handler(const u_printf_stream_handler  *handler,
+                       void                           *context,
+                       ULocaleBundle                  *formatBundle,
+                       const u_printf_spec_info       *info,
+                       const ufmt_args                *args)
+{
+    int32_t written = 0;
+    UChar arg = (UChar)(args[0].int64Value);
+
+    /* width = minimum # of characters to write */
+    /* precision = maximum # of characters to write */
+    /* precision is ignored when handling a uchar */
+
+    /* determine if the string should be padded */
+    written = handler->pad_and_justify(context, info, &arg, 1);
+
+    return written;
+}
+
+static int32_t
+u_printf_scidbl_handler(const u_printf_stream_handler  *handler,
+                        void                           *context,
+                        ULocaleBundle                  *formatBundle,
+                        const u_printf_spec_info       *info,
+                        const ufmt_args                *args)
+{
+    u_printf_spec_info scidbl_info;
+    double      num = args[0].doubleValue;
+    int32_t     retVal;
+    UNumberFormat *format;
+    int32_t maxSigDecimalDigits, significantDigits;
+
+    memcpy(&scidbl_info, info, sizeof(u_printf_spec_info));
+
+    /* determine whether to use 'd', 'e' or 'f' notation */
+    if (scidbl_info.fPrecision == -1 && num == uprv_trunc(num))
+    {
+        /* use 'f' notation */
+        scidbl_info.fSpec = 0x0066;
+        scidbl_info.fPrecision = 0;
+        /* call the double handler */
+        retVal = u_printf_double_handler(handler, context, formatBundle, &scidbl_info, args);
+    }
+    else if(num < 0.0001 || (scidbl_info.fPrecision < 1 && 1000000.0 <= num)
+        || (scidbl_info.fPrecision != -1 && num > uprv_pow10(scidbl_info.fPrecision)))
+    {
+        /* use 'e' or 'E' notation */
+        scidbl_info.fSpec = scidbl_info.fSpec - 2;
+        if (scidbl_info.fPrecision == -1) {
+            scidbl_info.fPrecision = 5;
+        }
+        /* call the scientific handler */
+        retVal = u_printf_scientific_handler(handler, context, formatBundle, &scidbl_info, args);
+    }
+    else {
+        format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
+        /* Check for null pointer */
+        if (format == NULL) {
+            return 0;
+        }
+        maxSigDecimalDigits = unum_getAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS);
+        significantDigits = scidbl_info.fPrecision;
+
+        /* use 'f' notation */
+        scidbl_info.fSpec = 0x0066;
+        if (significantDigits == -1) {
+            significantDigits = 6;
+        }
+        unum_setAttribute(format, UNUM_SIGNIFICANT_DIGITS_USED, TRUE);
+        unum_setAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS, significantDigits);
+        /* call the double handler */
+        retVal = u_printf_double_handler(handler, context, formatBundle, &scidbl_info, args);
+        unum_setAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS, maxSigDecimalDigits);
+        unum_setAttribute(format, UNUM_SIGNIFICANT_DIGITS_USED, FALSE);
+    }
+    return retVal;
+}
+
+static int32_t
+u_printf_count_handler(const u_printf_stream_handler  *handler,
+                       void                           *context,
+                       ULocaleBundle                  *formatBundle,
+                       const u_printf_spec_info       *info,
+                       const ufmt_args                *args)
+{
+    int32_t *count = (int32_t*)(args[0].ptrValue);
+
+    /* in the special case of count, the u_printf_spec_info's width */
+    /* will contain the # of chars written thus far */
+    *count = info->fWidth;
+
+    return 0;
+}
+
+static int32_t
+u_printf_spellout_handler(const u_printf_stream_handler *handler,
+                          void                          *context,
+                          ULocaleBundle                 *formatBundle,
+                          const u_printf_spec_info      *info,
+                          const ufmt_args               *args)
+{
+    double          num         = (double) (args[0].doubleValue);
+    UNumberFormat   *format;
+    UChar           result[UPRINTF_BUFFER_SIZE];
+    UChar           prefixBuffer[UPRINTF_BUFFER_SIZE];
+    int32_t         prefixBufferLen = sizeof(prefixBuffer);
+    int32_t         minDecimalDigits;
+    int32_t         maxDecimalDigits;
+    int32_t         resultLen;
+    UErrorCode      status        = U_ZERO_ERROR;
+
+    prefixBuffer[0] = 0;
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLongDouble)
+    num &= DBL_MAX;*/
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(formatBundle, UNUM_SPELLOUT);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* save the formatter's state */
+    minDecimalDigits = unum_getAttribute(format, UNUM_MIN_FRACTION_DIGITS);
+    maxDecimalDigits = unum_getAttribute(format, UNUM_MAX_FRACTION_DIGITS);
+
+    /* set the appropriate flags and number of decimal digits on the formatter */
+    if(info->fPrecision != -1) {
+        /* set the # of decimal digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
+    }
+    else if(info->fAlt) {
+        /* '#' means always show decimal point */
+        /* copy of printf behavior on Solaris - '#' shows 6 digits */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+    else {
+        /* # of decimal digits is 6 if precision not specified */
+        unum_setAttribute(format, UNUM_FRACTION_DIGITS, 6);
+    }
+
+    /* set whether to show the sign */
+    if (info->fShowSign) {
+        u_printf_set_sign(format, info, prefixBuffer, &prefixBufferLen, &status);
+    }
+
+    /* format the number */
+    resultLen = unum_formatDouble(format, num, result, UPRINTF_BUFFER_SIZE, 0, &status);
+
+    if (U_FAILURE(status)) {
+        resultLen = 0;
+    }
+
+    /* restore the number format */
+    /* TODO: Is this needed? */
+    unum_setAttribute(format, UNUM_MIN_FRACTION_DIGITS, minDecimalDigits);
+    unum_setAttribute(format, UNUM_MAX_FRACTION_DIGITS, maxDecimalDigits);
+
+    if (info->fShowSign) {
+        /* Reset back to original value regardless of what the error was */
+        UErrorCode localStatus = U_ZERO_ERROR;
+        u_printf_reset_sign(format, info, prefixBuffer, &prefixBufferLen, &localStatus);
+    }
+
+    return handler->pad_and_justify(context, info, result, resultLen);
+}
+
+/* Use US-ASCII characters only for formatting. Most codepages have
+ characters 20-7F from Unicode. Using any other codepage specific
+ characters will make it very difficult to format the string on
+ non-Unicode machines */
+static const u_printf_info g_u_printf_infos[UPRINTF_NUM_FMT_HANDLERS] = {
+/* 0x20 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_SIMPLE_PERCENT,UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x30 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x40 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR,
+    UFMT_EMPTY,         UFMT_SCIENTIFIC,    UFMT_EMPTY,         UFMT_SCIDBL,
+#ifdef U_USE_OBSOLETE_IO_FORMATTING
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR/*deprecated*/,
+#else
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+#endif
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x50 */
+    UFMT_PERCENT,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_USTRING,
+#ifdef U_USE_OBSOLETE_IO_FORMATTING
+    UFMT_EMPTY,         UFMT_USTRING/*deprecated*/,UFMT_SPELLOUT,      UFMT_EMPTY,
+#else
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_SPELLOUT,      UFMT_EMPTY,
+#endif
+    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x60 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_CHAR,
+    UFMT_INT,           UFMT_SCIENTIFIC,    UFMT_DOUBLE,        UFMT_SCIDBL,
+    UFMT_EMPTY,         UFMT_INT,           UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_COUNT,         UFMT_OCTAL,
+
+/* 0x70 */
+    UFMT_POINTER,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_STRING,
+    UFMT_EMPTY,         UFMT_UINT,          UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+};
+
+/* flag characters for uprintf */
+#define FLAG_MINUS 0x002D
+#define FLAG_PLUS 0x002B
+#define FLAG_SPACE 0x0020
+#define FLAG_POUND 0x0023
+#define FLAG_ZERO  0x0030
+#define FLAG_PAREN 0x0028
+
+#define ISFLAG(s)    (s) == FLAG_MINUS || \
+            (s) == FLAG_PLUS || \
+            (s) == FLAG_SPACE || \
+            (s) == FLAG_POUND || \
+            (s) == FLAG_ZERO || \
+            (s) == FLAG_PAREN
+
+/* special characters for uprintf */
+#define SPEC_ASTERISK 0x002A
+#define SPEC_DOLLARSIGN 0x0024
+#define SPEC_PERIOD 0x002E
+#define SPEC_PERCENT 0x0025
+
+/* unicode digits */
+#define DIGIT_ZERO 0x0030
+#define DIGIT_ONE 0x0031
+#define DIGIT_TWO 0x0032
+#define DIGIT_THREE 0x0033
+#define DIGIT_FOUR 0x0034
+#define DIGIT_FIVE 0x0035
+#define DIGIT_SIX 0x0036
+#define DIGIT_SEVEN 0x0037
+#define DIGIT_EIGHT 0x0038
+#define DIGIT_NINE 0x0039
+
+#define ISDIGIT(s)    (s) == DIGIT_ZERO || \
+            (s) == DIGIT_ONE || \
+            (s) == DIGIT_TWO || \
+            (s) == DIGIT_THREE || \
+            (s) == DIGIT_FOUR || \
+            (s) == DIGIT_FIVE || \
+            (s) == DIGIT_SIX || \
+            (s) == DIGIT_SEVEN || \
+            (s) == DIGIT_EIGHT || \
+            (s) == DIGIT_NINE
+
+/* u_printf modifiers */
+#define MOD_H 0x0068
+#define MOD_LOWERL 0x006C
+#define MOD_L 0x004C
+
+#define ISMOD(s)    (s) == MOD_H || \
+            (s) == MOD_LOWERL || \
+            (s) == MOD_L
+/* Returns an array of the parsed argument type given in the format string. */
+static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *status) {
+    ufmt_args *arglist = NULL;
+    ufmt_type_info *typelist = NULL;
+    UBool *islonglong = NULL;
+    int32_t size = 0;
+    int32_t pos = 0;
+    UChar type;
+    uint16_t handlerNum;
+    const UChar *aliasStart = alias;
+
+    /* get maximum number of arguments */
+    for(;;) {
+        /* find % */
+        while(*alias != UP_PERCENT && *alias != 0x0000) {
+            alias++;
+        }
+
+        if(*alias == 0x0000) {
+            break;
+        }
+
+        alias++;
+
+        /* handle the pos number */
+        if(ISDIGIT(*alias)) {
+
+            /* handle positional parameters */
+            if(ISDIGIT(*alias)) {
+                pos = (int) (*alias++ - DIGIT_ZERO);
+
+                while(ISDIGIT(*alias)) {
+                    pos *= 10;
+                    pos += (int) (*alias++ - DIGIT_ZERO);
+                }
+            }
+
+            /* if there is no '$', don't read anything */
+            if(*alias != SPEC_DOLLARSIGN) {
+                return NULL;
+            }
+        } else {
+            return NULL;
+        }
+
+        if (pos > size) {
+            size = pos;
+        }
+    }
+
+    /* create the parsed argument list */
+    typelist = (ufmt_type_info*)uprv_malloc(sizeof(ufmt_type_info) * size);
+    islonglong = (UBool*)uprv_malloc(sizeof(UBool) * size);
+    arglist = (ufmt_args*)uprv_malloc(sizeof(ufmt_args) * size);
+
+    /* If malloc failed, return NULL */
+    if (!typelist || !islonglong || !arglist) {
+        if (typelist) {
+            uprv_free(typelist);
+        }
+
+        if (islonglong) {
+            uprv_free(islonglong);
+        }
+
+        if (arglist) {
+            uprv_free(arglist);
+        }
+
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+
+    /* reset alias back to the beginning */
+    alias = aliasStart;
+
+    for(;;) {
+        /* find % */
+        while(*alias != UP_PERCENT && *alias != 0x0000) {
+            alias++;
+        }
+
+        if(*alias == 0x0000) {
+            break;
+        }
+
+        alias++;
+
+        /* handle positional parameters */
+        if(ISDIGIT(*alias)) {
+            pos = (int) (*alias++ - DIGIT_ZERO);
+
+            while(ISDIGIT(*alias)) {
+                pos *= 10;
+                pos += (int) (*alias++ - DIGIT_ZERO);
+            }
+        }
+        /* offset position by 1 */
+        pos--;
+
+        /* skip over everything except for the type */
+        while (ISMOD(*alias) || ISFLAG(*alias) || ISDIGIT(*alias) || 
+            *alias == SPEC_ASTERISK || *alias == SPEC_PERIOD || *alias == SPEC_DOLLARSIGN) {
+                islonglong[pos] = FALSE;
+                if (ISMOD(*alias)) {
+                    alias++;
+                    if (*alias == MOD_LOWERL) {
+                        islonglong[pos] = TRUE;
+                    } 
+                } 
+                alias++;
+        }
+        type = *alias;
+
+        /* store the argument type in the correct position of the parsed argument list */
+        handlerNum = (uint16_t)(type - UPRINTF_BASE_FMT_HANDLERS);
+        if (handlerNum < UPRINTF_NUM_FMT_HANDLERS) {
+            typelist[pos] = g_u_printf_infos[ handlerNum ].info;
+        } else {
+            typelist[pos] = ufmt_empty;
+        }
+    }
+
+    /* store argument in arglist */
+    for (pos = 0; pos < size; pos++) {
+        switch (typelist[pos]) {
+        case ufmt_string:
+        case ufmt_ustring:
+        case ufmt_pointer:
+            arglist[pos].ptrValue = va_arg(ap, void*);
+            break;
+        case ufmt_char:
+        case ufmt_uchar:
+        case ufmt_int:
+            if (islonglong[pos]) {
+                arglist[pos].int64Value = va_arg(ap, int64_t);
+            }
+            else {
+                arglist[pos].int64Value = va_arg(ap, int32_t);
+            }
+            break;
+        case ufmt_float:
+            arglist[pos].floatValue = (float) va_arg(ap, double);
+            break;
+        case ufmt_double:
+            arglist[pos].doubleValue = va_arg(ap, double);
+            break;
+        default:
+            /* else args is ignored */
+            arglist[pos].ptrValue = NULL;
+            break;
+        }
+    }
+
+    uprv_free(typelist);
+    uprv_free(islonglong);
+
+    return arglist;
+}
+
+/* We parse the argument list in Unicode */
+U_CFUNC int32_t
+u_printf_parse(const u_printf_stream_handler *streamHandler,
+               const UChar     *fmt,
+               void            *context,
+               u_localized_print_string *locStringContext,
+               ULocaleBundle   *formatBundle,
+               int32_t         *written,
+               va_list         ap)
+{
+    uint16_t         handlerNum;
+    ufmt_args        args;
+    ufmt_type_info   argType;
+    u_printf_handler *handler;
+    u_printf_spec    spec;
+    u_printf_spec_info *info = &(spec.fInfo);
+
+    const UChar *alias = fmt;
+    const UChar *backup;
+    const UChar *lastAlias;
+    const UChar *orgAlias = fmt;
+    /* parsed argument list */
+    ufmt_args *arglist = NULL; /* initialized it to avoid compiler warnings */
+    UErrorCode status = U_ZERO_ERROR;
+    if (!locStringContext || locStringContext->available >= 0) {
+        /* get the parsed list of argument types */
+        arglist = parseArguments(orgAlias, ap, &status);
+
+        /* Return error if parsing failed. */
+        if (U_FAILURE(status)) {
+            return -1;
+        }
+    }
+    
+    /* iterate through the pattern */
+    while(!locStringContext || locStringContext->available >= 0) {
+
+        /* find the next '%' */
+        lastAlias = alias;
+        while(*alias != UP_PERCENT && *alias != 0x0000) {
+            alias++;
+        }
+
+        /* write any characters before the '%' */
+        if(alias > lastAlias) {
+            *written += (streamHandler->write)(context, lastAlias, (int32_t)(alias - lastAlias));
+        }
+
+        /* break if at end of string */
+        if(*alias == 0x0000) {
+            break;
+        }
+
+        /* initialize spec to default values */
+        spec.fWidthPos     = -1;
+        spec.fPrecisionPos = -1;
+        spec.fArgPos       = -1;
+
+        uprv_memset(info, 0, sizeof(*info));
+        info->fPrecision    = -1;
+        info->fWidth        = -1;
+        info->fPadChar      = 0x0020;
+
+        /* skip over the initial '%' */
+        alias++;
+
+        /* Check for positional argument */
+        if(ISDIGIT(*alias)) {
+
+            /* Save the current position */
+            backup = alias;
+
+            /* handle positional parameters */
+            if(ISDIGIT(*alias)) {
+                spec.fArgPos = (int) (*alias++ - DIGIT_ZERO);
+
+                while(ISDIGIT(*alias)) {
+                    spec.fArgPos *= 10;
+                    spec.fArgPos += (int) (*alias++ - DIGIT_ZERO);
+                }
+            }
+
+            /* if there is no '$', don't read anything */
+            if(*alias != SPEC_DOLLARSIGN) {
+                spec.fArgPos = -1;
+                alias = backup;
+            }
+            /* munge the '$' */
+            else
+                alias++;
+        }
+
+        /* Get any format flags */
+        while(ISFLAG(*alias)) {
+            switch(*alias++) {
+
+                /* left justify */
+            case FLAG_MINUS:
+                info->fLeft = TRUE;
+                break;
+
+                /* always show sign */
+            case FLAG_PLUS:
+                info->fShowSign = TRUE;
+                break;
+
+                /* use space if no sign present */
+            case FLAG_SPACE:
+                info->fShowSign = TRUE;
+                info->fSpace = TRUE;
+                break;
+
+                /* use alternate form */
+            case FLAG_POUND:
+                info->fAlt = TRUE;
+                break;
+
+                /* pad with leading zeroes */
+            case FLAG_ZERO:
+                info->fZero = TRUE;
+                info->fPadChar = 0x0030;
+                break;
+
+                /* pad character specified */
+            case FLAG_PAREN:
+
+                /* TODO test that all four are numbers */
+                /* first four characters are hex values for pad char */
+                info->fPadChar = (UChar)ufmt_digitvalue(*alias++);
+                info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
+                info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
+                info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
+
+                /* final character is ignored */
+                alias++;
+
+                break;
+            }
+        }
+
+        /* Get the width */
+
+        /* width is specified out of line */
+        if(*alias == SPEC_ASTERISK) {
+
+            info->fWidth = -2;
+
+            /* Skip the '*' */
+            alias++;
+
+            /* Save the current position */
+            backup = alias;
+
+            /* handle positional parameters */
+            if(ISDIGIT(*alias)) {
+                spec.fWidthPos = (int) (*alias++ - DIGIT_ZERO);
+
+                while(ISDIGIT(*alias)) {
+                    spec.fWidthPos *= 10;
+                    spec.fWidthPos += (int) (*alias++ - DIGIT_ZERO);
+                }
+            }
+
+            /* if there is no '$', don't read anything */
+            if(*alias != SPEC_DOLLARSIGN) {
+                spec.fWidthPos = -1;
+                alias = backup;
+            }
+            /* munge the '$' */
+            else
+                alias++;
+        }
+        /* read the width, if present */
+        else if(ISDIGIT(*alias)){
+            info->fWidth = (int) (*alias++ - DIGIT_ZERO);
+
+            while(ISDIGIT(*alias)) {
+                info->fWidth *= 10;
+                info->fWidth += (int) (*alias++ - DIGIT_ZERO);
+            }
+        }
+
+        /* Get the precision */
+
+        if(*alias == SPEC_PERIOD) {
+
+            /* eat up the '.' */
+            alias++;
+
+            /* precision is specified out of line */
+            if(*alias == SPEC_ASTERISK) {
+
+                info->fPrecision = -2;
+
+                /* Skip the '*' */
+                alias++;
+
+                /* save the current position */
+                backup = alias;
+
+                /* handle positional parameters */
+                if(ISDIGIT(*alias)) {
+                    spec.fPrecisionPos = (int) (*alias++ - DIGIT_ZERO);
+
+                    while(ISDIGIT(*alias)) {
+                        spec.fPrecisionPos *= 10;
+                        spec.fPrecisionPos += (int) (*alias++ - DIGIT_ZERO);
+                    }
+
+                    /* if there is no '$', don't read anything */
+                    if(*alias != SPEC_DOLLARSIGN) {
+                        spec.fPrecisionPos = -1;
+                        alias = backup;
+                    }
+                    else {
+                        /* munge the '$' */
+                        alias++;
+                    }
+                }
+            }
+            /* read the precision */
+            else if(ISDIGIT(*alias)){
+                info->fPrecision = (int) (*alias++ - DIGIT_ZERO);
+
+                while(ISDIGIT(*alias)) {
+                    info->fPrecision *= 10;
+                    info->fPrecision += (int) (*alias++ - DIGIT_ZERO);
+                }
+            }
+        }
+
+        /* Get any modifiers */
+        if(ISMOD(*alias)) {
+            switch(*alias++) {
+
+                /* short */
+            case MOD_H:
+                info->fIsShort = TRUE;
+                break;
+
+                /* long or long long */
+            case MOD_LOWERL:
+                if(*alias == MOD_LOWERL) {
+                    info->fIsLongLong = TRUE;
+                    /* skip over the next 'l' */
+                    alias++;
+                }
+                else
+                    info->fIsLong = TRUE;
+                break;
+
+                /* long double */
+            case MOD_L:
+                info->fIsLongDouble = TRUE;
+                break;
+            }
+        }
+
+        /* finally, get the specifier letter */
+        info->fSpec = *alias++;
+        info->fOrigSpec = info->fSpec;
+
+        /* fill in the precision and width, if specified out of line */
+
+        /* width specified out of line */
+        if(spec.fInfo.fWidth == -2) {
+            if(spec.fWidthPos == -1) {
+                /* read the width from the argument list */
+                info->fWidth = va_arg(ap, int32_t);
+            }
+            /* else handle positional parameter */
+
+            /* if it's negative, take the absolute value and set left alignment */
+            if(info->fWidth < 0) {
+                info->fWidth *= -1; /* Make positive */
+                info->fLeft = TRUE;
+            }
+        }
+
+        /* precision specified out of line */
+        if(info->fPrecision == -2) {
+            if(spec.fPrecisionPos == -1) {
+                /* read the precision from the argument list */
+                info->fPrecision = va_arg(ap, int32_t);
+            }
+            /* else handle positional parameter */
+
+            /* if it's negative, set it to zero */
+            if(info->fPrecision < 0)
+                info->fPrecision = 0;
+        }
+
+        handlerNum = (uint16_t)(info->fSpec - UPRINTF_BASE_FMT_HANDLERS);
+        if (handlerNum < UPRINTF_NUM_FMT_HANDLERS) {
+            /* query the info function for argument information */
+            argType = g_u_printf_infos[ handlerNum ].info;
+
+            /* goto the correct argument on arg_list if position is specified */
+            if (spec.fArgPos > 0) {
+                /* offset position by 1 */
+                spec.fArgPos--;
+                switch(argType) {
+                case ufmt_count:
+                    /* set the spec's width to the # of chars written */
+                    info->fWidth = *written;
+                    /* fall through to set the pointer */
+                    U_FALLTHROUGH;
+                case ufmt_string:
+                case ufmt_ustring:
+                case ufmt_pointer:
+                    args.ptrValue = arglist[spec.fArgPos].ptrValue;
+                    break;
+                case ufmt_char:
+                case ufmt_uchar:
+                case ufmt_int:
+                    args.int64Value = arglist[spec.fArgPos].int64Value;
+                    break;
+                case ufmt_float:
+                    args.floatValue = arglist[spec.fArgPos].floatValue;
+                    break;
+                case ufmt_double:
+                    args.doubleValue = arglist[spec.fArgPos].doubleValue;
+                    break;
+                default:
+                    /* else args is ignored */
+                    args.ptrValue = NULL;
+                    break;
+                }
+            } else { /* no positional argument specified */
+                switch(argType) {
+                case ufmt_count:
+                    /* set the spec's width to the # of chars written */
+                    info->fWidth = *written;
+                    /* fall through to set the pointer */
+                    U_FALLTHROUGH;
+                case ufmt_string:
+                case ufmt_ustring:
+                case ufmt_pointer:
+                    args.ptrValue = va_arg(ap, void*);
+                    break;
+                case ufmt_char:
+                case ufmt_uchar:
+                case ufmt_int:
+                    if (info->fIsLongLong) {
+                        args.int64Value = va_arg(ap, int64_t);
+                    }
+                    else {
+                        args.int64Value = va_arg(ap, int32_t);
+                    }
+                    break;
+                case ufmt_float:
+                    args.floatValue = (float) va_arg(ap, double);
+                    break;
+                case ufmt_double:
+                    args.doubleValue = va_arg(ap, double);
+                    break;
+                default:
+                    /* else args is ignored */
+                    args.ptrValue = NULL;
+                    break;
+                }
+            }
+
+            /* call the handler function */
+            handler = g_u_printf_infos[ handlerNum ].handler;
+            if(handler != 0) {
+                *written += (*handler)(streamHandler, context, formatBundle, info, &args);
+            }
+            else {
+                /* just echo unknown tags */
+                *written += (streamHandler->write)(context, fmt, (int32_t)(alias - lastAlias));
+            }
+        }
+        else {
+            /* just echo unknown tags */
+            *written += (streamHandler->write)(context, fmt, (int32_t)(alias - lastAlias));
+        }
+    }
+    /* delete parsed argument list */
+    if (arglist != NULL) {
+        uprv_free(arglist);
+    }
+    /* return # of characters in this format that have been parsed. */
+    return (int32_t)(alias - fmt);
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/source/io/uscanf.c b/source/io/uscanf.c
new file mode 100644 (file)
index 0000000..34368da
--- /dev/null
@@ -0,0 +1,108 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1998-2014, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File uscanf.c
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   12/02/98    stephen        Creation.
+*   03/13/99    stephen     Modified for new C API.
+******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
+
+#include "unicode/putil.h"
+#include "unicode/ustdio.h"
+#include "unicode/ustring.h"
+#include "uscanf.h"
+#include "ufile.h"
+#include "ufmt_cmn.h"
+
+#include "cmemory.h"
+#include "cstring.h"
+
+
+U_CAPI int32_t U_EXPORT2
+u_fscanf(UFILE        *f,
+         const char    *patternSpecification,
+         ... )
+{
+    va_list ap;
+    int32_t converted;
+
+    va_start(ap, patternSpecification);
+    converted = u_vfscanf(f, patternSpecification, ap);
+    va_end(ap);
+
+    return converted;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_fscanf_u(UFILE        *f,
+           const UChar    *patternSpecification,
+           ... )
+{
+    va_list ap;
+    int32_t converted;
+
+    va_start(ap, patternSpecification);
+    converted = u_vfscanf_u(f, patternSpecification, ap);
+    va_end(ap);
+
+    return converted;
+}
+
+U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vfscanf(UFILE        *f,
+          const char    *patternSpecification,
+          va_list        ap)
+{
+    int32_t converted;
+    UChar *pattern;
+    UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
+    int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1;
+
+    /* convert from the default codepage to Unicode */
+    if (size >= MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
+        pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+        if(pattern == 0) {
+            return 0;
+        }
+    }
+    else {
+        pattern = patBuffer;
+    }
+    u_charsToUChars(patternSpecification, pattern, size);
+
+    /* do the work */
+    converted = u_vfscanf_u(f, pattern, ap);
+
+    /* clean up */
+    if (pattern != patBuffer) {
+        uprv_free(pattern);
+    }
+
+    return converted;
+}
+
+U_CAPI int32_t  U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_vfscanf_u(UFILE       *f,
+            const UChar *patternSpecification,
+            va_list     ap)
+{
+    return u_scanf_parse(f, patternSpecification, ap);
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
index ebb8e79..1140eee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
diff --git a/source/io/uscanf_p.c b/source/io/uscanf_p.c
new file mode 100644 (file)
index 0000000..ded984c
--- /dev/null
@@ -0,0 +1,1408 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 1998-2016, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*
+* File uscnnf_p.c
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   12/02/98    stephen        Creation.
+*   03/13/99    stephen     Modified for new C API.
+*******************************************************************************
+*/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_CONVERSION
+
+#include "unicode/uchar.h"
+#include "unicode/ustring.h"
+#include "unicode/unum.h"
+#include "unicode/udat.h"
+#include "unicode/uset.h"
+#include "uscanf.h"
+#include "ufmt_cmn.h"
+#include "ufile.h"
+#include "locbund.h"
+
+#include "cmemory.h"
+#include "ustr_cnv.h"
+
+/* flag characters for u_scanf */
+#define FLAG_ASTERISK 0x002A
+#define FLAG_PAREN 0x0028
+
+#define ISFLAG(s)    (s) == FLAG_ASTERISK || \
+            (s) == FLAG_PAREN
+
+/* special characters for u_scanf */
+#define SPEC_DOLLARSIGN 0x0024
+
+/* unicode digits */
+#define DIGIT_ZERO 0x0030
+#define DIGIT_ONE 0x0031
+#define DIGIT_TWO 0x0032
+#define DIGIT_THREE 0x0033
+#define DIGIT_FOUR 0x0034
+#define DIGIT_FIVE 0x0035
+#define DIGIT_SIX 0x0036
+#define DIGIT_SEVEN 0x0037
+#define DIGIT_EIGHT 0x0038
+#define DIGIT_NINE 0x0039
+
+#define ISDIGIT(s)    (s) == DIGIT_ZERO || \
+            (s) == DIGIT_ONE || \
+            (s) == DIGIT_TWO || \
+            (s) == DIGIT_THREE || \
+            (s) == DIGIT_FOUR || \
+            (s) == DIGIT_FIVE || \
+            (s) == DIGIT_SIX || \
+            (s) == DIGIT_SEVEN || \
+            (s) == DIGIT_EIGHT || \
+            (s) == DIGIT_NINE
+
+/* u_scanf modifiers */
+#define MOD_H 0x0068
+#define MOD_LOWERL 0x006C
+#define MOD_L 0x004C
+
+#define ISMOD(s)    (s) == MOD_H || \
+            (s) == MOD_LOWERL || \
+            (s) == MOD_L
+
+/**
+ * Struct encapsulating a single uscanf format specification.
+ */
+typedef struct u_scanf_spec_info {
+    int32_t fWidth;         /* Width  */
+
+    UChar   fSpec;          /* Format specification  */
+
+    UChar   fPadChar;       /* Padding character  */
+
+    UBool   fSkipArg;       /* TRUE if arg should be skipped */
+    UBool   fIsLongDouble;  /* L flag  */
+    UBool   fIsShort;       /* h flag  */
+    UBool   fIsLong;        /* l flag  */
+    UBool   fIsLongLong;    /* ll flag  */
+    UBool   fIsString;      /* TRUE if this is a NULL-terminated string. */
+} u_scanf_spec_info;
+
+
+/**
+ * Struct encapsulating a single u_scanf format specification.
+ */
+typedef struct u_scanf_spec {
+    u_scanf_spec_info    fInfo;        /* Information on this spec */
+    int32_t        fArgPos;    /* Position of data in arg list */
+} u_scanf_spec;
+
+/**
+ * Parse a single u_scanf format specifier in Unicode.
+ * @param fmt A pointer to a '%' character in a u_scanf format specification.
+ * @param spec A pointer to a <TT>u_scanf_spec</TT> to receive the parsed
+ * format specifier.
+ * @return The number of characters contained in this specifier.
+ */
+static int32_t
+u_scanf_parse_spec (const UChar     *fmt,
+            u_scanf_spec    *spec)
+{
+    const UChar *s = fmt;
+    const UChar *backup;
+    u_scanf_spec_info *info = &(spec->fInfo);
+
+    /* initialize spec to default values */
+    spec->fArgPos             = -1;
+
+    info->fWidth        = -1;
+    info->fSpec         = 0x0000;
+    info->fPadChar      = 0x0020;
+    info->fSkipArg      = FALSE;
+    info->fIsLongDouble = FALSE;
+    info->fIsShort      = FALSE;
+    info->fIsLong       = FALSE;
+    info->fIsLongLong   = FALSE;
+    info->fIsString     = TRUE;
+
+
+    /* skip over the initial '%' */
+    s++;
+
+    /* Check for positional argument */
+    if(ISDIGIT(*s)) {
+
+        /* Save the current position */
+        backup = s;
+
+        /* handle positional parameters */
+        if(ISDIGIT(*s)) {
+            spec->fArgPos = (int) (*s++ - DIGIT_ZERO);
+
+            while(ISDIGIT(*s)) {
+                spec->fArgPos *= 10;
+                spec->fArgPos += (int) (*s++ - DIGIT_ZERO);
+            }
+        }
+
+        /* if there is no '$', don't read anything */
+        if(*s != SPEC_DOLLARSIGN) {
+            spec->fArgPos = -1;
+            s = backup;
+        }
+        /* munge the '$' */
+        else
+            s++;
+    }
+
+    /* Get any format flags */
+    while(ISFLAG(*s)) {
+        switch(*s++) {
+
+            /* skip argument */
+        case FLAG_ASTERISK:
+            info->fSkipArg = TRUE;
+            break;
+
+            /* pad character specified */
+        case FLAG_PAREN:
+
+            /* first four characters are hex values for pad char */
+            info->fPadChar = (UChar)ufmt_digitvalue(*s++);
+            info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
+            info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
+            info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
+
+            /* final character is ignored */
+            s++;
+
+            break;
+        }
+    }
+
+    /* Get the width */
+    if(ISDIGIT(*s)){
+        info->fWidth = (int) (*s++ - DIGIT_ZERO);
+
+        while(ISDIGIT(*s)) {
+            info->fWidth *= 10;
+            info->fWidth += (int) (*s++ - DIGIT_ZERO);
+        }
+    }
+
+    /* Get any modifiers */
+    if(ISMOD(*s)) {
+        switch(*s++) {
+
+            /* short */
+        case MOD_H:
+            info->fIsShort = TRUE;
+            break;
+
+            /* long or long long */
+        case MOD_LOWERL:
+            if(*s == MOD_LOWERL) {
+                info->fIsLongLong = TRUE;
+                /* skip over the next 'l' */
+                s++;
+            }
+            else
+                info->fIsLong = TRUE;
+            break;
+
+            /* long double */
+        case MOD_L:
+            info->fIsLongDouble = TRUE;
+            break;
+        }
+    }
+
+    /* finally, get the specifier letter */
+    info->fSpec = *s++;
+
+    /* return # of characters in this specifier */
+    return (int32_t)(s - fmt);
+}
+
+#define UP_PERCENT 0x0025
+
+
+/* ANSI style formatting */
+/* Use US-ASCII characters only for formatting */
+
+/* % */
+#define UFMT_SIMPLE_PERCENT {ufmt_simple_percent, u_scanf_simple_percent_handler}
+/* s */
+#define UFMT_STRING         {ufmt_string, u_scanf_string_handler}
+/* c */
+#define UFMT_CHAR           {ufmt_string, u_scanf_char_handler}
+/* d, i */
+#define UFMT_INT            {ufmt_int, u_scanf_integer_handler}
+/* u */
+#define UFMT_UINT           {ufmt_int, u_scanf_uinteger_handler}
+/* o */
+#define UFMT_OCTAL          {ufmt_int, u_scanf_octal_handler}
+/* x, X */
+#define UFMT_HEX            {ufmt_int, u_scanf_hex_handler}
+/* f */
+#define UFMT_DOUBLE         {ufmt_double, u_scanf_double_handler}
+/* e, E */
+#define UFMT_SCIENTIFIC     {ufmt_double, u_scanf_scientific_handler}
+/* g, G */
+#define UFMT_SCIDBL         {ufmt_double, u_scanf_scidbl_handler}
+/* n */
+#define UFMT_COUNT          {ufmt_count, u_scanf_count_handler}
+/* [ */
+#define UFMT_SCANSET        {ufmt_string, u_scanf_scanset_handler}
+
+/* non-ANSI extensions */
+/* Use US-ASCII characters only for formatting */
+
+/* p */
+#define UFMT_POINTER        {ufmt_pointer, u_scanf_pointer_handler}
+/* V */
+#define UFMT_SPELLOUT       {ufmt_double, u_scanf_spellout_handler}
+/* P */
+#define UFMT_PERCENT        {ufmt_double, u_scanf_percent_handler}
+/* C  K is old format */
+#define UFMT_UCHAR          {ufmt_uchar, u_scanf_uchar_handler}
+/* S  U is old format */
+#define UFMT_USTRING        {ufmt_ustring, u_scanf_ustring_handler}
+
+
+#define UFMT_EMPTY {ufmt_empty, NULL}
+
+/**
+ * A u_scanf handler function.  
+ * A u_scanf handler is responsible for handling a single u_scanf 
+ * format specification, for example 'd' or 's'.
+ * @param stream The UFILE to which to write output.
+ * @param info A pointer to a <TT>u_scanf_spec_info</TT> struct containing
+ * information on the format specification.
+ * @param args A pointer to the argument data
+ * @param fmt A pointer to the first character in the format string
+ * following the spec.
+ * @param fmtConsumed On output, set to the number of characters consumed
+ * in <TT>fmt</TT>. Do nothing, if the argument isn't variable width.
+ * @param argConverted The number of arguments converted and assigned, or -1 if an
+ * error occurred.
+ * @return The number of code points consumed during reading.
+ */
+typedef int32_t (*u_scanf_handler) (UFILE   *stream,
+                   u_scanf_spec_info  *info,
+                   ufmt_args                *args,
+                   const UChar              *fmt,
+                   int32_t                  *fmtConsumed,
+                   int32_t                  *argConverted);
+
+typedef struct u_scanf_info {
+    ufmt_type_info info;
+    u_scanf_handler handler;
+} u_scanf_info;
+
+#define USCANF_NUM_FMT_HANDLERS 108
+#define USCANF_SYMBOL_BUFFER_SIZE 8
+
+/* We do not use handlers for 0-0x1f */
+#define USCANF_BASE_FMT_HANDLERS 0x20
+
+
+static int32_t
+u_scanf_skip_leading_ws(UFILE   *input,
+                        UChar   pad)
+{
+    UChar   c;
+    int32_t count = 0;
+    UBool isNotEOF;
+
+    /* skip all leading ws in the input */
+    while( (isNotEOF = ufile_getch(input, &c)) && (c == pad || u_isWhitespace(c)) )
+    {
+        count++;
+    }
+
+    /* put the final character back on the input */
+    if(isNotEOF)
+        u_fungetc(c, input);
+
+    return count;
+}
+
+/* TODO: Is always skipping the prefix symbol as a positive sign a good idea in all locales? */
+static int32_t
+u_scanf_skip_leading_positive_sign(UFILE   *input,
+                                   UNumberFormat *format,
+                                   UErrorCode *status)
+{
+    UChar   c;
+    int32_t count = 0;
+    UBool isNotEOF;
+    UChar plusSymbol[USCANF_SYMBOL_BUFFER_SIZE];
+    int32_t symbolLen;
+    UErrorCode localStatus = U_ZERO_ERROR;
+
+    if (U_SUCCESS(*status)) {
+        symbolLen = unum_getSymbol(format,
+            UNUM_PLUS_SIGN_SYMBOL,
+            plusSymbol,
+            UPRV_LENGTHOF(plusSymbol),
+            &localStatus);
+
+        if (U_SUCCESS(localStatus)) {
+            /* skip all leading ws in the input */
+            while( (isNotEOF = ufile_getch(input, &c)) && (count < symbolLen && c == plusSymbol[count]) )
+            {
+                count++;
+            }
+
+            /* put the final character back on the input */
+            if(isNotEOF) {
+                u_fungetc(c, input);
+            }
+        }
+    }
+
+    return count;
+}
+
+static int32_t 
+u_scanf_simple_percent_handler(UFILE        *input,
+                               u_scanf_spec_info *info,
+                               ufmt_args    *args,
+                               const UChar  *fmt,
+                               int32_t      *fmtConsumed,
+                               int32_t      *argConverted)
+{
+    /* make sure the next character in the input is a percent */
+    *argConverted = 0;
+    if(u_fgetc(input) != 0x0025) {
+        *argConverted = -1;
+    }
+    return 1;
+}
+
+static int32_t
+u_scanf_count_handler(UFILE         *input,
+                      u_scanf_spec_info *info,
+                      ufmt_args     *args,
+                      const UChar   *fmt,
+                      int32_t       *fmtConsumed,
+                      int32_t       *argConverted)
+{
+    /* in the special case of count, the u_scanf_spec_info's width */
+    /* will contain the # of items converted thus far */
+    if (!info->fSkipArg) {
+        if (info->fIsShort)
+            *(int16_t*)(args[0].ptrValue) = (int16_t)(UINT16_MAX & info->fWidth);
+        else if (info->fIsLongLong)
+            *(int64_t*)(args[0].ptrValue) = info->fWidth;
+        else
+            *(int32_t*)(args[0].ptrValue) = (int32_t)(UINT32_MAX & info->fWidth);
+    }
+    *argConverted = 0;
+
+    /* we converted 0 args */
+    return 0;
+}
+
+static int32_t
+u_scanf_double_handler(UFILE        *input,
+                       u_scanf_spec_info *info,
+                       ufmt_args    *args,
+                       const UChar  *fmt,
+                       int32_t      *fmtConsumed,
+                       int32_t      *argConverted)
+{
+    int32_t         len;
+    double          num;
+    UNumberFormat   *format;
+    int32_t         parsePos    = 0;
+    int32_t         skipped;
+    UErrorCode      status      = U_ZERO_ERROR;
+
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
+    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
+
+    /* parse the number */
+    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
+
+    if (!info->fSkipArg) {
+        if (info->fIsLong)
+            *(double*)(args[0].ptrValue) = num;
+        else if (info->fIsLongDouble)
+            *(long double*)(args[0].ptrValue) = num;
+        else
+            *(float*)(args[0].ptrValue) = (float)num;
+    }
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLong_double)
+    num &= DBL_MAX;*/
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += parsePos;
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return parsePos + skipped;
+}
+
+#define UPRINTF_SYMBOL_BUFFER_SIZE 8
+
+static int32_t
+u_scanf_scientific_handler(UFILE        *input,
+                           u_scanf_spec_info *info,
+                           ufmt_args    *args,
+                           const UChar  *fmt,
+                           int32_t      *fmtConsumed,
+                           int32_t      *argConverted)
+{
+    int32_t         len;
+    double          num;
+    UNumberFormat   *format;
+    int32_t         parsePos    = 0;
+    int32_t         skipped;
+    UErrorCode      status      = U_ZERO_ERROR;
+    UChar srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+    int32_t srcLen, expLen;
+    UChar expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SCIENTIFIC);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* set the appropriate flags on the formatter */
+
+    srcLen = unum_getSymbol(format,
+        UNUM_EXPONENTIAL_SYMBOL,
+        srcExpBuf,
+        sizeof(srcExpBuf),
+        &status);
+
+    /* Upper/lower case the e */
+    if (info->fSpec == (UChar)0x65 /* e */) {
+        expLen = u_strToLower(expBuf, (int32_t)sizeof(expBuf),
+            srcExpBuf, srcLen,
+            input->str.fBundle.fLocale,
+            &status);
+    }
+    else {
+        expLen = u_strToUpper(expBuf, (int32_t)sizeof(expBuf),
+            srcExpBuf, srcLen,
+            input->str.fBundle.fLocale,
+            &status);
+    }
+
+    unum_setSymbol(format,
+        UNUM_EXPONENTIAL_SYMBOL,
+        expBuf,
+        expLen,
+        &status);
+
+
+
+
+    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
+    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
+
+    /* parse the number */
+    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
+
+    if (!info->fSkipArg) {
+        if (info->fIsLong)
+            *(double*)(args[0].ptrValue) = num;
+        else if (info->fIsLongDouble)
+            *(long double*)(args[0].ptrValue) = num;
+        else
+            *(float*)(args[0].ptrValue) = (float)num;
+    }
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLong_double)
+    num &= DBL_MAX;*/
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += parsePos;
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return parsePos + skipped;
+}
+
+static int32_t
+u_scanf_scidbl_handler(UFILE        *input,
+                       u_scanf_spec_info *info,
+                       ufmt_args    *args,
+                       const UChar  *fmt,
+                       int32_t      *fmtConsumed,
+                       int32_t      *argConverted)
+{
+    int32_t       len;
+    double        num;
+    UNumberFormat *scientificFormat, *genericFormat;
+    /*int32_t       scientificResult, genericResult;*/
+    double        scientificResult, genericResult;
+    int32_t       scientificParsePos = 0, genericParsePos = 0, parsePos = 0;
+    int32_t       skipped;
+    UErrorCode    scientificStatus = U_ZERO_ERROR;
+    UErrorCode    genericStatus = U_ZERO_ERROR;
+
+
+    /* since we can't determine by scanning the characters whether */
+    /* a number was formatted in the 'f' or 'g' styles, parse the */
+    /* string with both formatters, and assume whichever one */
+    /* parsed the most is the correct formatter to use */
+
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* get the formatters */
+    scientificFormat = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SCIENTIFIC);
+    genericFormat = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
+
+    /* handle error */
+    if(scientificFormat == 0 || genericFormat == 0)
+        return 0;
+
+    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
+    skipped += u_scanf_skip_leading_positive_sign(input, genericFormat, &genericStatus);
+
+    /* parse the number using each format*/
+
+    scientificResult = unum_parseDouble(scientificFormat, input->str.fPos, len,
+        &scientificParsePos, &scientificStatus);
+
+    genericResult = unum_parseDouble(genericFormat, input->str.fPos, len,
+        &genericParsePos, &genericStatus);
+
+    /* determine which parse made it farther */
+    if(scientificParsePos > genericParsePos) {
+        /* stash the result in num */
+        num = scientificResult;
+        /* update the input's position to reflect consumed data */
+        parsePos += scientificParsePos;
+    }
+    else {
+        /* stash the result in num */
+        num = genericResult;
+        /* update the input's position to reflect consumed data */
+        parsePos += genericParsePos;
+    }
+    input->str.fPos += parsePos;
+
+    if (!info->fSkipArg) {
+        if (info->fIsLong)
+            *(double*)(args[0].ptrValue) = num;
+        else if (info->fIsLongDouble)
+            *(long double*)(args[0].ptrValue) = num;
+        else
+            *(float*)(args[0].ptrValue) = (float)num;
+    }
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLong_double)
+    num &= DBL_MAX;*/
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return parsePos + skipped;
+}
+
+static int32_t
+u_scanf_integer_handler(UFILE       *input,
+                        u_scanf_spec_info *info,
+                        ufmt_args   *args,
+                        const UChar *fmt,
+                        int32_t     *fmtConsumed,
+                        int32_t     *argConverted)
+{
+    int32_t         len;
+    void            *num        = (void*) (args[0].ptrValue);
+    UNumberFormat   *format;
+    int32_t         parsePos    = 0;
+    int32_t         skipped;
+    UErrorCode      status      = U_ZERO_ERROR;
+    int64_t         result;
+
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_DECIMAL);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
+    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
+
+    /* parse the number */
+    result = unum_parseInt64(format, input->str.fPos, len, &parsePos, &status);
+
+    /* mask off any necessary bits */
+    if (!info->fSkipArg) {
+        if (info->fIsShort)
+            *(int16_t*)num = (int16_t)(UINT16_MAX & result);
+        else if (info->fIsLongLong)
+            *(int64_t*)num = result;
+        else
+            *(int32_t*)num = (int32_t)(UINT32_MAX & result);
+    }
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += parsePos;
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return parsePos + skipped;
+}
+
+static int32_t
+u_scanf_uinteger_handler(UFILE          *input,
+                         u_scanf_spec_info *info,
+                         ufmt_args      *args,
+                         const UChar    *fmt,
+                         int32_t        *fmtConsumed,
+                         int32_t        *argConverted)
+{
+    /* TODO Fix this when Numberformat handles uint64_t */
+    return u_scanf_integer_handler(input, info, args, fmt, fmtConsumed, argConverted);
+}
+
+static int32_t
+u_scanf_percent_handler(UFILE       *input,
+                        u_scanf_spec_info *info,
+                        ufmt_args   *args,
+                        const UChar *fmt,
+                        int32_t     *fmtConsumed,
+                        int32_t     *argConverted)
+{
+    int32_t         len;
+    double          num;
+    UNumberFormat   *format;
+    int32_t         parsePos    = 0;
+    UErrorCode      status      = U_ZERO_ERROR;
+
+
+    /* skip all ws in the input */
+    u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_PERCENT);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
+    u_scanf_skip_leading_positive_sign(input, format, &status);
+
+    /* parse the number */
+    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
+
+    if (!info->fSkipArg) {
+        *(double*)(args[0].ptrValue) = num;
+    }
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLong_double)
+    num &= DBL_MAX;*/
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += parsePos;
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return parsePos;
+}
+
+static int32_t
+u_scanf_string_handler(UFILE        *input,
+                       u_scanf_spec_info *info,
+                       ufmt_args    *args,
+                       const UChar  *fmt,
+                       int32_t      *fmtConsumed,
+                       int32_t      *argConverted)
+{
+    const UChar *source;
+    UConverter  *conv;
+    char        *arg    = (char*)(args[0].ptrValue);
+    char        *alias  = arg;
+    char        *limit;
+    UErrorCode  status  = U_ZERO_ERROR;
+    int32_t     count;
+    int32_t     skipped = 0;
+    UChar       c;
+    UBool       isNotEOF = FALSE;
+
+    /* skip all ws in the input */
+    if (info->fIsString) {
+        skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+    }
+
+    /* get the string one character at a time, truncating to the width */
+    count = 0;
+
+    /* open the default converter */
+    conv = u_getDefaultConverter(&status);
+
+    if(U_FAILURE(status))
+        return -1;
+
+    while( (info->fWidth == -1 || count < info->fWidth) 
+        && (isNotEOF = ufile_getch(input, &c))
+        && (!info->fIsString || (c != info->fPadChar && !u_isWhitespace(c))))
+    {
+
+        if (!info->fSkipArg) {
+            /* put the character from the input onto the target */
+            source = &c;
+            /* Since we do this one character at a time, do it this way. */
+            if (info->fWidth > 0) {
+                limit = alias + info->fWidth - count;
+            }
+            else {
+                limit = alias + ucnv_getMaxCharSize(conv);
+            }
+
+            /* convert the character to the default codepage */
+            ucnv_fromUnicode(conv, &alias, limit, &source, source + 1,
+                NULL, TRUE, &status);
+
+            if(U_FAILURE(status)) {
+                /* clean up */
+                u_releaseDefaultConverter(conv);
+                return -1;
+            }
+        }
+
+        /* increment the count */
+        ++count;
+    }
+
+    /* put the final character we read back on the input */
+    if (!info->fSkipArg) {
+        if ((info->fWidth == -1 || count < info->fWidth) && isNotEOF)
+            u_fungetc(c, input);
+
+        /* add the terminator */
+        if (info->fIsString) {
+            *alias = 0x00;
+        }
+    }
+
+    /* clean up */
+    u_releaseDefaultConverter(conv);
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return count + skipped;
+}
+
+static int32_t
+u_scanf_char_handler(UFILE          *input,
+                     u_scanf_spec_info *info,
+                     ufmt_args      *args,
+                     const UChar    *fmt,
+                     int32_t        *fmtConsumed,
+                     int32_t        *argConverted)
+{
+    if (info->fWidth < 0) {
+        info->fWidth = 1;
+    }
+    info->fIsString = FALSE;
+    return u_scanf_string_handler(input, info, args, fmt, fmtConsumed, argConverted);
+}
+
+static int32_t
+u_scanf_ustring_handler(UFILE       *input,
+                        u_scanf_spec_info *info,
+                        ufmt_args   *args,
+                        const UChar *fmt,
+                        int32_t     *fmtConsumed,
+                        int32_t     *argConverted)
+{
+    UChar   *arg     = (UChar*)(args[0].ptrValue);
+    UChar   *alias     = arg;
+    int32_t count;
+    int32_t skipped = 0;
+    UChar   c;
+    UBool   isNotEOF = FALSE;
+
+    /* skip all ws in the input */
+    if (info->fIsString) {
+        skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+    }
+
+    /* get the string one character at a time, truncating to the width */
+    count = 0;
+
+    while( (info->fWidth == -1 || count < info->fWidth)
+        && (isNotEOF = ufile_getch(input, &c))
+        && (!info->fIsString || (c != info->fPadChar && !u_isWhitespace(c))))
+    {
+
+        /* put the character from the input onto the target */
+        if (!info->fSkipArg) {
+            *alias++ = c;
+        }
+
+        /* increment the count */
+        ++count;
+    }
+
+    /* put the final character we read back on the input */
+    if (!info->fSkipArg) {
+        if((info->fWidth == -1 || count < info->fWidth) && isNotEOF) {
+            u_fungetc(c, input);
+        }
+
+        /* add the terminator */
+        if (info->fIsString) {
+            *alias = 0x0000;
+        }
+    }
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return count + skipped;
+}
+
+static int32_t
+u_scanf_uchar_handler(UFILE         *input,
+                      u_scanf_spec_info *info,
+                      ufmt_args     *args,
+                      const UChar   *fmt,
+                      int32_t       *fmtConsumed,
+                      int32_t       *argConverted)
+{
+    if (info->fWidth < 0) {
+        info->fWidth = 1;
+    }
+    info->fIsString = FALSE;
+    return u_scanf_ustring_handler(input, info, args, fmt, fmtConsumed, argConverted);
+}
+
+static int32_t
+u_scanf_spellout_handler(UFILE          *input,
+                         u_scanf_spec_info *info,
+                         ufmt_args      *args,
+                         const UChar    *fmt,
+                         int32_t        *fmtConsumed,
+                         int32_t        *argConverted)
+{
+    int32_t         len;
+    double          num;
+    UNumberFormat   *format;
+    int32_t         parsePos    = 0;
+    int32_t         skipped;
+    UErrorCode      status      = U_ZERO_ERROR;
+
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* get the formatter */
+    format = u_locbund_getNumberFormat(&input->str.fBundle, UNUM_SPELLOUT);
+
+    /* handle error */
+    if(format == 0)
+        return 0;
+
+    /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
+    /* This is not applicable to RBNF. */
+    /*skipped += u_scanf_skip_leading_positive_sign(input, format, &status);*/
+
+    /* parse the number */
+    num = unum_parseDouble(format, input->str.fPos, len, &parsePos, &status);
+
+    if (!info->fSkipArg) {
+        *(double*)(args[0].ptrValue) = num;
+    }
+
+    /* mask off any necessary bits */
+    /*  if(! info->fIsLong_double)
+    num &= DBL_MAX;*/
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += parsePos;
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return parsePos + skipped;
+}
+
+static int32_t
+u_scanf_hex_handler(UFILE       *input,
+                    u_scanf_spec_info *info,
+                    ufmt_args   *args,
+                    const UChar *fmt,
+                    int32_t     *fmtConsumed,
+                    int32_t     *argConverted)
+{
+    int32_t     len;
+    int32_t     skipped;
+    void        *num    = (void*) (args[0].ptrValue);
+    int64_t     result;
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* check for alternate form */
+    if( *(input->str.fPos) == 0x0030 &&
+        (*(input->str.fPos + 1) == 0x0078 || *(input->str.fPos + 1) == 0x0058) ) {
+
+        /* skip the '0' and 'x' or 'X' if present */
+        input->str.fPos += 2;
+        len -= 2;
+    }
+
+    /* parse the number */
+    result = ufmt_uto64(input->str.fPos, &len, 16);
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += len;
+
+    /* mask off any necessary bits */
+    if (!info->fSkipArg) {
+        if (info->fIsShort)
+            *(int16_t*)num = (int16_t)(UINT16_MAX & result);
+        else if (info->fIsLongLong)
+            *(int64_t*)num = result;
+        else
+            *(int32_t*)num = (int32_t)(UINT32_MAX & result);
+    }
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return len + skipped;
+}
+
+static int32_t
+u_scanf_octal_handler(UFILE         *input,
+                      u_scanf_spec_info *info,
+                      ufmt_args     *args,
+                      const UChar   *fmt,
+                      int32_t       *fmtConsumed,
+                      int32_t       *argConverted)
+{
+    int32_t     len;
+    int32_t     skipped;
+    void        *num         = (void*) (args[0].ptrValue);
+    int64_t     result;
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1)
+        len = ufmt_min(len, info->fWidth);
+
+    /* parse the number */
+    result = ufmt_uto64(input->str.fPos, &len, 8);
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += len;
+
+    /* mask off any necessary bits */
+    if (!info->fSkipArg) {
+        if (info->fIsShort)
+            *(int16_t*)num = (int16_t)(UINT16_MAX & result);
+        else if (info->fIsLongLong)
+            *(int64_t*)num = result;
+        else
+            *(int32_t*)num = (int32_t)(UINT32_MAX & result);
+    }
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return len + skipped;
+}
+
+static int32_t
+u_scanf_pointer_handler(UFILE       *input,
+                        u_scanf_spec_info *info,
+                        ufmt_args   *args,
+                        const UChar *fmt,
+                        int32_t     *fmtConsumed,
+                        int32_t     *argConverted)
+{
+    int32_t len;
+    int32_t skipped;
+    void    *result;
+    void    **p     = (void**)(args[0].ptrValue);
+
+
+    /* skip all ws in the input */
+    skipped = u_scanf_skip_leading_ws(input, info->fPadChar);
+
+    /* fill the input's internal buffer */
+    ufile_fill_uchar_buffer(input);
+
+    /* determine the size of the input's buffer */
+    len = (int32_t)(input->str.fLimit - input->str.fPos);
+
+    /* truncate to the width, if specified */
+    if(info->fWidth != -1) {
+        len = ufmt_min(len, info->fWidth);
+    }
+
+    /* Make sure that we don't consume too much */
+    if (len > (int32_t)(sizeof(void*)*2)) {
+        len = (int32_t)(sizeof(void*)*2);
+    }
+
+    /* parse the pointer - assign to temporary value */
+    result = ufmt_utop(input->str.fPos, &len);
+
+    if (!info->fSkipArg) {
+        *p = result;
+    }
+
+    /* update the input's position to reflect consumed data */
+    input->str.fPos += len;
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return len + skipped;
+}
+
+static int32_t
+u_scanf_scanset_handler(UFILE       *input,
+                        u_scanf_spec_info *info,
+                        ufmt_args   *args,
+                        const UChar *fmt,
+                        int32_t     *fmtConsumed,
+                        int32_t     *argConverted)
+{
+    USet        *scanset;
+    UErrorCode  status = U_ZERO_ERROR;
+    int32_t     chLeft = INT32_MAX;
+    UChar32     c;
+    UChar       *alias = (UChar*) (args[0].ptrValue);
+    UBool       isNotEOF = FALSE;
+    UBool       readCharacter = FALSE;
+
+    /* Create an empty set */
+    scanset = uset_open(0, -1);
+
+    /* Back up one to get the [ */
+    fmt--;
+
+    /* truncate to the width, if specified and alias the target */
+    if(info->fWidth >= 0) {
+        chLeft = info->fWidth;
+    }
+
+    /* parse the scanset from the fmt string */
+    *fmtConsumed = uset_applyPattern(scanset, fmt, -1, 0, &status);
+
+    /* verify that the parse was successful */
+    if (U_SUCCESS(status)) {
+        c=0;
+
+        /* grab characters one at a time and make sure they are in the scanset */
+        while(chLeft > 0) {
+            if ((isNotEOF = ufile_getch32(input, &c)) && uset_contains(scanset, c)) {
+                readCharacter = TRUE;
+                if (!info->fSkipArg) {
+                    int32_t idx = 0;
+                    UBool isError = FALSE;
+
+                    U16_APPEND(alias, idx, chLeft, c, isError);
+                    if (isError) {
+                        break;
+                    }
+                    alias += idx;
+                }
+                chLeft -= (1 + U_IS_SUPPLEMENTARY(c));
+            }
+            else {
+                /* if the character's not in the scanset, break out */
+                break;
+            }
+        }
+
+        /* put the final character we read back on the input */
+        if(isNotEOF && chLeft > 0) {
+            u_fungetc(c, input);
+        }
+    }
+
+    uset_close(scanset);
+
+    /* if we didn't match at least 1 character, fail */
+    if(!readCharacter)
+        return -1;
+    /* otherwise, add the terminator */
+    else if (!info->fSkipArg) {
+        *alias = 0x00;
+    }
+
+    /* we converted 1 arg */
+    *argConverted = !info->fSkipArg;
+    return (info->fWidth >= 0 ? info->fWidth : INT32_MAX) - chLeft;
+}
+
+/* Use US-ASCII characters only for formatting. Most codepages have
+ characters 20-7F from Unicode. Using any other codepage specific
+ characters will make it very difficult to format the string on
+ non-Unicode machines */
+static const u_scanf_info g_u_scanf_infos[USCANF_NUM_FMT_HANDLERS] = {
+/* 0x20 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_SIMPLE_PERCENT,UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x30 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x40 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR,
+    UFMT_EMPTY,         UFMT_SCIENTIFIC,    UFMT_EMPTY,         UFMT_SCIDBL,
+#ifdef U_USE_OBSOLETE_IO_FORMATTING
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_UCHAR/*deprecated*/,
+#else
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+#endif
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x50 */
+    UFMT_PERCENT,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_USTRING,
+#ifdef U_USE_OBSOLETE_IO_FORMATTING
+    UFMT_EMPTY,         UFMT_USTRING/*deprecated*/,UFMT_SPELLOUT,      UFMT_EMPTY,
+#else
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_SPELLOUT,      UFMT_EMPTY,
+#endif
+    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_SCANSET,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+
+/* 0x60 */
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_CHAR,
+    UFMT_INT,           UFMT_SCIENTIFIC,    UFMT_DOUBLE,        UFMT_SCIDBL,
+    UFMT_EMPTY,         UFMT_INT,           UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_COUNT,         UFMT_OCTAL,
+
+/* 0x70 */
+    UFMT_POINTER,       UFMT_EMPTY,         UFMT_EMPTY,         UFMT_STRING,
+    UFMT_EMPTY,         UFMT_UINT,          UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_HEX,           UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+    UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,         UFMT_EMPTY,
+};
+
+U_CFUNC int32_t
+u_scanf_parse(UFILE     *f,
+            const UChar *patternSpecification,
+            va_list     ap)
+{
+    const UChar     *alias;
+    int32_t         count, converted, argConsumed, cpConsumed;
+    uint16_t        handlerNum;
+
+    ufmt_args       args;
+    u_scanf_spec    spec;
+    ufmt_type_info  info;
+    u_scanf_handler handler;
+
+    /* alias the pattern */
+    alias = patternSpecification;
+
+    /* haven't converted anything yet */
+    argConsumed = 0;
+    converted = 0;
+    cpConsumed = 0;
+
+    /* iterate through the pattern */
+    for(;;) {
+
+        /* match any characters up to the next '%' */
+        while(*alias != UP_PERCENT && *alias != 0x0000 && u_fgetc(f) == *alias) {
+            alias++;
+        }
+
+        /* if we aren't at a '%', or if we're at end of string, break*/
+        if(*alias != UP_PERCENT || *alias == 0x0000)
+            break;
+
+        /* parse the specifier */
+        count = u_scanf_parse_spec(alias, &spec);
+
+        /* update the pointer in pattern */
+        alias += count;
+
+        handlerNum = (uint16_t)(spec.fInfo.fSpec - USCANF_BASE_FMT_HANDLERS);
+        if (handlerNum < USCANF_NUM_FMT_HANDLERS) {
+            /* skip the argument, if necessary */
+            /* query the info function for argument information */
+            info = g_u_scanf_infos[ handlerNum ].info;
+            if (info != ufmt_count && u_feof(f)) {
+                break;
+            }
+            else if(spec.fInfo.fSkipArg) {
+                args.ptrValue = NULL;
+            }
+            else {
+                switch(info) {
+                case ufmt_count:
+                    /* set the spec's width to the # of items converted */
+                    spec.fInfo.fWidth = cpConsumed;
+                    U_FALLTHROUGH;
+                case ufmt_char:
+                case ufmt_uchar:
+                case ufmt_int:
+                case ufmt_string:
+                case ufmt_ustring:
+                case ufmt_pointer:
+                case ufmt_float:
+                case ufmt_double:
+                    args.ptrValue = va_arg(ap, void*);
+                    break;
+
+                default:
+                    /* else args is ignored */
+                    args.ptrValue = NULL;
+                    break;
+                }
+            }
+
+            /* call the handler function */
+            handler = g_u_scanf_infos[ handlerNum ].handler;
+            if(handler != 0) {
+
+                /* reset count to 1 so that += for alias works. */
+                count = 1;
+
+                cpConsumed += (*handler)(f, &spec.fInfo, &args, alias, &count, &argConsumed);
+
+                /* if the handler encountered an error condition, break */
+                if(argConsumed < 0) {
+                    converted = -1;
+                    break;
+                }
+
+                /* add to the # of items converted */
+                converted += argConsumed;
+
+                /* update the pointer in pattern */
+                alias += count-1;
+            }
+            /* else do nothing */
+        }
+        /* else do nothing */
+
+        /* just ignore unknown tags */
+    }
+
+    /* return # of items converted */
+    return converted;
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/source/io/ustdio.c b/source/io/ustdio.c
new file mode 100644 (file)
index 0000000..1c2225a
--- /dev/null
@@ -0,0 +1,732 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+ ******************************************************************************
+ *
+ *   Copyright (C) 1998-2016, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ ******************************************************************************
+ *
+ * File ustdio.c
+ *
+ * Modification History:
+ *
+ *   Date        Name        Description
+ *   11/18/98    stephen     Creation.
+ *   03/12/99    stephen     Modified for new C API.
+ *   07/19/99    stephen     Fixed read() and gets()
+ ******************************************************************************
+ */
+
+#include "unicode/ustdio.h"
+
+#if !UCONFIG_NO_CONVERSION
+
+#include "unicode/putil.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "ufile.h"
+#include "ufmt_cmn.h"
+#include "unicode/ucnv.h"
+#include "unicode/ustring.h"
+
+#include <string.h>
+
+#define DELIM_LF 0x000A
+#define DELIM_VT 0x000B
+#define DELIM_FF 0x000C
+#define DELIM_CR 0x000D
+#define DELIM_NEL 0x0085
+#define DELIM_LS 0x2028
+#define DELIM_PS 0x2029
+
+/* TODO: is this correct for all codepages? Should we just use \n and let the converter handle it? */
+#if U_PLATFORM_USES_ONLY_WIN32_API
+static const UChar DELIMITERS [] = { DELIM_CR, DELIM_LF, 0x0000 };
+static const uint32_t DELIMITERS_LEN = 2;
+/* TODO: Default newline writing should be detected based upon the converter being used. */
+#else
+static const UChar DELIMITERS [] = { DELIM_LF, 0x0000 };
+static const uint32_t DELIMITERS_LEN = 1;
+#endif
+
+#define IS_FIRST_STRING_DELIMITER(c1) \
+ (UBool)((DELIM_LF <= (c1) && (c1) <= DELIM_CR) \
+        || (c1) == DELIM_NEL \
+        || (c1) == DELIM_LS \
+        || (c1) == DELIM_PS)
+#define CAN_HAVE_COMBINED_STRING_DELIMITER(c1) (UBool)((c1) == DELIM_CR)
+#define IS_COMBINED_STRING_DELIMITER(c1, c2) \
+ (UBool)((c1) == DELIM_CR && (c2) == DELIM_LF)
+
+
+#if !UCONFIG_NO_TRANSLITERATION
+
+U_CAPI UTransliterator* U_EXPORT2
+u_fsettransliterator(UFILE *file, UFileDirection direction,
+                     UTransliterator *adopt, UErrorCode *status)
+{
+    UTransliterator *old = NULL;
+
+    if(U_FAILURE(*status))
+    {
+        return adopt;
+    }
+
+    if(!file)
+    {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return adopt;
+    }
+
+    if(direction & U_READ)
+    {
+        /** TODO: implement */
+        *status = U_UNSUPPORTED_ERROR;
+        return adopt;
+    }
+
+    if(adopt == NULL) /* they are clearing it */
+    {
+        if(file->fTranslit != NULL)
+        {
+            /* TODO: Check side */
+            old = file->fTranslit->translit;
+            uprv_free(file->fTranslit->buffer);
+            file->fTranslit->buffer=NULL;
+            uprv_free(file->fTranslit);
+            file->fTranslit=NULL;
+        }
+    }
+    else
+    {
+        if(file->fTranslit == NULL)
+        {
+            file->fTranslit = (UFILETranslitBuffer*) uprv_malloc(sizeof(UFILETranslitBuffer));
+            if(!file->fTranslit)
+            {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+                return adopt;
+            }
+            file->fTranslit->capacity = 0;
+            file->fTranslit->length = 0;
+            file->fTranslit->pos = 0;
+            file->fTranslit->buffer = NULL;
+        }
+        else
+        {
+            old = file->fTranslit->translit;
+            ufile_flush_translit(file);
+        }
+
+        file->fTranslit->translit = adopt;
+    }
+
+    return old;
+}
+
+static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count, UBool flush)
+{
+    int32_t newlen;
+    int32_t junkCount = 0;
+    int32_t textLength;
+    int32_t textLimit;
+    UTransPosition pos;
+    UErrorCode status = U_ZERO_ERROR;
+
+    if(count == NULL)
+    {
+        count = &junkCount;
+    }
+
+    if ((!f)||(!f->fTranslit)||(!f->fTranslit->translit))
+    {
+        /* fast path */
+        return src;
+    }
+
+    /* First: slide over everything */
+    if(f->fTranslit->length > f->fTranslit->pos)
+    {
+        memmove(f->fTranslit->buffer, f->fTranslit->buffer + f->fTranslit->pos,
+            (f->fTranslit->length - f->fTranslit->pos)*sizeof(UChar));
+    }
+    f->fTranslit->length -= f->fTranslit->pos; /* always */
+    f->fTranslit->pos = 0;
+
+    /* Calculate new buffer size needed */
+    newlen = (*count + f->fTranslit->length) * 4;
+
+    if(newlen > f->fTranslit->capacity)
+    {
+        if(f->fTranslit->buffer == NULL)
+        {
+            f->fTranslit->buffer = (UChar*)uprv_malloc(newlen * sizeof(UChar));
+        }
+        else
+        {
+            f->fTranslit->buffer = (UChar*)uprv_realloc(f->fTranslit->buffer, newlen * sizeof(UChar));
+        }
+        /* Check for malloc/realloc failure. */
+        if (f->fTranslit->buffer == NULL) {
+               return NULL;
+        }
+        f->fTranslit->capacity = newlen;
+    }
+
+    /* Now, copy any data over */
+    u_strncpy(f->fTranslit->buffer + f->fTranslit->length,
+        src,
+        *count);
+    f->fTranslit->length += *count;
+
+    /* Now, translit in place as much as we can  */
+    if(flush == FALSE)
+    {
+        textLength = f->fTranslit->length;
+        pos.contextStart = 0;
+        pos.contextLimit = textLength;
+        pos.start        = 0;
+        pos.limit        = textLength;
+
+        utrans_transIncrementalUChars(f->fTranslit->translit,
+            f->fTranslit->buffer, /* because we shifted */
+            &textLength,
+            f->fTranslit->capacity,
+            &pos,
+            &status);
+
+        /* now: start/limit point to the transliterated text */
+        /* Transliterated is [buffer..pos.start) */
+        *count            = pos.start;
+        f->fTranslit->pos = pos.start;
+        f->fTranslit->length = pos.limit;
+
+        return f->fTranslit->buffer;
+    }
+    else
+    {
+        textLength = f->fTranslit->length;
+        textLimit = f->fTranslit->length;
+
+        utrans_transUChars(f->fTranslit->translit,
+            f->fTranslit->buffer,
+            &textLength,
+            f->fTranslit->capacity,
+            0,
+            &textLimit,
+            &status);
+
+        /* out: converted len */
+        *count = textLimit;
+
+        /* Set pointers to 0 */
+        f->fTranslit->pos = 0;
+        f->fTranslit->length = 0;
+
+        return f->fTranslit->buffer;
+    }
+}
+
+#endif
+
+void
+ufile_flush_translit(UFILE *f)
+{
+#if !UCONFIG_NO_TRANSLITERATION
+    if((!f)||(!f->fTranslit))
+        return;
+#endif
+
+    u_file_write_flush(NULL, 0, f, FALSE, TRUE);
+}
+
+
+void
+ufile_flush_io(UFILE *f)
+{
+  if((!f) || (!f->fFile)) {
+    return; /* skip if no file */
+  }
+
+  u_file_write_flush(NULL, 0, f, TRUE, FALSE);
+}
+
+
+void
+ufile_close_translit(UFILE *f)
+{
+#if !UCONFIG_NO_TRANSLITERATION
+    if((!f)||(!f->fTranslit))
+        return;
+#endif
+
+    ufile_flush_translit(f);
+
+#if !UCONFIG_NO_TRANSLITERATION
+    if(f->fTranslit->translit)
+        utrans_close(f->fTranslit->translit);
+
+    if(f->fTranslit->buffer)
+    {
+        uprv_free(f->fTranslit->buffer);
+    }
+
+    uprv_free(f->fTranslit);
+    f->fTranslit = NULL;
+#endif
+}
+
+
+/* Input/output */
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fputs(const UChar    *s,
+        UFILE        *f)
+{
+    int32_t count = u_file_write(s, u_strlen(s), f);
+    count += u_file_write(DELIMITERS, DELIMITERS_LEN, f);
+    return count;
+}
+
+U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fputc(UChar32      uc,
+        UFILE        *f)
+{
+    UChar buf[2];
+    int32_t idx = 0;
+    UBool isError = FALSE;
+
+    U16_APPEND(buf, idx, UPRV_LENGTHOF(buf), uc, isError);
+    if (isError) {
+        return U_EOF;
+    }
+    return u_file_write(buf, idx, f) == idx ? uc : U_EOF;
+}
+
+
+U_CFUNC int32_t U_EXPORT2
+u_file_write_flush(const UChar *chars,
+                   int32_t     count,
+                   UFILE       *f,
+                   UBool       flushIO,
+                   UBool       flushTranslit)
+{
+    /* Set up conversion parameters */
+    UErrorCode  status       = U_ZERO_ERROR;
+    const UChar *mySource    = chars;
+    const UChar *mySourceBegin; 
+    const UChar *mySourceEnd;
+    char        charBuffer[UFILE_CHARBUFFER_SIZE];
+    char        *myTarget   = charBuffer;
+    int32_t     written      = 0;
+    int32_t     numConverted = 0;
+
+    if (count < 0) {
+        count = u_strlen(chars);
+    }
+
+#if !UCONFIG_NO_TRANSLITERATION
+    if((f->fTranslit) && (f->fTranslit->translit))
+    {
+        /* Do the transliteration */
+        mySource = u_file_translit(f, chars, &count, flushTranslit);
+    }
+#endif
+
+    /* Write to a string. */
+    if (!f->fFile) {
+        int32_t charsLeft = (int32_t)(f->str.fLimit - f->str.fPos);
+        if (flushIO && charsLeft > count) {
+            count++;
+        }
+        written = ufmt_min(count, charsLeft);
+        u_strncpy(f->str.fPos, mySource, written);
+        f->str.fPos += written;
+        return written;
+    }
+
+    mySourceEnd = mySource + count;
+
+    /* Perform the conversion in a loop */
+    do {
+        mySourceBegin = mySource; /* beginning location for this loop */
+        status     = U_ZERO_ERROR;
+        if(f->fConverter != NULL) { /* We have a valid converter */
+            ucnv_fromUnicode(f->fConverter,
+                &myTarget,
+                charBuffer + UFILE_CHARBUFFER_SIZE,
+                &mySource,
+                mySourceEnd,
+                NULL,
+                flushIO,
+                &status);
+        } else { /*weiv: do the invariant conversion */
+            int32_t convertChars = (int32_t) (mySourceEnd - mySource); 
+            if (convertChars > UFILE_CHARBUFFER_SIZE) { 
+                convertChars = UFILE_CHARBUFFER_SIZE; 
+                status = U_BUFFER_OVERFLOW_ERROR; 
+            } 
+            u_UCharsToChars(mySource, myTarget, convertChars); 
+            mySource += convertChars; 
+            myTarget += convertChars; 
+        }
+        numConverted = (int32_t)(myTarget - charBuffer);
+
+        if (numConverted > 0) {
+            /* write the converted bytes */
+            fwrite(charBuffer,
+                sizeof(char),
+                numConverted,
+                f->fFile);
+
+            written     += (int32_t) (mySource - mySourceBegin);
+        }
+        myTarget     = charBuffer;
+    }
+    while(status == U_BUFFER_OVERFLOW_ERROR);
+
+    /* return # of chars written */
+    return written;
+}
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_file_write(    const UChar     *chars,
+             int32_t        count,
+             UFILE         *f)
+{
+    return u_file_write_flush(chars,count,f,FALSE,FALSE);
+}
+
+
+/* private function used for buffering input */
+void
+ufile_fill_uchar_buffer(UFILE *f)
+{
+    UErrorCode  status;
+    const char  *mySource;
+    const char  *mySourceEnd;
+    UChar       *myTarget;
+    int32_t     bufferSize;
+    int32_t     maxCPBytes;
+    int32_t     bytesRead;
+    int32_t     availLength;
+    int32_t     dataSize;
+    char        charBuffer[UFILE_CHARBUFFER_SIZE];
+    u_localized_string *str;
+
+    if (f->fFile == NULL) {
+        /* There is nothing to do. It's a string. */
+        return;
+    }
+
+    str = &f->str;
+    dataSize = (int32_t)(str->fLimit - str->fPos);
+    if (f->fFileno == 0 && dataSize > 0) {
+        /* Don't read from stdin too many times. There is still some data. */
+        return;
+    }
+
+    /* shift the buffer if it isn't empty */
+    if(dataSize != 0) {
+        u_memmove(f->fUCBuffer, str->fPos, dataSize); /* not accessing beyond memory */
+    }
+
+
+    /* record how much buffer space is available */
+    availLength = UFILE_UCHARBUFFER_SIZE - dataSize;
+
+    /* Determine the # of codepage bytes needed to fill our UChar buffer */
+    /* weiv: if converter is NULL, we use invariant converter with charwidth = 1)*/
+    maxCPBytes = availLength / (f->fConverter!=NULL?(2*ucnv_getMinCharSize(f->fConverter)):1);
+
+    /* Read in the data to convert */
+    if (f->fFileno == 0) {
+        /* Special case. Read from stdin one line at a time. */
+        char *retStr = fgets(charBuffer, ufmt_min(maxCPBytes, UFILE_CHARBUFFER_SIZE), f->fFile);
+        bytesRead = (int32_t)(retStr ? uprv_strlen(charBuffer) : 0);
+    }
+    else {
+        /* A normal file */
+        bytesRead = (int32_t)fread(charBuffer,
+            sizeof(char),
+            ufmt_min(maxCPBytes, UFILE_CHARBUFFER_SIZE),
+            f->fFile);
+    }
+
+    /* Set up conversion parameters */
+    status      = U_ZERO_ERROR;
+    mySource    = charBuffer;
+    mySourceEnd = charBuffer + bytesRead;
+    myTarget    = f->fUCBuffer + dataSize;
+    bufferSize  = UFILE_UCHARBUFFER_SIZE;
+
+    if(f->fConverter != NULL) { /* We have a valid converter */
+        /* Perform the conversion */
+        ucnv_toUnicode(f->fConverter,
+            &myTarget,
+            f->fUCBuffer + bufferSize,
+            &mySource,
+            mySourceEnd,
+            NULL,
+            (UBool)(feof(f->fFile) != 0),
+            &status);
+
+    } else { /*weiv: do the invariant conversion */
+        u_charsToUChars(mySource, myTarget, bytesRead);
+        myTarget += bytesRead;
+    }
+
+    /* update the pointers into our array */
+    str->fPos    = str->fBuffer;
+    str->fLimit  = myTarget;
+}
+
+U_CAPI UChar* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgets(UChar        *s,
+        int32_t       n,
+        UFILE        *f)
+{
+    int32_t dataSize;
+    int32_t count;
+    UChar *alias;
+    const UChar *limit;
+    UChar *sItr;
+    UChar currDelim = 0;
+    u_localized_string *str;
+
+    if (n <= 0) {
+        /* Caller screwed up. We need to write the null terminatior. */
+        return NULL;
+    }
+
+    /* fill the buffer if needed */
+    str = &f->str;
+    if (str->fPos >= str->fLimit) {
+        ufile_fill_uchar_buffer(f);
+    }
+
+    /* subtract 1 from n to compensate for the terminator */
+    --n;
+
+    /* determine the amount of data in the buffer */
+    dataSize = (int32_t)(str->fLimit - str->fPos);
+
+    /* if 0 characters were left, return 0 */
+    if (dataSize == 0)
+        return NULL;
+
+    /* otherwise, iteratively fill the buffer and copy */
+    count = 0;
+    sItr = s;
+    currDelim = 0;
+    while (dataSize > 0 && count < n) {
+        alias = str->fPos;
+
+        /* Find how much to copy */
+        if (dataSize < (n - count)) {
+            limit = str->fLimit;
+        }
+        else {
+            limit = alias + (n - count);
+        }
+
+        if (!currDelim) {
+            /* Copy UChars until we find the first occurrence of a delimiter character */
+            while (alias < limit && !IS_FIRST_STRING_DELIMITER(*alias)) {
+                count++;
+                *(sItr++) = *(alias++);
+            }
+            /* Preserve the newline */
+            if (alias < limit && IS_FIRST_STRING_DELIMITER(*alias)) {
+                if (CAN_HAVE_COMBINED_STRING_DELIMITER(*alias)) {
+                    currDelim = *alias;
+                }
+                else {
+                    currDelim = 1;  /* This isn't a newline, but it's used to say
+                                    that we should break later. We've checked all
+                                    possible newline combinations even across buffer
+                                    boundaries. */
+                }
+                count++;
+                *(sItr++) = *(alias++);
+            }
+        }
+        /* If we have a CRLF combination, preserve that too. */
+        if (alias < limit) {
+            if (currDelim && IS_COMBINED_STRING_DELIMITER(currDelim, *alias)) {
+                count++;
+                *(sItr++) = *(alias++);
+            }
+            currDelim = 1;  /* This isn't a newline, but it's used to say
+                            that we should break later. We've checked all
+                            possible newline combinations even across buffer
+                            boundaries. */
+        }
+
+        /* update the current buffer position */
+        str->fPos = alias;
+
+        /* if we found a delimiter */
+        if (currDelim == 1) {
+            /* break out */
+            break;
+        }
+
+        /* refill the buffer */
+        ufile_fill_uchar_buffer(f);
+
+        /* determine the amount of data in the buffer */
+        dataSize = (int32_t)(str->fLimit - str->fPos);
+    }
+
+    /* add the terminator and return s */
+    *sItr = 0x0000;
+    return s;
+}
+
+U_CFUNC UBool U_EXPORT2
+ufile_getch(UFILE *f, UChar *ch)
+{
+    UBool isValidChar = FALSE;
+
+    *ch = U_EOF;
+    /* if we have an available character in the buffer, return it */
+    if(f->str.fPos < f->str.fLimit){
+        *ch = *(f->str.fPos)++;
+        isValidChar = TRUE;
+    }
+    else {
+        /* otherwise, fill the buffer and return the next character */
+        if(f->str.fPos >= f->str.fLimit) {
+            ufile_fill_uchar_buffer(f);
+        }
+        if(f->str.fPos < f->str.fLimit) {
+            *ch = *(f->str.fPos)++;
+            isValidChar = TRUE;
+        }
+    }
+    return isValidChar;
+}
+
+U_CAPI UChar U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgetc(UFILE        *f)
+{
+    UChar ch;
+    ufile_getch(f, &ch);
+    return ch;
+}
+
+U_CFUNC UBool U_EXPORT2
+ufile_getch32(UFILE *f, UChar32 *c32)
+{
+    UBool isValidChar = FALSE;
+    u_localized_string *str;
+
+    *c32 = U_EOF;
+
+    /* Fill the buffer if it is empty */
+    str = &f->str;
+    if (f && str->fPos + 1 >= str->fLimit) {
+        ufile_fill_uchar_buffer(f);
+    }
+
+    /* Get the next character in the buffer */
+    if (str->fPos < str->fLimit) {
+        *c32 = *(str->fPos)++;
+        if (U_IS_LEAD(*c32)) {
+            if (str->fPos < str->fLimit) {
+                UChar c16 = *(str->fPos)++;
+                *c32 = U16_GET_SUPPLEMENTARY(*c32, c16);
+                isValidChar = TRUE;
+            }
+            else {
+                *c32 = U_EOF;
+            }
+        }
+        else {
+            isValidChar = TRUE;
+        }
+    }
+
+    return isValidChar;
+}
+
+U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgetcx(UFILE        *f)
+{
+    UChar32 ch;
+    ufile_getch32(f, &ch);
+    return ch;
+}
+
+U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fungetc(UChar32        ch,
+    UFILE        *f)
+{
+    u_localized_string *str;
+
+    str = &f->str;
+
+    /* if we're at the beginning of the buffer, sorry! */
+    if (str->fPos == str->fBuffer
+        || (U_IS_LEAD(ch) && (str->fPos - 1) == str->fBuffer))
+    {
+        ch = U_EOF;
+    }
+    else {
+        /* otherwise, put the character back */
+        /* Remember, read them back on in the reverse order. */
+        if (U_IS_LEAD(ch)) {
+            if (*--(str->fPos) != U16_TRAIL(ch)
+                || *--(str->fPos) != U16_LEAD(ch))
+            {
+                ch = U_EOF;
+            }
+        }
+        else if (*--(str->fPos) != ch) {
+            ch = U_EOF;
+        }
+    }
+    return ch;
+}
+
+U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_file_read(    UChar        *chars,
+    int32_t        count,
+    UFILE         *f)
+{
+    int32_t dataSize;
+    int32_t read = 0;
+    u_localized_string *str = &f->str;
+
+    do {
+
+        /* determine the amount of data in the buffer */
+        dataSize = (int32_t)(str->fLimit - str->fPos);
+        if (dataSize <= 0) {
+            /* fill the buffer */
+            ufile_fill_uchar_buffer(f);
+            dataSize = (int32_t)(str->fLimit - str->fPos);
+        }
+
+        /* Make sure that we don't read too much */
+        if (dataSize > (count - read)) {
+            dataSize = count - read;
+        }
+
+        /* copy the current data in the buffer */
+        memcpy(chars + read, str->fPos, dataSize * sizeof(UChar));
+
+        /* update number of items read */
+        read += dataSize;
+
+        /* update the current buffer position */
+        str->fPos += dataSize;
+    }
+    while (dataSize != 0 && read < count);
+
+    return read;
+}
+#endif
index a537d14..8e0087e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b8561cb..0f25fd0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 7bd7176..154b9fd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 9e525cf..91d89b8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index f6e51af..1eb8f6b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 0d9f08f..eb92ad0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 5cf6c60..654c96f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 317b438..8d7adc8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index 2a7a397..ccfdc2f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index f7f8f10..c3c8266 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\iculx59.dll</OutputFile>
+      <OutputFile>..\..\bin\iculx58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib\iculx.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin\iculx59d.dll</OutputFile>
+      <OutputFile>..\..\bin\iculx58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib\iculxd.pdb</ProgramDatabaseFile>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\iculx59.dll</OutputFile>
+      <OutputFile>..\..\bin64\iculx58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\..\..\lib64\iculx.pdb</ProgramDatabaseFile>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\bin64\iculx59d.dll</OutputFile>
+      <OutputFile>..\..\bin64\iculx58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\..\..\lib64\iculxd.pdb</ProgramDatabaseFile>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index cebd4bb..3f6f1b4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index 95766d6..eff65df 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index abe8832..73f2c9a 100755 (executable)
@@ -315,6 +315,7 @@ case $platform in
         THE_COMP="the GNU C++"
         RELEASE_CFLAGS='-O3'
         RELEASE_CXXFLAGS='-O3'
+        CXXFLAGS="--std=c++03"
         export CXXFLAGS
         ;;
     MSYS/MSVC)
index 4965aac..35a7e5d 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 0ac3e59..21e0d33 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{DEEADF02-9C14-4854-A395-E505D2904D65}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\x86\Release/break.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/break.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/break.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/break.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/break.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/break.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/break.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/break.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\x86\Debug/break.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/break.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/break.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/break.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/break.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/break.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/break.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/break.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="break.cpp" />
-    <ClCompile Include="ubreak.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DEEADF02-9C14-4854-A395-E505D2904D65}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\x86\Release/break.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/break.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/break.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/break.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/break.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/break.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/break.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/break.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\x86\Debug/break.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/break.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/break.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/break.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/break.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/break.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/break.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/break.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="break.cpp" />\r
+    <ClCompile Include="ubreak.c" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 593ea82..2dcda2d 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index eb606a9..7b1950f 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index 95a0a53..26f2c74 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 8fce883..bcfa1ee 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index cbbcefb..f6639ee 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index f111818..fc0042d 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 3596766..c340df8 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/case.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/case.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/case.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/case.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/case.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/case.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/case.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/case.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/case.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/case.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/case.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/case.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/case.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/case.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/case.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/case.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="case.cpp" />
-    <ClCompile Include="ucase.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{2316BE8C-189D-4C8B-B506-9D9EE25AC46D}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/case.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/case.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/case.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/case.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/case.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/case.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/case.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/case.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/case.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/case.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/case.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/case.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/case.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/case.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/case.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/case.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="case.cpp" />\r
+    <ClCompile Include="ucase.c" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index eafa934..60d4084 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 3a16dc1..03f1a25 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*     © 2016 and later: Unicode, Inc. and others.
+*     Copyright (C) 2016 and later: Unicode, Inc. and others.
 *     License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index bf6355e..9f8a5d1 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{247E2681-6C84-408B-B40C-5DB50BC5E18F}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>./Debug/citer.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>./Debug/citer.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>./Release/citer.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>./Release/citer.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="citer.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{247E2681-6C84-408B-B40C-5DB50BC5E18F}</ProjectGuid>\r
+    <Keyword>Win32Proj</Keyword>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>./Debug/citer.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>./Debug/citer.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)citer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>./Release/citer.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>./Release/citer.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="citer.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index e29755d..f079370 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 85d0341..66451bc 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{7664D0D2-0263-4BFB-AE19-9A1CAD231440}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/coll.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/coll.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/coll.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/coll.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/coll.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/coll.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/coll.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/coll.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/coll.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/coll.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/coll.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/coll.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/coll.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/coll.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/coll.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/coll.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="coll.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{7664D0D2-0263-4BFB-AE19-9A1CAD231440}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/coll.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/coll.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/coll.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/coll.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/coll.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/coll.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/coll.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/coll.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/coll.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/coll.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/coll.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/coll.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/coll.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/coll.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/coll.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/coll.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="coll.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c8df791..e4e13da 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ********************************************************************************
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 ********************************************************************************
 ********************************************************************************
index 6d2a0ad..3e44574 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{683745AD-3BC2-4B89-898B-93490D7F2757}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)csdet.exe</OutputFile>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="csdet.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{683745AD-3BC2-4B89-898B-93490D7F2757}</ProjectGuid>\r
+    <Keyword>Win32Proj</Keyword>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)csdet.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)csdet.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="csdet.c" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 156a341..f7a3a81 100644 (file)
@@ -1,6 +1,6 @@
 /*
 *************************************************************************
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 ***********************************************************************
index f8241c1..20f0937 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{38B5751A-C6F9-4409-950C-F4F9DA17275F}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/date.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/date.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/date.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/date.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/date.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/date.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/date.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/date.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/date.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/date.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/date.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/date.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/date.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/date.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/date.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/date.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="date.c" />
-    <ClCompile Include="uprint.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="uprint.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{38B5751A-C6F9-4409-950C-F4F9DA17275F}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/date.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/date.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/date.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/date.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/date.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/date.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/date.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/date.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/date.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/date.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/date.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/date.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/date.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/date.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/date.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/date.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="date.c" />\r
+    <ClCompile Include="uprint.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="uprint.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index b0ef938..0206fcc 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index 5f2fba6..5caa697 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ********************************************************************************
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 ********************************************************************************
 **********************************************************************
index 1af3a69..502c04b 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 4a80beb..a9559a2 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
index 0c58786..7a122fc 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 1afcfd6..3fbd4be 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index ccce516..af49c07 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 39c095a..66f9e7c 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 078ca49..af9b838 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/datefmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/datefmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/datefmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/datefmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/datefmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/datefmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/datefmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/datefmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/datefmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/datefmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/datefmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/datefmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/datefmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/datefmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/datefmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/datefmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="main.cpp" />
-    <ClCompile Include="util.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/datefmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/datefmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/datefmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/datefmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/datefmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/datefmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/datefmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/datefmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/datefmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/datefmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/datefmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/datefmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/datefmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/datefmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/datefmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/datefmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="util.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index a655328..44cec7b 100644 (file)
@@ -1,5 +1,5 @@
 /*************************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 6068d0e..bb33723 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 3a15a9e..716f71e 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index da6f746..86a0bf2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
 * Copyright (C) 2008-2014, International Business Machines Corporation and
index 701d806..6e56709 100644 (file)
@@ -1,97 +1,97 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{8945255B-473B-4C47-9425-E92384338CAA}</ProjectGuid>
-    <RootNamespace>dtitvfmtsample</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>.\x86\debug\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>.\x86\debug\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>.\x86\release</OutDir>
-    <IntDir>.\x86\release</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OutputFile>.\x86\Debug/dtitvfmtsample.exe</OutputFile>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="dtitvfmtsample.cpp">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\io\io.vcxproj">
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{8945255B-473B-4C47-9425-E92384338CAA}</ProjectGuid>\r
+    <RootNamespace>dtitvfmtsample</RootNamespace>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>true</UseDebugLibraries>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>false</UseDebugLibraries>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>.\x86\debug\</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <IntDir>.\x86\debug\</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>.\x86\release</OutDir>\r
+    <IntDir>.\x86\release</IntDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <OutputFile>.\x86\Debug/dtitvfmtsample.exe</OutputFile>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="dtitvfmtsample.cpp">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index b119f4b..3f966a2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c49ee6a..77a7668 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{115886F0-7DFB-4B8B-BE79-83162EE8713B}</ProjectGuid>
-    <RootNamespace>samples</RootNamespace>
-    <ProjectName>dtptngsample</ProjectName>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>.\x86\debug\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>.\x86\debug\</IntDir>
-    <TargetName>$(ProjectName)</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>.\x86\release</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <IntDir>.\x86\release</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TargetName>$(ProjectName)</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OutputFile>.\x86\debug/dtptngsample.exe</OutputFile>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <OutputFile>\x86\debug\samples.exe</OutputFile>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="dtptngsample.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\io\io.vcxproj">
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{115886F0-7DFB-4B8B-BE79-83162EE8713B}</ProjectGuid>\r
+    <RootNamespace>samples</RootNamespace>\r
+    <ProjectName>dtptngsample</ProjectName>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>true</UseDebugLibraries>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>false</UseDebugLibraries>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>.\x86\debug\</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <IntDir>.\x86\debug\</IntDir>\r
+    <TargetName>$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>.\x86\release</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <IntDir>.\x86\release</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <TargetName>$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <OutputFile>.\x86\debug/dtptngsample.exe</OutputFile>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <OutputFile>\x86\debug\samples.exe</OutputFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="dtptngsample.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 1ca98df..3586c0c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index c3f518b..c14c082 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 7ca68b7..bdd4f8f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index f949c5a..75560b3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *************************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  **********************************************************************
index 59448f0..9854dcd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 36211d4..779e4c2 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index bdbfe30..ce0f7ce 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 0a66334..5798df3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index a3289e4..745df62 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index e3ae957..d3a73dc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 1b092a3..bff11fd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index c330b61..6b22cc1 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 7cabcb5..f088b64 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 7895dd8..c94daa3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 2a38a64..1773950 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *******************************************************************************
  ******************************************************************************
index 35a4166..05c6b1a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 2f56e2a..07d765a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 0399e71..f4a1528 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index a87c650..bec43c7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 151d682..ed7bb2f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * %W% %E%
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
index 268145a..5a73ae1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *   Copyright (C) 2003, International Business Machines
index 9e25516..aa5e32d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *   Copyright (C) 2003, International Business Machines
index 47a4386..e9df02c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 4429f1c..2ffa22f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ******************************************************************************
- * © 2016 and later: Unicode, Inc. and others.                    *
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
  * License & terms of use: http://www.unicode.org/copyright.html#License      *
  ******************************************************************************
  ******************************************************************************
index 2580410..8efc000 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index ff3d563..6a2c16f 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index e129966..fcce80d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 36d6335..72a28d7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 0abda50..59b8084 100644 (file)
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ******************************************************************************
index b79f6ee..6fa176b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 8018d08..3fef1a3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 906b143..f88162e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 3413bae..254f37a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 8f7c37d..7787fcd 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 582bcc1..72d3b27 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 009a055..ab088cd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index c27af9d..4b37d23 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/layout.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/layout.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib\iculx.lib;..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/layout.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/layout.pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/layout.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN64;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/layout.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib64\iculx.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/layout.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/layout.pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/layout.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/layout.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib\iculxd.lib;..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/layout.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/layout.pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/layout.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;WIN64;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/layout.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib64\iculxd.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/layout.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/layout.pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="cmaps.cpp" />
-    <ClCompile Include="FontMap.cpp" />
-    <ClCompile Include="FontTableCache.cpp" />
-    <ClCompile Include="GDIFontInstance.cpp" />
-    <ClCompile Include="GDIFontMap.cpp" />
-    <ClCompile Include="GDIGUISupport.cpp" />
-    <ClCompile Include="layout.cpp" />
-    <ClCompile Include="paragraph.cpp" />
-    <ClCompile Include="ScriptCompositeFontInstance.cpp" />
-    <ClCompile Include="UnicodeReader.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="LayoutSample.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="cmaps.h" />
-    <ClInclude Include="FontMap.h" />
-    <ClInclude Include="FontTableCache.h" />
-    <ClInclude Include="GDIFontInstance.h" />
-    <ClInclude Include="GDIFontMap.h" />
-    <ClInclude Include="GDIGUISupport.h" />
-    <ClInclude Include="GUISupport.h" />
-    <ClInclude Include="paragraph.h" />
-    <ClInclude Include="RenderingSurface.h" />
-    <ClInclude Include="resource.h" />
-    <ClInclude Include="ScriptCompositeFontInstance.h" />
-    <ClInclude Include="sfnt.h" />
-    <ClInclude Include="UnicodeReader.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/layout.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/layout.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib\iculx.lib;..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/layout.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/layout.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/layout.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;WIN64;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/layout.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib64\iculx.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/layout.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/layout.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/layout.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/layout.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib\iculxd.lib;..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/layout.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/layout.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/layout.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;WIN64;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/layout.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib64\iculxd.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/layout.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/layout.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="cmaps.cpp" />\r
+    <ClCompile Include="FontMap.cpp" />\r
+    <ClCompile Include="FontTableCache.cpp" />\r
+    <ClCompile Include="GDIFontInstance.cpp" />\r
+    <ClCompile Include="GDIFontMap.cpp" />\r
+    <ClCompile Include="GDIGUISupport.cpp" />\r
+    <ClCompile Include="layout.cpp" />\r
+    <ClCompile Include="paragraph.cpp" />\r
+    <ClCompile Include="ScriptCompositeFontInstance.cpp" />\r
+    <ClCompile Include="UnicodeReader.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="LayoutSample.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="cmaps.h" />\r
+    <ClInclude Include="FontMap.h" />\r
+    <ClInclude Include="FontTableCache.h" />\r
+    <ClInclude Include="GDIFontInstance.h" />\r
+    <ClInclude Include="GDIFontMap.h" />\r
+    <ClInclude Include="GDIGUISupport.h" />\r
+    <ClInclude Include="GUISupport.h" />\r
+    <ClInclude Include="paragraph.h" />\r
+    <ClInclude Include="RenderingSurface.h" />\r
+    <ClInclude Include="resource.h" />\r
+    <ClInclude Include="ScriptCompositeFontInstance.h" />\r
+    <ClInclude Include="sfnt.h" />\r
+    <ClInclude Include="UnicodeReader.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 190106f..ac69cf2 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 0f307fd..8fcb93e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 92d521c..fe3ab4c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index ec87131..f8971e0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 77374ba..82285ff 100644 (file)
@@ -1,6 +1,6 @@
 //{{NO_DEPENDENCIES}}
 // Microsoft Developer Studio generated include file.
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html#License
 // Corporation and others. All Rights Reserved.
 // Copyright (c) 2001-2003 International Business Machines
index a64ba9a..1e6dd36 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index ae2098b..effc951 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 32173ba..c653c31 100644 (file)
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ******************************************************************************
index 232ee86..4f608ba 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index bf2dd70..b33eff9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
index 559fbcb..717af3a 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  main.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 56b7fde..51311b6 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{57F56795-1802-4605-88A0-013AAE9998F6}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/legacy.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/legacy.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/legacy.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/legacy.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/legacy.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/legacy.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/legacy.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/legacy.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/legacy.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/legacy.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/legacy.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/legacy.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/legacy.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/legacy.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/legacy.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/legacy.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="legacy.cpp" />
-    <ClCompile Include="newcol.cpp" />
-    <ClCompile Include="oldcol.cpp">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{57F56795-1802-4605-88A0-013AAE9998F6}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/legacy.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/legacy.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/legacy.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/legacy.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/legacy.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/legacy.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/legacy.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/legacy.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/legacy.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/legacy.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/legacy.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/legacy.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/legacy.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/legacy.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/legacy.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/legacy.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="legacy.cpp" />\r
+    <ClCompile Include="newcol.cpp" />\r
+    <ClCompile Include="oldcol.cpp">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../../include;../../../../icu-1-8-1/include</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index b5430d7..e63fe70 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  newcol.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8c9c696..6caa88f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
@@ -12,7 +12,7 @@
  *
  *******************************************************************************
  *   file name:  oldcol.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 5dafe09..865d793 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 66add56..1e888f0 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index d252ac7..380234b 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index aa42dee..f93ff7a 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 0a7de73..66d4712 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index eebe956..68d4108 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/msgfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/msgfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/msgfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/msgfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/msgfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/msgfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/msgfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/msgfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/msgfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/msgfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/msgfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/msgfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/msgfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/msgfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="main.cpp" />
-    <ClCompile Include="util.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/msgfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/msgfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/msgfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/msgfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/msgfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/msgfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/msgfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/msgfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/msgfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/msgfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/msgfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/msgfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/msgfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/msgfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/msgfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="util.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index fb353a0..25f6be7 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index b66e019..2095e1a 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index bf96f01..91b6b80 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 172202e..c53b55c 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 2e29537..d986f9f 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{721FBD47-E458-4C35-90DA-FF192907D5E2}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/numfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/numfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/numfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/numfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/numfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/numfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/numfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/numfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/numfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/numfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/numfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/numfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/numfmt.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/numfmt.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/numfmt.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/numfmt.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="capi.c" />
-    <ClCompile Include="main.cpp" />
-    <ClCompile Include="util.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="util.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{721FBD47-E458-4C35-90DA-FF192907D5E2}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/numfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/numfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/numfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/numfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/numfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/numfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/numfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/numfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/numfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/numfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/numfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/numfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/numfmt.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/numfmt.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/numfmt.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/numfmt.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="capi.c" />\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="util.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="util.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index f5db0e1..15dc825 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index b1c2679..e946129 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
 #include "unicode/unistr.h"
 #include "unicode/fmtable.h"
 
-#ifndef UPRV_LENGTHOF 
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) 
-#endif 
-
 // Verify that a UErrorCode is successful; exit(1) if not
 void check(UErrorCode& status, const char* msg);
 
index 87d77e3..f3a9ce6 100644 (file)
@@ -1,5 +1,5 @@
 /********************************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ********************************************************************************
 ********************************************************************************
index 1276c9a..a349c14 100644 (file)
@@ -1,98 +1,98 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B500B731-ED1A-4761-94ED-B22DFE25FF2B}</ProjectGuid>
-    <RootNamespace>plurfmtsample</RootNamespace>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>.\x86\debug</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>.\x86\debug</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>.\x86\release</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <IntDir>.\x86\release</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="plurfmtsample.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\io\io.vcxproj">
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B500B731-ED1A-4761-94ED-B22DFE25FF2B}</ProjectGuid>\r
+    <RootNamespace>plurfmtsample</RootNamespace>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>true</UseDebugLibraries>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseDebugLibraries>false</UseDebugLibraries>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>.\x86\debug</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <IntDir>.\x86\debug</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>.\x86\release</OutDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <IntDir>.\x86\release</IntDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+    </ClCompile>\r
+    <Link>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <OutputFile>.\x86\debug/plurfmtsample.exe</OutputFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="plurfmtsample.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index da9408d..65e298e 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  props.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 488fe6e..5fa811e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/props.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/props.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/props.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/props.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/props.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/props.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/props.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/props.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/props.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/props.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/props.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/props.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/props.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/props.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/props.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/props.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="props.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/props.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/props.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/props.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/props.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/props.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/props.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/props.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/props.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/props.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/props.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/props.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/props.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/props.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/props.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/props.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/props.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="props.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 2478712..d2e6481 100644 (file)
@@ -1,5 +1,5 @@
 /*************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 67efde7..171596e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/strsrch.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrch.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/strsrch.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/strsrch.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/strsrch.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrch.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/strsrch.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/strsrch.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/strsrch.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/strsrch.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/strsrch.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/strsrch.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/strsrch.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/strsrch.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/strsrch.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/strsrch.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="strsrch.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/strsrch.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrch.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/strsrch.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/strsrch.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/strsrch.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrch.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuind.lib;icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/strsrch.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/strsrch.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/strsrch.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/strsrch.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/strsrch.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/strsrch.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/strsrch.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/strsrch.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuin.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/strsrch.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/strsrch.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="strsrch.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 04c4886..23a64b3 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 2110990..51468e0 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index d18b1ce..0c1735b 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index ec2306d..2837127 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index c726071..12f9793 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  * COPYRIGHT:
index 5399312..3a35978 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index ca7f090..98e35cf 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 2e63d9b..399d883 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D1BEC124-303A-4F44-BA70-55769B8FE96A}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/translit.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/translit.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/translit.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/translit.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/translit.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/translit.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/translit.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/translit.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/translit.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/translit.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/translit.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/translit.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/translit.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/translit.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/translit.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/translit.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="main.cpp" />
-    <ClCompile Include="unaccent.cpp" />
-    <ClCompile Include="util.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="unaccent.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{D1BEC124-303A-4F44-BA70-55769B8FE96A}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/translit.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/translit.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/translit.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/translit.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/translit.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/translit.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/translit.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/translit.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/translit.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/translit.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/translit.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/translit.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/translit.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/translit.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/translit.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/translit.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="unaccent.cpp" />\r
+    <ClCompile Include="util.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="unaccent.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index b16a5a4..ccdc33c 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  **********************************************************************
  **********************************************************************
index 71521b5..35f39c0 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index fc00c4f..898e101 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index dcd6384..15b41a2 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index dcd9aa0..d9e84fe 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uciter8.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #include "unicode/uiter.h"
 #include "uit_len8.h"
 
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
-
 #define log_err printf
 
 /* UCharIterator test ------------------------------------------------------- */
index 194a1d3..0a4fec2 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/uciter8.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/uciter8.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/uciter8.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/uciter8.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/uciter8.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/uciter8.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/uciter8.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/uciter8.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/uciter8.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/uciter8.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/uciter8.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/uciter8.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/uciter8.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/uciter8.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/uciter8.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/uciter8.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="uciter8.c" />
-    <ClCompile Include="uit_len8.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="uit_len8.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/uciter8.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/uciter8.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/uciter8.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/uciter8.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/uciter8.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/uciter8.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/uciter8.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/uciter8.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/uciter8.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/uciter8.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/uciter8.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/uciter8.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/uciter8.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/uciter8.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/uciter8.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/uciter8.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="uciter8.c" />\r
+    <ClCompile Include="uit_len8.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="uit_len8.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index e7f8303..f6f4140 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uit_len8.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 2aef2ad..5b4c323 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uit_len8.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7194e6d..139e948 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 **************************************************************************
@@ -39,6 +39,7 @@
 #include <string.h>
 #include <stdlib.h>  /* malloc */
 
+#include "cmemory.h"
 #include "unicode/utypes.h"   /* Basic ICU data types */
 #include "unicode/ucnv.h"     /* C   Converter API    */
 #include "unicode/ustring.h"  /* some more string fcns*/
@@ -49,9 +50,6 @@
 #include "flagcb.h"
 
 /* Some utility functions */
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
 
 static const UChar kNone[] = { 0x0000 };
 
index 7830109..45a0faa 100644 (file)
@@ -1,5 +1,5 @@
 /**************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  **************************************************************************
  **************************************************************************
index f6af5bd..3fa544f 100644 (file)
@@ -1,4 +1,4 @@
-/* © 2016 and later: Unicode, Inc. and others.
+/* Copyright (C) 2016 and later: Unicode, Inc. and others.
    License & terms of use: http://www.unicode.org/copyright.html#License
 
    Copyright (c) 2000 IBM, Inc. and Others. 
index 796c700..d27f84a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{8C95060E-61F5-464E-BB42-95B788C0D7E4}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/ucnv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ucnv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/ucnv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/ucnv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/ucnv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ucnv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/ucnv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/ucnv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/ucnv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/ucnv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/ucnv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/ucnv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/ucnv.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/ucnv.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/ucnv.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/ucnv.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="convsamp.cpp" />
-    <ClCompile Include="flagcb.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="flagcb.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{8C95060E-61F5-464E-BB42-95B788C0D7E4}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/ucnv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ucnv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/ucnv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/ucnv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/ucnv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ucnv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/ucnv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/ucnv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/ucnv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/ucnv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/ucnv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/ucnv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/ucnv.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/ucnv.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/ucnv.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/ucnv.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="convsamp.cpp" />\r
+    <ClCompile Include="flagcb.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="flagcb.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 00817b8..8059798 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
@@ -12,7 +12,7 @@
  *
  *******************************************************************************
  *   file name:  reader.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 0faeeb6..e84994a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\reader_Win32_Debug/reader.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\reader_x64_Debug/reader.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>
-      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\reader_Win32_Release/reader.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>
-      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\reader_x64_Release/reader.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="reader.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\reader_Win32_Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\reader_Win32_Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\reader_Win32_Debug/reader.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\reader_Win32_Debug/reader.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Debug/reader.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\reader_Win32_Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\reader_Win32_Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\reader_Win32_Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\reader_x64_Debug/reader.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\reader_Win32_Debug/reader.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\reader_Win32_Release/reader.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\reader_Win32_Release/reader.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\reader_Win32_Release/reader.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\reader_Win32_Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\reader_Win32_Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\reader_Win32_Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\reader_x64_Release/reader.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\reader_Win32_Release/reader.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="reader.c">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\..\include;..\..\tools\toolutil;..\..\icu\include</AdditionalIncludeDirectories>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 4734822..f07f8df 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  writer.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 80e74ab..abdcab5 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{40A90302-F173-4629-A003-F571D2D93D16}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/writer.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/writer.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/writer.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/writer.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/writer.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/writer.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/writer.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/writer.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/writer.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/writer.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/writer.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/writer.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/writer.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/writer.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/writer.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/writer.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="writer.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{40A90302-F173-4629-A003-F571D2D93D16}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/writer.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/writer.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/writer.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/writer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/writer.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/writer.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/writer.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/writer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/writer.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/writer.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/writer.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/writer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/writer.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/writer.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/writer.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/writer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="writer.c" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c1c203a..5649be1 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 **************************************************************************
index ff1760a..f0ab72a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{25F534DF-93C9-4853-A88E-DB7D8CF74042}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/ufortune.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ufortune.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/ufortune.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/ufortune.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/ufortune.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ufortune.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/ufortune.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/ufortune.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/ufortune.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/ufortune.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/ufortune.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/ufortune.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/ufortune.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/ufortune.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/ufortune.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/ufortune.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ufortune.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="resources\es.txt" />
-    <None Include="resources\res-file-list.txt" />
-    <None Include="resources\root.txt" />
-    <CustomBuild Include="resources\fortune_resources.mak">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cd resources
-nmake -f fortune_resources.mak CFG=x86\Debug
-copy Fortune_Resources.DLL "$(TargetDir)"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cd resources
-nmake -f fortune_resources.mak CFG=x64\Debug
-copy Fortune_Resources.DLL "$(TargetDir)"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cd resources
-nmake -f fortune_resources.mak CFG=x86\Release
-copy Fortune_Resources.DLL "$(TargetDir)"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cd resources
-nmake -f fortune_resources.mak CFG=x64\Release
-copy Fortune_Resources.DLL "$(TargetDir)"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{25F534DF-93C9-4853-A88E-DB7D8CF74042}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/ufortune.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ufortune.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/ufortune.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/ufortune.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/ufortune.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ufortune.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/ufortune.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/ufortune.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/ufortune.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/ufortune.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/ufortune.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/ufortune.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/ufortune.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/ufortune.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/ufortune.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/ufortune.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="ufortune.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="resources\es.txt" />\r
+    <None Include="resources\res-file-list.txt" />\r
+    <None Include="resources\root.txt" />\r
+    <CustomBuild Include="resources\fortune_resources.mak">\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cd resources\r
+nmake -f fortune_resources.mak CFG=x86\Debug\r
+copy Fortune_Resources.DLL "$(TargetDir)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cd resources\r
+nmake -f fortune_resources.mak CFG=x64\Debug\r
+copy Fortune_Resources.DLL "$(TargetDir)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cd resources\r
+nmake -f fortune_resources.mak CFG=x86\Release\r
+copy Fortune_Resources.DLL "$(TargetDir)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cd resources\r
+nmake -f fortune_resources.mak CFG=x64\Release\r
+copy Fortune_Resources.DLL "$(TargetDir)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">resources\fortune_resources.DLL;%(Outputs)</Outputs>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index b704059..df748bb 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 **************************************************************************
index 1d42f57..c19713a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{63166CEB-02CC-472C-B3B7-E6C559939BDA}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/ugrep.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/ugrep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/ugrep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/ugrep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/ugrep.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/ugrep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/ugrep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/ugrep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/ugrep.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ugrep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/ugrep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/ugrep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/ugrep.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ugrep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/ugrep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/ugrep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ugrep.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{63166CEB-02CC-472C-B3B7-E6C559939BDA}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/ugrep.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/ugrep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/ugrep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/ugrep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/ugrep.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/ugrep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalOptions>/FIXED:NO %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/ugrep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/ugrep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/ugrep.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ugrep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/ugrep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/ugrep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/ugrep.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ugrep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/ugrep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/ugrep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="ugrep.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c05110b..e9ad299 100644 (file)
@@ -64,7 +64,7 @@ sr.res : sr.txt
 # Can change this to LINK.c if it is a C only program
 # Can add more libraries here. 
 $(TARGET): $(OBJECTS)
-       $(CC) -o $(TARGET) $(LDFLAGS)
+       $(CC) -o $@ $^ $(LDFLAGS)
 
 # Make check: simply runs the sample, logged to a file
 check: $(TARGET) $(RESOURCES)
index f8d7cd6..27ea3aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  uresb.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f5a2f22..cf1dc4f 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{92580BF4-F4DA-4024-B3F8-444F982BC72F}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/uresb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/uresb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0c1a</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/uresb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/uresb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/uresb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/uresb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0c1a</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/uresb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/uresb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/uresb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/uresb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0c1a</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/uresb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/uresb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/uresb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/uresb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0c1a</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/uresb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/uresb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="uresb.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="resources.vcxproj">
-      <Project>{69437707-2fef-4e2c-8c3f-6e6b3d241366}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{92580BF4-F4DA-4024-B3F8-444F982BC72F}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/uresb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/uresb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0c1a</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/uresb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/uresb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/uresb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/uresb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0c1a</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/uresb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/uresb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/uresb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/uresb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0c1a</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/uresb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/uresb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/uresb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/uresb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0c1a</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/uresb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/uresb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="uresb.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="resources.vcxproj">\r
+      <Project>{69437707-2fef-4e2c-8c3f-6e6b3d241366}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index af25e20..2eea148 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  ustring.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
 #include "unicode/ucnv.h"
 #include "unicode/unistr.h"
 
-#ifndef UPRV_LENGTHOF
-#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
-#endif
-
 // helper functions -------------------------------------------------------- ***
 
 // default converter for the platform encoding
index 9196a82..0d469bb 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/ustring.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/ustring.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/ustring.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/ustring.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/ustring.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/ustring.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/ustring.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/ustring.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/ustring.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ustring.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/ustring.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/ustring.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/ustring.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ustring.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/ustring.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/ustring.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ustring.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}</ProjectGuid>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/ustring.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/ustring.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/ustring.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/ustring.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/ustring.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/ustring.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/ustring.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/ustring.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/ustring.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ustring.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/ustring.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/ustring.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/ustring.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ustring.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/ustring.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/ustring.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="ustring.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/source/stubdata/stubdata.c b/source/stubdata/stubdata.c
new file mode 100644 (file)
index 0000000..6493ac4
--- /dev/null
@@ -0,0 +1,76 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/******************************************************************************
+*
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  stubdata.c
+*
+*   Define initialized data that will build into a valid, but empty
+*   ICU data library.  Used to bootstrap the ICU build, which has these
+*   dependencies:
+*       ICU Common library depends on ICU data
+*       ICU data requires data building tools.
+*       ICU data building tools require the ICU common library.
+*
+*   The stub data library (for which this file is the source) is sufficient
+*   for running the data building tools.
+*
+*/
+#include "unicode/utypes.h"
+#include "unicode/udata.h"
+#include "unicode/uversion.h"
+
+
+typedef struct {
+    uint16_t headerSize;
+    uint8_t magic1, magic2;
+    UDataInfo info;
+    char padding[8];
+    uint32_t count, reserved;
+    /*
+    const struct {
+    const char *const name; 
+    const void *const data;
+    } toc[1];
+    */
+   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
+                                   /*        pointerTOC to OffsetTOC.     */
+} ICU_Data_Header;
+
+U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
+    32,          /* headerSize */
+    0xda,        /* magic1,  (see struct MappedData in udata.c)  */
+    0x27,        /* magic2     */
+    {            /*UDataInfo   */
+        sizeof(UDataInfo),      /* size        */
+        0,                      /* reserved    */
+
+#if U_IS_BIG_ENDIAN
+        1,
+#else
+        0,
+#endif
+
+        U_CHARSET_FAMILY,
+        sizeof(UChar),   
+        0,               /* reserved      */
+        {                /* data format identifier */
+           0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
+           {1, 0, 0, 0},   /* format version major, minor, milli, micro */
+           {0, 0, 0, 0}    /* dataVersion   */
+    },
+    {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
+    0,                  /* count        */
+    0,                  /* Reserved     */
+    {                   /*  TOC structure */
+/*        {    */
+          0 , 0 , 0, 0  /* name and data entries.  Count says there are none,  */
+                        /*  but put one in just in case.                       */
+/*        }  */
+    }
+};
+
+
index 147f2f7..36291a3 100644 (file)
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin\icudt59.dll</OutputFile>
+      <OutputFile>..\..\bin\icudt58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
       <ProgramDatabaseFile>.\x86\Release\icudt.pdb</ProgramDatabaseFile>
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin\icudt59.dll</OutputFile>
+      <OutputFile>..\..\bin\icudt58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\x86\Debug/icudt.pdb</ProgramDatabaseFile>
       <NoEntryPoint>true</NoEntryPoint>
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin64\icudt59.dll</OutputFile>
+      <OutputFile>..\..\bin64\icudt58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
       <ProgramDatabaseFile>.\x64\Release\icudt.pdb</ProgramDatabaseFile>
       <Command>echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." &gt; "$(ProjectDir)stubdatabuilt.txt"</Command>
     </PreLinkEvent>
     <Link>
-      <OutputFile>..\..\bin64\icudt59.dll</OutputFile>
+      <OutputFile>..\..\bin64\icudt58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\x64\Debug/icudt.pdb</ProgramDatabaseFile>
       <NoEntryPoint>true</NoEntryPoint>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClCompile Include="stubdata.cpp" />
+    <ClCompile Include="stubdata.c" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="..\data\misc\icudata.rc">
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index da86a1b..f274259 100644 (file)
@@ -15,7 +15,7 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="stubdata.cpp">
+    <ClCompile Include="stubdata.c">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>
@@ -24,4 +24,4 @@
       <Filter>Resource Files</Filter>
     </ResourceCompile>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
index a8edc18..5cf33bf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  bocu1tst.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 191f065..ee2a17c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d10f61d..3b824ef 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d10b345..af64956 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6c5af06..e759be8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d976eeb..8be989c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 0dd20dc..f9c2691 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2013 International Business Machines 
index 9f68f0b..398db3c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -10,7 +10,7 @@
 * File CBIAPTS.C
 *
 * Modification History:
-*        Name                     Description
+*        Name                     Description            
 *     Madhu Katragadda              Creation
 *********************************************************************************/
 /*C API TEST FOR BREAKITERATOR */
@@ -68,9 +68,7 @@ void addBrkIterAPITest(TestNode** root)
     addTest(root, &TestBreakIteratorTailoring, "tstxtbd/cbiapts/TestBreakIteratorTailoring");
     addTest(root, &TestBreakIteratorRefresh, "tstxtbd/cbiapts/TestBreakIteratorRefresh");
     addTest(root, &TestBug11665, "tstxtbd/cbiapts/TestBug11665");
-#if !UCONFIG_NO_FILTERED_BREAK_ITERATION
     addTest(root, &TestBreakIteratorSuppressions, "tstxtbd/cbiapts/TestBreakIteratorSuppressions");
-#endif
 }
 
 #define CLONETEST_ITERATOR_COUNT 2
@@ -130,7 +128,7 @@ static UChar* toUChar(const char *src, void **freeHook) {
     if (dest == NULL) {
         return NULL;
     }
-
+    
     dest->link = (StringStruct*)(*freeHook);
     *freeHook = dest;
     return dest->str;
@@ -166,7 +164,7 @@ static void TestBreakIteratorCAPI()
 
 /*test ubrk_open()*/
     log_verbose("\nTesting BreakIterator open functions\n");
-
+                                            
     /* Use french for fun */
     word         = ubrk_open(UBRK_WORD, "en_US", text, u_strlen(text), &status);
     if(status == U_FILE_ACCESS_ERROR) {
@@ -178,7 +176,7 @@ static void TestBreakIteratorCAPI()
     else{
         log_verbose("PASS: Successfully opened  word breakiterator\n");
     }
-
+    
     sentence     = ubrk_open(UBRK_SENTENCE, "en_US", text, u_strlen(text), &status);
     if(U_FAILURE(status)){
         log_err_status(status, "FAIL: Error in ubrk_open() for sentence breakiterator: %s\n", myErrorName(status));
@@ -187,7 +185,7 @@ static void TestBreakIteratorCAPI()
     else{
         log_verbose("PASS: Successfully opened  sentence breakiterator\n");
     }
-
+    
     line         = ubrk_open(UBRK_LINE, "en_US", text, u_strlen(text), &status);
     if(U_FAILURE(status)){
         log_err("FAIL: Error in ubrk_open() for line breakiterator: %s\n", myErrorName(status));
@@ -196,7 +194,7 @@ static void TestBreakIteratorCAPI()
     else{
         log_verbose("PASS: Successfully opened  line breakiterator\n");
     }
-
+    
     character     = ubrk_open(UBRK_CHARACTER, "en_US", text, u_strlen(text), &status);
     if(U_FAILURE(status)){
         log_err("FAIL: Error in ubrk_open() for character breakiterator: %s\n", myErrorName(status));
@@ -234,10 +232,10 @@ static void TestBreakIteratorCAPI()
     }
     for(i=0;i<count;i++)
     {
-        log_verbose("%s\n", ubrk_getAvailable(i));
+        log_verbose("%s\n", ubrk_getAvailable(i)); 
         if (ubrk_getAvailable(i) == 0)
             log_err("No locale for which breakiterator is applicable\n");
-        else
+        else 
             log_verbose("A locale %s for which breakiterator is applicable\n",ubrk_getAvailable(i));
     }
 
@@ -260,10 +258,10 @@ static void TestBreakIteratorCAPI()
     if(end!=49)
         log_err("error ubrk_last(word) did not return 49\n");
     log_verbose("last (word = %d\n", (int32_t)end);
-
+    
     pos=ubrk_previous(word);
     log_verbose("%d   %d\n", end, pos);
-
+     
     pos=ubrk_previous(word);
     log_verbose("%d \n", pos);
 
@@ -279,7 +277,7 @@ static void TestBreakIteratorCAPI()
     }
 
 
-
+    
     log_verbose("\nTesting the functions for character\n");
     ubrk_first(character);
     pos = ubrk_following(character, 5);
@@ -294,7 +292,7 @@ static void TestBreakIteratorCAPI()
     if(pos!=21)
        log_err("error ubrk_preceding(character,22) did not return 21\n");
     log_verbose("preceding(character,22) = %d\n", (int32_t)pos);
-
+    
 
     log_verbose("\nTesting the functions for line\n");
     pos=ubrk_first(line);
@@ -306,7 +304,7 @@ static void TestBreakIteratorCAPI()
         log_err("error ubrk_following(line) did not return 22\n");
     log_verbose("following (line) = %d\n", (int32_t)pos);
 
-
+    
     log_verbose("\nTesting the functions for sentence\n");
     ubrk_first(sentence);
     pos = ubrk_current(sentence);
@@ -323,8 +321,8 @@ static void TestBreakIteratorCAPI()
     if (ubrk_first(sentence)!=ubrk_current(sentence)) {
         log_err("error in ubrk_first() or ubrk_current()\n");
     }
-
-
+    
     /*---- */
     /*Testing ubrk_open and ubrk_close()*/
    log_verbose("\nTesting open and close for us locale\n");
@@ -370,7 +368,7 @@ static void TestBreakIteratorCAPI()
 static void TestBreakIteratorSafeClone(void)
 {
     UChar text[51];     /* Keep this odd to test for 64-bit memory alignment */
-                        /*  NOTE:  This doesn't reliably force mis-alignment of following items. */
+                        /*  NOTE:  This doesn't reliably force mis-alignment of following items. */ 
     uint8_t buffer [CLONETEST_ITERATOR_COUNT] [U_BRK_SAFECLONE_BUFFERSIZE];
     int32_t bufferSize = U_BRK_SAFECLONE_BUFFERSIZE;
 
@@ -528,7 +526,7 @@ static UBreakIterator * testOpenRules(char *rules) {
     bi = ubrk_openRules(ruleSourceU,  -1,     /*  The rules  */
                         NULL,  -1,            /*  The text to be iterated over. */
                         &parseErr, &status);
-
+    
     if (U_FAILURE(status)) {
         log_data_err("FAIL: ubrk_openRules: ICU Error \"%s\" (Are you missing data?)\n", u_errorName(status));
         bi = 0;
@@ -588,43 +586,6 @@ static void TestBreakIteratorRules() {
         }
     }
 
-    /* #12914 add basic sanity test for ubrk_getBinaryRules, ubrk_openBinaryRules */
-    /* Underlying functionality checked in C++ rbbiapts.cpp TestRoundtripRules */
-    status = U_ZERO_ERROR;
-    int32_t rulesLength = ubrk_getBinaryRules(bi, NULL, 0, &status); /* preflight */
-    if (U_FAILURE(status)) {
-        log_err("FAIL: ubrk_getBinaryRules preflight err: %s", u_errorName(status));
-    } else {
-        uint8_t* binaryRules = (uint8_t*)uprv_malloc(rulesLength);
-        if (binaryRules == NULL) {
-            log_err("FAIL: unable to malloc rules buffer, size %u", rulesLength);
-        } else {
-            rulesLength = ubrk_getBinaryRules(bi, binaryRules, rulesLength, &status);
-            if (U_FAILURE(status)) {
-                log_err("FAIL: ubrk_getBinaryRules err: %s", u_errorName(status));
-            } else {
-                UBreakIterator* bi2 = ubrk_openBinaryRules(binaryRules, rulesLength, uData, -1, &status);
-                if (U_FAILURE(status)) {
-                    log_err("FAIL: ubrk_openBinaryRules err: %s", u_errorName(status));
-                } else {
-                    int32_t maxCount = sizeof(breaks); /* fail-safe test limit */
-                    int32_t pos2 = ubrk_first(bi2);
-                    pos = ubrk_first(bi);
-                    do {
-                        if (pos2 != pos) {
-                            log_err("FAIL: interator from ubrk_openBinaryRules does not match original, get pos = %d instead of %d", pos2, pos);
-                        }
-                        pos2 = ubrk_next(bi2);
-                        pos = ubrk_next(bi);
-                    } while ((pos != UBRK_DONE || pos2 != UBRK_DONE) && maxCount-- > 0);
-                    
-                    ubrk_close(bi2);
-                }
-            }
-            uprv_free(binaryRules);
-        }
-    }
-
     freeToUCharStrings(&freeHook);
     ubrk_close(bi);
 }
@@ -848,7 +809,7 @@ static void TestBreakIteratorTailoring(void) {
             }
             if (!foundError && offsindx < testPtr->numOffsets) {
                 log_err("FAIL: locale %s, break type %d, ubrk_next expected %d, got UBRK_DONE\n",
-                        testPtr->locale, testPtr->type, testPtr->offsFwd[offsindx]);
+                       testPtr->locale, testPtr->type, testPtr->offsFwd[offsindx]);
             }
 
             foundError = FALSE;
@@ -865,7 +826,7 @@ static void TestBreakIteratorTailoring(void) {
             }
             if (!foundError && offsindx < testPtr->numOffsets) {
                 log_err("FAIL: locale %s, break type %d, ubrk_previous expected %d, got UBRK_DONE\n",
-                        testPtr->locale, testPtr->type, testPtr->offsRev[offsindx]);
+                       testPtr->locale, testPtr->type, testPtr->offsRev[offsindx]);
             }
 
             ubrk_close(ubrkiter);
@@ -890,7 +851,7 @@ static void TestBreakIteratorRefresh(void) {
     UBreakIterator *bi;
     UText ut1 = UTEXT_INITIALIZER;
     UText ut2 = UTEXT_INITIALIZER;
-
+    
     bi = ubrk_open(UBRK_LINE, "en_US", NULL, 0, &status);
     TEST_ASSERT_SUCCESS(status);
     if (U_FAILURE(status)) {
@@ -914,7 +875,7 @@ static void TestBreakIteratorRefresh(void) {
         TEST_ASSERT_SUCCESS(status);
         ubrk_refreshUText(bi, &ut2, &status);
         TEST_ASSERT_SUCCESS(status);
-
+    
         /* Find the following matches, now working in the moved string. */
         TEST_ASSERT(5 == ubrk_next(bi));
         TEST_ASSERT(7 == ubrk_next(bi));
@@ -1033,7 +994,7 @@ static const TestBISuppressionsItem testBISuppressionsItems[] = {
 
 static void TestBreakIteratorSuppressions(void) {
     const TestBISuppressionsItem * itemPtr;
-
+    
     for (itemPtr = testBISuppressionsItems; itemPtr->locale != NULL; itemPtr++) {
         UChar textU[kTextULenMax];
         int32_t textULen = u_unescape(itemPtr->text, textU, kTextULenMax);
index 838c7e6..6f28e8b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0db1b4d..6dc91f2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  cbididat.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0d2fe4f..9fd78b1 100644 (file)
@@ -1,9 +1,9 @@
 /********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html
  ********************************************************************/
 /*   file name:  cbiditransformtst.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index a902da7..beba262 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  cbiditst.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -90,7 +90,6 @@ static void testContext(void);
 static void doTailTest(void);
 
 static void testBracketOverflow(void);
-static void TestExplicitLevel0();
 
 /* new BIDI API */
 static void testReorderingMode(void);
@@ -139,7 +138,6 @@ addComplexTest(TestNode** root) {
     addTest(root, testGetBaseDirection, "complex/bidi/testGetBaseDirection");
     addTest(root, testContext, "complex/bidi/testContext");
     addTest(root, testBracketOverflow, "complex/bidi/TestBracketOverflow");
-    addTest(root, &TestExplicitLevel0, "complex/bidi/TestExplicitLevel0");
 
     addTest(root, doArabicShapingTest, "complex/arabic-shaping/ArabicShapingTest");
     addTest(root, doLamAlefSpecialVLTRArabicShapingTest, "complex/arabic-shaping/lamalef");
@@ -4924,24 +4922,3 @@ testBracketOverflow(void) {
     ubidi_close(bidi);
 }
 
-static void TestExplicitLevel0() {
-    // The following used to fail with an error, see ICU ticket #12922.
-    static const UChar text[2] = { 0x202d, 0x05d0 };
-    static UBiDiLevel embeddings[2] = { 0, 0 };
-    UErrorCode errorCode = U_ZERO_ERROR;
-    UBiDi *bidi = ubidi_open();
-    ubidi_setPara(bidi, text, 2, UBIDI_DEFAULT_LTR , embeddings, &errorCode);
-    if (U_FAILURE(errorCode)) {
-        log_err("ubidi_setPara() - %s", u_errorName(errorCode));
-    } else {
-        UBiDiLevel level0 = ubidi_getLevelAt(bidi, 0);
-        UBiDiLevel level1 = ubidi_getLevelAt(bidi, 1);
-        if (level0 != 1 || level1 != 1) {
-            log_err("resolved levels != 1: { %d, %d }\n", level0, level1);
-        }
-        if (embeddings[0] != 1 || embeddings[1] != 1) {
-            log_err("modified embeddings[] levels != 1: { %d, %d }\n", embeddings[0], embeddings[1]);
-        }
-    }
-    ubidi_close(bidi);
-}
index 2044458..5c3d697 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  cbiditst.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 0406a15..0e53d66 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7f03cb1..5338ac6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 7f36b05..12b3410 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4ae23ce..2f6dc7a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -24,7 +24,6 @@
 #include "unicode/putil.h"
 #include "unicode/uset.h"
 #include "unicode/ustring.h"
-#include "unicode/utf8.h"
 #include "ucnv_bld.h" /* for sizeof(UConverter) */
 #include "cmemory.h"  /* for UAlignedMemory */
 #include "cintltst.h"
index 6b1a0f7..937ebf9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b42dfd7..d82a944 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5367155..3998049 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index de3c908..0a1f7ab 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a2245a3..59016ea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index aa6f644..87e88e3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5c52ce8..806ef39 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3c3326c..72110fa 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2011-2016, International Business Machines Corporation
index acdfa6c..c1137aa 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index ef8b33c..7b4e245 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 697633c..420f9e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index baeb6a9..8e4b030 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 447bd89..8f223bd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3966e11..caabd3a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 66ca85b..2a4ed39 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 156ac07..5cfe70f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 228fe81..4f86668 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 14e35fa..0bf76cb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d81d90c..0234c9a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2009,2014, International Business Machines
index ec03e18..eff4123 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6ed740c..9f0cbf3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a5b6bbe..b87a5fe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index de35646..430dde7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c2c6102..23c101b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e857afb..193d75c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9b4957e..68b5cc7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0e5340b..fdfd9c5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5d1a4a8..d2ab2f6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 40a0b94..0b4feca 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index ef6a42f..9eea57a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c7e409a..81403f6 100644 (file)
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 895b29b..c846c52 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5673e8f..7e53971 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index c16ae8f..d7ce9ef 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 9494c44..79b1847 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 79b9120..b2024a8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 2e7de58..2bbab85 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -50,7 +50,6 @@ static void TestDisplayNameBrackets(void);
 static void TestUnicodeDefines(void);
 
 static void TestIsRightToLeft(void);
-static void TestBadLocaleIDs(void);
 
 void PrintDataTable();
 
@@ -260,7 +259,6 @@ void addLocaleTest(TestNode** root)
     TESTCASE(TestToLegacyKey);
     TESTCASE(TestToUnicodeLocaleType);
     TESTCASE(TestToLegacyType);
-    TESTCASE(TestBadLocaleIDs);
 }
 
 
@@ -1828,38 +1826,27 @@ static void TestKeywordVariantParsing(void)
     static const struct {
         const char *localeID;
         const char *keyword;
-        const char *expectedValue; /* NULL if failure is expected */
+        const char *expectedValue;
     } testCases[] = {
-        { "de_DE@  C o ll A t i o n   = Phonebook   ", "c o ll a t i o n", NULL }, /* malformed key name */
+        { "de_DE@  C o ll A t i o n   = Phonebook   ", "c o ll a t i o n", "Phonebook" },
         { "de_DE", "collation", ""},
         { "de_DE@collation=PHONEBOOK", "collation", "PHONEBOOK" },
         { "de_DE@currency = euro; CoLLaTion   = PHONEBOOk", "collatiON", "PHONEBOOk" },
     };
     
-    UErrorCode status;
+    UErrorCode status = U_ZERO_ERROR;
+    
     int32_t i = 0;
     int32_t resultLen = 0;
     char buffer[256];
     
     for(i = 0; i < UPRV_LENGTHOF(testCases); i++) {
         *buffer = 0;
-        status = U_ZERO_ERROR;
         resultLen = uloc_getKeywordValue(testCases[i].localeID, testCases[i].keyword, buffer, 256, &status);
         (void)resultLen;    /* Suppress set but not used warning. */
-        if (testCases[i].expectedValue) {
-            /* expect success */
-            if (U_FAILURE(status)) {
-                log_err("Expected to extract \"%s\" from \"%s\" for keyword \"%s\". Instead got status %s\n",
-                    testCases[i].expectedValue, testCases[i].localeID, testCases[i].keyword, u_errorName(status));
-            } else if (uprv_strcmp(testCases[i].expectedValue, buffer) != 0) {
-                log_err("Expected to extract \"%s\" from \"%s\" for keyword \"%s\". Instead got \"%s\"\n",
-                    testCases[i].expectedValue, testCases[i].localeID, testCases[i].keyword, buffer);
-            }
-        } else if (U_SUCCESS(status)) {
-            /* expect failure */
-            log_err("Expected failure but got success from \"%s\" for keyword \"%s\". Got \"%s\"\n",
-                testCases[i].localeID, testCases[i].keyword, buffer);
-            
+        if(uprv_strcmp(testCases[i].expectedValue, buffer) != 0) {
+            log_err("Expected to extract \"%s\" from \"%s\" for keyword \"%s\". Got \"%s\" instead\n",
+                testCases[i].expectedValue, testCases[i].localeID, testCases[i].keyword, buffer);
         }
     }
 }
@@ -1912,40 +1899,7 @@ static const struct {
   /* 4. removal of only item */
   { "de@collation=phonebook", "collation", NULL, "de" },
 #endif
-  { "de@collation=phonebook", "Currency", "CHF", "de@collation=phonebook;currency=CHF" },
-  /* cases with legal extra spacing */
-  /*31*/{ "en_US@ calendar = islamic", "calendar", "japanese", "en_US@calendar=japanese" },
-  /*32*/{ "en_US@ calendar = gregorian ; collation = phonebook", "calendar", "japanese", "en_US@calendar=japanese;collation=phonebook" },
-  /*33*/{ "en_US@ calendar = islamic", "currency", "CHF", "en_US@calendar=islamic;currency=CHF" },
-  /*34*/{ "en_US@ currency = CHF", "calendar", "japanese", "en_US@calendar=japanese;currency=CHF" },
-  /* cases in which setKeywordValue expected to fail (implied by NULL for expected); locale need not be canonical */
-  /*35*/{ "en_US@calendar=gregorian;", "calendar", "japanese", NULL },
-  /*36*/{ "en_US@calendar=gregorian;=", "calendar", "japanese", NULL },
-  /*37*/{ "en_US@calendar=gregorian;currency=", "calendar", "japanese", NULL },
-  /*38*/{ "en_US@=", "calendar", "japanese", NULL },
-  /*39*/{ "en_US@=;", "calendar", "japanese", NULL },
-  /*40*/{ "en_US@= ", "calendar", "japanese", NULL },
-  /*41*/{ "en_US@ =", "calendar", "japanese", NULL },
-  /*42*/{ "en_US@ = ", "calendar", "japanese", NULL },
-  /*43*/{ "en_US@=;calendar=gregorian", "calendar", "japanese", NULL },
-  /*44*/{ "en_US@= calen dar = gregorian", "calendar", "japanese", NULL },
-  /*45*/{ "en_US@= calendar = greg orian", "calendar", "japanese", NULL },
-  /*46*/{ "en_US@=;cal...endar=gregorian", "calendar", "japanese", NULL },
-  /*47*/{ "en_US@=;calendar=greg...orian", "calendar", "japanese", NULL },
-  /*48*/{ "en_US@calendar=gregorian", "cale ndar", "japanese", NULL },
-  /*49*/{ "en_US@calendar=gregorian", "calendar", "japa..nese", NULL },
-  /* cases in which getKeywordValue and setKeyword expected to fail (implied by NULL for value and expected) */
-  /*50*/{ "en_US@=", "calendar", NULL, NULL },
-  /*51*/{ "en_US@=;", "calendar", NULL, NULL },
-  /*52*/{ "en_US@= ", "calendar", NULL, NULL },
-  /*53*/{ "en_US@ =", "calendar", NULL, NULL },
-  /*54*/{ "en_US@ = ", "calendar", NULL, NULL },
-  /*55*/{ "en_US@=;calendar=gregorian", "calendar", NULL, NULL },
-  /*56*/{ "en_US@= calen dar = gregorian", "calendar", NULL, NULL },
-  /*57*/{ "en_US@= calendar = greg orian", "calendar", NULL, NULL },
-  /*58*/{ "en_US@=;cal...endar=gregorian", "calendar", NULL, NULL },
-  /*59*/{ "en_US@=;calendar=greg...orian", "calendar", NULL, NULL },
-  /*60*/{ "en_US@calendar=gregorian", "cale ndar", NULL, NULL },
+  { "de@collation=phonebook", "Currency", "CHF", "de@collation=phonebook;currency=CHF" }
 };
 
 
@@ -1958,59 +1912,31 @@ static void TestKeywordSet(void)
     char cbuffer[1024];
 
     for(i = 0; i < UPRV_LENGTHOF(kwSetTestCases); i++) {
-      UErrorCode status = U_ZERO_ERROR;
-      memset(buffer,'%',1023);
-      strcpy(buffer, kwSetTestCases[i].l);
+        UErrorCode status = U_ZERO_ERROR;
+        memset(buffer,'%',1023);
+        strcpy(buffer, kwSetTestCases[i].l);
 
-      if (kwSetTestCases[i].x != NULL) {
         uloc_canonicalize(kwSetTestCases[i].l, cbuffer, 1023, &status);
         if(strcmp(buffer,cbuffer)) {
           log_verbose("note: [%d] wasn't canonical, should be: '%s' not '%s'. Won't check for canonicity in output.\n", i, cbuffer, buffer);
         }
-        /* sanity check test case results for canonicity */
+          /* sanity check test case results for canonicity */
         uloc_canonicalize(kwSetTestCases[i].x, cbuffer, 1023, &status);
         if(strcmp(kwSetTestCases[i].x,cbuffer)) {
           log_err("%s:%d: ERROR: kwSetTestCases[%d].x = '%s', should be %s (must be canonical)\n", __FILE__, __LINE__, i, kwSetTestCases[i].x, cbuffer);
         }
 
-        status = U_ZERO_ERROR;
         resultLen = uloc_setKeywordValue(kwSetTestCases[i].k, kwSetTestCases[i].v, buffer, 1023, &status);
         if(U_FAILURE(status)) {
-          log_err("Err on test case %d for setKeywordValue: got error %s\n", i, u_errorName(status));
-        } else if(strcmp(buffer,kwSetTestCases[i].x) || ((int32_t)strlen(buffer)!=resultLen)) {
-          log_err("FAIL: #%d setKeywordValue: %s + [%s=%s] -> %s (%d) expected %s (%d)\n", i, kwSetTestCases[i].l, kwSetTestCases[i].k,
+          log_err("Err on test case %d: got error %s\n", i, u_errorName(status));
+          continue;
+        }
+        if(strcmp(buffer,kwSetTestCases[i].x) || ((int32_t)strlen(buffer)!=resultLen)) {
+          log_err("FAIL: #%d: %s + [%s=%s] -> %s (%d) expected %s (%d)\n", i, kwSetTestCases[i].l, kwSetTestCases[i].k,
                   kwSetTestCases[i].v, buffer, resultLen, kwSetTestCases[i].x, strlen(buffer));
         } else {
           log_verbose("pass: #%d: %s + [%s=%s] -> %s\n", i, kwSetTestCases[i].l, kwSetTestCases[i].k, kwSetTestCases[i].v,buffer);
         }
-
-        if (kwSetTestCases[i].v != NULL && kwSetTestCases[i].v[0] != 0) {
-          status = U_ZERO_ERROR;
-          resultLen = uloc_getKeywordValue(kwSetTestCases[i].x, kwSetTestCases[i].k, buffer, 1023, &status);
-          if(U_FAILURE(status)) {
-            log_err("Err on test case %d for getKeywordValue: got error %s\n", i, u_errorName(status));
-          } else if (resultLen != uprv_strlen(kwSetTestCases[i].v) || uprv_strcmp(buffer, kwSetTestCases[i].v) != 0) {
-            log_err("FAIL: #%d getKeywordValue: got %s (%d) expected %s (%d)\n", i, buffer, resultLen,
-                    kwSetTestCases[i].v, uprv_strlen(kwSetTestCases[i].v));
-          }
-        }
-      } else {
-        /* test cases expected to result in error */
-        status = U_ZERO_ERROR;
-        resultLen = uloc_setKeywordValue(kwSetTestCases[i].k, kwSetTestCases[i].v, buffer, 1023, &status);
-        if(U_SUCCESS(status)) {
-          log_err("Err on test case %d for setKeywordValue: expected to fail but succeeded, got %s (%d)\n", i, buffer, resultLen);
-        }
-
-        if (kwSetTestCases[i].v == NULL) {
-          status = U_ZERO_ERROR;
-          strcpy(cbuffer, kwSetTestCases[i].l);
-          resultLen = uloc_getKeywordValue(cbuffer, kwSetTestCases[i].k, buffer, 1023, &status);
-          if(U_SUCCESS(status)) {
-            log_err("Err on test case %d for getKeywordValue: expected to fail but succeeded\n", i);
-          }
-        }
-      }
     }
 }
 
@@ -6268,40 +6194,3 @@ static void TestIsRightToLeft() {
         log_err("uloc_isRightToLeft() failed");
     }
 }
-
-typedef struct {
-    const char * badLocaleID;
-    const char * displayLocale;
-    const char * expectedName;
-    UErrorCode   expectedStatus;
-} BadLocaleItem;
-
-static const BadLocaleItem badLocaleItems[] = {
-    { "-9223372036854775808", "en", "9223372036854775808", U_USING_DEFAULT_WARNING },
-    /* add more in the future */
-    { NULL, NULL, NULL, U_ZERO_ERROR } /* terminator */
-};
-
-enum { kUBufDispNameMax = 128, kBBufDispNameMax = 256 };
-
-static void TestBadLocaleIDs() {
-    const BadLocaleItem* itemPtr;
-    for (itemPtr = badLocaleItems; itemPtr->badLocaleID != NULL; itemPtr++) {
-        UChar ubufExpect[kUBufDispNameMax], ubufGet[kUBufDispNameMax];
-        UErrorCode status = U_ZERO_ERROR;
-        int32_t ulenExpect = u_unescape(itemPtr->expectedName, ubufExpect, kUBufDispNameMax);
-        int32_t ulenGet = uloc_getDisplayName(itemPtr->badLocaleID, itemPtr->displayLocale, ubufGet, kUBufDispNameMax, &status);
-        if (status != itemPtr->expectedStatus ||
-                (U_SUCCESS(status) && (ulenGet != ulenExpect || u_strncmp(ubufGet, ubufExpect, ulenExpect) != 0))) {
-            char bbufExpect[kBBufDispNameMax], bbufGet[kBBufDispNameMax];
-            u_austrncpy(bbufExpect, ubufExpect, ulenExpect);
-            u_austrncpy(bbufGet, ubufGet, ulenGet);
-            log_err("FAIL: For localeID %s, displayLocale %s, calling uloc_getDisplayName:\n"
-                    "    expected status %-26s, name (len %2d): %s\n"
-                    "    got      status %-26s, name (len %2d): %s\n",
-                    itemPtr->badLocaleID, itemPtr->displayLocale,
-                    u_errorName(itemPtr->expectedStatus), ulenExpect, bbufExpect,
-                    u_errorName(status), ulenGet, bbufGet );
-        }
-    }
-}
index b757328..c9f2532 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d061aa1..840a44a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 21b6e5a..70983c7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5a1a3ed..94cf754 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e00da2d..4eaf578 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 57484ea..1b680a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2ee0cc9..49713d1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 1fcd2a8..53fda46 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e419fc2..15fec24 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -63,7 +63,6 @@ static void TestCurrencyUsage(void);
 static void TestCurrFmtNegSameAsPositive(void);
 static void TestVariousStylesAndAttributes(void);
 static void TestParseCurrPatternWithDecStyle(void);
-static void TestFormatForFields(void);
 
 #define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x)
 
@@ -94,7 +93,6 @@ void addNumForTest(TestNode** root)
     TESTCASE(TestCurrFmtNegSameAsPositive);
     TESTCASE(TestVariousStylesAndAttributes);
     TESTCASE(TestParseCurrPatternWithDecStyle);
-    TESTCASE(TestFormatForFields);
 }
 
 /* test Parse int 64 */
@@ -2889,111 +2887,4 @@ static void TestParseCurrPatternWithDecStyle() {
     }
 }
 
-/*
- * Ticket #12684
- * Test unum_formatDoubleForFields (and UFieldPositionIterator)
- */
-
-typedef struct {
-    int32_t field;
-    int32_t beginPos;
-    int32_t endPos;
-} FieldsData;
-
-typedef struct {
-    const char *       locale;
-    UNumberFormatStyle style;
-    double             value;
-    const FieldsData * expectedFields;
-} FormatForFieldsItem;
-
-static const UChar patNoFields[] = { 0x0027, 0x0078, 0x0027, 0 }; /* "'x'", for UNUM_PATTERN_DECIMAL */
-
-
-/* "en_US", UNUM_CURRENCY, 123456.0 : "¤#,##0.00" => "$123,456.00" */
-static const FieldsData fields_en_CURR[] = {
-    { UNUM_CURRENCY_FIELD /*7*/,            0, 1 },
-    { UNUM_GROUPING_SEPARATOR_FIELD /*6*/,  4, 5 },
-    { UNUM_INTEGER_FIELD /*0*/,             1, 8 },
-    { UNUM_DECIMAL_SEPARATOR_FIELD /*2*/,   8, 9 },
-    { UNUM_FRACTION_FIELD /*1*/,            9, 11 },
-    { -1, -1, -1 },
-};
-/* "en_US", UNUM_PERCENT, -34 : "#,##0%" => "-34%" */
-static const FieldsData fields_en_PRCT[] = {
-    { UNUM_SIGN_FIELD /*10*/,               0, 1 },
-    { UNUM_INTEGER_FIELD /*0*/,             1, 3 },
-    { UNUM_PERCENT_FIELD /*8*/,             3, 4 },
-    { -1, -1, -1 },
-};
-/* "fr_FR", UNUM_CURRENCY, 123456.0 : "#,##0.00 ¤" => "123,456.00 €" */
-static const FieldsData fields_fr_CURR[] = {
-    { UNUM_GROUPING_SEPARATOR_FIELD /*6*/,  3, 4 },
-    { UNUM_INTEGER_FIELD /*0*/,             0, 7 },
-    { UNUM_DECIMAL_SEPARATOR_FIELD /*2*/,   7, 8 },
-    { UNUM_FRACTION_FIELD /*1*/,            8, 10 },
-    { UNUM_CURRENCY_FIELD /*7*/,           11, 12 },
-    { -1, -1, -1 },
-};
-/* "en_US", UNUM_PATTERN_DECIMAL, 12.0 : "'x'" => "x12" */
-static const FieldsData fields_en_PATN[] = {
-    { UNUM_INTEGER_FIELD /*0*/,             1, 3 },
-    { -1, -1, -1 },
-};
-
-static const FormatForFieldsItem fffItems[] = {
-    { "en_US", UNUM_CURRENCY_STANDARD, 123456.0, fields_en_CURR },
-    { "en_US", UNUM_PERCENT,              -0.34, fields_en_PRCT },
-    { "fr_FR", UNUM_CURRENCY_STANDARD, 123456.0, fields_fr_CURR },
-    { "en_US", UNUM_PATTERN_DECIMAL,       12.0, fields_en_PATN },
-    { NULL, (UNumberFormatStyle)0, 0, NULL },
-};
-
-static void TestFormatForFields(void) {
-    UErrorCode status = U_ZERO_ERROR;
-    UFieldPositionIterator* fpositer = ufieldpositer_open(&status);
-    if ( U_FAILURE(status) ) {
-        log_err("ufieldpositer_open fails, status %s\n", u_errorName(status));
-    } else {
-        const FormatForFieldsItem * itemPtr;
-        for (itemPtr = fffItems; itemPtr->locale != NULL; itemPtr++) {
-            UNumberFormat* unum;
-            status = U_ZERO_ERROR;
-            unum = (itemPtr->style == UNUM_PATTERN_DECIMAL)?
-                unum_open(itemPtr->style, patNoFields, -1, itemPtr->locale, NULL, &status):
-                unum_open(itemPtr->style, NULL, 0, itemPtr->locale, NULL, &status);
-            if ( U_FAILURE(status) ) {
-                log_data_err("unum_open fails for locale %s, style %d: status %s (Are you missing data?)\n", itemPtr->locale, itemPtr->style, u_errorName(status));
-            } else {
-                UChar ubuf[kUBufSize];
-                int32_t ulen = unum_formatDoubleForFields(unum, itemPtr->value, ubuf, kUBufSize, fpositer, &status);
-                if ( U_FAILURE(status) ) {
-                    log_err("unum_formatDoubleForFields fails for locale %s, style %d: status %s\n", itemPtr->locale, itemPtr->style, u_errorName(status));
-                } else {
-                    const FieldsData * fptr;
-                    int32_t field, beginPos, endPos;
-                    for (fptr = itemPtr->expectedFields; TRUE; fptr++) {
-                        field = ufieldpositer_next(fpositer, &beginPos, &endPos);
-                        if (field != fptr->field || (field >= 0 && (beginPos != fptr->beginPos || endPos != fptr->endPos))) {
-                            if (fptr->field >= 0) {
-                                log_err("unum_formatDoubleForFields for locale %s as \"%s\"; expect field %d range %d-%d, get field %d range %d-%d\n",
-                                    itemPtr->locale, aescstrdup(ubuf, ulen), fptr->field, fptr->beginPos, fptr->endPos, field, beginPos, endPos);
-                            } else {
-                                log_err("unum_formatDoubleForFields for locale %s as \"%s\"; expect field < 0, get field %d range %d-%d\n",
-                                    itemPtr->locale, aescstrdup(ubuf, ulen), field, beginPos, endPos);
-                            }
-                            break;
-                        }
-                        if (field < 0) {
-                            break;
-                        }
-                    }
-                }
-                unum_close(unum);
-            }
-        }
-        ufieldpositer_close(fpositer);
-    }
-}
-
 #endif /* #if !UCONFIG_NO_FORMATTING */
index c874388..fbecc11 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 24b6543..8be0e59 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2011-2014, International Business Machines Corporation
 
 #include "unicode/upluralrules.h"
 #include "unicode/ustring.h"
-#include "unicode/uenum.h"
 #include "cintltst.h"
 #include "cmemory.h"
-#include "cstring.h"
 
 static void TestPluralRules(void);
 static void TestOrdinalRules(void);
-static void TestGetKeywords(void);
 
 void addPluralRulesTest(TestNode** root);
 
@@ -29,41 +26,37 @@ void addPluralRulesTest(TestNode** root)
 {
     TESTCASE(TestPluralRules);
     TESTCASE(TestOrdinalRules);
-    TESTCASE(TestGetKeywords);
 }
 
 typedef struct {
     const char * locale;
     double       number;
     const char * keywordExpected;
-    const char * keywordExpectedForDecimals;
 } PluralRulesTestItem;
 
 /* Just a small set of tests for now, other functionality is tested in the C++ tests */
 static const PluralRulesTestItem testItems[] = {
-    { "en",   0, "other", "other" },
-    { "en", 0.5, "other", "other" },
-    { "en",   1, "one",   "other" },
-    { "en", 1.5, "other", "other" },
-    { "en",   2, "other", "other" },
-    { "fr",   0, "one",   "one" },
-    { "fr", 0.5, "one",   "one" },
-    { "fr",   1, "one",   "one" },
-    { "fr", 1.5, "one",   "one" },
-    { "fr",   2, "other", "other" },
-    { "ru",   0, "many",  "other" },
-    { "ru", 0.5, "other", "other" },
-    { "ru",   1, "one",   "other" },
-    { "ru", 1.5, "other", "other" },
-    { "ru",   2, "few",   "other" },
-    { "ru",   5, "many",  "other" },
-    { "ru",  10, "many",  "other" },
-    { "ru",  11, "many",  "other" },
-    { NULL,   0, NULL,    NULL }
+    { "en",   0, "other" },
+    { "en", 0.5, "other" },
+    { "en",   1, "one" },
+    { "en", 1.5, "other" },
+    { "en",   2, "other" },
+    { "fr",   0, "one" },
+    { "fr", 0.5, "one" },
+    { "fr",   1, "one" },
+    { "fr", 1.5, "one" },
+    { "fr",   2, "other" },
+    { "ru",   0, "many" },
+    { "ru", 0.5, "other" },
+    { "ru",   1, "one" },
+    { "ru", 1.5, "other" },
+    { "ru",   2, "few" },
+    { "ru",   5, "many" },
+    { "ru",  10, "many" },
+    { "ru",  11, "many" },
+    { NULL,   0, NULL }
 };
 
-static const UChar twoDecimalPat[] = { 0x23,0x30,0x2E,0x30,0x30,0 }; /* "#0.00" */
-
 enum {
     kKeywordBufLen = 32
 };
@@ -76,7 +69,6 @@ static void TestPluralRules()
         UErrorCode status = U_ZERO_ERROR;
         UPluralRules* uplrules = uplrules_open(testItemPtr->locale, &status);
         if ( U_SUCCESS(status) ) {
-            UNumberFormat* unumfmt;
             UChar keyword[kKeywordBufLen];
             UChar keywordExpected[kKeywordBufLen];
             int32_t keywdLen = uplrules_select(uplrules, testItemPtr->number, keyword, kKeywordBufLen, &status);
@@ -94,30 +86,6 @@ static void TestPluralRules()
                 log_err("FAIL: uplrules_select for locale %s, number %.1f: %s\n",
                         testItemPtr->locale, testItemPtr->number, myErrorName(status) );
             }
-
-            status = U_ZERO_ERROR;
-            unumfmt = unum_open(UNUM_PATTERN_DECIMAL, twoDecimalPat, -1, testItemPtr->locale, NULL, &status);
-            if ( U_SUCCESS(status) ) {
-                keywdLen = uplrules_selectWithFormat(uplrules, testItemPtr->number, unumfmt, keyword, kKeywordBufLen, &status);
-                if (keywdLen >= kKeywordBufLen) {
-                    keyword[kKeywordBufLen-1] = 0;
-                }
-                if ( U_SUCCESS(status) ) {
-                    u_unescape(testItemPtr->keywordExpectedForDecimals, keywordExpected, kKeywordBufLen);
-                    if ( u_strcmp(keyword, keywordExpected) != 0 ) {
-                        char bcharBuf[kKeywordBufLen];
-                        log_data_err("ERROR: uplrules_selectWithFormat for locale %s, number %.1f: expect %s, get %s\n",
-                                 testItemPtr->locale, testItemPtr->number, testItemPtr->keywordExpectedForDecimals, u_austrcpy(bcharBuf,keyword) );
-                    }
-                } else {
-                    log_err("FAIL: uplrules_selectWithFormat for locale %s, number %.1f: %s\n",
-                            testItemPtr->locale, testItemPtr->number, myErrorName(status) );
-                }
-                unum_close(unumfmt);
-            } else {
-                log_err("FAIL: unum_open for locale %s: %s\n", testItemPtr->locale, myErrorName(status) );
-            }
-
             uplrules_close(uplrules);
         } else {
             log_err("FAIL: uplrules_open for locale %s: %s\n", testItemPtr->locale, myErrorName(status) );
@@ -143,113 +111,4 @@ static void TestOrdinalRules() {
     uplrules_close(upr);
 }
 
-/* items for TestGetKeywords */
-
-/* all possible plural keywords, in alphabetical order */
-static const char* knownKeywords[] = {
-    "few",
-    "many",
-    "one",
-    "other",
-    "two",
-    "zero"
-};
-enum {
-    kNumKeywords = UPRV_LENGTHOF(knownKeywords)
-};
-
-/* Return the index of keyword in knownKeywords[], or -1 if not found */
-static int32_t getKeywordIndex(const char* keyword) {
-    int32_t i, compare;
-    for (i = 0; i < kNumKeywords && (compare = uprv_strcmp(keyword,knownKeywords[i])) >= 0; i++) {
-        if (compare == 0) {
-               return i;
-        }
-    }
-    return -1;
-}
-
-typedef struct {
-    const char* locale;
-    const char* keywords[kNumKeywords + 1];
-} KeywordsForLang;
-
-static const KeywordsForLang getKeywordsItems[] = {
-    { "zh", { "other" } },
-    { "en", { "one", "other" } },
-    { "fr", { "one", "other" } },
-    { "lv", { "zero", "one", "other" } },
-    { "hr", { "one", "few", "other" } },
-    { "sl", { "one", "two", "few", "other" } },
-    { "he", { "one", "two", "many", "other" } },
-    { "cs", { "one", "few", "many", "other" } },
-    { "ar", { "zero", "one", "two", "few", "many" , "other" } },
-    { NULL, { NULL } }
-};
-
-static void TestGetKeywords() {
-    /*
-     * We don't know the order in which the enumeration will return keywords,
-     * so we have an array with known keywords in a fixed order and then
-     * parallel arrays of flags for expected and actual results that indicate
-     * which keywords are expected to be or actually are found.
-     */
-    const KeywordsForLang* itemPtr = getKeywordsItems;
-    for (; itemPtr->locale != NULL; itemPtr++) {
-        UPluralRules* uplrules;
-        UEnumeration* uenum;
-        UBool expectKeywords[kNumKeywords];
-        UBool getKeywords[kNumKeywords];
-        int32_t i, iKnown;
-        UErrorCode status = U_ZERO_ERROR;
-        
-        /* initialize arrays for expected and get results */
-        for (i = 0; i < kNumKeywords; i++) {
-            expectKeywords[i] = FALSE;
-            getKeywords[i] = FALSE;
-        }
-        for (i = 0; i < kNumKeywords && itemPtr->keywords[i] != NULL; i++) {
-            iKnown = getKeywordIndex(itemPtr->keywords[i]);
-            if (iKnown >= 0) {
-                expectKeywords[iKnown] = TRUE;
-            }
-        }
-        
-        uplrules = uplrules_openForType(itemPtr->locale, UPLURAL_TYPE_CARDINAL, &status);
-        if (U_FAILURE(status)) {
-            log_err("FAIL: uplrules_openForType for locale %s, UPLURAL_TYPE_CARDINAL: %s\n", itemPtr->locale, myErrorName(status) );
-            continue;
-        }
-        uenum = uplrules_getKeywords(uplrules, &status);
-        if (U_FAILURE(status)) {
-            log_err("FAIL: uplrules_getKeywords for locale %s: %s\n", itemPtr->locale, myErrorName(status) );
-        } else {
-            const char* keyword;
-            int32_t keywordLen, keywordCount = 0;
-            while ((keyword = uenum_next(uenum, &keywordLen, &status)) != NULL && U_SUCCESS(status)) {
-                iKnown = getKeywordIndex(keyword);
-                if (iKnown < 0) {
-                    log_err("FAIL: uplrules_getKeywords for locale %s, unknown keyword %s\n", itemPtr->locale, keyword );
-                } else {
-                    getKeywords[iKnown] = TRUE;
-                }
-                keywordCount++;
-            }
-            if (keywordCount > kNumKeywords) {
-                log_err("FAIL: uplrules_getKeywords for locale %s, got too many keywords %d\n", itemPtr->locale, keywordCount );
-            }
-            if (uprv_memcmp(expectKeywords, getKeywords, kNumKeywords) != 0) {
-                log_err("FAIL: uplrules_getKeywords for locale %s, got wrong keyword set; with reference to knownKeywords:\n"
-                        "        expected { %d %d %d %d %d %d },\n"
-                        "        got      { %d %d %d %d %d %d }\n", itemPtr->locale, 
-                        expectKeywords[0], expectKeywords[1], expectKeywords[2], expectKeywords[3], expectKeywords[4], expectKeywords[5],
-                        getKeywords[0], getKeywords[1], getKeywords[2], getKeywords[3], getKeywords[4], getKeywords[5] );
-            }
-            uenum_close(uenum);
-        }
-        
-        uplrules_close(uplrules);
-    }
-}
-
 #endif /* #if !UCONFIG_NO_FORMATTING */
index 3701cc2..bf3c319 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b88d3d8..8cf5b39 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2016, International Business Machines Corporation
index 03cf52c..0263413 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 16f1687..bda1403 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index da64f20..a5f92e9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -2127,7 +2127,7 @@ static void TestFallback()
         UResourceBundle* tResB;
         UResourceBundle* zoneResource;
         const UChar* version = NULL;
-        static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0033, 0x0031, 0x002E, 0x0033, 0x0033, 0x0000}; // 2.1.31.33 in nn_NO
+        static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0032, 0x0037, 0x002E, 0x0034, 0x0030, 0x0000}; // 2.1.27.40 in nn_NO
 
         if(err != U_ZERO_ERROR){
             log_data_err("Expected U_ZERO_ERROR when trying to test no_NO_NY aliased to nn_NO for Version err=%s\n",u_errorName(err));
index 4760d3a..48add5d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6fb2cfc..6c5e5b7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  cstrcase.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -27,7 +27,6 @@
 #include "unicode/ucasemap.h"
 #include "cmemory.h"
 #include "cintltst.h"
-#include "ucasemap_imp.h"
 #include "ustr_imp.h"
 
 /* test string case mapping functions --------------------------------------- */
@@ -745,12 +744,11 @@ TestUCaseMap(void) {
     if(0!=strcmp(locale, "tr")) {
         log_err("ucasemap_getLocale(ucasemap_open(\"tur\"))==%s!=\"tr\"\n", locale);
     }
-    /* overly long locale IDs may get truncated to their language code to avoid unnecessary allocation */
+    /* overly long locale IDs get truncated to their language code to avoid unnecessary allocation */
     ucasemap_setLocale(csm, "I-kLInGOn-the-quick-brown-fox-jumps-over-the-lazy-dog", &errorCode);
     locale=ucasemap_getLocale(csm);
-    if(0!=strncmp(locale, "i-klingon", 9)) {
-        log_err("ucasemap_getLocale(ucasemap_setLocale(\"I-kLInGOn-the-quick-br...\"))==%s\n"
-                "    does not start with \"i-klingon\"\n", locale);
+    if(0!=strcmp(locale, "i-klingon")) {
+        log_err("ucasemap_getLocale(ucasemap_setLocale(\"I-kLInGOn-the-quick-br...\"))==%s!=\"i-klingon\"\n", locale);
     }
 
     errorCode=U_ZERO_ERROR;
index 0cf3c6f..4443d4f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 2a3cb19..a61e007 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 1cdd1e7..a61a805 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2073a0e..c25e11d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 499f2c0..6f71f0d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 15edead..d6c2170 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -34,7 +34,7 @@
 #include "uprops.h"
 #include "uset_imp.h"
 #include "usc_impl.h"
-#include "udatamem.h"
+#include "udatamem.h" /* for testing ucase_openBinary() */
 #include "cucdapi.h"
 #include "cmemory.h"
 
@@ -59,6 +59,7 @@ static void TestNumericProperties(void);
 static void TestPropertyNames(void);
 static void TestPropertyValues(void);
 static void TestConsistency(void);
+static void TestUCase(void);
 static void TestUBiDiProps(void);
 static void TestCaseFolding(void);
 
@@ -195,6 +196,7 @@ void addUnicodeTest(TestNode** root)
     addTest(root, &TestPropertyNames, "tsutil/cucdtst/TestPropertyNames");
     addTest(root, &TestPropertyValues, "tsutil/cucdtst/TestPropertyValues");
     addTest(root, &TestConsistency, "tsutil/cucdtst/TestConsistency");
+    addTest(root, &TestUCase, "tsutil/cucdtst/TestUCase");
     addTest(root, &TestUBiDiProps, "tsutil/cucdtst/TestUBiDiProps");
     addTest(root, &TestCaseFolding, "tsutil/cucdtst/TestCaseFolding");
 }
@@ -1017,12 +1019,9 @@ unicodeDataLineFn(void *context,
     /* get BiDi category, field 4 */
     *fields[4][1]=0;
     i=MakeDir(fields[4][0]);
-#if U_ICU_VERSION_MAJOR_NUM!=59
-    // TODO: Remove this version check, see ticket #13061.
     if(i!=u_charDirection(c) || i!=u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)) {
         log_err("error: u_charDirection(U+%04lx)==%u instead of %u (%s)\n", c, u_charDirection(c), MakeDir(fields[4][0]), fields[4][0]);
     }
-#endif
 
     /* get Decomposition_Type & Decomposition_Mapping, field 5 */
     d=NULL;
@@ -1263,7 +1262,20 @@ enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCatego
 
     /*
      * Verify default Bidi classes.
-     * See DerivedBidiClass.txt, especially for unassigned code points.
+     * For recent Unicode versions, see UCD.html.
+     *
+     * For older Unicode versions:
+     * See table 3-7 "Bidirectional Character Types" in UAX #9.
+     * http://www.unicode.org/reports/tr9/
+     *
+     * See also DerivedBidiClass.txt for Cn code points!
+     *
+     * Unicode 4.0.1/Public Review Issue #28 (http://www.unicode.org/review/resolved-pri.html)
+     * changed some default values.
+     * In particular, non-characters and unassigned Default Ignorable Code Points
+     * change from L to BN.
+     *
+     * UCD.html version 4.0.1 does not yet reflect these changes.
      */
     if(type==U_UNASSIGNED || type==U_PRIVATE_USE_CHAR) {
         /* enumerate the intersections of defaultBidi ranges with [start..limit[ */
@@ -1277,15 +1289,12 @@ enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCatego
                         shouldBeDir=(UCharDirection)defaultBidi[i][1];
                     }
 
-#if U_ICU_VERSION_MAJOR_NUM!=59
-// TODO: Remove this version check, see ticket #13061.
                     if( u_charDirection(c)!=shouldBeDir ||
                         u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)!=shouldBeDir
                     ) {
                         log_err("error: u_charDirection(unassigned/PUA U+%04lx)=%s should be %s\n",
                             c, dirStrings[u_charDirection(c)], dirStrings[shouldBeDir]);
                     }
-#endif
                     ++c;
                 }
             }
@@ -3247,6 +3256,47 @@ TestConsistency() {
  */
 #define HARDCODED_DATA_4497 1
 
+/* API coverage for ucase.c */
+static void TestUCase() {
+#if !HARDCODED_DATA_4497
+    UDataMemory *pData;
+    UCaseProps *csp;
+    const UCaseProps *ccsp;
+    UErrorCode errorCode;
+
+    /* coverage for ucase_openBinary() */
+    errorCode=U_ZERO_ERROR;
+    pData=udata_open(NULL, UCASE_DATA_TYPE, UCASE_DATA_NAME, &errorCode);
+    if(U_FAILURE(errorCode)) {
+        log_data_err("unable to open " UCASE_DATA_NAME "." UCASE_DATA_TYPE ": %s\n",
+                    u_errorName(errorCode));
+        return;
+    }
+
+    csp=ucase_openBinary((const uint8_t *)pData->pHeader, -1, &errorCode);
+    if(U_FAILURE(errorCode)) {
+        log_err("ucase_openBinary() fails for the contents of " UCASE_DATA_NAME "." UCASE_DATA_TYPE ": %s\n",
+                u_errorName(errorCode));
+        udata_close(pData);
+        return;
+    }
+
+    if(UCASE_LOWER!=ucase_getType(csp, 0xdf)) { /* verify islower(sharp s) */
+        log_err("ucase_openBinary() does not seem to return working UCaseProps\n");
+    }
+
+    ucase_close(csp);
+    udata_close(pData);
+
+    /* coverage for ucase_getDummy() */
+    errorCode=U_ZERO_ERROR;
+    ccsp=ucase_getDummy(&errorCode);
+    if(ucase_tolower(ccsp, 0x41)!=0x41) {
+        log_err("ucase_tolower(dummy, A)!=A\n");
+    }
+#endif
+}
+
 /* API coverage for ubidi_props.c */
 static void TestUBiDiProps() {
 #if !HARDCODED_DATA_4497
index dca9635..5d70521 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index bf1068e..af0fe96 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 6d9b067..d809dd4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  custrtst.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index aa52970..e489886 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e54f898..73bbfcc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index fd2b046..61abda6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 05f2470..cc7e6a6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4cdf377..0e8dd7f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b164c9c..9fa4e37 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  idnatest.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index e485630..5fc0cb0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d1e8453..6562d2a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 407e4fc..fa0afa4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 73a581b..8373429 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cdeb4d6..3aafc93 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 43da0ed..25d71a0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nfsprep.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 8e055eb..ab4ec25 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nfsprep.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 3366b66..6feb485 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index d0a240f..974ee95 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b99d9fc..d3574c4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2ea322c..1ae5bc5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3822ba1..4a4d0e1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  sorttest.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6921356..f012db0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 2d8e34c..18784c8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  spreptst.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index b3ac72d..6edc947 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  spreptst.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 929bf48..abb6680 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 96e5031..0de558c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 95b9a65..d457238 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  trietest.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index bf770a1..6bc456f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  trietest.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6d4dc2d..016965f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2014, International Business Machines
index e4c8ba9..75c608a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e39c46a..2c7453c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
index d8d6ebd..3fbd322 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8895c50..6d6db03 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  udatpg_test.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6148470..acf1085 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uenumtst.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:2
 *
index 165bff4..8183359 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2015, International Business Machines Corporation
index cefbfde..a2a66b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2014-2016, International Business Machines Corporation
index d656964..1d59a8a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 301f188..8cc3746 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2001-2011,2015 International Business Machines 
index d9c3066..0ce2194 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2001-2016 International Business Machines
index 5707cc1..aa934b2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8ce403a..39f9786 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 75547cf..2d2bc01 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 122ba30..75170d8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
index 40bd2d6..7e7506f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 9482883..e6e94ba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 76287cf..3d23512 100644 (file)
@@ -144,7 +144,7 @@ library: common
     unistr_props unistr_case unistr_case_locale unistr_titlecase_brkiter unistr_cnv
     cstr
     uniset_core uniset_props uniset_closure usetiter uset uset_props
-    uiter edits
+    uiter
     ucasemap ucasemap_titlecase_brkiter script_runs
     uprops ubidi_props ucase uscript uscript_props
     ubidi ushape ubiditransform
@@ -461,11 +461,6 @@ group: ustr_titlecase_brkiter
     breakiterator
     ustring_case_locale ucase
 
-group: edits
-    edits.o
-  deps
-    platform
-
 group: ucasemap_titlecase_brkiter
     ucasemap_titlecase_brkiter.o
   deps
@@ -474,7 +469,7 @@ group: ucasemap_titlecase_brkiter
 group: ucasemap
     ucasemap.o
   deps
-    ustring_case ustring_case_locale
+    ustring_case
     resourcebundle  # uloc_getName() etc.
 
 group: ustring_case_locale
@@ -486,7 +481,7 @@ group: ustring_case_locale
 group: ustring_case
     ustrcase.o
   deps
-    ucase edits
+    ucase
 
 group: ucase
     ucase.o
@@ -868,8 +863,6 @@ group: formatting
     decfmtst.o decimfmt.o decimalformatpattern.o compactdecimalformat.o
     numfmt.o unum.o
     winnmfmt.o
-    # pluralrules
-    standardplural.o plurrule.o upluralrules.o
     # scientificnumberformatter - would depend on dcfmtsym, so would be circular.
     scientificnumberformatter.o
     # rbnf
@@ -891,7 +884,7 @@ group: formatting
     choicfmt.o msgfmt.o plurfmt.o selfmt.o umsg.o
   deps
     digitlist formattable format
-    dayperiodrules
+    dayperiodrules pluralrules
     collation collation_builder  # for rbnf
     common
     floating_point  # sqrt() for astro.o
@@ -925,6 +918,14 @@ group: format
   deps
     resourcebundle parsepos uvector32
 
+group: pluralrules
+    standardplural.o plurrule.o upluralrules.o
+  deps
+    digitlist  # plurals depend on decimals
+    patternprops resourcebundle uvector uvector32 unifiedcache
+    unistr_case_locale
+    uclean_i18n
+
 group: regex_cnv
     uregexc.o
   deps
index 55e8339..81aa619 100644 (file)
@@ -114,11 +114,11 @@ drafttest:
        @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_DRAFT_API' > hd_$$incfile.cpp ; \
-         echo '#include "'unicode/$$incfile'.h"' >> hd_$$incfile.cpp ; \
-         echo 'void junk(void);' >> hd_$$incfile.cpp ; \
-         echo 'void junk(){}' >> hd_$$incfile.cpp ; \
-          $(COMPILE.cc) -c $(cppflags) hd_$$incfile.cpp ||FAIL=1 ; \
+         echo '#define U_HIDE_DRAFT_API' > hd_$$incfile.c; \
+         echo '#include "'unicode/$$incfile'.h"' >> hd_$$incfile.c ; \
+         echo 'void junk(void);' >> hd_$$incfile.c ; \
+         echo 'void junk(){}' >> hd_$$incfile.c ; \
+          $(COMPILE.cc) -c $(cppflags) hd_$$incfile.c ||FAIL=1 ; \
        done ;\
        exit $$FAIL
 
@@ -126,11 +126,11 @@ deprtest:
        @FAIL=0; for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_DEPRECATED_API' > hdp_$$incfile.cpp ; \
-         echo '#include "'unicode/$$incfile'.h"' >> hdp_$$incfile.cpp ; \
-         echo 'void junk(void);' >> hdp_$$incfile.cpp ; \
-         echo 'void junk(){}' >> hdp_$$incfile.cpp ; \
-          $(COMPILE.cc) -c $(cppflags) hdp_$$incfile.cpp || FAIL=1; \
+         echo '#define U_HIDE_DEPRECATED_API' > hdp_$$incfile.c; \
+         echo '#include "'unicode/$$incfile'.h"' >> hdp_$$incfile.c ; \
+         echo 'void junk(void);' >> hdp_$$incfile.c ; \
+         echo 'void junk(){}' >> hdp_$$incfile.c ; \
+          $(COMPILE.cc) -c $(cppflags) hdp_$$incfile.c || FAIL=1; \
        done ; \
        exit $$FAIL
 
@@ -139,11 +139,11 @@ internaltest:
         for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_INTERNAL_API' > hin_$$incfile.cpp ; \
-         echo '#include "'unicode/$$incfile'.h"' >> hin_$$incfile.cpp ; \
-         echo 'void junk(void);' >> hin_$$incfile.cpp ; \
-         echo 'void junk(){}' >> hin_$$incfile.cpp ; \
-          $(COMPILE.cc) -c $(cppflags) hin_$$incfile.cpp || FAIL=1 ; \
+         echo '#define U_HIDE_INTERNAL_API' > hin_$$incfile.c; \
+         echo '#include "'unicode/$$incfile'.h"' >> hin_$$incfile.c ; \
+         echo 'void junk(void);' >> hin_$$incfile.c ; \
+         echo 'void junk(){}' >> hin_$$incfile.c ; \
+          $(COMPILE.cc) -c $(cppflags) hin_$$incfile.c || FAIL=1 ; \
        done ; \
        exit $$FAIL
 
@@ -151,11 +151,11 @@ obsoletetest:
        @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
          incfile=`basename $$file .h` ; \
          echo "$@ unicode/$$incfile.h" ; \
-         echo '#define U_HIDE_OBSOLETE_API' > hob_$$incfile.cpp ; \
-         echo '#include "'unicode/$$incfile'.h"' >> hob_$$incfile.cpp ; \
-         echo 'void junk(void);' >> hob_$$incfile.cpp ; \
-         echo 'void junk(){}' >> hob_$$incfile.cpp ; \
-          $(COMPILE.cc) -c $(cppflags) hob_$$incfile.cpp || FAIL=1 ; \
+         echo '#define U_HIDE_OBSOLETE_API' > hob_$$incfile.c; \
+         echo '#include "'unicode/$$incfile'.h"' >> hob_$$incfile.c ; \
+         echo 'void junk(void);' >> hob_$$incfile.c ; \
+         echo 'void junk(){}' >> hob_$$incfile.c ; \
+          $(COMPILE.cc) -c $(cppflags) hob_$$incfile.c || FAIL=1 ; \
        done ; \
        exit $$FAIL
 
index ea6984e..2147ef6 100644 (file)
@@ -23,8 +23,6 @@ bytestrie.h
 bytestriebuilder.h
 calendar.h
 caniter.h
-casemap.h
-char16ptr.h
 chariter.h
 choicfmt.h
 coleitr.h
@@ -45,7 +43,6 @@ dtitvfmt.h
 dtfmtsym.h
 dtptngen.h
 dtrule.h
-edits.h
 enumset.h
 errorcode.h
 fieldpos.h
index afff9a2..1410692 100755 (executable)
@@ -15,21 +15,21 @@ for file in `ls common/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -O0 ht_temp.cpp ;
+    $CXX -c -I common -O0 ht_temp.cpp ;
 done ;
 
 for file in `ls i18n/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -I i18n -O0 ht_temp.cpp ;
+    $CXX -c -I common -I i18n -O0 ht_temp.cpp ;
 done ;
 
 for file in `ls io/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -I i18n -I io -O0 ht_temp.cpp ;
+    $CXX -c -I common -I i18n -I io -O0 ht_temp.cpp ;
 done ;
 
 # layout is removed.
@@ -50,7 +50,7 @@ for file in `ls tools/toolutil/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
+    $CXX -c -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
 done ;
 
 # Exclude tzcode: tools/tzcode/private.h uses an argument "new" in a function declaration.
@@ -64,7 +64,7 @@ for tool in genccode gencmn gencolusb gennorm2 genren gentest icupkg icuswap pkg
         echo $file
         echo '#include "'$file'"' > ht_temp.cpp ;
         echo 'void noop() {}' >> ht_temp.cpp ;
-        $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
+        $CXX -c -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
     done ;
 done ;
 
@@ -74,15 +74,15 @@ for file in `ls tools/ctestfw/unicode/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
+    $CXX -c -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
 done ;
 
 # C not C++ for cintltst
 for file in `ls test/cintltst/*.h`; do
     echo $file
-    echo '#include "'$file'"' > ht_temp.c ;
-    echo 'void noop() {}' >> ht_temp.c ;
-    $CC -c -std=c11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/cintltst -O0 ht_temp.c ;
+    echo '#include "'$file'"' > ht_temp.cpp ;
+    echo 'void noop() {}' >> ht_temp.cpp ;
+    $CC -c -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/cintltst -O0 ht_temp.cpp ;
 done ;
 
 for test in intltest iotest testmap thaitest; do
@@ -90,7 +90,7 @@ for test in intltest iotest testmap thaitest; do
         echo $file
         echo '#include "'$file'"' > ht_temp.cpp ;
         echo 'void noop() {}' >> ht_temp.cpp ;
-        $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
+        $CXX -c -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
     done ;
 done ;
 
index c4ba088..073935f 100644 (file)
@@ -34,8 +34,8 @@ BUILDDIR := $(BUILDDIR:test\\intltest/../../=)
 # Simplify the path for Windows 98
 BUILDDIR := $(BUILDDIR:TEST\\INTLTEST/../../=)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
-CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT= -DUCHAR_TYPE=char16_t
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
 DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
 LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) $(LIB_THREAD)
 
index 0652169..cb23c2a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c747efe..9c54252 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4720d63..e9676e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3383d36..b420e01 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index a3ebd11..763889c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 6bbe153..d288276 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index f18496c..d64d349 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -41,7 +41,6 @@
 #include "apicoll.h"
 #include "unicode/chariter.h"
 #include "unicode/schriter.h"
-#include "unicode/strenum.h"
 #include "unicode/ustring.h"
 #include "unicode/ucol.h"
 
@@ -82,10 +81,17 @@ CollationAPITest::TestProperty(/* char* par */)
     logln("Test ctors : ");
     col = Collator::createInstance(Locale::getEnglish(), success);
     if (U_FAILURE(success)){
-        errcheckln(success, "English Collator creation failed. - %s", u_errorName(success));
+        errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success));
         return;
     }
 
+    StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success);
+    if (U_FAILURE(success)){
+        errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success));
+        return;
+    }
+    delete kwEnum;
+
     col->getVersion(versionArray);
     // Check for a version greater than some value rather than equality
     // so that we need not update the expected version each time.
@@ -225,29 +231,6 @@ CollationAPITest::TestProperty(/* char* par */)
     delete junk;
 }
 
-void CollationAPITest::TestKeywordValues() {
-    IcuTestErrorCode errorCode(*this, "TestKeywordValues");
-    LocalPointer<Collator> col(Collator::createInstance(Locale::getEnglish(), errorCode));
-    if (errorCode.logIfFailureAndReset("English Collator creation failed")) {
-        return;
-    }
-
-    LocalPointer<StringEnumeration> kwEnum(
-        col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode));
-    if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) {
-        return;
-    }
-    assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0);
-    const char *kw;
-    UBool hasStandard = FALSE;
-    while ((kw = kwEnum->next(NULL, errorCode)) != NULL) {
-        if (strcmp(kw, "standard") == 0) {
-            hasStandard = TRUE;
-        }
-    }
-    assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard);
-}
-
 void 
 CollationAPITest::TestRuleBasedColl()
 {
@@ -2483,7 +2466,6 @@ void CollationAPITest::runIndexedTest( int32_t index, UBool exec, const char* &n
     if (exec) logln("TestSuite CollationAPITest: ");
     TESTCASE_AUTO_BEGIN;
     TESTCASE_AUTO(TestProperty);
-    TESTCASE_AUTO(TestKeywordValues);
     TESTCASE_AUTO(TestOperators);
     TESTCASE_AUTO(TestDuplicate);
     TESTCASE_AUTO(TestCompare);
index 4196b2d..b31f967 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
@@ -35,7 +35,6 @@ public:
      * - displayable name in the desired locale
      */
     void TestProperty(/* char* par */);
-    void TestKeywordValues();
 
     /**
     * This tests the RuleBasedCollator
index 87ae7d2..67c43c7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index b956363..4efb04c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 529d7bc..783a92f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  bidiconf.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 375acdc..735f330 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  bytetrietest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index bd46157..53d3d52 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5b1cbc2..4e58c53 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 12a481a..b64f13e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 0aedfad..9eb5a31 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a3c4afa..4e7cd7d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e4c89dc..16dcac2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e1c9fda..e4ef1db 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index f85abf9..c47d67c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation
index d6e5705..2569923 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 2016, International Business Machines Corporation
index 2c952bc..4887a45 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index da7cb41..edc995a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0a6baeb..26b2b04 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index dae3389..81339e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 233f82b..4b9589d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /****************************************************************************************
  * COPYRIGHT: 
index b4d8458..191534b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 94d5055..e628c82 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -481,6 +481,7 @@ void CollationTest::TestFCD() {
     CodePointIterator cpi(cp, UPRV_LENGTHOF(cp));
     checkFCD("FCDUTF16CollationIterator", u16ci, cpi);
 
+#if U_HAVE_STD_STRING
     cpi.resetToStart();
     std::string utf8;
     UnicodeString(s).toUTF8String(utf8);
@@ -490,6 +491,7 @@ void CollationTest::TestFCD() {
         return;
     }
     checkFCD("FCDUTF8CollationIterator", u8ci, cpi);
+#endif
 
     cpi.resetToStart();
     UCharIterator iter;
@@ -1605,6 +1607,7 @@ UBool CollationTest::checkCompareTwo(const char *norm, const UnicodeString &prev
         }
     }
 
+#if U_HAVE_STD_STRING
     // compare(UTF-16) treats unpaired surrogates like unassigned code points.
     // Unpaired surrogates cannot be converted to UTF-8.
     // Create valid UTF-16 strings if necessary, and use those for
@@ -1669,6 +1672,7 @@ UBool CollationTest::checkCompareTwo(const char *norm, const UnicodeString &prev
             return FALSE;
         }
     }
+#endif
 
     UCharIterator leftIter;
     UCharIterator rightIter;
index 1e37c47..89e7a65 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 7400d2b..b77dfbf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 5ced151..c7a475d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 203a438..dadbef3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  convtest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -1023,7 +1023,6 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
     // open the converter
     IcuTestErrorCode errorCode(*this, "ToUnicodeCase");
     LocalUConverterPointer cnv(cnv_open(cc.charset, errorCode));
-    // with no data, the above crashes with "pointer being freed was not allocated" for charset "x11-compound-text", see #13078
     if(errorCode.isFailure()) {
         errcheckln(errorCode, "toUnicode[%d](%s cb=\"%s\" fb=%d flush=%d) ucnv_open() failed - %s",
                 cc.caseNr, cc.charset, cc.cbopt, cc.fallbacks, cc.finalFlush, errorCode.errorName());
index c2d37e4..bfb771c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  convtest.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index b569194..d3cbd58 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index e723619..0d3b6c8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 4edacad..f3424af 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -818,7 +818,7 @@ void CharsetDetectionTest::Ticket6394Test() {
 //               similar Windows and non-Windows SBCS encodings. State was kept in the shared
 //               Charset Recognizer objects, and could be overwritten.
 void CharsetDetectionTest::Ticket6954Test() {
-#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION && !UCONFIG_NO_FORMATTING
+#if !UCONFIG_NO_CONVERSION && !UCONFIG_NO_FORMATTING
     UErrorCode status = U_ZERO_ERROR;
     UnicodeString sISO = "This is a small sample of some English text. Just enough to be sure that it detects correctly.";
     UnicodeString ssWindows("This is another small sample of some English text. Just enough to be sure that it detects correctly."
index 2e0fb3a..374bd9d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index d82ec91..181a0f1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9ee3763..f7bf406 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 658d652..1805e89 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index fee2d8a..98811cb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a382bd5..4ff6917 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ab94793..a85509f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0b986ea..254404e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 1f70284..d11ad19 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index 03c1ca8..7101c66 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 1af3814..555c2f4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 63fff81..6e2279b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -31,7 +31,7 @@
 #include <string.h>
 #include <stdio.h>
 
-#if defined(__GLIBCXX__)
+#if !defined(_MSC_VER)
 namespace std { class type_info; } // WORKAROUND: http://llvm.org/bugs/show_bug.cgi?id=13364
 #endif
 
index e7c43c1..91512df 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index b76eb77..b43824d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 10d1eda..7012962 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 928a722..896d5dd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 390b4e2..31052d4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 2d5b465..3014597 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3879459..af04854 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5bac60e..c2119b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 5780666..c5928c7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ba0929f..bf060d0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -25,7 +25,7 @@
 #include "caltest.h"  // for fieldName
 #include <stdio.h> // for sprintf
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 #include "windttst.h"
 #endif
 
@@ -2374,7 +2374,7 @@ void DateFormatTest::TestZTimeZoneParsing(void) {
 
 void DateFormatTest::TestHost(void)
 {
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
     Win32DateTimeTest::testLocales(this);
 #endif
 }
@@ -2604,10 +2604,6 @@ void DateFormatTest::TestDateFormatSymbolsClone(void)
     Locale loc("de_CH_LUCERNE");
     LocalPointer<DateFormat> fmt(
             DateFormat::createDateInstance(DateFormat::kDefault, loc));
-    if (fmt.isNull()) {
-        dataerrln("FAIL: DateFormat::createDateInstance failed for %s", loc.getName());
-        return;
-    }
     Locale valid1;
     Locale actual1;
     if (!getActualAndValidLocales(*fmt, valid1, actual1)) {
index 711c6ac..63cd1f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index f840b7d..095eb3f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -1597,10 +1597,6 @@ void DateIntervalFormatTest::testTicket11669() {
 void DateIntervalFormatTest::testTicket12065() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<DateIntervalFormat> formatter(DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, Locale::getEnglish(), status), status);
-    if (formatter.isNull()) {
-        dataerrln("FAIL: DateIntervalFormat::createInstance failed for Locale::getEnglish()");
-        return;
-    }
     LocalPointer<DateIntervalFormat> clone(dynamic_cast<DateIntervalFormat *>(formatter->clone()));
     if (*formatter != *clone) {
         errln("%s:%d DateIntervalFormat and clone are not equal.", __FILE__, __LINE__);
index b6cc097..8eea56b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index e9cc4de..29fe564 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -1098,10 +1098,6 @@ void IntlTestDateTimePatternGeneratorAPI::testC() {
 
     for (int32_t i = 0; i < numLocales; ++i) {
         DateTimePatternGenerator *gen = DateTimePatternGenerator::createInstance(Locale(tests[i][0]), status);
-        if (gen == NULL) {
-            dataerrln("FAIL: DateTimePatternGenerator::createInstance failed for %s", tests[i][0]);
-            return;
-        }
         UnicodeString pattern = gen->getBestPattern(tests[i][1], status);
         UnicodeString expectedPattern = tests[i][2];
 
index 701eddf..ec1b7ce 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index fd913bf..35f2cc2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cc794fb..449e591 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cea658a..a627229 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 88a8307..a212a9d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bdea267..38fdcde 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2009,2014, International Business Machines
index 1034413..7248caf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b288b4f..c53c533 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index e6e6ee0..d976276 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index d427d19..cb644a4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4cf19f1..0668c90 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 93af4af..b37ae10 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9337aeb..6bf5ca3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a4b9b7b..287a9d1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index fb6fef1..e363504 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 67d6dd0..7010c5d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
index 3b423b4..02422cc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 956cea6..cf56411 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 66608c4..454102c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  idnaref.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 5b74ff2..60fde9f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  idnaref.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 665460c..8a41848 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 628b6e4..0292366 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ab5ce8c..7096700 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 1a477b9..ff36c55 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 315adfd..9571c13 100644 (file)
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="windttst.cpp">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="winnmtst.cpp">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="idnaconf.cpp" />
     <ClCompile Include="idnaref.cpp" />
     <ClCompile Include="nptrans.cpp" />
-    <ClCompile Include="punyref.cpp" />
+    <ClCompile Include="punyref.c" />
     <ClCompile Include="testidn.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="sfwdchit.cpp" />
     <ClCompile Include="strcase.cpp" />
     <ClCompile Include="ustrtest.cpp">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="utxttest.cpp" />
     <ClCompile Include="cpdtrtst.cpp" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 39a3e4e..65ef6b9 100644 (file)
     <ClCompile Include="simplethread.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
+    <ClCompile Include="strtest.cpp">
+      <Filter>configuration</Filter>
+    </ClCompile>
     <ClCompile Include="tsmthred.cpp">
       <Filter>configuration</Filter>
     </ClCompile>
     <ClCompile Include="nptrans.cpp">
       <Filter>idna</Filter>
     </ClCompile>
-    <ClCompile Include="punyref.cpp">
+    <ClCompile Include="punyref.c">
       <Filter>idna</Filter>
     </ClCompile>
     <ClCompile Include="testidn.cpp">
     <ClCompile Include="strcase.cpp">
       <Filter>strings</Filter>
     </ClCompile>
-    <ClCompile Include="strtest.cpp">
-      <Filter>strings</Filter>
-    </ClCompile>
     <ClCompile Include="ustrtest.cpp">
       <Filter>strings</Filter>
     </ClCompile>
     <ClInclude Include="simplethread.h">
       <Filter>configuration</Filter>
     </ClInclude>
+    <ClInclude Include="strtest.h">
+      <Filter>configuration</Filter>
+    </ClInclude>
     <ClInclude Include="tsmthred.h">
       <Filter>configuration</Filter>
     </ClInclude>
     <ClInclude Include="sfwdchit.h">
       <Filter>strings</Filter>
     </ClInclude>
-    <ClInclude Include="strtest.h">
-      <Filter>strings</Filter>
-    </ClInclude>
     <ClInclude Include="ustrtest.h">
       <Filter>strings</Filter>
     </ClInclude>
index e78a6c5..c589541 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 2aaaa1d..6a0c52c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ae5ae0c..ac9eb4a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5af7601..14910ab 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 84bee28..22412b6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 263e555..99994f5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 819f413..a6eb102 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 67648f7..a2102fe 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 9770025..d9d7489 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -73,8 +73,6 @@ void IntlTestRBNF::runIndexedTest(int32_t index, UBool exec, const char* &name,
         TESTCASE(21, TestMultiplePluralRules);
         TESTCASE(22, TestInfinityNaN);
         TESTCASE(23, TestVariableDecimalPoint);
-        TESTCASE(24, TestLargeNumbers);
-        TESTCASE(25, TestCompactDecimalFormatStyle);
 #else
         TESTCASE(0, TestRBNFDisabled);
 #endif
@@ -2220,69 +2218,6 @@ void IntlTestRBNF::TestVariableDecimalPoint() {
     doTest(&enFormatter, enTestCommaData, true);
 }
 
-void IntlTestRBNF::TestLargeNumbers() {
-    UErrorCode status = U_ZERO_ERROR;
-    RuleBasedNumberFormat rbnf(URBNF_SPELLOUT, Locale::getEnglish(), status);
-
-    const char * const enTestFullData[][2] = {
-            {"-9007199254740991", "minus nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-one"}, // Maximum precision in both a double and a long
-            {"9007199254740991", "nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-one"}, // Maximum precision in both a double and a long
-            {"-9007199254740992", "minus nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-two"}, // Only precisely contained in a long
-            {"9007199254740992", "nine quadrillion seven trillion one hundred ninety-nine billion two hundred fifty-four million seven hundred forty thousand nine hundred ninety-two"}, // Only precisely contained in a long
-            {"9999999999999998", "nine quadrillion nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-eight"},
-            {"9999999999999999", "nine quadrillion nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-nine"},
-            {"999999999999999999", "nine hundred ninety-nine quadrillion nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-nine"},
-            {"1000000000000000000", "1,000,000,000,000,000,000"}, // The rules don't go to 1 quintillion yet
-            {"-9223372036854775809", "-9,223,372,036,854,775,809"}, // We've gone beyond 64-bit precision
-            {"-9223372036854775808", "-9,223,372,036,854,775,808"}, // We've gone beyond +64-bit precision
-            {"-9223372036854775807", "minus 9,223,372,036,854,775,807"}, // Minimum 64-bit precision
-            {"-9223372036854775806", "minus 9,223,372,036,854,775,806"}, // Minimum 64-bit precision + 1
-            {"9223372036854774111", "9,223,372,036,854,774,111"}, // Below 64-bit precision
-            {"9223372036854774999", "9,223,372,036,854,774,999"}, // Below 64-bit precision
-            {"9223372036854775000", "9,223,372,036,854,775,000"}, // Below 64-bit precision
-            {"9223372036854775806", "9,223,372,036,854,775,806"}, // Maximum 64-bit precision - 1
-            {"9223372036854775807", "9,223,372,036,854,775,807"}, // Maximum 64-bit precision
-            {"9223372036854775808", "9,223,372,036,854,775,808"}, // We've gone beyond 64-bit precision. This can only be represented with BigDecimal.
-            { NULL, NULL }
-    };
-    doTest(&rbnf, enTestFullData, false);
-}
-
-void IntlTestRBNF::TestCompactDecimalFormatStyle() {
-    UErrorCode status = U_ZERO_ERROR;
-    UParseError parseError;
-    // This is not a common use case, but we're testing it anyway.
-    UnicodeString numberPattern("=###0.#####=;"
-            "1000: <###0.00< K;"
-            "1000000: <###0.00< M;"
-            "1000000000: <###0.00< B;"
-            "1000000000000: <###0.00< T;"
-            "1000000000000000: <###0.00< Q;");
-    RuleBasedNumberFormat rbnf(numberPattern, UnicodeString(), Locale::getEnglish(), parseError, status);
-
-    const char * const enTestFullData[][2] = {
-            {"1000", "1.00 K"},
-            {"1234", "1.23 K"},
-            {"999994", "999.99 K"},
-            {"999995", "1000.00 K"},
-            {"1000000", "1.00 M"},
-            {"1200000", "1.20 M"},
-            {"1200000000", "1.20 B"},
-            {"1200000000000", "1.20 T"},
-            {"1200000000000000", "1.20 Q"},
-            {"4503599627370495", "4.50 Q"},
-            {"4503599627370496", "4.50 Q"},
-            {"8990000000000000", "8.99 Q"},
-            {"9008000000000000", "9.00 Q"}, // Number doesn't precisely fit into a double
-            {"9456000000000000", "9.00 Q"},  // Number doesn't precisely fit into a double
-            {"10000000000000000", "10.00 Q"},  // Number doesn't precisely fit into a double
-            {"9223372036854775807", "9223.00 Q"}, // Maximum 64-bit precision
-            {"9223372036854775808", "9,223,372,036,854,775,808"}, // We've gone beyond 64-bit precision. This can only be represented with BigDecimal.
-            { NULL, NULL }
-    };
-    doTest(&rbnf, enTestFullData, false);
-}
-
 void 
 IntlTestRBNF::doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing) 
 {
index 540b803..8c23a7d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -145,8 +145,6 @@ class IntlTestRBNF : public IntlTest {
     void TestInfinityNaN();
     void TestVariableDecimalPoint();
     void TestRounding();
-    void TestLargeNumbers();
-    void TestCompactDecimalFormatStyle();
 
 protected:
   virtual void doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing);
index ba1fba7..80f71f3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 3b49aa6..5c2f96a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index d038f4f..afb03f8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index e06d593..f8efab7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index ac7a14c..06b68db 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 614e473..354003f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 239bce7..53f4220 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 4418941..4e93dd8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d8e7b06..7ae6edb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bbda10d..2c7a9e4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a701aed..78d3422 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3e274ce..c4c1587 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 63925ab..93bca12 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a518b88..bd2a77c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8cbf299..82773f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6219e46..8d9f973 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index af49baa..b7aaea2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformattertest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -147,50 +147,6 @@ void ListFormatterTest::TestEnglishUS() {
     CheckFourCases("en_US", one, two, three, four, results);
 }
 
-// Tests resource loading and inheritance when region sublocale
-// has only partial data for the listPattern element (overriding
-// some of the parent data). #12994
-void ListFormatterTest::TestEnglishGB() {
-    UnicodeString results[4] = {
-        one,
-        one + " and " + two,
-        one + ", " + two + " and " + three,
-        one + ", " + two + ", " + three + " and " + four
-    };
-
-    CheckFourCases("en_GB", one, two, three, four, results);
-}
-
-// Tests resource loading and inheritance when region sublocale
-// has only partial data for the listPattern element (overriding
-// some of the parent data). #12994
-void ListFormatterTest::TestNynorsk() {
-    UnicodeString results[4] = {
-        one,
-        one + " og " + two,
-        one + ", " + two + " og " + three,
-        one + ", " + two + ", " + three + " og " + four
-    };
-
-    CheckFourCases("nn", one, two, three, four, results);
-}
-
-// Tests resource loading and inheritance when region sublocale
-// has only partial data for the listPattern element (overriding
-// some of the parent data). #12994
-void ListFormatterTest::TestChineseTradHK() {
-    UnicodeString and_string = UnicodeString("\\u53CA", -1, US_INV).unescape();
-    UnicodeString comma_string = UnicodeString("\\u3001", -1, US_INV).unescape();
-    UnicodeString results[4] = {
-        one,
-        one + and_string + two,
-        one + comma_string + two + and_string + three,
-        one + comma_string + two + comma_string + three + and_string + four
-    };
-
-    CheckFourCases("zh_Hant_HK", one, two, three, four, results);
-}
-
 // Formatting in Russian.
 // "\\u0438" is used before the last element, and all elements up to (but not including) the penultimate are followed by a comma.
 void ListFormatterTest::TestRussian() {
@@ -273,9 +229,6 @@ void ListFormatterTest::runIndexedTest(int32_t index, UBool exec,
         case 6: name = "TestZulu"; if (exec) TestZulu(); break;
         case 7: name = "TestOutOfOrderPatterns"; if (exec) TestOutOfOrderPatterns(); break;
         case 8: name = "Test9946"; if (exec) Test9946(); break;
-        case 9: name = "TestEnglishGB"; if (exec) TestEnglishGB(); break;
-        case 10: name = "TestNynorsk"; if (exec) TestNynorsk(); break;
-        case 11: name = "TestChineseTradHK"; if (exec) TestChineseTradHK(); break;
 
         default: name = ""; break;
     }
index a59a7e0..1281306 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  listformattertest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -33,9 +33,6 @@ class ListFormatterTest : public IntlTest {
     void TestBogus();
     void TestEnglish();
     void TestEnglishUS();
-    void TestEnglishGB();
-    void TestNynorsk();
-    void TestChineseTradHK();
     void TestRussian();
     void TestMalayalam();
     void TestZulu();
index a9ed5e6..ab62c1f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * COPYRIGHT:
@@ -7,7 +7,6 @@
  *********************************************************************/
 
 #include "locnmtst.h"
-#include "unicode/ustring.h"
 #include "cstring.h"
 
 /*
index 0f84f98..ea2f3b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index e849b26..5cff15d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -864,8 +864,8 @@ LocaleTest::TestGetLangsAndCountries()
       ;
 
     /* TODO: Change this test to be more like the cloctst version? */
-    if (testCount != 594)
-        errln("Expected getISOLanguages() to return 594 languages; it returned %d", testCount);
+    if (testCount != 593)
+        errln("Expected getISOLanguages() to return 593 languages; it returned %d", testCount);
     else {
         for (i = 0; i < 15; i++) {
             int32_t j;
index ad48217..a5a8d28 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0bd9fee..510146b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 #include "unicode/measfmt.h"
 #include "unicode/measure.h"
 #include "unicode/measunit.h"
-#include "unicode/strenum.h"
 #include "unicode/tmunit.h"
 #include "unicode/plurrule.h"
-#include "unicode/ustring.h"
 #include "charstr.h"
 #include "cstr.h"
 #include "unicode/reldatefmt.h"
@@ -43,13 +41,12 @@ public:
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
 private:
     void TestBasic();
-    void TestCompatible53();
-    void TestCompatible54();
-    void TestCompatible55();
-    void TestCompatible56();
-    void TestCompatible57();
-    void TestCompatible58();
-    void TestCompatible59();
+    void TestCompatible53_1();
+    void TestCompatible54_1();
+    void TestCompatible55_1();
+    void TestCompatible56_1();
+    void TestCompatible57_1();
+    void TestCompatible58_1();
     void TestGetAvailable();
     void TestExamplesInDocs();
     void TestFormatPeriodEn();
@@ -140,13 +137,12 @@ void MeasureFormatTest::runIndexedTest(
     }
     TESTCASE_AUTO_BEGIN;
     TESTCASE_AUTO(TestBasic);
-    TESTCASE_AUTO(TestCompatible53);
-    TESTCASE_AUTO(TestCompatible54);
-    TESTCASE_AUTO(TestCompatible55);
-    TESTCASE_AUTO(TestCompatible56);
-    TESTCASE_AUTO(TestCompatible57);
-    TESTCASE_AUTO(TestCompatible58);
-    TESTCASE_AUTO(TestCompatible59);
+    TESTCASE_AUTO(TestCompatible53_1);
+    TESTCASE_AUTO(TestCompatible54_1);
+    TESTCASE_AUTO(TestCompatible55_1);
+    TESTCASE_AUTO(TestCompatible56_1);
+    TESTCASE_AUTO(TestCompatible57_1);
+    TESTCASE_AUTO(TestCompatible58_1);
     TESTCASE_AUTO(TestGetAvailable);
     TESTCASE_AUTO(TestExamplesInDocs);
     TESTCASE_AUTO(TestFormatPeriodEn);
@@ -172,7 +168,7 @@ void MeasureFormatTest::runIndexedTest(
     TESTCASE_AUTO_END;
 }
 
-void MeasureFormatTest::TestCompatible53() {
+void MeasureFormatTest::TestCompatible53_1() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -224,7 +220,7 @@ void MeasureFormatTest::TestCompatible53() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible54() {
+void MeasureFormatTest::TestCompatible54_1() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -351,7 +347,7 @@ void MeasureFormatTest::TestCompatible54() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible55() {
+void MeasureFormatTest::TestCompatible55_1() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -479,7 +475,7 @@ void MeasureFormatTest::TestCompatible55() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible56() {
+void MeasureFormatTest::TestCompatible56_1() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -614,7 +610,7 @@ void MeasureFormatTest::TestCompatible56() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible57() {
+void MeasureFormatTest::TestCompatible57_1() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -754,7 +750,7 @@ void MeasureFormatTest::TestCompatible57() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible58() {
+void MeasureFormatTest::TestCompatible58_1() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<MeasureUnit> measureUnit;
     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
@@ -781,10 +777,10 @@ void MeasureFormatTest::TestCompatible58() {
     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
-    // measureUnit.adoptInstead(MeasureUnit::createEast(status));
-    // measureUnit.adoptInstead(MeasureUnit::createNorth(status));
-    // measureUnit.adoptInstead(MeasureUnit::createSouth(status));
-    // measureUnit.adoptInstead(MeasureUnit::createWest(status));
+    measureUnit.adoptInstead(MeasureUnit::createEast(status));
+    measureUnit.adoptInstead(MeasureUnit::createNorth(status));
+    measureUnit.adoptInstead(MeasureUnit::createSouth(status));
+    measureUnit.adoptInstead(MeasureUnit::createWest(status));
     measureUnit.adoptInstead(MeasureUnit::createBit(status));
     measureUnit.adoptInstead(MeasureUnit::createByte(status));
     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
@@ -898,147 +894,6 @@ void MeasureFormatTest::TestCompatible58() {
     assertSuccess("", status);
 }
 
-void MeasureFormatTest::TestCompatible59() {
-    UErrorCode status = U_ZERO_ERROR;
-    LocalPointer<MeasureUnit> measureUnit;
-    measureUnit.adoptInstead(MeasureUnit::createGForce(status));
-    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
-    measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
-    measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
-    measureUnit.adoptInstead(MeasureUnit::createDegree(status));
-    measureUnit.adoptInstead(MeasureUnit::createRadian(status));
-    measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
-    measureUnit.adoptInstead(MeasureUnit::createAcre(status));
-    measureUnit.adoptInstead(MeasureUnit::createHectare(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
-    measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
-    measureUnit.adoptInstead(MeasureUnit::createKarat(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
-    measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
-    measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
-    measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
-    measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
-    measureUnit.adoptInstead(MeasureUnit::createBit(status));
-    measureUnit.adoptInstead(MeasureUnit::createByte(status));
-    measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
-    measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
-    measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
-    measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
-    measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
-    measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
-    measureUnit.adoptInstead(MeasureUnit::createCentury(status));
-    measureUnit.adoptInstead(MeasureUnit::createDay(status));
-    measureUnit.adoptInstead(MeasureUnit::createHour(status));
-    measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
-    measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
-    measureUnit.adoptInstead(MeasureUnit::createMinute(status));
-    measureUnit.adoptInstead(MeasureUnit::createMonth(status));
-    measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
-    measureUnit.adoptInstead(MeasureUnit::createSecond(status));
-    measureUnit.adoptInstead(MeasureUnit::createWeek(status));
-    measureUnit.adoptInstead(MeasureUnit::createYear(status));
-    measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
-    measureUnit.adoptInstead(MeasureUnit::createOhm(status));
-    measureUnit.adoptInstead(MeasureUnit::createVolt(status));
-    measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
-    measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
-    measureUnit.adoptInstead(MeasureUnit::createJoule(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
-    measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
-    measureUnit.adoptInstead(MeasureUnit::createHertz(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
-    measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
-    measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
-    measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createFathom(status));
-    measureUnit.adoptInstead(MeasureUnit::createFoot(status));
-    measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
-    measureUnit.adoptInstead(MeasureUnit::createInch(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
-    measureUnit.adoptInstead(MeasureUnit::createMeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createMile(status));
-    measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
-    measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
-    measureUnit.adoptInstead(MeasureUnit::createParsec(status));
-    measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createPoint(status));
-    measureUnit.adoptInstead(MeasureUnit::createYard(status));
-    measureUnit.adoptInstead(MeasureUnit::createLux(status));
-    measureUnit.adoptInstead(MeasureUnit::createCarat(status));
-    measureUnit.adoptInstead(MeasureUnit::createGram(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
-    measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
-    measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
-    measureUnit.adoptInstead(MeasureUnit::createOunce(status));
-    measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
-    measureUnit.adoptInstead(MeasureUnit::createPound(status));
-    measureUnit.adoptInstead(MeasureUnit::createStone(status));
-    measureUnit.adoptInstead(MeasureUnit::createTon(status));
-    measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
-    measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
-    measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
-    measureUnit.adoptInstead(MeasureUnit::createWatt(status));
-    measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
-    measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
-    measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
-    measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
-    measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
-    measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
-    measureUnit.adoptInstead(MeasureUnit::createKnot(status));
-    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
-    measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
-    measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
-    measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
-    measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
-    measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
-    measureUnit.adoptInstead(MeasureUnit::createBushel(status));
-    measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
-    measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
-    measureUnit.adoptInstead(MeasureUnit::createCup(status));
-    measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
-    measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
-    measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
-    measureUnit.adoptInstead(MeasureUnit::createGallon(status));
-    measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
-    measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
-    measureUnit.adoptInstead(MeasureUnit::createLiter(status));
-    measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
-    measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
-    measureUnit.adoptInstead(MeasureUnit::createPint(status));
-    measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
-    measureUnit.adoptInstead(MeasureUnit::createQuart(status));
-    measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
-    measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
-    assertSuccess("", status);
-}
-
 void MeasureFormatTest::TestBasic() {
     UErrorCode status = U_ZERO_ERROR;
     MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
@@ -1790,8 +1645,6 @@ void MeasureFormatTest::TestManyLocaleDurations() {
     helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
-    helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
-    helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37min");
     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t 37min");
index a623326..9df4817 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2011, International Business Machines Corporation
index dbe7e0f..e44e6da 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9c47aa3..90c4def 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4f02e0c..9e8fd8e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 78ec942..57979e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index b346c87..48aa29e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 07b2044..07cc142 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 7974545..a000e08 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 33b4c09..042f2e6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index ecb228c..e912ed2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e8b4ea2..bfa3f39 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index aa37711..926a90d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
index 6c1c7be..db530f2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nptrans.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 8cbc806..385faa6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  nptrans.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index ce28c3f..2037cf9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -1681,8 +1681,8 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 223372036854775807LL, 
-                precision.initVisibleDigits(U_INT64_MAX, digits, status));
-        assertSuccess("U_INT64_MAX", status);
+                precision.initVisibleDigits(INT64_MAX, digits, status));
+        assertSuccess("INT64_MAX", status);
     }
     {
         UErrorCode status = U_ZERO_ERROR;
@@ -1692,7 +1692,7 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 75807LL, 
-                precision.initVisibleDigits(U_INT64_MAX, digits, status));
+                precision.initVisibleDigits(INT64_MAX, digits, status));
         verifySource(75807.0, digits);
         assertSuccess("75807", status);
     }
@@ -1703,8 +1703,8 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 223372036854775808LL, 
-                precision.initVisibleDigits(U_INT64_MIN, digits, status));
-        assertSuccess("U_INT64_MIN", status);
+                precision.initVisibleDigits(INT64_MIN, digits, status));
+        assertSuccess("INT64_MIN", status);
     }
     {
         UErrorCode status = U_ZERO_ERROR;
@@ -1714,7 +1714,7 @@ void NumberFormat2Test::TestLargeIntValue() {
         // Last 18 digits for int values.
         verifyIntValue(
                 75808LL, 
-                precision.initVisibleDigits(U_INT64_MIN, digits, status));
+                precision.initVisibleDigits(INT64_MIN, digits, status));
         verifySource(75808.0, digits);
         assertSuccess("75808", status);
     }
@@ -1747,7 +1747,7 @@ void NumberFormat2Test::TestIntInitVisibleDigits() {
         verifyVisibleDigits(
                 "9223372036854775808",
                 TRUE,
-                precision.initVisibleDigits(U_INT64_MIN, digits, status));
+                precision.initVisibleDigits(INT64_MIN, digits, status));
         assertSuccess("-9223372036854775808", status);
     }
     {
@@ -1756,7 +1756,7 @@ void NumberFormat2Test::TestIntInitVisibleDigits() {
         verifyVisibleDigits(
                 "9223372036854775807",
                 FALSE,
-                precision.initVisibleDigits(U_INT64_MAX, digits, status));
+                precision.initVisibleDigits(INT64_MAX, digits, status));
         assertSuccess("9223372036854775807", status);
     }
     {
index a79816e..46cfd0d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ecfc1a8..0a3143b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 82ee94e..b10014e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 95dd69d..015836b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -22,7 +22,6 @@
 #include "unicode/ustring.h"
 #include "unicode/measfmt.h"
 #include "unicode/curramt.h"
-#include "unicode/strenum.h"
 #include "digitlst.h"
 #include "textfile.h"
 #include "tokiter.h"
@@ -3245,7 +3244,7 @@ void NumberFormatTest::TestHostClone()
     UDate now = Calendar::getNow();
     NumberFormat *full = NumberFormat::createInstance(loc, status);
     if (full == NULL || U_FAILURE(status)) {
-        dataerrln("FAIL: Can't create NumberFormat date instance - %s", u_errorName(status));
+        dataerrln("FAIL: Can't create Relative date instance - %s", u_errorName(status));
         return;
     }
     UnicodeString result1;
@@ -4344,9 +4343,9 @@ NumberFormatTest::TestParseCurrencyInUCurr() {
         "Cypriot Pound1.00",
         "Cypriot pound1.00",
         "Cypriot pounds1.00",
-        "Czech Koruna1.00",
-        "Czech koruna1.00",
-        "Czech korunas1.00",
+        "Czech Republic Koruna1.00",
+        "Czech Republic koruna1.00",
+        "Czech Republic korunas1.00",
         "Czechoslovak Hard Koruna1.00",
         "Czechoslovak hard koruna1.00",
         "Czechoslovak hard korunas1.00",
@@ -5467,9 +5466,9 @@ NumberFormatTest::TestParseCurrencyInUCurr() {
         "1.00 Cypriot Pound random",
         "1.00 Cypriot pound random",
         "1.00 Cypriot pounds random",
-        "1.00 Czech Koruna random",
-        "1.00 Czech koruna random",
-        "1.00 Czech korunas random",
+        "1.00 Czech Republic Koruna random",
+        "1.00 Czech Republic koruna random",
+        "1.00 Czech Republic korunas random",
         "1.00 Czechoslovak Hard Koruna random",
         "1.00 Czechoslovak hard koruna random",
         "1.00 Czechoslovak hard korunas random",
index 17a411a..e2eb4df 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index 5e44927..e5b87be 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation
index 1d14c73..d4ab58e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 244f817..f89c568 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index db2485d..d100ef6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 038b11b..0583391 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7d34228..4d937d9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2189593..b1f9363 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 75bc094..d8d6377 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a50aab2..80f6bb7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
diff --git a/source/test/intltest/punyref.c b/source/test/intltest/punyref.c
new file mode 100644 (file)
index 0000000..6295f1f
--- /dev/null
@@ -0,0 +1,304 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+ *******************************************************************************
+ *
+ *   Copyright (C) 2003-2005, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ *******************************************************************************
+ *   file name:  punyref.h
+ *   encoding:   US-ASCII
+ *   tab size:   8 (not used)
+ *   indentation:4
+ *
+ *   created on: 2003feb1
+ *   created by: Ram Viswanadha
+ */
+
+/*
+Disclaimer and license
+
+    Regarding this entire document or any portion of it (including
+    the pseudocode and C code), the author makes no guarantees and
+    is not responsible for any damage resulting from its use.  The
+    author grants irrevocable permission to anyone to use, modify,
+    and distribute it in any way that does not diminish the rights
+    of anyone else to use, modify, and distribute it, provided that
+    redistributed derivative works do not contain misleading author or
+    version information.  Derivative works need not be licensed under
+    similar terms.
+
+punycode.c 0.4.0 (2001-Nov-17-Sat)
+http://www.cs.berkeley.edu/~amc/idn/
+Adam M. Costello
+http://www.nicemice.net/amc/
+*/
+
+/**********************************************************/
+/* Implementation (would normally go in its own .c file): */
+
+#include <string.h>
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_IDNA
+
+#include "punyref.h"
+
+/*** Bootstring parameters for Punycode ***/
+
+enum { base = 36, tmin = 1, tmax = 26, skew = 38, damp = 700,
+       initial_bias = 72, initial_n = 0x80, delimiter = 0x2D };
+
+/* basic(cp) tests whether cp is a basic code point: */
+#define basic(cp) ((punycode_uint)(cp) < 0x80)
+
+/* delim(cp) tests whether cp is a delimiter: */
+#define delim(cp) ((cp) == delimiter)
+
+U_CDECL_BEGIN
+/* decode_digit(cp) returns the numeric value of a basic code */
+/* point (for use in representing integers) in the range 0 to */
+/* base-1, or base if cp is does not represent a value.       */
+
+static punycode_uint decode_digit(punycode_uint cp)
+{
+  return  cp - 48 < 10 ? cp - 22 :  cp - 65 < 26 ? cp - 65 :
+          cp - 97 < 26 ? cp - 97 :  base;
+}
+
+/* encode_digit(d,flag) returns the basic code point whose value      */
+/* (when used for representing integers) is d, which needs to be in   */
+/* the range 0 to base-1.  The lowercase form is used unless flag is  */
+/* nonzero, in which case the uppercase form is used.  The behavior   */
+/* is undefined if flag is nonzero and digit d has no uppercase form. */
+
+static char encode_digit(punycode_uint d, int flag)
+{
+  return (char) d + 22 + 75 * (d < 26) - ((flag != 0) << 5);
+  /*  0..25 map to ASCII a..z or A..Z */
+  /* 26..35 map to ASCII 0..9         */
+}
+
+/* flagged(bcp) tests whether a basic code point is flagged */
+/* (uppercase).  The behavior is undefined if bcp is not a  */
+/* basic code point.                                        */
+
+#define flagged(bcp) ((punycode_uint)(bcp) - 65 < 26)
+
+/* encode_basic(bcp,flag) forces a basic code point to lowercase */
+/* if flag is zero, uppercase if flag is nonzero, and returns    */
+/* the resulting code point.  The code point is unchanged if it  */
+/* is caseless.  The behavior is undefined if bcp is not a basic */
+/* code point.                                                   */
+
+static char encode_basic(punycode_uint bcp, int flag)
+{
+  bcp -= (bcp - 97 < 26) << 5;
+  return (char) bcp + ((!flag && (bcp - 65 < 26)) << 5);
+}
+
+/*** Platform-specific constants ***/
+
+/* maxint is the maximum value of a punycode_uint variable: */
+static const punycode_uint maxint = (punycode_uint) (-1);
+/* Because maxint is unsigned, -1 becomes the maximum value. */
+
+/*** Bias adaptation function ***/
+
+static punycode_uint adapt(
+  punycode_uint delta, punycode_uint numpoints, int firsttime )
+{
+  punycode_uint k;
+
+  delta = firsttime ? delta / damp : delta >> 1;
+  /* delta >> 1 is a faster way of doing delta / 2 */
+  delta += delta / numpoints;
+
+  for (k = 0;  delta > ((base - tmin) * tmax) / 2;  k += base) {
+    delta /= base - tmin;
+  }
+
+  return k + (base - tmin + 1) * delta / (delta + skew);
+}
+
+/*** Main encode function ***/
+
+enum punycode_status punycode_encode(
+  punycode_uint input_length,
+  const punycode_uint input[],
+  const unsigned char case_flags[],
+  punycode_uint *output_length,
+  char output[] )
+{
+  punycode_uint n, delta, h, b, out, max_out, bias, j, m, q, k, t;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  delta = out = 0;
+  max_out = *output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points: */
+
+  for (j = 0;  j < input_length;  ++j) {
+    if (basic(input[j])) {
+      if (max_out - out < 2) return punycode_big_output;
+      output[out++] = (char)
+        (case_flags ?  encode_basic(input[j], case_flags[j]) : input[j]);
+    }
+    /* else if (input[j] < n) return punycode_bad_input; */
+    /* (not needed for Punycode with unsigned code points) */
+  }
+
+  h = b = out;
+
+  /* h is the number of code points that have been handled, b is the  */
+  /* number of basic code points, and out is the number of characters */
+  /* that have been output.                                           */
+
+  if (b > 0) output[out++] = delimiter;
+
+  /* Main encoding loop: */
+
+  while (h < input_length) {
+    /* All non-basic code points < n have been     */
+    /* handled already.  Find the next larger one: */
+
+    for (m = maxint, j = 0;  j < input_length;  ++j) {
+      /* if (basic(input[j])) continue; */
+      /* (not needed for Punycode) */
+      if (input[j] >= n && input[j] < m) m = input[j];
+    }
+
+    /* Increase delta enough to advance the decoder's    */
+    /* <n,i> state to <m,0>, but guard against overflow: */
+
+    if (m - n > (maxint - delta) / (h + 1)) return punycode_overflow;
+    delta += (m - n) * (h + 1);
+    n = m;
+
+    for (j = 0;  j < input_length;  ++j) {
+      /* Punycode does not need to check whether input[j] is basic: */
+      if (input[j] < n /* || basic(input[j]) */ ) {
+        if (++delta == 0) return punycode_overflow;
+      }
+
+      if (input[j] == n) {
+        /* Represent delta as a generalized variable-length integer: */
+
+        for (q = delta, k = base;  ;  k += base) {
+          if (out >= max_out) return punycode_big_output;
+          t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
+              k >= bias + tmax ? tmax : k - bias;
+          if (q < t) break;
+          output[out++] = encode_digit(t + (q - t) % (base - t), 0);
+          q = (q - t) / (base - t);
+        }
+
+        output[out++] = encode_digit(q, case_flags && case_flags[j]);
+        bias = adapt(delta, h + 1, h == b);
+        delta = 0;
+        ++h;
+      }
+    }
+
+    ++delta, ++n;
+  }
+
+  *output_length = out;
+  return punycode_success;
+}
+
+/*** Main decode function ***/
+
+enum punycode_status punycode_decode(
+  punycode_uint input_length,
+  const char input[],
+  punycode_uint *output_length,
+  punycode_uint output[],
+  unsigned char case_flags[] )
+{
+  punycode_uint n, out, i, max_out, bias,
+                 b, j, in, oldi, w, k, digit, t;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  out = i = 0;
+  max_out = *output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points:  Let b be the number of input code */
+  /* points before the last delimiter, or 0 if there is none, then    */
+  /* copy the first b code points to the output.                      */
+
+  for (b = j = 0;  j < input_length;  ++j) if (delim(input[j])) b = j;
+  if (b > max_out) return punycode_big_output;
+
+  for (j = 0;  j < b;  ++j) {
+    if (case_flags) case_flags[out] = flagged(input[j]);
+    if (!basic(input[j])) return punycode_bad_input;
+    output[out++] = input[j];
+  }
+
+  /* Main decoding loop:  Start just after the last delimiter if any  */
+  /* basic code points were copied; start at the beginning otherwise. */
+
+  for (in = b > 0 ? b + 1 : 0;  in < input_length;  ++out) {
+
+    /* in is the index of the next character to be consumed, and */
+    /* out is the number of code points in the output array.     */
+
+    /* Decode a generalized variable-length integer into delta,  */
+    /* which gets added to i.  The overflow checking is easier   */
+    /* if we increase i as we go, then subtract off its starting */
+    /* value at the end to obtain delta.                         */
+
+    for (oldi = i, w = 1, k = base;  ;  k += base) {
+      if (in >= input_length) return punycode_bad_input;
+      digit = decode_digit(input[in++]);
+      if (digit >= base) return punycode_bad_input;
+      if (digit > (maxint - i) / w) return punycode_overflow;
+      i += digit * w;
+      t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
+          k >= bias + tmax ? tmax : k - bias;
+      if (digit < t) break;
+      if (w > maxint / (base - t)) return punycode_overflow;
+      w *= (base - t);
+    }
+
+    bias = adapt(i - oldi, out + 1, oldi == 0);
+
+    /* i was supposed to wrap around from out+1 to 0,   */
+    /* incrementing n each time, so we'll fix that now: */
+
+    if (i / (out + 1) > maxint - n) return punycode_overflow;
+    n += i / (out + 1);
+    i %= (out + 1);
+
+    /* Insert n at position i of the output: */
+
+    /* not needed for Punycode: */
+    /* if (decode_digit(n) <= base) return punycode_invalid_input; */
+    if (out >= max_out) return punycode_big_output;
+
+    if (case_flags) {
+      memmove(case_flags + i + 1, case_flags + i, out - i);
+      /* Case of last character determines uppercase flag: */
+      case_flags[i] = flagged(input[in - 1]);
+    }
+
+    memmove(output + i + 1, output + i, (out - i) * sizeof *output);
+    output[i++] = n;
+  }
+
+  *output_length = out;
+  return punycode_success;
+}
+
+U_CDECL_END
+
+#endif /* #if !UCONFIG_NO_IDNA */
index 0aa77b7..e1a77c0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 2d4f0c0..3f2b543 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 6d2ff7d..6659b0b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1999-2016, International Business Machines
@@ -25,7 +25,7 @@
 #include "unicode/ustring.h"
 #include "unicode/utext.h"
 #include "cmemory.h"
-#if !UCONFIG_NO_BREAK_ITERATION
+#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING
 #include "unicode/filteredbrk.h"
 #include <stdio.h> // for sprintf
 #endif
@@ -1067,15 +1067,9 @@ void RBBIAPITest::TestRoundtripRules() {
 void RBBIAPITest::TestGetBinaryRules() {
     UErrorCode status=U_ZERO_ERROR;
     LocalPointer<BreakIterator> bi(BreakIterator::createLineInstance(Locale::getEnglish(), status));
-    if (U_FAILURE(status)) {
-        dataerrln("FAIL: BreakIterator::createLineInstance for Locale::getEnglish(): %s", u_errorName(status));
-        return;
-    }
+    TEST_ASSERT_SUCCESS(status);
     RuleBasedBreakIterator *rbbi = dynamic_cast<RuleBasedBreakIterator *>(bi.getAlias());
-    if (rbbi == NULL) {
-        dataerrln("FAIL: RuleBasedBreakIterator is NULL");
-        return;
-    }
+    TEST_ASSERT(rbbi != NULL);
 
     // Check that the new line break iterator is nominally functional.
     UnicodeString helloWorld("Hello, World!");
@@ -1160,7 +1154,7 @@ void RBBIAPITest::TestRefreshInputText() {
 
 }
 
-#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION
 static void prtbrks(BreakIterator* brk, const UnicodeString &ustr, IntlTest &it) {
   static const UChar PILCROW=0x00B6, CHSTR=0x3010, CHEND=0x3011; // lenticular brackets
   it.logln(UnicodeString("String:'")+ustr+UnicodeString("'"));
@@ -1202,7 +1196,7 @@ static void prtbrks(BreakIterator* brk, const UnicodeString &ustr, IntlTest &it)
 #endif
 
 void RBBIAPITest::TestFilteredBreakIteratorBuilder() {
-#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION
   UErrorCode status = U_ZERO_ERROR;
   LocalPointer<FilteredBreakIteratorBuilder> builder;
   LocalPointer<BreakIterator> baseBI;
@@ -1398,7 +1392,7 @@ void RBBIAPITest::TestFilteredBreakIteratorBuilder() {
   }
 
 #else
-  logln("Skipped- not: !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION");
+  logln("Skipped- not: !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING && !UCONFIG_NO_FILTERED_BREAK_ITERATION");
 #endif
 }
 
@@ -1429,7 +1423,7 @@ void RBBIAPITest::runIndexedTest( int32_t index, UBool exec, const char* &name,
     TESTCASE_AUTO(TestGetBinaryRules);
 #endif
     TESTCASE_AUTO(TestRefreshInputText);
-#if !UCONFIG_NO_BREAK_ITERATION
+#if !UCONFIG_NO_BREAK_ITERATION && U_HAVE_STD_STRING
     TESTCASE_AUTO(TestFilteredBreakIteratorBuilder);
 #endif
     TESTCASE_AUTO_END;
index 13b1e29..7e84848 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 81335cc..65eb16f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2016, International Business Machines Corporation and
index baad854..f044073 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*************************************************************************
  * Copyright (c) 2016, International Business Machines
index d101c15..a3102c1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -36,7 +36,6 @@
 
 #include "charstr.h"
 #include "cmemory.h"
-#include "cstr.h"
 #include "intltest.h"
 #include "rbbitst.h"
 #include "utypeinfo.h"  // for 'typeid' to work
@@ -104,9 +103,6 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
     TESTCASE_AUTO(TestBug5532);
     TESTCASE_AUTO(TestBug7547);
     TESTCASE_AUTO(TestBug12797);
-    TESTCASE_AUTO(TestBug12918);
-    TESTCASE_AUTO(TestBug12932);
-    TESTCASE_AUTO(TestEmoji);
     TESTCASE_AUTO_END;
 }
 
@@ -1125,9 +1121,7 @@ void RBBITest::executeTest(TestParams *t, UErrorCode &status) {
 
 
 void RBBITest::TestExtended() {
-  // Skip test for now when UCONFIG_NO_FILTERED_BREAK_ITERATION is set. This
-  // data driven test closely entangles filtered and regular data.
-#if !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_FILTERED_BREAK_ITERATION
+#if !UCONFIG_NO_REGULAR_EXPRESSIONS
     UErrorCode      status  = U_ZERO_ERROR;
     Locale          locale("");
 
@@ -1176,6 +1170,15 @@ void RBBITest::TestExtended() {
 
     EParseState savedState = PARSE_TAG;
 
+    static const UChar CH_LF        = 0x0a;
+    static const UChar CH_CR        = 0x0d;
+    static const UChar CH_HASH      = 0x23;
+    /*static const UChar CH_PERIOD    = 0x2e;*/
+    static const UChar CH_LT        = 0x3c;
+    static const UChar CH_GT        = 0x3e;
+    static const UChar CH_BACKSLASH = 0x5c;
+    static const UChar CH_BULLET    = 0x2022;
+
     int32_t    lineNum  = 1;
     int32_t    colStart = 0;
     int32_t    column   = 0;
@@ -1187,12 +1190,12 @@ void RBBITest::TestExtended() {
         status = U_ZERO_ERROR;
         UChar  c = testString.charAt(charIdx);
         charIdx++;
-        if (c == u'\r' && charIdx<len && testString.charAt(charIdx) == u'\n') {
+        if (c == CH_CR && charIdx<len && testString.charAt(charIdx) == CH_LF) {
             // treat CRLF as a unit
-            c = u'\n';
+            c = CH_LF;
             charIdx++;
         }
-        if (c == u'\n' || c == u'\r') {
+        if (c == CH_LF || c == CH_CR) {
             lineNum++;
             colStart = charIdx;
         }
@@ -1200,14 +1203,14 @@ void RBBITest::TestExtended() {
 
         switch (parseState) {
         case PARSE_COMMENT:
-            if (c == u'\n' || c == u'\r') {
+            if (c == 0x0a || c == 0x0d) {
                 parseState = savedState;
             }
             break;
 
         case PARSE_TAG:
             {
-            if (c == u'#') {
+            if (c == CH_HASH) {
                 parseState = PARSE_COMMENT;
                 savedState = PARSE_TAG;
                 break;
@@ -1279,7 +1282,7 @@ void RBBITest::TestExtended() {
             break;
 
         case PARSE_DATA:
-            if (c == u'•') {
+            if (c == CH_BULLET) {
                 int32_t  breakIdx = tp.dataToBreak.length();
                 tp.expectedBreaks->setSize(breakIdx+1);
                 tp.expectedBreaks->setElementAt(-1, breakIdx);
@@ -1321,7 +1324,7 @@ void RBBITest::TestExtended() {
                 // Get the code point from the name and insert it into the test data.
                 //   (Damn, no API takes names in Unicode  !!!
                 //    we've got to take it back to char *)
-                int32_t nameEndIdx = testString.indexOf(u'}', charIdx);
+                int32_t nameEndIdx = testString.indexOf((UChar)0x7d/*'}'*/, charIdx);
                 int32_t nameLength = nameEndIdx - (charIdx+2);
                 char charNameBuf[200];
                 UChar32 theChar = -1;
@@ -1368,28 +1371,28 @@ void RBBITest::TestExtended() {
                 break;
             }
 
-            if (c == u'<') {
+            if (c == CH_LT) {
                 tagValue   = 0;
                 parseState = PARSE_NUM;
                 break;
             }
 
-            if (c == u'#' && column==3) {   // TODO:  why is column off so far?
+            if (c == CH_HASH && column==3) {   // TODO:  why is column off so far?
                 parseState = PARSE_COMMENT;
                 savedState = PARSE_DATA;
                 break;
             }
 
-            if (c == u'\\') {
+            if (c == CH_BACKSLASH) {
                 // Check for \ at end of line, a line continuation.
                 //     Advance over (discard) the newline
                 UChar32 cp = testString.char32At(charIdx);
-                if (cp == u'\r' && charIdx<len && testString.charAt(charIdx+1) == u'\n') {
+                if (cp == CH_CR && charIdx<len && testString.charAt(charIdx+1) == CH_LF) {
                     // We have a CR LF
                     //  Need an extra increment of the input ptr to move over both of them
                     charIdx++;
                 }
-                if (cp == u'\n' || cp == u'\r') {
+                if (cp == CH_LF || cp == CH_CR) {
                     lineNum++;
                     colStart = charIdx;
                     charIdx++;
@@ -1438,7 +1441,7 @@ void RBBITest::TestExtended() {
                 break;
             }
 
-            if (c == u'>') {
+            if (c == CH_GT) {
                 // Finished the number.  Add the info to the expected break data,
                 //   and switch parse state back to doing plain data.
                 parseState = PARSE_DATA;
@@ -1685,30 +1688,20 @@ void RBBITest::TestUnicodeFiles() {
 // See ticket #7270.
 
 UBool RBBITest::testCaseIsKnownIssue(const UnicodeString &testCase, const char *fileName) {
-    static struct TestCase {
-        const char *fFileName;
-        const UChar *fString;
-    } badTestCases[] = {                                // Line Numbers from Unicode 7.0.0 file.
-        {"LineBreakTest.txt", u"\u200B\u0020}"},        // Line 5198
-        {"LineBreakTest.txt", u"\u200B\u0020)"},        // Line 5202
-        {"LineBreakTest.txt", u"\u200B\u0020!"},        // Line 5214
-        {"LineBreakTest.txt", u"\u200B\u0020,"},        // Line 5246
-        {"LineBreakTest.txt", u"\u200B\u0020/"},        // Line 5298
-        {"LineBreakTest.txt", u"\u200B\u0020\u2060"},   // Line 5302
-                                                        // Line Numbers from pre-release verion of GraphemeBreakTest-10.0.0.txt
-        {"GraphemeBreakTest.txt", u"\u200D\u2640"},     // Line 656, old GB 11 test ZWJ x GAZ
-        {"GraphemeBreakTest.txt", u"\u200D\U0001F466"}, // Line 658, old GB 11 test ZWJ x EBG
-        {"GraphemeBreakTest.txt", u"\u200D\U0001F466\U0001F3FB"}, // Line 842, old GB 11 test ZWJ x EBG x EModifier
-
-                                                        // Line Numbers from pre-release verion of WordBreakTest-10.0.0.txt
-        {"WordBreakTest.txt", u"\u200D\u261D"},         // Line 1356, ZWJ x EmojiNRK
-        {"WordBreakTest.txt", u"\u200D\U0001F3FB"},     // Line 1358, ZWJ x EmojiNRK
+    static const UChar badTestCases[][4] = {                     // Line Numbers from Unicode 7.0.0 file.
+        {(UChar)0x200B, (UChar)0x0020, (UChar)0x007D, (UChar)0x0000},   // Line 5198
+        {(UChar)0x200B, (UChar)0x0020, (UChar)0x0029, (UChar)0x0000},   // Line 5202
+        {(UChar)0x200B, (UChar)0x0020, (UChar)0x0021, (UChar)0x0000},   // Line 5214
+        {(UChar)0x200B, (UChar)0x0020, (UChar)0x002c, (UChar)0x0000},   // Line 5246
+        {(UChar)0x200B, (UChar)0x0020, (UChar)0x002f, (UChar)0x0000},   // Line 5298
+        {(UChar)0x200B, (UChar)0x0020, (UChar)0x2060, (UChar)0x0000}    // Line 5302
     };
+    if (strcmp(fileName, "LineBreakTest.txt") != 0) {
+        return FALSE;
+    }
 
-    for (int n=0; n<UPRV_LENGTHOF(badTestCases); n++) {
-        const TestCase &badCase = badTestCases[n];
-        if (!strcmp(fileName, badCase.fFileName) &&
-                testCase == UnicodeString(badCase.fString)) {
+    for (int i=0; i<UPRV_LENGTHOF(badTestCases); i++) {
+        if (testCase == UnicodeString(badTestCases[i])) {
             return logKnownIssue("7270");
         }
     }
@@ -1958,31 +1951,28 @@ static uint32_t m_rand()
 
 
 //
-// Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
+// Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
 //
-static const char16_t *gExtended_Pict = u"["
-    "\\U0001F774-\\U0001F77F\\U00002700-\\U00002701\\U00002703-\\U00002704\\U0000270E\\U00002710-\\U00002711\\U00002765-\\U00002767"
-    "\\U0001F030-\\U0001F093\\U0001F094-\\U0001F09F\\U0001F10D-\\U0001F10F\\U0001F12F\\U0001F16C-\\U0001F16F\\U0001F1AD-\\U0001F1E5"
-    "\\U0001F260-\\U0001F265\\U0001F203-\\U0001F20F\\U0001F23C-\\U0001F23F\\U0001F249-\\U0001F24F\\U0001F252-\\U0001F25F"
-    "\\U0001F266-\\U0001F2FF\\U0001F7D5-\\U0001F7FF\\U0001F000-\\U0001F003\\U0001F005-\\U0001F02B\\U0001F02C-\\U0001F02F"
-    "\\U0001F322-\\U0001F323\\U0001F394-\\U0001F395\\U0001F398\\U0001F39C-\\U0001F39D\\U0001F3F1-\\U0001F3F2\\U0001F3F6"
-    "\\U0001F4FE\\U0001F53E-\\U0001F548\\U0001F54F\\U0001F568-\\U0001F56E\\U0001F571-\\U0001F572\\U0001F57B-\\U0001F586"
-    "\\U0001F588-\\U0001F589\\U0001F58E-\\U0001F58F\\U0001F591-\\U0001F594\\U0001F597-\\U0001F5A3\\U0001F5A6-\\U0001F5A7"
-    "\\U0001F5A9-\\U0001F5B0\\U0001F5B3-\\U0001F5BB\\U0001F5BD-\\U0001F5C1\\U0001F5C5-\\U0001F5D0\\U0001F5D4-\\U0001F5DB"
-    "\\U0001F5DF-\\U0001F5E0\\U0001F5E2\\U0001F5E4-\\U0001F5E7\\U0001F5E9-\\U0001F5EE\\U0001F5F0-\\U0001F5F2\\U0001F5F4-\\U0001F5F9"
-    "\\U00002605\\U00002607-\\U0000260D\\U0000260F-\\U00002610\\U00002612\\U00002616-\\U00002617\\U00002619-\\U0000261C"
-    "\\U0000261E-\\U0000261F\\U00002621\\U00002624-\\U00002625\\U00002627-\\U00002629\\U0000262B-\\U0000262D\\U00002630-\\U00002637"
-    "\\U0000263B-\\U00002647\\U00002654-\\U0000265F\\U00002661-\\U00002662\\U00002664\\U00002667\\U00002669-\\U0000267A"
-    "\\U0000267C-\\U0000267E\\U00002680-\\U00002691\\U00002695\\U00002698\\U0000269A\\U0000269D-\\U0000269F\\U000026A2-\\U000026A9"
-    "\\U000026AC-\\U000026AF\\U000026B2-\\U000026BC\\U000026BF-\\U000026C3\\U000026C6-\\U000026C7\\U000026C9-\\U000026CD"
-    "\\U000026D0\\U000026D2\\U000026D5-\\U000026E8\\U000026EB-\\U000026EF\\U000026F6\\U000026FB-\\U000026FC\\U000026FE-\\U000026FF"
-    "\\U00002388\\U0001FA00-\\U0001FFFD\\U0001F0A0-\\U0001F0AE\\U0001F0B1-\\U0001F0BF\\U0001F0C1-\\U0001F0CF\\U0001F0D1-\\U0001F0F5"
-    "\\U0001F0AF-\\U0001F0B0\\U0001F0C0\\U0001F0D0\\U0001F0F6-\\U0001F0FF\\U0001F80C-\\U0001F80F\\U0001F848-\\U0001F84F"
-    "\\U0001F85A-\\U0001F85F\\U0001F888-\\U0001F88F\\U0001F8AE-\\U0001F8FF\\U0001F900-\\U0001F90B\\U0001F91F\\U0001F928-\\U0001F92F"
-    "\\U0001F931-\\U0001F932\\U0001F94C\\U0001F95F-\\U0001F96B\\U0001F992-\\U0001F997\\U0001F9D0-\\U0001F9E6\\U0001F90C-\\U0001F90F"
-    "\\U0001F93F\\U0001F94D-\\U0001F94F\\U0001F96C-\\U0001F97F\\U0001F998-\\U0001F9BF\\U0001F9C1-\\U0001F9CF\\U0001F9E7-\\U0001F9FF"
-    "\\U0001F6C6-\\U0001F6CA\\U0001F6D3-\\U0001F6D4\\U0001F6E6-\\U0001F6E8\\U0001F6EA\\U0001F6F1-\\U0001F6F2\\U0001F6F7-\\U0001F6F8"
-    "\\U0001F6D5-\\U0001F6DF\\U0001F6ED-\\U0001F6EF\\U0001F6F9-\\U0001F6FF"
+static const char *gExtended_Pict = "["
+    "\\U0001F774-\\U0001F77F\\u2700-\\u2701\\u2703-\\u2704\\u270E\\u2710-\\u2711\\u2765-\\u2767\\U0001F030-\\U0001F093"
+    "\\U0001F094-\\U0001F09F\\U0001F10D-\\U0001F10F\\U0001F12F\\U0001F16C-\\U0001F16F\\U0001F1AD-\\U0001F1E5"
+    "\\U0001F203-\\U0001F20F\\U0001F23C-\\U0001F23F\\U0001F249-\\U0001F24F\\U0001F252-\\U0001F2FF\\U0001F7D5-\\U0001F7FF"
+    "\\U0001F000-\\U0001F003\\U0001F005-\\U0001F02B\\U0001F02C-\\U0001F02F\\U0001F322-\\U0001F323\\U0001F394-\\U0001F395"
+    "\\U0001F398\\U0001F39C-\\U0001F39D\\U0001F3F1-\\U0001F3F2\\U0001F3F6\\U0001F4FE\\U0001F53E-\\U0001F548"
+    "\\U0001F54F\\U0001F568-\\U0001F56E\\U0001F571-\\U0001F572\\U0001F57B-\\U0001F586\\U0001F588-\\U0001F589"
+    "\\U0001F58E-\\U0001F58F\\U0001F591-\\U0001F594\\U0001F597-\\U0001F5A3\\U0001F5A6-\\U0001F5A7\\U0001F5A9-\\U0001F5B0"
+    "\\U0001F5B3-\\U0001F5BB\\U0001F5BD-\\U0001F5C1\\U0001F5C5-\\U0001F5D0\\U0001F5D4-\\U0001F5DB\\U0001F5DF-\\U0001F5E0"
+    "\\U0001F5E2\\U0001F5E4-\\U0001F5E7\\U0001F5E9-\\U0001F5EE\\U0001F5F0-\\U0001F5F2\\U0001F5F4-\\U0001F5F9"
+    "\\u2605\\u2607-\\u260D\\u260F-\\u2610\\u2612\\u2616-\\u2617\\u2619-\\u261C\\u261E-\\u261F\\u2621\\u2624-\\u2625"
+    "\\u2627-\\u2629\\u262B-\\u262D\\u2630-\\u2637\\u263B-\\u2647\\u2654-\\u265F\\u2661-\\u2662\\u2664\\u2667"
+    "\\u2669-\\u267A\\u267C-\\u267E\\u2680-\\u2691\\u2695\\u2698\\u269A\\u269D-\\u269F\\u26A2-\\u26A9\\u26AC-\\u26AF"
+    "\\u26B2-\\u26BC\\u26BF-\\u26C3\\u26C6-\\u26C7\\u26C9-\\u26CD\\u26D0\\u26D2\\u26D5-\\u26E8\\u26EB-\\u26EF"
+    "\\u26F6\\u26FB-\\u26FC\\u26FE-\\u26FF\\u2388\\U0001FA00-\\U0001FFFD\\U0001F0A0-\\U0001F0AE\\U0001F0B1-\\U0001F0BF"
+    "\\U0001F0C1-\\U0001F0CF\\U0001F0D1-\\U0001F0F5\\U0001F0AF-\\U0001F0B0\\U0001F0C0\\U0001F0D0\\U0001F0F6-\\U0001F0FF"
+    "\\U0001F80C-\\U0001F80F\\U0001F848-\\U0001F84F\\U0001F85A-\\U0001F85F\\U0001F888-\\U0001F88F\\U0001F8AE-\\U0001F8FF"
+    "\\U0001F900-\\U0001F90F\\U0001F91F\\U0001F928-\\U0001F92F\\U0001F931-\\U0001F932\\U0001F93F\\U0001F94C-\\U0001F94F"
+    "\\U0001F95F-\\U0001F97F\\U0001F992-\\U0001F9BF\\U0001F9C1-\\U0001F9FF\\U0001F6C6-\\U0001F6CA\\U0001F6E6-\\U0001F6E8"
+    "\\U0001F6EA\\U0001F6F1-\\U0001F6F2\\U0001F6D3-\\U0001F6DF\\U0001F6ED-\\U0001F6EF\\U0001F6F7-\\U0001F6FF"
     "]";
 
 //------------------------------------------------------------------------------------------
@@ -2050,9 +2040,9 @@ RBBICharMonkey::RBBICharMonkey() {
     fHangulSet->addAll(*fLVSet);
     fHangulSet->addAll(*fLVTSet);
 
-    fEmojiBaseSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EB}]"), status);
+    fEmojiBaseSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EB}\\U0001F3C2\\U0001F3C7\\U0001F3CC\\U0001F46A-\\U0001F46D\\U0001F46F\\U0001F574\\U0001F6CC]"), status);
     fEmojiModifierSet = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EM}]"), status);
-    fExtendedPictSet  = new UnicodeSet(gExtended_Pict, status);
+    fExtendedPictSet  = new UnicodeSet(UnicodeString(gExtended_Pict, -1, US_INV), status);
     fEBGSet           = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Grapheme_Cluster_Break = EBG}]"), status);
     fEmojiNRKSet      = new UnicodeSet(UNICODE_STRING_SIMPLE(
                 "[[\\p{Emoji}]-[\\p{Grapheme_Cluster_Break = Regional_Indicator}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]"), status);
@@ -2203,15 +2193,11 @@ int32_t RBBICharMonkey::next(int32_t prevPos) {
             continue;
         }
 
-        // Rule (GB11)   (Glue_After_ZWJ | Emoji) Extend * ZWJ x (Glue_After_ZWJ | Emoji)
+        // Rule (GB11)   (Glue_After_ZWJ | Emoji) ZWJ x (Glue_After_ZWJ | Emoji)
         if ((fExtendedPictSet->contains(c0) || fEmojiNRKSet->contains(c0)) && fZWJSet->contains(c1) &&
                 (fExtendedPictSet->contains(c2) || fEmojiNRKSet->contains(c2))) {
             continue;
         }
-        if ((fExtendedPictSet->contains(cBase) || fEmojiNRKSet->contains(cBase)) && fExtendSet->contains(c0) && fZWJSet->contains(c1) &&
-                (fExtendedPictSet->contains(c2) || fEmojiNRKSet->contains(c2))) {
-            continue;
-        }
 
         // Rule (GB12-13)    Regional_Indicator x Regional_Indicator
         //                   Note: The first if condition is a little tricky. We only need to force
@@ -2315,42 +2301,42 @@ RBBIWordMonkey::RBBIWordMonkey()
 
     fSets            = new UVector(status);
 
-    fCRSet            = new UnicodeSet(u"[\\p{Word_Break = CR}]",           status);
-    fLFSet            = new UnicodeSet(u"[\\p{Word_Break = LF}]",           status);
-    fNewlineSet       = new UnicodeSet(u"[\\p{Word_Break = Newline}]",      status);
-    fKatakanaSet      = new UnicodeSet(u"[\\p{Word_Break = Katakana}]",     status);
-    fRegionalIndicatorSet =  new UnicodeSet(u"[\\p{Word_Break = Regional_Indicator}]", status);
-    fHebrew_LetterSet = new UnicodeSet(u"[\\p{Word_Break = Hebrew_Letter}]", status);
-    fALetterSet       = new UnicodeSet(u"[\\p{Word_Break = ALetter}]", status);
-    fSingle_QuoteSet  = new UnicodeSet(u"[\\p{Word_Break = Single_Quote}]",    status);
-    fDouble_QuoteSet  = new UnicodeSet(u"[\\p{Word_Break = Double_Quote}]",    status);
-    fMidNumLetSet     = new UnicodeSet(u"[\\p{Word_Break = MidNumLet}]",    status);
-    fMidLetterSet     = new UnicodeSet(u"[\\p{Word_Break = MidLetter}]",    status);
-    fMidNumSet        = new UnicodeSet(u"[\\p{Word_Break = MidNum}]",       status);
-    fNumericSet       = new UnicodeSet(u"[\\p{Word_Break = Numeric}]",      status);
-    fFormatSet        = new UnicodeSet(u"[\\p{Word_Break = Format}]",       status);
-    fExtendNumLetSet  = new UnicodeSet(u"[\\p{Word_Break = ExtendNumLet}]", status);
-    fExtendSet        = new UnicodeSet(u"[\\p{Word_Break = Extend}]",       status);
-
-    fEBaseSet         = new UnicodeSet(u"[\\p{Word_Break = EB}]",           status);
-    fEBGSet           = new UnicodeSet(u"[\\p{Word_Break = EBG}]",          status);
-    fEModifierSet     = new UnicodeSet(u"[\\p{Word_Break = EM}]",           status);
-    fZWJSet           = new UnicodeSet(u"[\\p{Word_Break = ZWJ}]",          status);
-    fExtendedPictSet  = new UnicodeSet(gExtended_Pict, status);
-    fEmojiNRKSet      = new UnicodeSet(
-            u"[[\\p{Emoji}]-[\\p{Word_Break = Regional_Indicator}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]", status);
-
-    fDictionarySet = new UnicodeSet(u"[[\\uac00-\\ud7a3][:Han:][:Hiragana:]]", status);
+    fCRSet            = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = CR}]"),           status);
+    fLFSet            = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = LF}]"),           status);
+    fNewlineSet       = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Newline}]"),      status);
+    fKatakanaSet      = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Katakana}]"),     status);
+    fRegionalIndicatorSet =  new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Regional_Indicator}]"), status);
+    fHebrew_LetterSet = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Hebrew_Letter}]"), status);
+    fALetterSet       = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = ALetter}]"), status);
+    fSingle_QuoteSet  = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Single_Quote}]"),    status);
+    fDouble_QuoteSet  = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Double_Quote}]"),    status);
+    fMidNumLetSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = MidNumLet}]"),    status);
+    fMidLetterSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = MidLetter}]"),    status);
+    fMidNumSet        = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = MidNum}]"),       status);
+    fNumericSet       = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Numeric}]"),      status);
+    fFormatSet        = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Format}]"),       status);
+    fExtendNumLetSet  = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = ExtendNumLet}]"), status);
+    fExtendSet        = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = Extend}]"),       status);
+
+    fEBaseSet         = new UnicodeSet(UNICODE_STRING_SIMPLE(
+            "[\\p{Word_Break = EB}\\U0001F3C2\\U0001F3C7\\U0001F3CC\\U0001F46A-\\U0001F46D\\U0001F46F\\U0001F574\\U0001F6CC]"), status);
+    fEBGSet           = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = EBG}]"),          status);
+    fEModifierSet     = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = EM}]"),           status);
+    fZWJSet           = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Word_Break = ZWJ}]"),          status);
+    fExtendedPictSet  = new UnicodeSet(UnicodeString(gExtended_Pict, -1, US_INV), status);
+    fEmojiNRKSet      = new UnicodeSet(UNICODE_STRING_SIMPLE(
+            "[[\\p{Emoji}]-[\\p{Word_Break = Regional_Indicator}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]"), status);
+
+    fDictionarySet = new UnicodeSet(UNICODE_STRING_SIMPLE("[[\\uac00-\\ud7a3][:Han:][:Hiragana:]]"), status);
     fDictionarySet->addAll(*fKatakanaSet);
-    fDictionarySet->addAll(UnicodeSet(u"[\\p{LineBreak = Complex_Context}]", status));
+    fDictionarySet->addAll(UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{LineBreak = Complex_Context}]"), status));
 
     fALetterSet->removeAll(*fDictionarySet);
 
     fOtherSet        = new UnicodeSet();
     if(U_FAILURE(status)) {
-        IntlTest::gTest->errln("%s:%d %s", __FILE__, __LINE__, u_errorName(status));
-        deferredStatus = status;
-        return;
+      deferredStatus = status;
+      return;
     }
 
     fOtherSet->complement();
@@ -3088,11 +3074,12 @@ RBBILineMonkey::RBBILineMonkey() :
     fRI    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=RI}]"), status);
     fSG    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\ud800-\\udfff]"), status);
     fXX    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=XX}]"), status);
-    fEB    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=EB}]"), status);
+    fEB    = new UnicodeSet(UNICODE_STRING_SIMPLE(
+            "[\\p{Line_break=EB}\\U0001F3C2\\U0001F3C7\\U0001F3CC\\U0001F46A-\\U0001F46D\\U0001F46F\\U0001F574\\U0001F6CC]"), status);
     fEM    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=EM}]"), status);
     fZJ    = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\p{Line_break=ZWJ}]"), status);
     fEmojiNRK = new UnicodeSet(UNICODE_STRING_SIMPLE("[[\\p{Emoji}]-[\\p{Line_break=RI}*#0-9\\u00a9\\u00ae\\u2122\\u3030\\u303d]]"), status);
-    fExtendedPict = new UnicodeSet(gExtended_Pict, status);
+    fExtendedPict = new UnicodeSet(UnicodeString(gExtended_Pict, -1, US_INV), status);
 
     if (U_FAILURE(status)) {
         deferredStatus = status;
@@ -3215,7 +3202,7 @@ void RBBILineMonkey::rule9Adjust(int32_t pos, UChar32 *posChar, int32_t *nextPos
 
     // LB 10  Treat any remaining combining mark as AL
     if (fCM->contains(*posChar)) {
-        *posChar = u'A';
+        *posChar = 0x41;   // thisChar = 'A';
     }
 
     // Push the updated nextPos and nextChar back to our caller.
@@ -4665,132 +4652,6 @@ void RBBITest::TestBug12797() {
     }
 }
 
-void RBBITest::TestBug12918() {
-    // This test triggers an assertion failure in dictbe.cpp
-    const UChar *crasherString = u"\u3325\u4a16";
-    UErrorCode status = U_ZERO_ERROR;
-    UBreakIterator* iter = ubrk_open(UBRK_WORD, NULL, crasherString, -1, &status);
-    if (U_FAILURE(status)) {
-        dataerrln("%s:%d status = %s", __FILE__, __LINE__, u_errorName(status));
-        return;
-    }
-    ubrk_first(iter);
-    int32_t pos = 0;
-    int32_t lastPos = -1;
-    while((pos = ubrk_next(iter)) != UBRK_DONE) {
-        if (pos <= lastPos) {
-            errln("%s:%d (pos, lastPos) = (%d, %d)", __FILE__, __LINE__, pos, lastPos);
-            break;
-        }
-    }
-    ubrk_close(iter);
-}
-
-void RBBITest::TestBug12932() {
-    // Node Stack overflow in the RBBI rule parser caused a seg fault.
-    UnicodeString ruleStr(
-            "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("
-            "((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("
-            "(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))"
-            ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"
-            ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"
-            ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))");
-
-    UErrorCode status = U_ZERO_ERROR;
-    UParseError parseError;
-    RuleBasedBreakIterator rbbi(ruleStr, parseError, status);
-    if (status != U_BRK_RULE_SYNTAX) {
-        errln("%s:%d expected U_BRK_RULE_SYNTAX, got %s",
-                __FILE__, __LINE__, u_errorName(status));
-    }
-}
-
-
-// Emoji Test. Verify that the sequences defined in the Unicode data file emoji-test.txt
-//             remain undevided by ICU char, word and line break.
-void RBBITest::TestEmoji() {
-    UErrorCode  status = U_ZERO_ERROR;
-
-    CharString testFileName;
-    testFileName.append(IntlTest::getSourceTestData(status), status);
-    testFileName.appendPathPart("emoji-test.txt", status);
-    if (U_FAILURE(status)) {
-        errln("%s:%s %s while opening emoji-test.txt", __FILE__, __LINE__, u_errorName(status));
-        return;
-    }
-    logln("Opening data file %s\n", testFileName.data());
-
-    int    len;
-    UChar *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
-    if (U_FAILURE(status) || testFile == NULL) {
-        errln("%s:%s %s while opening emoji-test.txt", __FILE__, __LINE__, u_errorName(status));
-        return;
-    }
-    UnicodeString testFileAsString(testFile, len);
-    delete [] testFile;
-
-    RegexMatcher lineMatcher(u"^.*?$", testFileAsString, UREGEX_MULTILINE, status);
-    RegexMatcher hexMatcher(u"\\s*([a-f0-9]*)", UREGEX_CASE_INSENSITIVE, status);
-    //           hexMatcher group(1) is a hex number, or empty string if no hex number present.
-    int32_t lineNumber = 0;
-
-    LocalPointer<BreakIterator> charBreaks(BreakIterator::createCharacterInstance(Locale::getEnglish(), status), status);
-    LocalPointer<BreakIterator> wordBreaks(BreakIterator::createWordInstance(Locale::getEnglish(), status), status);
-    LocalPointer<BreakIterator> lineBreaks(BreakIterator::createLineInstance(Locale::getEnglish(), status), status);
-    if (U_FAILURE(status)) {
-        dataerrln("%s:%d %s while opening break iterators", __FILE__, __LINE__, u_errorName(status));
-        return;
-    }
-
-    while (lineMatcher.find()) {
-        ++lineNumber;
-        UnicodeString line = lineMatcher.group(status);
-        hexMatcher.reset(line);
-        UnicodeString testString;   // accumulates the emoji sequence.
-        while (hexMatcher.find() && hexMatcher.group(1, status).length() > 0) {
-            UnicodeString hex = hexMatcher.group(1, status);
-            if (hex.length() > 8) {
-                errln("%s:%d emoji-test.txt:%d invalid code point %s", __FILE__, __LINE__, lineNumber, CStr(hex)());
-                break;
-            }
-            CharString hex8;
-            hex8.appendInvariantChars(hex, status);
-            UChar32 c = (UChar32)strtol(hex8.data(), NULL, 16);
-            if (c<=0x10ffff) {
-                testString.append(c);
-            } else {
-                errln("%s:%d emoji-test.txt:%d Error: Unicode Character %s value out of range.",
-                        __FILE__, __LINE__, lineNumber, hex8.data());
-                break;
-            }
-        }
-
-        if (testString.length() > 1) {
-            charBreaks->setText(testString);
-            charBreaks->first();
-            int32_t firstBreak = charBreaks->next();
-            if (testString.length() != firstBreak) {
-                errln("%s:%d  emoji-test.txt:%d Error, uexpected break at offset %d",
-                        __FILE__, __LINE__, lineNumber, firstBreak);
-            }
-            wordBreaks->setText(testString);
-            wordBreaks->first();
-            firstBreak = wordBreaks->next();
-            if (testString.length() != firstBreak) {
-                errln("%s:%d  emoji-test.txt:%d Error, uexpected break at offset %d",
-                        __FILE__, __LINE__, lineNumber, firstBreak);
-            }
-            lineBreaks->setText(testString);
-            lineBreaks->first();
-            firstBreak = lineBreaks->next();
-            if (testString.length() != firstBreak) {
-                errln("%s:%d  emoji-test.txt:%d Error, uexpected break at offset %d",
-                        __FILE__, __LINE__, lineNumber, firstBreak);
-            }
-        }
-    }
-}
-
 
 //
 //  TestDebug    -  A place-holder test for debugging purposes.
@@ -4798,6 +4659,7 @@ void RBBITest::TestEmoji() {
 //                  for tracing  without a lot of unwanted extra stuff happening.
 //
 void RBBITest::TestDebug(void) {
+
 }
 
 void RBBITest::TestProperties() {
index 6809376..6b2c2f0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*************************************************************************
  * Copyright (c) 1999-2016, International Business Machines
@@ -76,9 +76,6 @@ public:
     void TestBug9983();
     void TestBug7547();
     void TestBug12797();
-    void TestBug12918();
-    void TestBug12932();
-    void TestEmoji();
 
     void TestDebug();
     void TestProperties();
index 766a72e..39d5c54 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 424acb2..f0947ee 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0dbc910..34642ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -68,43 +68,107 @@ RegexTest::~RegexTest()
 void RegexTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
 {
     if (exec) logln("TestSuite RegexTest: ");
-    TESTCASE_AUTO_BEGIN;
-    TESTCASE_AUTO(Basic);
-    TESTCASE_AUTO(API_Match);
-    TESTCASE_AUTO(API_Replace);
-    TESTCASE_AUTO(API_Pattern);
+    switch (index) {
+
+        case 0: name = "Basic";
+            if (exec) Basic();
+            break;
+        case 1: name = "API_Match";
+            if (exec) API_Match();
+            break;
+        case 2: name = "API_Replace";
+            if (exec) API_Replace();
+            break;
+        case 3: name = "API_Pattern";
+            if (exec) API_Pattern();
+            break;
+        case 4:
 #if !UCONFIG_NO_FILE_IO
-    TESTCASE_AUTO(Extended);
+            name = "Extended";
+            if (exec) Extended();
+#else
+            name = "skip";
 #endif
-    TESTCASE_AUTO(Errors);
-    TESTCASE_AUTO(PerlTests);
-    TESTCASE_AUTO(Callbacks);
-    TESTCASE_AUTO(FindProgressCallbacks);
-    TESTCASE_AUTO(Bug6149);
-    TESTCASE_AUTO(UTextBasic);
-    TESTCASE_AUTO(API_Match_UTF8);
-    TESTCASE_AUTO(API_Replace_UTF8);
-    TESTCASE_AUTO(API_Pattern_UTF8);
-    TESTCASE_AUTO(PerlTestsUTF8);
-    TESTCASE_AUTO(PreAllocatedUTextCAPI);
-    TESTCASE_AUTO(Bug7651);
-    TESTCASE_AUTO(Bug7740);
-    TESTCASE_AUTO(Bug8479);
-    TESTCASE_AUTO(Bug7029);
-    TESTCASE_AUTO(CheckInvBufSize);
-    TESTCASE_AUTO(Bug9283);
-    TESTCASE_AUTO(Bug10459);
-    TESTCASE_AUTO(TestCaseInsensitiveStarters);
-    TESTCASE_AUTO(TestBug11049);
-    TESTCASE_AUTO(TestBug11371);
-    TESTCASE_AUTO(TestBug11480);
-    TESTCASE_AUTO(NamedCapture);
-    TESTCASE_AUTO(NamedCaptureLimits);
-    TESTCASE_AUTO(TestBug12884);
-    TESTCASE_AUTO_END;
+            break;
+        case 5: name = "Errors";
+            if (exec) Errors();
+            break;
+        case 6: name = "PerlTests";
+            if (exec) PerlTests();
+            break;
+        case 7: name = "Callbacks";
+            if (exec) Callbacks();
+            break;
+        case 8: name = "FindProgressCallbacks";
+            if (exec) FindProgressCallbacks();
+            break;
+        case 9: name = "Bug 6149";
+             if (exec) Bug6149();
+             break;
+        case 10: name = "UTextBasic";
+          if (exec) UTextBasic();
+          break;
+        case 11: name = "API_Match_UTF8";
+          if (exec) API_Match_UTF8();
+          break;
+        case 12: name = "API_Replace_UTF8";
+          if (exec) API_Replace_UTF8();
+          break;
+        case 13: name = "API_Pattern_UTF8";
+          if (exec) API_Pattern_UTF8();
+          break;
+        case 14: name = "PerlTestsUTF8";
+          if (exec) PerlTestsUTF8();
+          break;
+        case 15: name = "PreAllocatedUTextCAPI";
+          if (exec) PreAllocatedUTextCAPI();
+          break;
+        case 16: name = "Bug 7651";
+             if (exec) Bug7651();
+             break;
+        case 17: name = "Bug 7740";
+            if (exec) Bug7740();
+            break;
+        case 18: name = "Bug 8479";
+            if (exec) Bug8479();
+            break;
+        case 19: name = "Bug 7029";
+            if (exec) Bug7029();
+            break;
+        case 20: name = "CheckInvBufSize";
+            if (exec) CheckInvBufSize();
+            break;
+        case 21: name = "Bug 9283";
+            if (exec) Bug9283();
+            break;
+        case 22: name = "Bug10459";
+            if (exec) Bug10459();
+            break;
+        case 23: name = "TestCaseInsensitiveStarters";
+            if (exec) TestCaseInsensitiveStarters();
+            break;
+        case 24: name = "TestBug11049";
+            if (exec) TestBug11049();
+            break;
+        case 25: name = "TestBug11371";
+            if (exec) TestBug11371();
+            break;
+        case 26: name = "TestBug11480";
+            if (exec) TestBug11480();
+            break;
+        case 27: name = "NamedCapture";
+            if (exec) NamedCapture();
+            break;
+        case 28: name = "NamedCaptureLimits";
+            if (exec) NamedCaptureLimits();
+            break;
+        default: name = "";
+            break; //needed to end loop
+    }
 }
 
 
+
 /**
  * Calls utext_openUTF8 after, potentially, converting invariant text from the compilation codepage
  * into ASCII.
@@ -5769,41 +5833,5 @@ void RegexTest::TestBug11480() {
     REGEX_CHECK_STATUS;
 }
 
-void RegexTest::TestBug12884() {
-    // setTimeLimit() was not effective for empty sub-patterns with large {minimum counts}
-    UnicodeString pattern(u"(((((((){120}){11}){11}){11}){80}){11}){4}");
-    UnicodeString text(u"hello");
-    UErrorCode status = U_ZERO_ERROR;
-    RegexMatcher m(pattern, text, 0, status);
-    REGEX_CHECK_STATUS;
-    m.setTimeLimit(5, status);
-    m.find(status);
-    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
-
-    // Non-greedy loops. They take a different code path during matching.
-    UnicodeString ngPattern(u"(((((((){120}?){11}?){11}?){11}?){80}?){11}?){4}?");
-    status = U_ZERO_ERROR;
-    RegexMatcher ngM(ngPattern, text, 0, status);
-    REGEX_CHECK_STATUS;
-    ngM.setTimeLimit(5, status);
-    ngM.find(status);
-    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
-
-    // UText, wrapping non-UTF-16 text, also takes a different execution path.
-    const char *text8 = u8"¿Qué es Unicode?  Unicode proporciona un número único para cada"
-                          "carácter, sin importar la plataforma, sin importar el programa,"
-                          "sin importar el idioma.";
-    status = U_ZERO_ERROR;
-    LocalUTextPointer ut(utext_openUTF8(NULL, text8, -1, &status));
-    REGEX_CHECK_STATUS;
-    m.reset(ut.getAlias());
-    m.find(status);
-    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
-
-    status = U_ZERO_ERROR;
-    ngM.reset(ut.getAlias());
-    ngM.find(status);
-    REGEX_ASSERT(status == U_REGEX_TIME_OUT);
-}
 
 #endif  /* !UCONFIG_NO_REGULAR_EXPRESSIONS  */
index 3f90de0..9cae007 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -56,7 +56,6 @@ public:
     virtual void TestBug11049();
     virtual void TestBug11371();
     virtual void TestBug11480();
-    virtual void TestBug12884();
     
     // The following functions are internal to the regexp tests.
     virtual void assertUText(const char *expected, UText *actual, const char *file, int line);
index 4d3561a..9444dc4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index 32e0e01..936a47e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT:
index c0765dd..3a91f4c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 35a3f5d..2b44134 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index ee95f10..9b8b95c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5ffcb94..75c9f22 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 879bb6e..5f0df9a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 5483cdd..52cce8f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 817e5b3..ae87e0c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c76e19c..2967088 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index ba48346..6eaa7f2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 8e31cc1..9d0f498 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 81b73ae..f4074ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index e0ddfa2..adea86b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9b12161..308dd05 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  sfwdchit.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 */
index 388e6ef..6938bb1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 3a77768..f503f39 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 10b635d..9c1e0e1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9fcb52a..8b04418 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a7534dd..3fb0c22 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************************
@@ -644,7 +644,7 @@ void StringSearchTest::TestOpenClose()
     }
     delete result;
 
-    // No-op: text.append(0, 0x1); -- what was intended here?
+    text.append(0, 0x1);
     status = U_ZERO_ERROR;
     result = new StringSearch(pattern, text, NULL, NULL, status);
     if (U_SUCCESS(status)) {
index 2b436ca..53a95b6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /****************************************************************************
  * COPYRIGHT: 
index 5a68838..eae05e3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 59d5b67..ac5e690 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 5c29198..7054b7f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  strcase.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -19,8 +19,6 @@
 */
 
 #include "unicode/std_string.h"
-#include "unicode/casemap.h"
-#include "unicode/edits.h"
 #include "unicode/uchar.h"
 #include "unicode/ures.h"
 #include "unicode/uloc.h"
 #include "unicode/tstdtmod.h"
 #include "cmemory.h"
 
-struct EditChange {
-    UBool change;
-    int32_t oldLength, newLength;
-};
-
-class StringCaseTest: public IntlTest {
-public:
-    StringCaseTest();
-    virtual ~StringCaseTest();
-
-    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
-
-    void TestCaseConversion();
-
-    void TestCasingImpl(const UnicodeString &input,
-                        const UnicodeString &output,
-                        int32_t whichCase,
-                        void *iter, const char *localeID, uint32_t options);
-    void TestCasing();
-    void TestFullCaseFoldingIterator();
-    void TestGreekUpper();
-    void TestLongUpper();
-    void TestMalformedUTF8();
-    void TestBufferOverflow();
-    void TestEdits();
-    void TestCaseMapWithEdits();
-    void TestCaseMapUTF8WithEdits();
-    void TestLongUnicodeString();
-    void TestBug13127();
-
-private:
-    void assertGreekUpper(const char16_t *s, const char16_t *expected);
-    void checkEditsIter(
-        const UnicodeString &name, Edits::Iterator ei1, Edits::Iterator ei2,  // two equal iterators
-        const EditChange expected[], int32_t expLength, UBool withUnchanged,
-        UErrorCode &errorCode);
-
-    Locale GREEK_LOCALE_;
-};
-
 StringCaseTest::StringCaseTest() : GREEK_LOCALE_("el") {}
 
 StringCaseTest::~StringCaseTest() {}
 
-extern IntlTest *createStringCaseTest() {
-    return new StringCaseTest();
-}
-
 void
 StringCaseTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
     if(exec) {
@@ -90,17 +44,12 @@ StringCaseTest::runIndexedTest(int32_t index, UBool exec, const char *&name, cha
     TESTCASE_AUTO(TestCaseConversion);
 #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
     TESTCASE_AUTO(TestCasing);
-    TESTCASE_AUTO(TestBug13127);
 #endif
     TESTCASE_AUTO(TestFullCaseFoldingIterator);
     TESTCASE_AUTO(TestGreekUpper);
     TESTCASE_AUTO(TestLongUpper);
     TESTCASE_AUTO(TestMalformedUTF8);
     TESTCASE_AUTO(TestBufferOverflow);
-    TESTCASE_AUTO(TestEdits);
-    TESTCASE_AUTO(TestCaseMapWithEdits);
-    TESTCASE_AUTO(TestCaseMapUTF8WithEdits);
-    TESTCASE_AUTO(TestLongUnicodeString);
     TESTCASE_AUTO_END;
 }
 
@@ -633,9 +582,9 @@ StringCaseTest::TestFullCaseFoldingIterator() {
 }
 
 void
-StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
-    UnicodeString s16(s);
-    UnicodeString expected16(expected);
+StringCaseTest::assertGreekUpper(const char *s, const char *expected) {
+    UnicodeString s16 = UnicodeString(s).unescape();
+    UnicodeString expected16 = UnicodeString(expected).unescape();
     UnicodeString msg = UnicodeString("UnicodeString::toUpper/Greek(\"") + s16 + "\")";
     UnicodeString result16(s16);
     result16.toUpper(GREEK_LOCALE_);
@@ -670,6 +619,7 @@ StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
         }
     }
 
+#if U_HAVE_STD_STRING
     UErrorCode errorCode = U_ZERO_ERROR;
     LocalUCaseMapPointer csm(ucasemap_open("el", 0, &errorCode));
     assertSuccess("ucasemap_open", errorCode);
@@ -705,43 +655,98 @@ StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
             expectedErrorCode = U_STRING_NOT_TERMINATED_WARNING;
         } else {
             expectedErrorCode = U_ZERO_ERROR;
-            // Casts to int32_t to avoid matching UBool.
-            assertEquals(msg + cap + " NUL", (int32_t)0, (int32_t)dest8b[length]);
+            assertEquals(msg + cap + " NUL", 0, dest8b[length]);
         }
         assertEquals(msg + cap + " errorCode", expectedErrorCode, errorCode);
         if (cap >= expected8Length) {
             assertEquals(msg + cap + " (memcmp)", 0, memcmp(dest8, dest8b, expected8Length));
         }
     }
+#endif
 }
 
 void
 StringCaseTest::TestGreekUpper() {
+    // See UCharacterCaseTest.java for human-readable strings.
+
     // http://bugs.icu-project.org/trac/ticket/5456
-    assertGreekUpper(u"άδικος, κείμενο, ίριδα", u"ΑΔΙΚΟΣ, ΚΕΙΜΕΝΟ, ΙΡΙΔΑ");
+    assertGreekUpper("\\u03AC\\u03B4\\u03B9\\u03BA\\u03BF\\u03C2, "
+                     "\\u03BA\\u03B5\\u03AF\\u03BC\\u03B5\\u03BD\\u03BF, "
+                     "\\u03AF\\u03C1\\u03B9\\u03B4\\u03B1",
+                     "\\u0391\\u0394\\u0399\\u039A\\u039F\\u03A3, "
+                     "\\u039A\\u0395\\u0399\\u039C\\u0395\\u039D\\u039F, "
+                     "\\u0399\\u03A1\\u0399\\u0394\\u0391");
     // https://bugzilla.mozilla.org/show_bug.cgi?id=307039
     // https://bug307039.bmoattachments.org/attachment.cgi?id=194893
-    assertGreekUpper(u"Πατάτα", u"ΠΑΤΑΤΑ");
-    assertGreekUpper(u"Αέρας, Μυστήριο, Ωραίο", u"ΑΕΡΑΣ, ΜΥΣΤΗΡΙΟ, ΩΡΑΙΟ");
-    assertGreekUpper(u"Μαΐου, Πόρος, Ρύθμιση", u"ΜΑΪΟΥ, ΠΟΡΟΣ, ΡΥΘΜΙΣΗ");
-    assertGreekUpper(u"ΰ, Τηρώ, Μάιος", u"Ϋ, ΤΗΡΩ, ΜΑΪΟΣ");
-    assertGreekUpper(u"άυλος", u"ΑΫΛΟΣ");
-    assertGreekUpper(u"ΑΫΛΟΣ", u"ΑΫΛΟΣ");
-    assertGreekUpper(u"Άκλιτα ρήματα ή άκλιτες μετοχές", u"ΑΚΛΙΤΑ ΡΗΜΑΤΑ Ή ΑΚΛΙΤΕΣ ΜΕΤΟΧΕΣ");
+    assertGreekUpper("\\u03A0\\u03B1\\u03C4\\u03AC\\u03C4\\u03B1",
+                     "\\u03A0\\u0391\\u03A4\\u0391\\u03A4\\u0391");
+    assertGreekUpper("\\u0391\\u03AD\\u03C1\\u03B1\\u03C2, "
+                     "\\u039C\\u03C5\\u03C3\\u03C4\\u03AE\\u03C1\\u03B9\\u03BF, "
+                     "\\u03A9\\u03C1\\u03B1\\u03AF\\u03BF",
+                     "\\u0391\\u0395\\u03A1\\u0391\\u03A3, "
+                     "\\u039C\\u03A5\\u03A3\\u03A4\\u0397\\u03A1\\u0399\\u039F, "
+                     "\\u03A9\\u03A1\\u0391\\u0399\\u039F");
+    assertGreekUpper("\\u039C\\u03B1\\u0390\\u03BF\\u03C5, \\u03A0\\u03CC\\u03C1\\u03BF\\u03C2, "
+                     "\\u03A1\\u03CD\\u03B8\\u03BC\\u03B9\\u03C3\\u03B7",
+                     "\\u039C\\u0391\\u03AA\\u039F\\u03A5, \\u03A0\\u039F\\u03A1\\u039F\\u03A3, "
+                     "\\u03A1\\u03A5\\u0398\\u039C\\u0399\\u03A3\\u0397");
+    assertGreekUpper("\\u03B0, \\u03A4\\u03B7\\u03C1\\u03CE, \\u039C\\u03AC\\u03B9\\u03BF\\u03C2",
+                     "\\u03AB, \\u03A4\\u0397\\u03A1\\u03A9, \\u039C\\u0391\\u03AA\\u039F\\u03A3");
+    assertGreekUpper("\\u03AC\\u03C5\\u03BB\\u03BF\\u03C2",
+                     "\\u0391\\u03AB\\u039B\\u039F\\u03A3");
+    assertGreekUpper("\\u0391\\u03AB\\u039B\\u039F\\u03A3",
+                     "\\u0391\\u03AB\\u039B\\u039F\\u03A3");
+    assertGreekUpper("\\u0386\\u03BA\\u03BB\\u03B9\\u03C4\\u03B1 "
+                     "\\u03C1\\u03AE\\u03BC\\u03B1\\u03C4\\u03B1 \\u03AE "
+                     "\\u03AC\\u03BA\\u03BB\\u03B9\\u03C4\\u03B5\\u03C2 "
+                     "\\u03BC\\u03B5\\u03C4\\u03BF\\u03C7\\u03AD\\u03C2",
+                     "\\u0391\\u039A\\u039B\\u0399\\u03A4\\u0391 "
+                     "\\u03A1\\u0397\\u039C\\u0391\\u03A4\\u0391 \\u0397\\u0301 "
+                     "\\u0391\\u039A\\u039B\\u0399\\u03A4\\u0395\\u03A3 "
+                     "\\u039C\\u0395\\u03A4\\u039F\\u03A7\\u0395\\u03A3");
     // http://www.unicode.org/udhr/d/udhr_ell_monotonic.html
-    assertGreekUpper(u"Επειδή η αναγνώριση της αξιοπρέπειας", u"ΕΠΕΙΔΗ Η ΑΝΑΓΝΩΡΙΣΗ ΤΗΣ ΑΞΙΟΠΡΕΠΕΙΑΣ");
-    assertGreekUpper(u"νομικού ή διεθνούς", u"ΝΟΜΙΚΟΥ Ή ΔΙΕΘΝΟΥΣ");
+    assertGreekUpper("\\u0395\\u03C0\\u03B5\\u03B9\\u03B4\\u03AE \\u03B7 "
+                     "\\u03B1\\u03BD\\u03B1\\u03B3\\u03BD\\u03CE\\u03C1\\u03B9\\u03C3\\u03B7 "
+                     "\\u03C4\\u03B7\\u03C2 \\u03B1\\u03BE\\u03B9\\u03BF\\u03C0\\u03C1\\u03AD"
+                     "\\u03C0\\u03B5\\u03B9\\u03B1\\u03C2",
+                     "\\u0395\\u03A0\\u0395\\u0399\\u0394\\u0397 \\u0397 "
+                     "\\u0391\\u039D\\u0391\\u0393\\u039D\\u03A9\\u03A1\\u0399\\u03A3\\u0397 "
+                     "\\u03A4\\u0397\\u03A3 \\u0391\\u039E\\u0399\\u039F\\u03A0\\u03A1\\u0395"
+                     "\\u03A0\\u0395\\u0399\\u0391\\u03A3");
+    assertGreekUpper("\\u03BD\\u03BF\\u03BC\\u03B9\\u03BA\\u03BF\\u03CD \\u03AE "
+                     "\\u03B4\\u03B9\\u03B5\\u03B8\\u03BD\\u03BF\\u03CD\\u03C2",
+                     "\\u039D\\u039F\\u039C\\u0399\\u039A\\u039F\\u03A5 \\u0397\\u0301 "
+                     "\\u0394\\u0399\\u0395\\u0398\\u039D\\u039F\\u03A5\\u03A3");
     // http://unicode.org/udhr/d/udhr_ell_polytonic.html
-    assertGreekUpper(u"Ἐπειδὴ ἡ ἀναγνώριση", u"ΕΠΕΙΔΗ Η ΑΝΑΓΝΩΡΙΣΗ");
-    assertGreekUpper(u"νομικοῦ ἢ διεθνοῦς", u"ΝΟΜΙΚΟΥ Ή ΔΙΕΘΝΟΥΣ");
+    assertGreekUpper("\\u1F18\\u03C0\\u03B5\\u03B9\\u03B4\\u1F74 \\u1F21 "
+                     "\\u1F00\\u03BD\\u03B1\\u03B3\\u03BD\\u1F7D\\u03C1\\u03B9\\u03C3\\u03B7",
+                     "\\u0395\\u03A0\\u0395\\u0399\\u0394\\u0397 \\u0397 "
+                     "\\u0391\\u039D\\u0391\\u0393\\u039D\\u03A9\\u03A1\\u0399\\u03A3\\u0397");
+    assertGreekUpper("\\u03BD\\u03BF\\u03BC\\u03B9\\u03BA\\u03BF\\u1FE6 \\u1F22 "
+                     "\\u03B4\\u03B9\\u03B5\\u03B8\\u03BD\\u03BF\\u1FE6\\u03C2",
+                     "\\u039D\\u039F\\u039C\\u0399\\u039A\\u039F\\u03A5 \\u0397\\u0301 "
+                     "\\u0394\\u0399\\u0395\\u0398\\u039D\\u039F\\u03A5\\u03A3");
     // From Google bug report
-    assertGreekUpper(u"Νέο, Δημιουργία", u"ΝΕΟ, ΔΗΜΙΟΥΡΓΙΑ");
+    assertGreekUpper("\\u039D\\u03AD\\u03BF, "
+                     "\\u0394\\u03B7\\u03BC\\u03B9\\u03BF\\u03C5\\u03C1\\u03B3\\u03AF\\u03B1",
+                     "\\u039D\\u0395\\u039F, "
+                     "\\u0394\\u0397\\u039C\\u0399\\u039F\\u03A5\\u03A1\\u0393\\u0399\\u0391");
     // http://crbug.com/234797
-    assertGreekUpper(u"Ελάτε να φάτε τα καλύτερα παϊδάκια!", u"ΕΛΑΤΕ ΝΑ ΦΑΤΕ ΤΑ ΚΑΛΥΤΕΡΑ ΠΑΪΔΑΚΙΑ!");
-    assertGreekUpper(u"Μαΐου, τρόλεϊ", u"ΜΑΪΟΥ, ΤΡΟΛΕΪ");
-    assertGreekUpper(u"Το ένα ή το άλλο.", u"ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.");
+    assertGreekUpper("\\u0395\\u03BB\\u03AC\\u03C4\\u03B5 \\u03BD\\u03B1 \\u03C6\\u03AC\\u03C4\\u03B5 "
+                     "\\u03C4\\u03B1 \\u03BA\\u03B1\\u03BB\\u03CD\\u03C4\\u03B5\\u03C1\\u03B1 "
+                     "\\u03C0\\u03B1\\u03CA\\u03B4\\u03AC\\u03BA\\u03B9\\u03B1!",
+                     "\\u0395\\u039B\\u0391\\u03A4\\u0395 \\u039D\\u0391 \\u03A6\\u0391\\u03A4\\u0395 "
+                     "\\u03A4\\u0391 \\u039A\\u0391\\u039B\\u03A5\\u03A4\\u0395\\u03A1\\u0391 "
+                     "\\u03A0\\u0391\\u03AA\\u0394\\u0391\\u039A\\u0399\\u0391!");
+    assertGreekUpper("\\u039C\\u03B1\\u0390\\u03BF\\u03C5, \\u03C4\\u03C1\\u03CC\\u03BB\\u03B5\\u03CA",
+                     "\\u039C\\u0391\\u03AA\\u039F\\u03A5, \\u03A4\\u03A1\\u039F\\u039B\\u0395\\u03AA");
+    assertGreekUpper("\\u03A4\\u03BF \\u03AD\\u03BD\\u03B1 \\u03AE \\u03C4\\u03BF "
+                     "\\u03AC\\u03BB\\u03BB\\u03BF.",
+                     "\\u03A4\\u039F \\u0395\\u039D\\u0391 \\u0397\\u0301 \\u03A4\\u039F "
+                     "\\u0391\\u039B\\u039B\\u039F.");
     // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/
-    assertGreekUpper(u"ρωμέικα", u"ΡΩΜΕΪΚΑ");
+    assertGreekUpper("\\u03C1\\u03C9\\u03BC\\u03AD\\u03B9\\u03BA\\u03B1",
+                     "\\u03A1\\u03A9\\u039C\\u0395\\u03AA\\u039A\\u0391");
 }
 
 void
@@ -781,14 +786,11 @@ void StringCaseTest::TestMalformedUTF8() {
     }
     char src[1] = { (char)0x85 };  // malformed UTF-8
     char dest[3] = { 0, 0, 0 };
-    int32_t destLength;
-#if !UCONFIG_NO_BREAK_ITERATION
-    destLength = ucasemap_utf8ToTitle(csm.getAlias(), dest, 3, src, 1, errorCode);
+    int32_t destLength = ucasemap_utf8ToTitle(csm.getAlias(), dest, 3, src, 1, errorCode);
     if (errorCode.isFailure() || destLength != 1 || dest[0] != src[0]) {
         errln("ucasemap_utf8ToTitle(\\x85) failed: %s destLength=%d dest[0]=0x%02x",
               errorCode.errorName(), (int)destLength, dest[0]);
     }
-#endif
 
     errorCode.reset();
     dest[0] = 0;
@@ -826,324 +828,23 @@ void StringCaseTest::TestBufferOverflow() {
     }
 
     UnicodeString data("hello world");
-    int32_t result;
-#if !UCONFIG_NO_BREAK_ITERATION
-    result = ucasemap_toTitle(csm.getAlias(), NULL, 0, data.getBuffer(), data.length(), errorCode);
+    int32_t result = ucasemap_toTitle(csm.getAlias(), NULL, 0, data.getBuffer(), data.length(), errorCode);
     if (errorCode.get() != U_BUFFER_OVERFLOW_ERROR || result != data.length()) {
         errln("%s:%d ucasemap_toTitle(\"hello world\") failed: "
               "expected (U_BUFFER_OVERFLOW_ERROR, %d), got (%s, %d)",
               __FILE__, __LINE__, data.length(), errorCode.errorName(), result);
     }
-#endif
     errorCode.reset();
 
+#if U_HAVE_STD_STRING
     std::string data_utf8;
     data.toUTF8String(data_utf8);
-#if !UCONFIG_NO_BREAK_ITERATION
     result = ucasemap_utf8ToTitle(csm.getAlias(), NULL, 0, data_utf8.c_str(), data_utf8.length(), errorCode);
     if (errorCode.get() != U_BUFFER_OVERFLOW_ERROR || result != (int32_t)data_utf8.length()) {
         errln("%s:%d ucasemap_toTitle(\"hello world\") failed: "
               "expected (U_BUFFER_OVERFLOW_ERROR, %d), got (%s, %d)",
               __FILE__, __LINE__, data_utf8.length(), errorCode.errorName(), result);
     }
-#endif
     errorCode.reset();
-}
-
-void StringCaseTest::checkEditsIter(
-        const UnicodeString &name,
-        Edits::Iterator ei1, Edits::Iterator ei2,  // two equal iterators
-        const EditChange expected[], int32_t expLength, UBool withUnchanged,
-        UErrorCode &errorCode) {
-    assertFalse(name, ei2.findSourceIndex(-1, errorCode));
-
-    int32_t expSrcIndex = 0;
-    int32_t expDestIndex = 0;
-    int32_t expReplIndex = 0;
-    for (int32_t expIndex = 0; expIndex < expLength; ++expIndex) {
-        const EditChange &expect = expected[expIndex];
-        UnicodeString msg = UnicodeString(name).append(u' ') + expIndex;
-        if (withUnchanged || expect.change) {
-            assertTrue(msg, ei1.next(errorCode));
-            assertEquals(msg, expect.change, ei1.hasChange());
-            assertEquals(msg, expect.oldLength, ei1.oldLength());
-            assertEquals(msg, expect.newLength, ei1.newLength());
-            assertEquals(msg, expSrcIndex, ei1.sourceIndex());
-            assertEquals(msg, expDestIndex, ei1.destinationIndex());
-            assertEquals(msg, expReplIndex, ei1.replacementIndex());
-        }
-
-        if (expect.oldLength > 0) {
-            assertTrue(msg, ei2.findSourceIndex(expSrcIndex, errorCode));
-            assertEquals(msg, expect.change, ei2.hasChange());
-            assertEquals(msg, expect.oldLength, ei2.oldLength());
-            assertEquals(msg, expect.newLength, ei2.newLength());
-            assertEquals(msg, expSrcIndex, ei2.sourceIndex());
-            assertEquals(msg, expDestIndex, ei2.destinationIndex());
-            assertEquals(msg, expReplIndex, ei2.replacementIndex());
-            if (!withUnchanged) {
-                // For some iterators, move past the current range
-                // so that findSourceIndex() has to look before the current index.
-                ei2.next(errorCode);
-                ei2.next(errorCode);
-            }
-        }
-
-        expSrcIndex += expect.oldLength;
-        expDestIndex += expect.newLength;
-        if (expect.change) {
-            expReplIndex += expect.newLength;
-        }
-    }
-    // TODO: remove casts from u"" when merging into trunk
-    UnicodeString msg = UnicodeString(name).append(u" end");
-    assertFalse(msg, ei1.next(errorCode));
-    assertFalse(msg, ei1.hasChange());
-    assertEquals(msg, 0, ei1.oldLength());
-    assertEquals(msg, 0, ei1.newLength());
-    assertEquals(msg, expSrcIndex, ei1.sourceIndex());
-    assertEquals(msg, expDestIndex, ei1.destinationIndex());
-    assertEquals(msg, expReplIndex, ei1.replacementIndex());
-
-    assertFalse(name, ei2.findSourceIndex(expSrcIndex, errorCode));
-}
-
-void StringCaseTest::TestEdits() {
-    IcuTestErrorCode errorCode(*this, "TestEdits");
-    Edits edits;
-    assertFalse("new Edits", edits.hasChanges());
-    assertEquals("new Edits", 0, edits.lengthDelta());
-    edits.addUnchanged(1);  // multiple unchanged ranges are combined
-    edits.addUnchanged(10000);  // too long, and they are split
-    edits.addReplace(0, 0);
-    edits.addUnchanged(2);
-    assertFalse("unchanged 10003", edits.hasChanges());
-    assertEquals("unchanged 10003", 0, edits.lengthDelta());
-    edits.addReplace(1, 1);  // multiple short equal-length edits are compressed
-    edits.addUnchanged(0);
-    edits.addReplace(1, 1);
-    edits.addReplace(1, 1);
-    edits.addReplace(0, 10);
-    edits.addReplace(100, 0);
-    edits.addReplace(3000, 4000);  // variable-length encoding
-    edits.addReplace(100000, 100000);
-    assertTrue("some edits", edits.hasChanges());
-    assertEquals("some edits", 10 - 100 + 1000, edits.lengthDelta());
-    UErrorCode outErrorCode = U_ZERO_ERROR;
-    assertFalse("edits done: copyErrorTo", edits.copyErrorTo(outErrorCode));
-
-    static const EditChange coarseExpectedChanges[] = {
-            { FALSE, 10003, 10003 },
-            { TRUE, 103103, 104013 }
-    };
-    checkEditsIter(u"coarse",
-            edits.getCoarseIterator(), edits.getCoarseIterator(),
-            coarseExpectedChanges, UPRV_LENGTHOF(coarseExpectedChanges), TRUE, errorCode);
-    checkEditsIter(u"coarse changes",
-            edits.getCoarseChangesIterator(), edits.getCoarseChangesIterator(),
-            coarseExpectedChanges, UPRV_LENGTHOF(coarseExpectedChanges), FALSE, errorCode);
-
-    static const EditChange fineExpectedChanges[] = {
-            { FALSE, 10003, 10003 },
-            { TRUE, 1, 1 },
-            { TRUE, 1, 1 },
-            { TRUE, 1, 1 },
-            { TRUE, 0, 10 },
-            { TRUE, 100, 0 },
-            { TRUE, 3000, 4000 },
-            { TRUE, 100000, 100000 }
-    };
-    checkEditsIter(u"fine",
-            edits.getFineIterator(), edits.getFineIterator(),
-            fineExpectedChanges, UPRV_LENGTHOF(fineExpectedChanges), TRUE, errorCode);
-    checkEditsIter(u"fine changes",
-            edits.getFineChangesIterator(), edits.getFineChangesIterator(),
-            fineExpectedChanges, UPRV_LENGTHOF(fineExpectedChanges), FALSE, errorCode);
-
-    edits.reset();
-    assertFalse("reset", edits.hasChanges());
-    assertEquals("reset", 0, edits.lengthDelta());
-    Edits::Iterator ei = edits.getCoarseChangesIterator();
-    assertFalse("reset then iterator", ei.next(errorCode));
-}
-
-void StringCaseTest::TestCaseMapWithEdits() {
-    IcuTestErrorCode errorCode(*this, "TestEdits");
-    UChar dest[20];
-    Edits edits;
-
-    int32_t length = CaseMap::toLower("tr", UCASEMAP_OMIT_UNCHANGED_TEXT,
-                                      u"IstanBul", 8, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"toLower(IstanBul)", UnicodeString(u"ıb"), UnicodeString(TRUE, dest, length));
-    static const EditChange lowerExpectedChanges[] = {
-            { TRUE, 1, 1 },
-            { FALSE, 4, 4 },
-            { TRUE, 1, 1 },
-            { FALSE, 2, 2 }
-    };
-    checkEditsIter(u"toLower(IstanBul)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            lowerExpectedChanges, UPRV_LENGTHOF(lowerExpectedChanges),
-            TRUE, errorCode);
-
-    edits.reset();
-    length = CaseMap::toUpper("el", UCASEMAP_OMIT_UNCHANGED_TEXT,
-                              u"Πατάτα", 6, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"toUpper(Πατάτα)", UnicodeString(u"ΑΤΑΤΑ"), UnicodeString(TRUE, dest, length));
-    static const EditChange upperExpectedChanges[] = {
-            { FALSE, 1, 1 },
-            { TRUE, 1, 1 },
-            { TRUE, 1, 1 },
-            { TRUE, 1, 1 },
-            { TRUE, 1, 1 },
-            { TRUE, 1, 1 }
-    };
-    checkEditsIter(u"toUpper(Πατάτα)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            upperExpectedChanges, UPRV_LENGTHOF(upperExpectedChanges),
-            TRUE, errorCode);
-
-    edits.reset();
-
-#if !UCONFIG_NO_BREAK_ITERATION
-    length = CaseMap::toTitle("nl",
-                              UCASEMAP_OMIT_UNCHANGED_TEXT |
-                              U_TITLECASE_NO_BREAK_ADJUSTMENT |
-                              U_TITLECASE_NO_LOWERCASE,
-                              NULL, u"IjssEL IglOo", 12,
-                              dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"toTitle(IjssEL IglOo)", UnicodeString(u"J"), UnicodeString(TRUE, dest, length));
-    static const EditChange titleExpectedChanges[] = {
-            { FALSE, 1, 1 },
-            { TRUE, 1, 1 },
-            { FALSE, 10, 10 }
-    };
-    checkEditsIter(u"toTitle(IjssEL IglOo)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            titleExpectedChanges, UPRV_LENGTHOF(titleExpectedChanges),
-            TRUE, errorCode);
-#endif
-
-    edits.reset();
-    length = CaseMap::fold(UCASEMAP_OMIT_UNCHANGED_TEXT | U_FOLD_CASE_EXCLUDE_SPECIAL_I,
-                           u"IßtanBul", 8, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"foldCase(IßtanBul)", UnicodeString(u"ıssb"), UnicodeString(TRUE, dest, length));
-    static const EditChange foldExpectedChanges[] = {
-            { TRUE, 1, 1 },
-            { TRUE, 1, 2 },
-            { FALSE, 3, 3 },
-            { TRUE, 1, 1 },
-            { FALSE, 2, 2 }
-    };
-    checkEditsIter(u"foldCase(IßtanBul)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            foldExpectedChanges, UPRV_LENGTHOF(foldExpectedChanges),
-            TRUE, errorCode);
-}
-
-void StringCaseTest::TestCaseMapUTF8WithEdits() {
-    IcuTestErrorCode errorCode(*this, "TestEdits");
-    char dest[50];
-    Edits edits;
-
-    int32_t length = CaseMap::utf8ToLower("tr", UCASEMAP_OMIT_UNCHANGED_TEXT,
-                                          u8"IstanBul", 8, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"toLower(IstanBul)", UnicodeString(u"ıb"),
-                 UnicodeString::fromUTF8(StringPiece(dest, length)));
-    static const EditChange lowerExpectedChanges[] = {
-            { TRUE, 1, 2 },
-            { FALSE, 4, 4 },
-            { TRUE, 1, 1 },
-            { FALSE, 2, 2 }
-    };
-    checkEditsIter(u"toLower(IstanBul)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            lowerExpectedChanges, UPRV_LENGTHOF(lowerExpectedChanges),
-            TRUE, errorCode);
-
-    edits.reset();
-    length = CaseMap::utf8ToUpper("el", UCASEMAP_OMIT_UNCHANGED_TEXT,
-                                  u8"Πατάτα", 6 * 2, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"toUpper(Πατάτα)", UnicodeString(u"ΑΤΑΤΑ"),
-                 UnicodeString::fromUTF8(StringPiece(dest, length)));
-    static const EditChange upperExpectedChanges[] = {
-            { FALSE, 2, 2 },
-            { TRUE, 2, 2 },
-            { TRUE, 2, 2 },
-            { TRUE, 2, 2 },
-            { TRUE, 2, 2 },
-            { TRUE, 2, 2 }
-    };
-    checkEditsIter(u"toUpper(Πατάτα)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            upperExpectedChanges, UPRV_LENGTHOF(upperExpectedChanges),
-            TRUE, errorCode);
-
-    edits.reset();
-#if !UCONFIG_NO_BREAK_ITERATION
-    length = CaseMap::utf8ToTitle("nl",
-                                  UCASEMAP_OMIT_UNCHANGED_TEXT |
-                                  U_TITLECASE_NO_BREAK_ADJUSTMENT |
-                                  U_TITLECASE_NO_LOWERCASE,
-                                  NULL, u8"IjssEL IglOo", 12,
-                                  dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"toTitle(IjssEL IglOo)", UnicodeString(u"J"),
-                 UnicodeString::fromUTF8(StringPiece(dest, length)));
-    static const EditChange titleExpectedChanges[] = {
-            { FALSE, 1, 1 },
-            { TRUE, 1, 1 },
-            { FALSE, 10, 10 }
-    };
-    checkEditsIter(u"toTitle(IjssEL IglOo)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            titleExpectedChanges, UPRV_LENGTHOF(titleExpectedChanges),
-            TRUE, errorCode);
-#endif
-
-    edits.reset();
-    length = CaseMap::utf8Fold(UCASEMAP_OMIT_UNCHANGED_TEXT | U_FOLD_CASE_EXCLUDE_SPECIAL_I,
-                               u8"IßtanBul", 1 + 2 + 6, dest, UPRV_LENGTHOF(dest), &edits, errorCode);
-    assertEquals(u"foldCase(IßtanBul)", UnicodeString(u"ıssb"),
-                 UnicodeString::fromUTF8(StringPiece(dest, length)));
-    static const EditChange foldExpectedChanges[] = {
-            { TRUE, 1, 2 },
-            { TRUE, 2, 2 },
-            { FALSE, 3, 3 },
-            { TRUE, 1, 1 },
-            { FALSE, 2, 2 }
-    };
-    checkEditsIter(u"foldCase(IßtanBul)",
-            edits.getFineIterator(), edits.getFineIterator(),
-            foldExpectedChanges, UPRV_LENGTHOF(foldExpectedChanges),
-            TRUE, errorCode);
-}
-
-void StringCaseTest::TestLongUnicodeString() {
-    // Code coverage for UnicodeString case mapping code handling
-    // long strings or many changes in a string.
-    UnicodeString s(TRUE,
-        (const UChar *)
-        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
-        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
-        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
-        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
-        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
-        u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF", 6 * 51);
-    UnicodeString expected(TRUE,
-        (const UChar *)
-        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
-        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
-        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
-        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
-        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
-        u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF", 6 * 51);
-    s.toUpper(Locale::getRoot());
-    assertEquals("string length 306", expected, s);
-}
-
-void StringCaseTest::TestBug13127() {
-    // Test case crashed when the bug was present.
-    const char16_t *s16 = u"日本語";
-    UnicodeString s(TRUE, s16, -1);
-    s.toTitle(0, Locale::getEnglish());
+#endif  // U_HAVE_STD_STRING
 }
index ccc618a..f621631 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  strtest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -22,8 +22,6 @@
 #include "unicode/stringpiece.h"
 #include "unicode/unistr.h"
 #include "unicode/ustring.h"
-#include "unicode/utf_old.h"    // for UTF8_COUNT_TRAIL_BYTES
-#include "unicode/utf8.h"
 #include "charstr.h"
 #include "cstr.h"
 #include "intltest.h"
@@ -150,18 +148,8 @@ StringTest::Test_UTF8_COUNT_TRAIL_BYTES() {
         || UTF8_COUNT_TRAIL_BYTES(0xF0) != 3)
     {
         errln("Test_UTF8_COUNT_TRAIL_BYTES: UTF8_COUNT_TRAIL_BYTES does not work right! "
-              "See utf_old.h.");
-    }
-       // Note: U8_COUNT_TRAIL_BYTES (current) and UTF8_COUNT_TRAIL_BYTES (deprecated)
-       //       have completely different implementations.
-       if (U8_COUNT_TRAIL_BYTES(0x7F) != 0
-               || U8_COUNT_TRAIL_BYTES(0xC0) != 1
-               || U8_COUNT_TRAIL_BYTES(0xE0) != 2
-               || U8_COUNT_TRAIL_BYTES(0xF0) != 3)
-       {
-               errln("Test_UTF8_COUNT_TRAIL_BYTES: U8_COUNT_TRAIL_BYTES does not work right! "
-                       "See utf8.h.");
-       }
+              "See utf8.h.");
+    }
 }
 
 void StringTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
@@ -212,12 +200,14 @@ StringTest::TestStringPiece() {
     if(abcd.empty() || abcd.data()!=abcdefg_chars || abcd.length()!=4 || abcd.size()!=4) {
         errln("StringPiece(abcdefg_chars, 4) failed");
     }
+#if U_HAVE_STD_STRING
     // Construct from std::string.
     std::string uvwxyz_string("uvwxyz");
     StringPiece uvwxyz(uvwxyz_string);
     if(uvwxyz.empty() || uvwxyz.data()!=uvwxyz_string.data() || uvwxyz.length()!=6 || uvwxyz.size()!=6) {
         errln("StringPiece(uvwxyz_string) failed");
     }
+#endif
     // Substring constructor with pos.
     StringPiece sp(abcd, -1);
     if(sp.empty() || sp.data()!=abcdefg_chars || sp.length()!=4 || sp.size()!=4) {
@@ -461,6 +451,7 @@ StringTest::TestCheckedArrayByteSink() {
 
 void
 StringTest::TestStringByteSink() {
+#if U_HAVE_STD_STRING
     // Not much to test because only the constructor and Append()
     // are implemented, and trivially so.
     std::string result("abc");  // std::string
@@ -469,6 +460,7 @@ StringTest::TestStringByteSink() {
     if(result != "abcdef") {
         errln("StringByteSink did not Append() as expected");
     }
+#endif
 }
 
 #if defined(_MSC_VER)
index 5462afb..d72834e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -6,7 +6,7 @@
  * others. All Rights Reserved.
  ********************************************************************/
 /*   file name:  strtest.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ecc1d50..a897d9c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 1cae2b6..3c589dc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2004, International Business Machines Corporation
index 942119e..9f51991 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 057971c..ddc070c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index 29ac0b2..023c69b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  testidn.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 3c92d88..4b39c96 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  testidna.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 250a3f8..8bd1a6f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -8,7 +8,7 @@
  *
  *******************************************************************************
  *   file name:  testidna.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index 8ed110a..82851c8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d6d4262..8c76ad2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 292620e..325d9e3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index c4ef673..f74667e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 427eb10..d419b35 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT:
index c058c95..17eed3c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 077487a..7fccbf8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index ea7e1c7..61f4ef7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 26c44cd..44a50b8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -32,7 +32,6 @@
 #include "unicode/messagepattern.h"
 #include "unicode/selfmt.h"
 #include "unicode/gregocal.h"
-#include "unicode/strenum.h"
 #include <stdio.h>
 
 void
@@ -781,7 +780,6 @@ void TestMessageFormat::testMsgFormatSelect(/* char* par */)
     err = U_ZERO_ERROR;
     //Create the MessageFormat with Plural format with embedded select format(nested pattern)
     MessageFormat* msgFmt5 = internalCreate(t5.unescape(), Locale("fr"),err,(char*)"From TestMessageFormat::TestSelectFormat create t5");
-    // with no data the above should fail but it seems to construct an invalid MessageFormat with no reported error. See #13079
     if (!U_FAILURE(err)) {
         //Arguments 
         Formattable testArgs10[] = {"Kirti",(int32_t)6,"female"};  
index 7c0afc4..97ab67c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4280973..b9cdaaf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 670ace7..29e5114 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 76597d2..c1f083d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /************************************************************************
  * COPYRIGHT: 
index 801c8f1..fce3697 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0b8c944..4d7b73b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 03ed0be..ffcf488 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 93e9033..d8a7521 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -243,8 +243,7 @@ void TransliteratorTest::TestInstantiation() {
         if (t == 0) {
 #if UCONFIG_NO_BREAK_ITERATION
             // If UCONFIG_NO_BREAK_ITERATION is on, then only Thai should fail.
-            if (id.compare((UnicodeString)"Thai-Latn") != 0 &&
-                id.compare((UnicodeString)"Thai-Latin") != 0)
+            if (id.compare((UnicodeString)"Thai-Latin") != 0)
 #endif
                 dataerrln(UnicodeString("FAIL: Couldn't create ") + id +
                       /*", parse error " + parseError.code +*/
index 8a2bcc6..5fc310b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index a5d3a35..ddd83b0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 1a8e644..b403ed8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 0f13b33..5b412b7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2001-2009, International Business Machines
index 85e5e80..743c440 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index b13f30a..222896c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 173e609..20f6bf0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 15d8a57..34714a8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * Copyright (c) 1997-2009, International Business Machines Corporation
index df7cfbd..54e0f68 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index eb5bc3b..2dcb24e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 5df1bc7..5296918 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index c1efcc2..fede0ad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2013, International Business Machines
index ea9afc7..f6803ba 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 036d5e1..83f9298 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 6ed24d7..3d27db5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 845206f..da4a263 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index d680d46..e92da9a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 8a169ca..085727e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 43a4a8a..5baca29 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 104ed36..b407a3a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 6ca4ce7..cf72fe0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 744b0ce..294a539 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 91a2667..129ee46 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2008-2016, International Business Machines Corporation and
index 5106e99..cacd615 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
index edd89a6..d0758c0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 9557b14..dadcb54 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -82,7 +82,6 @@ TimeZoneFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name
         TESTCASE(3, TestISOFormat);
         TESTCASE(4, TestFormat);
         TESTCASE(5, TestFormatTZDBNames);
-        TESTCASE(6, TestFormatCustomZone);
         default: name = ""; break;
     }
 }
@@ -1214,42 +1213,5 @@ TimeZoneFormatTest::TestFormatTZDBNames(void) {
     }
 }
 
-void
-TimeZoneFormatTest::TestFormatCustomZone(void) {
-    struct {
-        const char* id;
-        int32_t offset;
-        const char* expected;
-    } TESTDATA[] = {
-        { "abc", 3600000, "GMT+01:00" },                    // unknown ID
-        { "$abc", -3600000, "GMT-01:00" },                 // unknown, with ASCII variant char '$'
-        { "\\u00c1\\u00df\\u00c7", 5400000, "GMT+01:30"},    // unknown, with non-ASCII chars
-        { 0, 0, 0 }
-    };
-
-    UDate now = Calendar::getNow();
-
-    for (int32_t i = 0; ; i++) {
-        const char *id = TESTDATA[i].id;
-        if (id == 0) {
-            break;
-        }
-        UnicodeString tzid = UnicodeString(id, -1, US_INV).unescape();
-        SimpleTimeZone tz(TESTDATA[i].offset, tzid);
-
-        UErrorCode status = U_ZERO_ERROR;
-        LocalPointer<TimeZoneFormat> tzfmt(TimeZoneFormat::createInstance(Locale("en"), status));
-        if (tzfmt.isNull()) {
-            dataerrln("FAIL: TimeZoneFormat::createInstance failed for en");
-            return;
-        }
-        UnicodeString tzstr;
-        UnicodeString expected = UnicodeString(TESTDATA[i].expected, -1, US_INV).unescape();
-
-        tzfmt->format(UTZFMT_STYLE_SPECIFIC_LONG, tz, now, tzstr, NULL);
-        assertEquals(UnicodeString("Format result for ") + tzid, expected, tzstr);
-    }
-}
-
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
index 0bf91ae..fd2da58 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -27,7 +27,6 @@ class TimeZoneFormatTest : public IntlTest {
     void TestISOFormat(void);
     void TestFormat(void);
     void TestFormatTZDBNames(void);
-    void TestFormatCustomZone(void);
 
     void RunTimeRoundTripTests(int32_t threadNumber);
 };
index 1402469..146c109 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 55b4d86..fa731b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b749c2d..0bb0292 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines
index 2d7f7ef..284dc59 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cc699bb..d98ed52 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -18,7 +18,6 @@
 #include "unicode/tzrule.h"
 #include "unicode/calendar.h"
 #include "unicode/gregocal.h"
-#include "unicode/strenum.h"
 #include "unicode/ucal.h"
 #include "unicode/unistr.h"
 #include "unicode/ustring.h"
index e677238..a897d50 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 3ab04d2..00a6707 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
@@ -138,11 +138,8 @@ TimeZoneTest::TestGenericAPI()
     }
 
     TimeZone* hostZone = TimeZone::detectHostTimeZone();
-    int32_t hostZoneRawOffset = hostZone->getRawOffset();
-    logln("hostZone->getRawOffset() = %d , tzoffset = %d", hostZoneRawOffset, tzoffset * (-1000));
-
     /* Host time zone's offset should match the offset returned by uprv_timezone() */
-    if (hostZoneRawOffset != tzoffset * (-1000)) {
+    if (hostZone->getRawOffset() != tzoffset * (-1000)) {
         errln("FAIL: detectHostTimeZone()'s raw offset != host timezone's offset");
     }
     delete hostZone;
@@ -1208,43 +1205,31 @@ TimeZoneTest::TestAliasedNames()
         /* Generated by org.unicode.cldr.tool.CountItems */
 
         /* zoneID, canonical zoneID */
-        {"Africa/Asmara", "Africa/Addis_Ababa"},
-        {"Africa/Timbuktu", "Africa/Abidjan"},
+        {"Africa/Timbuktu", "Africa/Bamako"},
         {"America/Argentina/Buenos_Aires", "America/Buenos_Aires"},
         {"America/Argentina/Catamarca", "America/Catamarca"},
         {"America/Argentina/ComodRivadavia", "America/Catamarca"},
         {"America/Argentina/Cordoba", "America/Cordoba"},
         {"America/Argentina/Jujuy", "America/Jujuy"},
         {"America/Argentina/Mendoza", "America/Mendoza"},
-        {"America/Atikokan", "America/Coral_Harbour"},
         {"America/Atka", "America/Adak"},
         {"America/Ensenada", "America/Tijuana"},
-        {"America/Fort_Wayne", "America/Indianapolis"},
-        {"America/Indiana/Indianapolis", "America/Indianapolis"},
-        {"America/Kentucky/Louisville", "America/Louisville"},
+        {"America/Fort_Wayne", "America/Indiana/Indianapolis"},
+        {"America/Indianapolis", "America/Indiana/Indianapolis"},
         {"America/Knox_IN", "America/Indiana/Knox"},
+        {"America/Louisville", "America/Kentucky/Louisville"},
         {"America/Porto_Acre", "America/Rio_Branco"},
         {"America/Rosario", "America/Cordoba"},
-        {"America/Shiprock", "America/Denver"},
-        {"America/Virgin", "America/Anguilla"},
-        {"Antarctica/South_Pole", "Antarctica/McMurdo"},
+        {"America/Virgin", "America/St_Thomas"},
         {"Asia/Ashkhabad", "Asia/Ashgabat"},
-        {"Asia/Chongqing", "Asia/Shanghai"},
-        {"Asia/Chungking", "Asia/Shanghai"},
+        {"Asia/Chungking", "Asia/Chongqing"},
         {"Asia/Dacca", "Asia/Dhaka"},
-        {"Asia/Harbin", "Asia/Shanghai"},
-        {"Asia/Ho_Chi_Minh", "Asia/Saigon"},
         {"Asia/Istanbul", "Europe/Istanbul"},
-        {"Asia/Kashgar", "Asia/Urumqi"},
-        {"Asia/Kathmandu", "Asia/Katmandu"},
-        {"Asia/Kolkata", "Asia/Calcutta"},
         {"Asia/Macao", "Asia/Macau"},
         {"Asia/Tel_Aviv", "Asia/Jerusalem"},
         {"Asia/Thimbu", "Asia/Thimphu"},
         {"Asia/Ujung_Pandang", "Asia/Makassar"},
         {"Asia/Ulan_Bator", "Asia/Ulaanbaatar"},
-        {"Atlantic/Faroe", "Atlantic/Faeroe"},
-        {"Atlantic/Jan_Mayen", "Arctic/Longyearbyen"},
         {"Australia/ACT", "Australia/Sydney"},
         {"Australia/Canberra", "Australia/Sydney"},
         {"Australia/LHI", "Australia/Lord_Howe"},
@@ -1272,16 +1257,16 @@ TimeZoneTest::TestAliasedNames()
         {"Chile/Continental", "America/Santiago"},
         {"Chile/EasterIsland", "Pacific/Easter"},
         {"Cuba", "America/Havana"},
-        {"EST", "Etc/GMT+5"},
         {"Egypt", "Africa/Cairo"},
         {"Eire", "Europe/Dublin"},
         {"Etc/GMT+0", "Etc/GMT"},
         {"Etc/GMT-0", "Etc/GMT"},
         {"Etc/GMT0", "Etc/GMT"},
         {"Etc/Greenwich", "Etc/GMT"},
-        {"Etc/UCT", "Etc/UTC"},
-        {"Etc/Universal", "Etc/UTC"},
-        {"Etc/Zulu", "Etc/UTC"},
+        {"Etc/UCT", "Etc/GMT"},
+        {"Etc/UTC", "Etc/GMT"},
+        {"Etc/Universal", "Etc/GMT"},
+        {"Etc/Zulu", "Etc/GMT"},
         {"Europe/Belfast", "Europe/London"},
         {"Europe/Nicosia", "Asia/Nicosia"},
         {"Europe/Tiraspol", "Europe/Chisinau"},
@@ -1292,7 +1277,6 @@ TimeZoneTest::TestAliasedNames()
         {"GMT-0", "Etc/GMT"},
         {"GMT0", "Etc/GMT"},
         {"Greenwich", "Etc/GMT"},
-        {"HST", "Etc/GMT+10"},
         {"Hongkong", "Asia/Hong_Kong"},
         {"Iceland", "Atlantic/Reykjavik"},
         {"Iran", "Asia/Tehran"},
@@ -1301,37 +1285,27 @@ TimeZoneTest::TestAliasedNames()
         {"Japan", "Asia/Tokyo"},
         {"Kwajalein", "Pacific/Kwajalein"},
         {"Libya", "Africa/Tripoli"},
-        {"MST", "Etc/GMT+7"},
         {"Mexico/BajaNorte", "America/Tijuana"},
         {"Mexico/BajaSur", "America/Mazatlan"},
         {"Mexico/General", "America/Mexico_City"},
-        {"NZ", "Antarctica/McMurdo"},
+        {"NZ", "Pacific/Auckland"},
         {"NZ-CHAT", "Pacific/Chatham"},
-        {"Navajo", "America/Denver"},
+        {"Navajo", "America/Shiprock"},
         {"PRC", "Asia/Shanghai"},
-        {"Pacific/Chuuk", "Pacific/Truk"},
-        {"Pacific/Pohnpei", "Pacific/Ponape"},
-        {"Pacific/Samoa", "Pacific/Midway"},
+        {"Pacific/Samoa", "Pacific/Pago_Pago"},
         {"Pacific/Yap", "Pacific/Truk"},
         {"Poland", "Europe/Warsaw"},
         {"Portugal", "Europe/Lisbon"},
         {"ROC", "Asia/Taipei"},
         {"ROK", "Asia/Seoul"},
         {"Singapore", "Asia/Singapore"},
-        {"SystemV/AST4", "Etc/GMT+4"},
-        {"SystemV/CST6", "Etc/GMT+6"},
-        {"SystemV/EST5", "Etc/GMT+5"},
-        {"SystemV/HST10", "Etc/GMT+10"},
-        {"SystemV/MST7", "Etc/GMT+7"},
-        {"SystemV/PST8", "Etc/GMT+8"},
-        {"SystemV/YST9", "Etc/GMT+9"},
         {"Turkey", "Europe/Istanbul"},
-        {"UCT", "Etc/UTC"},
+        {"UCT", "Etc/GMT"},
         {"US/Alaska", "America/Anchorage"},
         {"US/Aleutian", "America/Adak"},
         {"US/Arizona", "America/Phoenix"},
         {"US/Central", "America/Chicago"},
-        {"US/East-Indiana", "America/Indianapolis"},
+        {"US/East-Indiana", "America/Indiana/Indianapolis"},
         {"US/Eastern", "America/New_York"},
         {"US/Hawaii", "Pacific/Honolulu"},
         {"US/Indiana-Starke", "America/Indiana/Knox"},
@@ -1339,12 +1313,13 @@ TimeZoneTest::TestAliasedNames()
         {"US/Mountain", "America/Denver"},
         {"US/Pacific", "America/Los_Angeles"},
         {"US/Pacific-New", "America/Los_Angeles"},
-        {"US/Samoa", "Pacific/Midway"},
-        {"UTC", "Etc/UTC"},
-        {"Universal", "Etc/UTC"},
+        {"US/Samoa", "Pacific/Pago_Pago"},
+        {"UTC", "Etc/GMT"},
+        {"Universal", "Etc/GMT"},
         {"W-SU", "Europe/Moscow"},
-        {"Zulu", "Etc/UTC"},
-        /* Total: 136 */
+        {"Zulu", "Etc/GMT"},
+        /* Total: 113 */
+
     };
 
     TimeZone::EDisplayType styles[] = { TimeZone::SHORT, TimeZone::LONG };
index 99a44fe..e41fed9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index e239ccf..50beb8c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 69294af..a0317b1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index ed7edc9..b693f7d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation and
index 0f3966d..4e8f10e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 1997-2016, International Business Machines Corporation and
index 816a67a..cb2ca3c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ucharstrietest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 762194a..abbbae9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index b1d6738..fc3c4e2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -384,11 +384,13 @@ void UObjectTest::testIDs()
     TESTCLASSID_FACTORY(IndianCalendar, Calendar::createInstance(Locale("@calendar=indian"), status));
     TESTCLASSID_FACTORY(ChineseCalendar, Calendar::createInstance(Locale("@calendar=chinese"), status));
     TESTCLASSID_FACTORY(TaiwanCalendar, Calendar::createInstance(Locale("@calendar=roc"), status));
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
     TESTCLASSID_FACTORY(Win32DateFormat, DateFormat::createDateInstance(DateFormat::kFull, Locale("@compat=host")));
+#if U_PLATFORM_USES_ONLY_WIN32_API
     TESTCLASSID_FACTORY(Win32NumberFormat, NumberFormat::createInstance(Locale("@compat=host"), status));
 #endif
 #endif
+#endif
 
 #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILE_IO
     /* TESTCLASSID_ABSTRACT(BreakIterator); No staticID!  */
index b4c13f9..93ef4b0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 4085117..d8e1160 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 45c6dfd..dec48f9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /********************************************************************
index d3734fb..96be030 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -13,7 +13,6 @@
 #include "unicode/uchar.h"
 #include "unicode/ustring.h"
 #include "unicode/locid.h"
-#include "unicode/strenum.h"
 #include "unicode/ucnv.h"
 #include "unicode/uenum.h"
 #include "unicode/utf16.h"
@@ -30,13 +29,11 @@ using namespace std;
 
 UnicodeStringTest::~UnicodeStringTest() {}
 
-extern IntlTest *createStringCaseTest();
-
 void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char *par)
 {
     if (exec) logln("TestSuite UnicodeStringTest: ");
     TESTCASE_AUTO_BEGIN;
-    TESTCASE_AUTO_CREATE_CLASS(StringCaseTest);
+    TESTCASE_AUTO_CLASS(StringCaseTest);
     TESTCASE_AUTO(TestBasicManipulation);
     TESTCASE_AUTO(TestCompare);
     TESTCASE_AUTO(TestExtract);
@@ -61,9 +58,6 @@ void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* &
     TESTCASE_AUTO(TestSizeofUnicodeString);
     TESTCASE_AUTO(TestStartsWithAndEndsWithNulTerminated);
     TESTCASE_AUTO(TestMoveSwap);
-    TESTCASE_AUTO(TestUInt16Pointers);
-    TESTCASE_AUTO(TestWCharPointers);
-    TESTCASE_AUTO(TestNullPointers);
     TESTCASE_AUTO_END;
 }
 
@@ -1557,10 +1551,7 @@ UnicodeStringTest::TestBogus() {
 
     // writable alias to another string's buffer: very bad idea, just convenient for this test
     test3.setToBogus();
-    if(!test3.isBogus() ||
-            test3.setTo(const_cast<UChar *>(test1.getBuffer()),
-                        test1.length(), test1.getCapacity()).isBogus() ||
-            test3!=test1) {
+    if(!test3.isBogus() || test3.setTo((UChar *)test1.getBuffer(), test1.length(), test1.getCapacity()).isBogus() || test3!=test1) {
         errln("bogus.setTo(writable alias) failed");
     }
 
@@ -1615,8 +1606,8 @@ UnicodeStringTest::TestBogus() {
     // test that NULL primitive input string values are treated like
     // empty strings, not errors (bogus)
     test2.setTo((UChar32)0x10005);
-    if(test2.insert(1, nullptr, 1).length()!=2) {
-        errln("UniStr.insert(...nullptr...) should not modify the string but does");
+    if(test2.insert(1, NULL, 1).length()!=2) {
+        errln("UniStr.insert(...NULL...) should not modify the string but does");
     }
 
     UErrorCode errorCode=U_ZERO_ERROR;
@@ -1894,11 +1885,13 @@ UnicodeStringTest::TestUTF8() {
     if(from8 != expected) {
         errln("UnicodeString::fromUTF8(StringPiece) did not create the expected string.");
     }
+#if U_HAVE_STD_STRING
     std::string utf8_string((const char *)utf8, sizeof(utf8));
     UnicodeString from8b = UnicodeString::fromUTF8(utf8_string);
     if(from8b != expected) {
         errln("UnicodeString::fromUTF8(std::string) did not create the expected string.");
     }
+#endif
 
     static const UChar utf16[] = {
         0x41, 0xd900, 0x61, 0xdc00, 0x5a, 0xd900, 0xdc00, 0x7a, 0xd800, 0xdc00, 0xdbff, 0xdfff
@@ -1920,6 +1913,7 @@ UnicodeStringTest::TestUTF8() {
     if(!sink.calledFlush) {
         errln("UnicodeString::toUTF8(sink) did not sink.Flush().");
     }
+#if U_HAVE_STD_STRING
     // Initial contents for testing that toUTF8String() appends.
     std::string result8 = "-->";
     std::string expected8 = "-->" + std::string((const char *)expected_utf8, sizeof(expected_utf8));
@@ -1928,6 +1922,7 @@ UnicodeStringTest::TestUTF8() {
     if(result8r != expected8 || &result8r != &result8) {
         errln("UnicodeString::toUTF8String() did not create the expected string.");
     }
+#endif
 }
 
 // Test if this compiler supports Return Value Optimization of unnamed temporary objects.
@@ -2192,64 +2187,3 @@ UnicodeStringTest::TestMoveSwap() {
         errln("UnicodeString copy after self-move did not work");
     }
 }
-
-void
-UnicodeStringTest::TestUInt16Pointers() {
-    static const uint16_t carr[] = { 0x61, 0x62, 0x63, 0 };
-    uint16_t arr[4];
-
-    UnicodeString expected(u"abc");
-    assertEquals("abc from pointer", expected, UnicodeString(carr));
-    assertEquals("abc from pointer+length", expected, UnicodeString(carr, 3));
-    assertEquals("abc from read-only-alias pointer", expected, UnicodeString(TRUE, carr, 3));
-
-    UnicodeString alias(arr, 0, 4);
-    alias.append(u'a').append(u'b').append(u'c');
-    assertEquals("abc from writable alias", expected, alias);
-    assertEquals("buffer=abc from writable alias", expected, UnicodeString(arr, 3));
-
-    UErrorCode errorCode = U_ZERO_ERROR;
-    int32_t length = UnicodeString(u"def").extract(arr, 4, errorCode);
-    TEST_ASSERT_STATUS(errorCode);
-    assertEquals("def from extract()", UnicodeString(u"def"), UnicodeString(arr, length));
-}
-
-void
-UnicodeStringTest::TestWCharPointers() {
-#if U_SIZEOF_WCHAR_T==2
-    static const wchar_t carr[] = { 0x61, 0x62, 0x63, 0 };
-    wchar_t arr[4];
-
-    UnicodeString expected(u"abc");
-    assertEquals("abc from pointer", expected, UnicodeString(carr));
-    assertEquals("abc from pointer+length", expected, UnicodeString(carr, 3));
-    assertEquals("abc from read-only-alias pointer", expected, UnicodeString(TRUE, carr, 3));
-
-    UnicodeString alias(arr, 0, 4);
-    alias.append(u'a').append(u'b').append(u'c');
-    assertEquals("abc from writable alias", expected, alias);
-    assertEquals("buffer=abc from writable alias", expected, UnicodeString(arr, 3));
-
-    UErrorCode errorCode = U_ZERO_ERROR;
-    int32_t length = UnicodeString(u"def").extract(arr, 4, errorCode);
-    TEST_ASSERT_STATUS(errorCode);
-    assertEquals("def from extract()", UnicodeString(u"def"), UnicodeString(arr, length));
-#endif
-}
-
-void
-UnicodeStringTest::TestNullPointers() {
-    assertTrue("empty from nullptr", UnicodeString(nullptr).isEmpty());
-    assertTrue("empty from nullptr+length", UnicodeString(nullptr, 2).isEmpty());
-    assertTrue("empty from read-only-alias nullptr", UnicodeString(TRUE, nullptr, 3).isEmpty());
-
-    UnicodeString alias(nullptr, 4, 4);  // empty, no alias
-    assertTrue("empty from writable alias", alias.isEmpty());
-    alias.append(u'a').append(u'b').append(u'c');
-    UnicodeString expected(u"abc");
-    assertEquals("abc from writable alias", expected, alias);
-
-    UErrorCode errorCode = U_ZERO_ERROR;
-    UnicodeString(u"def").extract(nullptr, 0, errorCode);
-    assertEquals("buffer overflow extracting to nullptr", U_BUFFER_OVERFLOW_ERROR, errorCode);
-}
index 4ba348c..37b3a88 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -92,10 +92,32 @@ public:
     void TestUnicodeStringImplementsAppendable();
     void TestSizeofUnicodeString();
     void TestMoveSwap();
+};
+
+class StringCaseTest: public IntlTest {
+public:
+    StringCaseTest();
+    virtual ~StringCaseTest();
+
+    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
+
+    void TestCaseConversion();
+
+    void TestCasingImpl(const UnicodeString &input,
+                        const UnicodeString &output,
+                        int32_t whichCase,
+                        void *iter, const char *localeID, uint32_t options);
+    void TestCasing();
+    void TestFullCaseFoldingIterator();
+    void TestGreekUpper();
+    void TestLongUpper();
+    void TestMalformedUTF8();
+    void TestBufferOverflow();
+
+private:
+    void assertGreekUpper(const char *s, const char *expected);
 
-    void TestUInt16Pointers();
-    void TestWCharPointers();
-    void TestNullPointers();
+    Locale GREEK_LOCALE_;
 };
 
 #endif
index 077dadf..fdc1628 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uts46test.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -830,7 +830,8 @@ void UTS46Test::TestSomeCases() {
                 continue;
             }
         }
-        // UTF-8
+        // UTF-8 if we have std::string
+#if U_HAVE_STD_STRING
         std::string input8, aT8, uT8, aN8, uN8;
         StringByteSink<std::string> aT8Sink(&aT8), uT8Sink(&uT8), aN8Sink(&aN8), uN8Sink(&uN8);
         IDNAInfo aT8Info, uT8Info, aN8Info, uN8Info;
@@ -878,6 +879,7 @@ void UTS46Test::TestSomeCases() {
                   testCase.o, (int)i, testCase.s);
             continue;
         }
+#endif
     }
 }
 
index 91d86a8..762c799 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -67,8 +67,6 @@ UTextTest::runIndexedTest(int32_t index, UBool exec,
             if (exec) Ticket10983();  break;
         case 7: name = "Ticket12130";
             if (exec) Ticket12130(); break;
-        case 8: name = "Ticket12888";
-            if (exec) Ticket12888(); break;
         default: name = "";          break;
     }
 }
@@ -1585,63 +1583,3 @@ void UTextTest::Ticket12130() {
     }
     utext_close(&ut);
 }
-
-// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal,
-//               six byte utf-8 forms. Original implementation had an assumption that
-//               there would be at most three utf-8 bytes per UTF-16 code unit.
-//               The five and six byte sequences map to a single replacement character.
-
-void UTextTest::Ticket12888() {
-    const char *badString = 
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-            "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80";
-
-    UErrorCode status = U_ZERO_ERROR;
-    LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status));
-    TEST_SUCCESS(status);
-    for (;;) {
-        UChar32 c = utext_next32(ut.getAlias());
-        if (c == U_SENTINEL) {
-            break;
-        }
-    }
-    int32_t endIdx = utext_getNativeIndex(ut.getAlias());
-    if (endIdx != (int32_t)strlen(badString)) {
-        errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx);
-        return;
-    }
-
-    for (int32_t prevIndex = endIdx; prevIndex>0;) {
-        UChar32 c = utext_previous32(ut.getAlias());
-        int32_t currentIndex = utext_getNativeIndex(ut.getAlias());
-        if (c != 0xfffd) {
-            errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n",
-                    __FILE__, __LINE__, 0xfffd, c, currentIndex);
-            break;
-        }
-        if (currentIndex != prevIndex - 6) {
-            errln("%s:%d: wrong index. Expected, actual = %d, %d",
-                    __FILE__, __LINE__, prevIndex - 6, currentIndex);
-            break;
-        }
-        prevIndex = currentIndex;
-    }
-}
index 26bb93c..5884522 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -38,7 +38,6 @@ public:
     void Ticket10562();
     void Ticket10983();
     void Ticket12130();
-    void Ticket12888();
 
 private:
     struct m {                              // Map between native indices & code points.
index 4b73b56..2b71eb0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index abf6e10..c55f087 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 85567c0..4dce6b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index dc710d9..0af8e24 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 467ddb7..f705689 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -13,7 +13,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -28,8 +28,6 @@
 #include "winutil.h"
 #include "windttst.h"
 
-#include "dtfmttst.h"
-
 #include "cmemory.h"
 #include "cstring.h"
 #include "locmap.h"
@@ -68,7 +66,7 @@ static const char *getCalendarType(int32_t type)
     }
 }
 
-void Win32DateTimeTest::testLocales(DateFormatTest *log)
+void Win32DateTimeTest::testLocales(TestLog *log)
 {
     SYSTEMTIME winNow;
     UDate icuNow = 0;
@@ -120,21 +118,6 @@ void Win32DateTimeTest::testLocales(DateFormatTest *log)
             continue;
         }
 
-        // Some locales have had their names change over various OS releases; skip them in the test for now.
-        int32_t failingLocaleLCIDs[] = {
-            0x040a, /* es-ES_tradnl;es-ES-u-co-trad; */
-            0x048c, /* fa-AF;prs-AF;prs-Arab-AF; */
-            0x046b, /* qu-BO;quz-BO;quz-Latn-BO; */
-            0x086b, /* qu-EC;quz-EC;quz-Latn-EC; */
-            0x0c6b, /* qu-PE;quz-PE;quz-Latn-PE; */
-            0x0492  /* ckb-IQ;ku-Arab-IQ; */
-        };
-        bool skip = (std::find(std::begin(failingLocaleLCIDs), std::end(failingLocaleLCIDs), lcidRecords[i].lcid) != std::end(failingLocaleLCIDs));
-        if (skip && log->logKnownIssue("13119", "Windows '@compat=host' fails on down-level versions of the OS")) {
-            log->logln("ticket:13119 - Skipping LCID = 0x%04x", lcidRecords[i].lcid);
-            continue;
-        }
-
         GetLocaleInfoW(lcidRecords[i].lcid, LOCALE_SLONGDATE,   longDateFormat, 81);
         GetLocaleInfoW(lcidRecords[i].lcid, LOCALE_STIMEFORMAT, longTimeFormat, 81);
         GetLocaleInfoW(lcidRecords[i].lcid, LOCALE_RETURN_NUMBER|LOCALE_ICALENDARTYPE, (LPWSTR) calType, sizeof(int32_t));
@@ -210,4 +193,4 @@ void Win32DateTimeTest::testLocales(DateFormatTest *log)
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif /* U_PLATFORM_USES_ONLY_WIN32_API */
+#endif /* U_PLATFORM_HAS_WIN32_API */
index a685e64..02fc6df 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -16,7 +16,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 
 #if !UCONFIG_NO_FORMATTING
 
  * \brief C++ API: Format dates using Windows API.
  */
 
-class DateFormatTest;
+class TestLog;
 
 class Win32DateTimeTest
 {
 public:
-    static void testLocales(DateFormatTest *log);
+    static void testLocales(TestLog *log);
 
 private:
     Win32DateTimeTest();
@@ -38,6 +38,6 @@ private:
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
-#endif // U_PLATFORM_USES_ONLY_WIN32_API
+#endif // U_PLATFORM_HAS_WIN32_API
 
 #endif // __WINDTTST
index b65ad73..12c25f8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -28,8 +28,6 @@
 #include "winutil.h"
 #include "winnmtst.h"
 
-#include "numfmtst.h"
-
 #include "cmemory.h"
 #include "cstring.h"
 #include "locmap.h"
@@ -270,7 +268,7 @@ static void testLocale(const char *localeID, int32_t lcid, NumberFormat *wnf, UB
     }
 }
 
-void Win32NumberTest::testLocales(NumberFormatTest *log)
+void Win32NumberTest::testLocales(TestLog *log)
 {
     int32_t lcidCount = 0;
     Win32Utilities::LCIDRecord *lcidRecords = Win32Utilities::getLocales(lcidCount);
@@ -284,21 +282,6 @@ void Win32NumberTest::testLocales(NumberFormatTest *log)
             continue;
         }
 
-        // Some locales have had their names change over various OS releases; skip them in the test for now.
-        int32_t failingLocaleLCIDs[] = {
-            0x040a, /* es-ES_tradnl;es-ES-u-co-trad; */
-            0x048c, /* fa-AF;prs-AF;prs-Arab-AF; */
-            0x046b, /* qu-BO;quz-BO;quz-Latn-BO; */
-            0x086b, /* qu-EC;quz-EC;quz-Latn-EC; */
-            0x0c6b, /* qu-PE;quz-PE;quz-Latn-PE; */
-            0x0492  /* ckb-IQ;ku-Arab-IQ; */
-        };
-        bool skip = (std::find(std::begin(failingLocaleLCIDs), std::end(failingLocaleLCIDs), lcidRecords[i].lcid) != std::end(failingLocaleLCIDs));
-        if (skip && log->logKnownIssue("13119", "Windows '@compat=host' fails on down-level versions of the OS")) {
-            log->logln("ticket:13119 - Skipping LCID = 0x%04x", lcidRecords[i].lcid);
-            continue;
-        }
-
         strcpy(localeID, lcidRecords[i].localeID);
 
         if (strchr(localeID, '@') > 0) {
index 84d276a..45b12b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
  * \brief C++ API: Format dates using Windows API.
  */
 
-class NumberFormatTest;
+class TestLog;
 
 class Win32NumberTest
 {
 public:
-    static void testLocales(NumberFormatTest *log);
+    static void testLocales(TestLog *log);
 
 private:
     Win32NumberTest();
index 87b2d40..df104e9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
@@ -36,7 +36,6 @@ static Win32Utilities::LCIDRecord *lcidRecords = NULL;
 static int32_t lcidCount  = 0;
 static int32_t lcidMax = 0;
 
-// TODO: Note that this test will skip locale names and only hit locales with assigned LCIDs
 BOOL CALLBACK EnumLocalesProc(LPSTR lpLocaleString)
 {
     char localeID[ULOC_FULLNAME_CAPACITY];
@@ -71,7 +70,6 @@ BOOL CALLBACK EnumLocalesProc(LPSTR lpLocaleString)
     return TRUE;
 }
 
-// TODO: Note that this test will skip locale names and only hit locales with assigned LCIDs
 Win32Utilities::LCIDRecord *Win32Utilities::getLocales(int32_t &localeCount)
 {
     LCIDRecord *result;
index 9cdae02..92159cf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 9d2b94c..192e4b3 100644 (file)
@@ -34,7 +34,7 @@ BUILDDIR := $(BUILDDIR:test\\iotest/../../=)
 # Simplify the path for Windows 98
 BUILDDIR := $(BUILDDIR:TEST\\IOTEST/../../=)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
 DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
 LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
index 12646e6..d8edff7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *   file name:  filetst.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index f8dc96d..ac5865f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  iotest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 514575e..19d7434 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  *   file name:  iotest.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index d454744..c0502cd 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E4993E82-D68A-46CA-BAE0-9D35E172E46F}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/iotest.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/iotest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/iotest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/iotest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/iotest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/iotest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/iotest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/iotest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/iotest.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/iotest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/iotest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/iotest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/iotest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/iotest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/iotest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/iotest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="filetst.c" />
-    <ClCompile Include="iotest.cpp" />
-    <ClCompile Include="stream.cpp">
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>
-      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>
-    </ClCompile>
-    <ClCompile Include="strtst.c" />
-    <ClCompile Include="trnstst.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="iotest.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\io\io.vcxproj">
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{E4993E82-D68A-46CA-BAE0-9D35E172E46F}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/iotest.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/iotest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/iotest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/iotest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/iotest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/iotest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/iotest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/iotest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/iotest.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/iotest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/iotest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/iotest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/iotest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/iotest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/iotest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/iotest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="filetst.c" />\r
+    <ClCompile Include="iotest.cpp" />\r
+    <ClCompile Include="stream.cpp">\r
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DisableLanguageExtensions>\r
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DisableLanguageExtensions>\r
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DisableLanguageExtensions>\r
+      <DisableLanguageExtensions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DisableLanguageExtensions>\r
+    </ClCompile>\r
+    <ClCompile Include="strtst.c" />\r
+    <ClCompile Include="trnstst.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="iotest.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">\r
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 424d4e3..23d44b9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  iotest.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -106,12 +106,12 @@ static void U_CALLCONV TestStream(void)
 
     inTestStream >> inStr >> inStr2;
     if (inStr.compare(thisMu) != 0) {
-        u_austrncpy(inStrC, toUCharPtr(inStr.getBuffer()), inStr.length());
+        u_austrncpy(inStrC, inStr.getBuffer(), inStr.length());
         inStrC[inStr.length()] = 0;
         log_err("Got: \"%s\", Expected: \"tHis\\u03BC\"\n", inStrC);
     }
     if (inStr2.compare(mu) != 0) {
-        u_austrncpy(inStrC, toUCharPtr(inStr.getBuffer()), inStr.length());
+        u_austrncpy(inStrC, inStr.getBuffer(), inStr.length());
         inStrC[inStr.length()] = 0;
         log_err("Got: \"%s\", Expected: \"mu\"\n", inStrC);
     }
index ce38aff..5cf0dc4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  strtst.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index be32143..a4e910e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 459a1a3..7d9e482 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index e8c9c9d..e3d8e81 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 03c273f..0db3ead 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index b91a75d..9a8ae99 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
index 26c7fbd..4021c50 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index a8d8634..effb619 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /*
index 5c46103..26d76ec 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 521cb88..77ed047 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 07af957..9314763 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index efa1286..e3d77a1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index 3839d1e..673dfad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 804c6a3..e28e04d 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{798E3AE4-A984-43FF-8928-EACFF43F56AE}</ProjectGuid>
-    <RootNamespace>cletest</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir).\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir).\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;..\..\..\lib\icutestd.lib;..\..\..\lib\icutud.lib;..\..\..\lib\iculed.lib;..\..\..\lib\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>NotSet</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;..\..\..\lib\icutest.lib;..\..\..\lib\icutu.lib;..\..\..\lib\icule.lib;..\..\..\lib\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>NotSet</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;..\..\..\lib64\icutestd.lib;..\..\..\lib64\icutud.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;..\..\..\lib64\icutest.lib;..\..\..\lib64\icutu.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="cfonts.cpp" />
-    <ClCompile Include="cletest.c" />
-    <ClCompile Include="cmaps.cpp" />
-    <ClCompile Include="FontObject.cpp" />
-    <ClCompile Include="FontTableCache.cpp" />
-    <ClCompile Include="letest.cpp" />
-    <ClCompile Include="letsutil.cpp" />
-    <ClCompile Include="PortableFontInstance.cpp" />
-    <ClCompile Include="SimpleFontInstance.cpp" />
-    <ClCompile Include="xmlreader.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="cfonts.h" />
-    <ClInclude Include="cmaps.h" />
-    <ClInclude Include="FontObject.h" />
-    <ClInclude Include="FontTableCache.h" />
-    <ClInclude Include="letest.h" />
-    <ClInclude Include="letsutil.h" />
-    <ClInclude Include="PortableFontInstance.h" />
-    <ClInclude Include="sfnt.h" />
-    <ClInclude Include="SimpleFontInstance.h" />
-    <ClInclude Include="xmlreader.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{798E3AE4-A984-43FF-8928-EACFF43F56AE}</ProjectGuid>\r
+    <RootNamespace>cletest</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir).\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir).\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib\icuucd.lib;..\..\..\lib\icuind.lib;..\..\..\lib\icutestd.lib;..\..\..\lib\icutud.lib;..\..\..\lib\iculed.lib;..\..\..\lib\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>NotSet</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib\icuuc.lib;..\..\..\lib\icuin.lib;..\..\..\lib\icutest.lib;..\..\..\lib\icutu.lib;..\..\..\lib\icule.lib;..\..\..\lib\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <TargetMachine>NotSet</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib64\icuucd.lib;..\..\..\lib64\icuind.lib;..\..\..\lib64\icutestd.lib;..\..\..\lib64\icutud.lib;..\..\..\lib64\iculed.lib;..\..\..\lib64\iculxd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib64\icuuc.lib;..\..\..\lib64\icuin.lib;..\..\..\lib64\icutest.lib;..\..\..\lib64\icutu.lib;..\..\..\lib64\icule.lib;..\..\..\lib64\iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="cfonts.cpp" />\r
+    <ClCompile Include="cletest.c" />\r
+    <ClCompile Include="cmaps.cpp" />\r
+    <ClCompile Include="FontObject.cpp" />\r
+    <ClCompile Include="FontTableCache.cpp" />\r
+    <ClCompile Include="letest.cpp" />\r
+    <ClCompile Include="letsutil.cpp" />\r
+    <ClCompile Include="PortableFontInstance.cpp" />\r
+    <ClCompile Include="SimpleFontInstance.cpp" />\r
+    <ClCompile Include="xmlreader.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="cfonts.h" />\r
+    <ClInclude Include="cmaps.h" />\r
+    <ClInclude Include="FontObject.h" />\r
+    <ClInclude Include="FontTableCache.h" />\r
+    <ClInclude Include="letest.h" />\r
+    <ClInclude Include="letsutil.h" />\r
+    <ClInclude Include="PortableFontInstance.h" />\r
+    <ClInclude Include="sfnt.h" />\r
+    <ClInclude Include="SimpleFontInstance.h" />\r
+    <ClInclude Include="xmlreader.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 382799a..9684b5f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 875bb97..ebdca44 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index a9c5da5..35977e8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 0e564b9..d75da2e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{DA322426-C37C-4909-A99D-16B05E7FA498}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/gendata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gendata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/gendata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/gendata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gendata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gendata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/gendata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gendata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/gendata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/gendata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/gendata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/gendata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gendata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gendata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/gendata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gendata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="cmaps.cpp" />
-    <ClCompile Include="FontTableCache.cpp" />
-    <ClCompile Include="gendata.cpp" />
-    <ClCompile Include="letsutil.cpp" />
-    <ClCompile Include="PortableFontInstance.cpp" />
-    <ClCompile Include="SimpleFontInstance.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="cmaps.h" />
-    <ClInclude Include="FontTableCache.h" />
-    <ClInclude Include="letest.h" />
-    <ClInclude Include="letsutil.h" />
-    <ClInclude Include="PortableFontInstance.h" />
-    <ClInclude Include="sfnt.h" />
-    <ClInclude Include="SimpleFontInstance.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA322426-C37C-4909-A99D-16B05E7FA498}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/gendata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gendata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib\iculed.lib;..\..\..\lib\icuucd.lib;..\..\..\lib\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/gendata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/gendata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gendata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gendata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib64\iculed.lib;..\..\..\lib64\icuucd.lib;..\..\..\lib64\icutud.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/gendata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gendata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/gendata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/gendata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib\icule.lib;..\..\..\lib\icuuc.lib;..\..\..\lib\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/gendata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/gendata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gendata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\layout;..\..\tools\ctestfw;..\..\tools\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gendata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>..\..\..\lib64\icule.lib;..\..\..\lib64\icuuc.lib;..\..\..\lib64\icutu.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/gendata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gendata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="cmaps.cpp" />\r
+    <ClCompile Include="FontTableCache.cpp" />\r
+    <ClCompile Include="gendata.cpp" />\r
+    <ClCompile Include="letsutil.cpp" />\r
+    <ClCompile Include="PortableFontInstance.cpp" />\r
+    <ClCompile Include="SimpleFontInstance.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="cmaps.h" />\r
+    <ClInclude Include="FontTableCache.h" />\r
+    <ClInclude Include="letest.h" />\r
+    <ClInclude Include="letsutil.h" />\r
+    <ClInclude Include="PortableFontInstance.h" />\r
+    <ClInclude Include="sfnt.h" />\r
+    <ClInclude Include="SimpleFontInstance.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index bb94a09..7bafd11 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index b26e857..b6c46cd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 50c54ee..d55768e 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{67351485-4D18-4245-BE39-A7EF0675ACD2}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/letest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/letest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/letest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/letest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/letest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/letest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/letest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/letest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/letest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/letest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/letest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/letest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/letest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/letest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/letest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/letest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="cfonts.cpp" />
-    <ClCompile Include="cletest.c" />
-    <ClCompile Include="cmaps.cpp" />
-    <ClCompile Include="FontTableCache.cpp" />
-    <ClCompile Include="letest.cpp" />
-    <ClCompile Include="letsutil.cpp" />
-    <ClCompile Include="PortableFontInstance.cpp" />
-    <ClCompile Include="SimpleFontInstance.cpp" />
-    <ClCompile Include="xmlreader.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="cfonts.h" />
-    <ClInclude Include="cmaps.h" />
-    <ClInclude Include="FontTableCache.h" />
-    <ClInclude Include="letest.h" />
-    <ClInclude Include="letsutil.h" />
-    <ClInclude Include="PortableFontInstance.h" />
-    <ClInclude Include="sfnt.h" />
-    <ClInclude Include="SimpleFontInstance.h" />
-    <ClInclude Include="xmlreader.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\layoutex\layoutex.vcxproj">
-      <Project>{37fc2c7f-1904-4811-8955-2f478830ead1}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\layout\layout.vcxproj">
-      <Project>{c920062a-0647-4553-a3b2-37c58065664b}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tools\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{67351485-4D18-4245-BE39-A7EF0675ACD2}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/letest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/letest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/letest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/letest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/letest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/letest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/letest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/letest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/letest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/letest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/letest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/letest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/letest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include\layout;..\..\..\include;..\..\common;..\..\tools\ctestfw;..\..\tools\toolutil;..\..\layout;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/letest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/letest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/letest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="cfonts.cpp" />\r
+    <ClCompile Include="cletest.c" />\r
+    <ClCompile Include="cmaps.cpp" />\r
+    <ClCompile Include="FontTableCache.cpp" />\r
+    <ClCompile Include="letest.cpp" />\r
+    <ClCompile Include="letsutil.cpp" />\r
+    <ClCompile Include="PortableFontInstance.cpp" />\r
+    <ClCompile Include="SimpleFontInstance.cpp" />\r
+    <ClCompile Include="xmlreader.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="cfonts.h" />\r
+    <ClInclude Include="cmaps.h" />\r
+    <ClInclude Include="FontTableCache.h" />\r
+    <ClInclude Include="letest.h" />\r
+    <ClInclude Include="letsutil.h" />\r
+    <ClInclude Include="PortableFontInstance.h" />\r
+    <ClInclude Include="sfnt.h" />\r
+    <ClInclude Include="SimpleFontInstance.h" />\r
+    <ClInclude Include="xmlreader.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\layoutex\layoutex.vcxproj">\r
+      <Project>{37fc2c7f-1904-4811-8955-2f478830ead1}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\layout\layout.vcxproj">\r
+      <Project>{c920062a-0647-4553-a3b2-37c58065664b}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\tools\ctestfw\ctestfw.vcxproj">\r
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\tools\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 1726b4e..323defc 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 734e2aa..2bb5974 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 140e094..6cec2e5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************
 *
index 914fa22..91e3d13 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index a5e0403..7ddb399 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 2067f0a..2281319 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *
index 4f053c3..d5e0c8b 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index b07a7e0..c9d2c82 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 5903da2..609f303 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B5E59422-0C52-4469-AB69-0C2AFD6E37A5}</ProjectGuid>
-    <RootNamespace>DateFmtPerf</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\x86\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/datefmtperf.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>
-      </DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(SolutionDir)\x86\$(Configuration)/datefmtperf.exe</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Release/DateFmtPerf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>
-      </OptimizeReferences>
-      <EnableCOMDATFolding>
-      </EnableCOMDATFolding>
-      <LinkTimeCodeGeneration>
-      </LinkTimeCodeGeneration>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="DateFmtPerf.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="breakdata.h" />
-    <ClInclude Include="collationdata.h" />
-    <ClInclude Include="datedata.h" />
-    <ClInclude Include="DateFmtPerf.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="ReadMe.txt" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B5E59422-0C52-4469-AB69-0C2AFD6E37A5}</ProjectGuid>\r
+    <RootNamespace>DateFmtPerf</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\x86\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/datefmtperf.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(SolutionDir)\x86\$(Configuration)/datefmtperf.exe</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Release/DateFmtPerf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>\r
+      </OptimizeReferences>\r
+      <EnableCOMDATFolding>\r
+      </EnableCOMDATFolding>\r
+      <LinkTimeCodeGeneration>\r
+      </LinkTimeCodeGeneration>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="DateFmtPerf.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="breakdata.h" />\r
+    <ClInclude Include="collationdata.h" />\r
+    <ClInclude Include="datedata.h" />\r
+    <ClInclude Include="DateFmtPerf.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="ReadMe.txt" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index f94f314..03297da 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 82304db..d886785 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index e30fdc7..5e2d390 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index a1dda4a..0f71f51 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index ab794b6..8700bba 100644 (file)
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 **********************************************************************
 **********************************************************************
index 49887c8..c189a34 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D850A4B6-7D94-476E-9392-E9272DA4EAAF}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/charperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/charperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/charperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/charperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/charperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/charperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/charperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/charperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/charperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/charperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/charperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/charperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/charperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/charperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/charperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/charperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="charperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="charperf.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{D850A4B6-7D94-476E-9392-E9272DA4EAAF}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/charperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/charperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/charperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/charperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/charperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/charperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/charperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/charperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/charperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/charperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/charperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/charperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/charperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/charperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/charperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/charperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="charperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="charperf.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index fe334a2..d92ecc6 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 137b31a..e98499e 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***********************************************************************
index b296c24..9501c3a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{01807B4A-E3B5-4B97-A7F3-207746DCD71E}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/collperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/collperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/collperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/collperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/collperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/collperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/collperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/collperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/collperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x86\Release/collperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/collperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/collperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/collperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x64\Release/collperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/collperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/collperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="collperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{01807B4A-E3B5-4B97-A7F3-207746DCD71E}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/collperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/collperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/collperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/collperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/collperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/collperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/collperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/collperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/collperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/collperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/collperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/collperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/collperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/collperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/collperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/collperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="collperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 35201dc..17ea48a 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 9dbd58c..ded6729 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 69e4d11..162724f 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index cc1e3d5..800270a 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 60a5edf..4dfbb2a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B4C03939-D417-41F0-85B4-848ECF105E3A}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/convperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/convperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/convperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/convperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/convperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/convperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/convperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/convperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/convperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/convperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/convperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/convperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/convperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/convperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/convperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/convperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="convperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="convperf.h" />
-    <ClInclude Include="data.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B4C03939-D417-41F0-85B4-848ECF105E3A}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/convperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/convperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/convperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/convperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/convperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/convperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/convperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/convperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/convperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/convperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/convperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/convperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/convperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/convperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/convperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/convperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="convperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="convperf.h" />\r
+    <ClInclude Include="data.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 0ff8563..ff5af5f 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 661c6e8..0e59a3f 100644 (file)
@@ -1,6 +1,6 @@
 /*  
  ***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
@@ -8,7 +8,7 @@
  *   Corporation and others.  All Rights Reserved.
  ***********************************************************************
  *  file name:  dicttrieperf.cpp
- *  encoding:   UTF-8
+ *  encoding:   US-ASCII
  *  tab size:   8 (not used)
  *  indentation:4
  *
index a50642e..e68dda9 100644 (file)
@@ -59,7 +59,7 @@ distclean-local: clean-local
        $(RMV) Makefile
 
 invoke check-local: all-local
-       ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) ./$(TARGET) -f ./howexpensive.xml
+       ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) ./$(TARGET) ./howexpensive.xml
 
 Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
        cd $(top_builddir) \
index fb16e4f..d3320c6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 6190de7..c54fea3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 168f82e..80e6709 100644 (file)
@@ -1,6 +1,6 @@
 /*
  ***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
index 39aefe9..f07a1b3 100644 (file)
@@ -1,6 +1,6 @@
 /***************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ****************************************************************************/
index 83fe8fb..210db95 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index b312432..6b5b9d5 100644 (file)
@@ -1,6 +1,6 @@
 /*
 **************************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
index 038a01f..b55d41d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  **********************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  **********************************************************************
  **********************************************************************
index 28866ab..028fe20 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 6f3f95d..4b36170 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index f143d93..41021d0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index f50a62a..f657b90 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 0031469..35e35da 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
index 3ab38ec..4232e2b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
index da06afb..b5e7db7 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 16bf92b..735dba8 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 1639102..27ad143 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 25e6ea9..fcd7b09 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ***************************************************************************
index 73ec116..0b11b1a 100644 (file)
@@ -1,6 +1,6 @@
 /***************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 ****************************************************************************/
index 1ad9399..c1a29b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *******************************************************************************
index 2f01e73..b11e784 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
index a4ebf26..4bd0af5 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 76a2293..660b8c7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d97e050..8a4cb87 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 0cc65b5..b7a9e48 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 0913fb3..e5faf8a 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index f059869..1295b5b 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{56CCC661-8D33-4F0A-B62F-C619CE843C68}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/normperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/normperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/normperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/normperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/normperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/normperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/normperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/normperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/normperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/normperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/normperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/normperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/normperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/normperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/normperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/normperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="normperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="normperf.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{56CCC661-8D33-4F0A-B62F-C619CE843C68}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/normperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/normperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/normperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/normperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/normperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/normperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/normperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/normperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/normperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/normperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/normperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/normperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/normperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/normperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/normperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/normperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="normperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="normperf.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 406e398..8a5f402 100644 (file)
@@ -1,5 +1,5 @@
 /************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 81b83bd..b63b728 100644 (file)
@@ -1,5 +1,5 @@
 /************************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  *************************************************************************
index 3f71269..4568d3a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{241DED26-1635-45E6-9564-7742AC8043B5}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/strsrchperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/strsrchperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/strsrchperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/strsrchperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/strsrchperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/strsrchperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/strsrchperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/strsrchperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/strsrchperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/strsrchperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/strsrchperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/strsrchperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="strsrchperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="strsrchperf.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{241DED26-1635-45E6-9564-7742AC8043B5}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/strsrchperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/strsrchperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/strsrchperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/strsrchperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/strsrchperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/strsrchperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/strsrchperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/strsrchperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/strsrchperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/strsrchperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/strsrchperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/strsrchperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="strsrchperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="strsrchperf.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 361a14b..e71ae4d 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ***********************************************************************
index bc028da..46004b8 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 **********************************************************************
index 343b7eb..1094afe 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{7E280294-49BD-43D1-9903-CF29648D88CA}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/ubrkperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/ubrkperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/ubrkperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/ubrkperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x86\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/ubrkperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/ubrkperf24.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/ubrkperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/ubrkperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/ubrkperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/ubrkperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x64\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\..\..\bin64\ubrkperf24.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/ubrkperf24.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ubrkperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="ubrkperf.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{7E280294-49BD-43D1-9903-CF29648D88CA}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/ubrkperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/ubrkperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/ubrkperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/ubrkperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/ubrkperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/ubrkperf24.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/ubrkperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/ubrkperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/ubrkperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/ubrkperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>..\..\..\..\bin64\ubrkperf24.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/ubrkperf24.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="ubrkperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="ubrkperf.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 19c4721..4090378 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ***********************************************************************
index d79468b..9775f82 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *
 *******************************************************************************
@@ -12,7 +12,7 @@
 *
 *******************************************************************************
 *   file name:  ucnvavailperf.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8005fbc..166d0b1 100644 (file)
@@ -1,99 +1,99 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{EE2259BF-280D-4E0E-8A08-D77A26AE4191}</ProjectGuid>
-    <RootNamespace>ucnvavailperf</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ucnvavailperf.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{EE2259BF-280D-4E0E-8A08-D77A26AE4191}</ProjectGuid>\r
+    <RootNamespace>ucnvavailperf</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="ucnvavailperf.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index e1eb64e..68ecc8a 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 *************************************************************************
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 *************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 *************************************************************************
 *   file name:  bitset.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ad5afde..1b42cf2 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 *************************************************************************
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 *************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 *************************************************************************
 *   file name:  trieset.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 19b5791..2acd834 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 *************************************************************************
-*   © 2016 and later: Unicode, Inc. and others.
+*   Copyright (C) 2016 and later: Unicode, Inc. and others.
 *   License & terms of use: http://www.unicode.org/copyright.html#License
 *************************************************************************
 *************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 *************************************************************************
 *   file name:  unicont.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index cfeb3ad..89760bb 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 **************************************************************************
-*    © 2016 and later: Unicode, Inc. and others.
+*    Copyright (C) 2016 and later: Unicode, Inc. and others.
 *    License & terms of use: http://www.unicode.org/copyright.html#License
 **************************************************************************
 **************************************************************************
@@ -8,7 +8,7 @@
 *   Corporation and others.  All Rights Reserved.
 **************************************************************************
 *   file name:  unisetperf.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 212cfba..426394b 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E7728E98-0469-AF37-43F4-4529A3D52C6B}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/unisetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/unisetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/unisetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/unisetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/unisetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/unisetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/unisetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x86\Release/unisetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/unisetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/unisetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/unisetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x64\Release/unisetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/unisetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/unisetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="unisetperf.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{E7728E98-0469-AF37-43F4-4529A3D52C6B}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/unisetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/unisetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/unisetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/unisetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/unisetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/unisetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/unisetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/unisetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/unisetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/unisetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/unisetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/unisetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/unisetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/unisetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="unisetperf.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index ce8842d..52b1512 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index d03aa86..288ad67 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 337b262..65404b6 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 1c9dce3..56129b6 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/usetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x86\Release/usetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/usetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/usetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/usetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x64\Release/usetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/usetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/usetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/usetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/usetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/usetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/usetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/usetperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/usetperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/usetperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/usetperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="bitset.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="usetperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="bitset.h" />
-    <ClInclude Include="timer.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/usetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/usetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/usetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/usetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/usetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/usetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/usetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/usetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/usetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/usetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/usetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/usetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/usetperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/usetperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/usetperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/usetperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="bitset.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+    <ClCompile Include="usetperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="bitset.h" />\r
+    <ClInclude Include="timer.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index d9b5c12..f410ea2 100644 (file)
@@ -1,5 +1,5 @@
 /***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  *
  ***********************************************************************
index 5392ee7..d30e713 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ***********************************************************************
-* © 2016 and later: Unicode, Inc. and others.
+* Copyright (C) 2016 and later: Unicode, Inc. and others.
 * License & terms of use: http://www.unicode.org/copyright.html#License
 ***********************************************************************
 ***********************************************************************
index 59a556e..90028fe 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{523710EA-349D-45BF-8B39-289CC86E7D91}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/stringperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Release/stringperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/stringperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/stringperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/stringperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Release/stringperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/stringperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/stringperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/stringperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0417</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/stringperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/stringperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/stringperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0417</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/stringperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/stringperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="stringperf.cpp">
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="stringperf.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{523710EA-349D-45BF-8B39-289CC86E7D91}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/stringperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/stringperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/stringperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/stringperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/stringperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/stringperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/stringperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/stringperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/stringperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/stringperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0417</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/stringperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/stringperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/stringperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/stringperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0417</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/stringperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/stringperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="stringperf.cpp">\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>\r
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="stringperf.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index e027cc8..e74e1eb 100644 (file)
@@ -1,6 +1,6 @@
 /*  
 **************************************************************************
- *   © 2016 and later: Unicode, Inc. and others.
+ *   Copyright (C) 2016 and later: Unicode, Inc. and others.
  *   License & terms of use: http://www.unicode.org/copyright.html#License
  *************************************************************************
  *************************************************************************
@@ -8,7 +8,7 @@
  *   Corporation and others.  All Rights Reserved.
  *************************************************************************
  *   file name:  utfperf.cpp
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index db8a15c..0696b0a 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E7728E98-0469-43F4-AF37-4529A3D52C6B}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/utfperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/utfperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/utfperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/utfperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/utfperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/utfperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/utfperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/utfperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/utfperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x86\Release/utfperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/utfperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/utfperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/utfperf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x64\Release/utfperf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/utfperf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/utfperf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="utfperf.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{E7728E98-0469-43F4-AF37-4529A3D52C6B}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/utfperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/utfperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/utfperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/utfperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/utfperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/utfperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/utfperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/utfperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/utfperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/utfperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/utfperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/utfperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/utfperf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/utfperf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/utfperf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/utfperf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="utfperf.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 8b28407..489a26f 100644 (file)
@@ -1,6 +1,6 @@
 /*  
  ***********************************************************************
- * © 2016 and later: Unicode, Inc. and others.
+ * Copyright (C) 2016 and later: Unicode, Inc. and others.
  * License & terms of use: http://www.unicode.org/copyright.html#License
  ***********************************************************************
  ***********************************************************************
@@ -8,7 +8,7 @@
  *   Corporation and others.  All Rights Reserved.
  ***********************************************************************
  *  file name:  utrie2perf.cpp
- *  encoding:   UTF-8
+ *  encoding:   US-ASCII
  *  tab size:   8 (not used)
  *  indentation:4
  *
index fa6c969..e78a26f 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/utrie2perf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Debug/utrie2perf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/utrie2perf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/utrie2perf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Debug/utrie2perf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/utrie2perf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/utrie2perf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x86\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x86\Release/utrie2perf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x86\Release/utrie2perf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/utrie2perf.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\x64\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\x64\Release/utrie2perf.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>.\x64\Release/utrie2perf.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="utrie2perf.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/utrie2perf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Debug/utrie2perf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/utrie2perf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/utrie2perf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Debug/utrie2perf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/utrie2perf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/utrie2perf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x86\Release/utrie2perf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x86\Release/utrie2perf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/utrie2perf.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>.\x64\Release/utrie2perf.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\x64\Release/utrie2perf.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="utrie2perf.cpp" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 53a3d7c..dfc8deb 100644 (file)
@@ -1,6 +1,6 @@
-# BidiTest-10.0.0.txt
-# Date: 2017-02-14, 04:25:55 GMT
-# © 2017 Unicode®, Inc.
+# BidiTest-9.0.0.txt
+# Date: 2016-03-02, 18:54:52 GMT
+# © 2016 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
index 4561878..fbb34a1 100644 (file)
@@ -1,6 +1,6 @@
-# GraphemeBreakTest-10.0.0.txt
-# Date: 2017-02-16, 00:24:15 GMT
-# © 2017 Unicode®, Inc.
+# GraphemeBreakTest-9.0.0.txt
+# Date: 2016-06-02, 18:28:17 GMT
+# © 2016 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -8,6 +8,7 @@
 #   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Grapheme Break Test
+#    Hand-patched for Emoji ZWJ Proposal L2/16-208R2.
 #
 # Format:
 # <string> (# <comment>)? 
@@ -53,8 +54,8 @@
 ÷ 0020 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0020 × 200D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0020 × 0308 × 200D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0020 ÷ 2640 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0020 × 0308 ÷ 2640 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0020 ÷ 2764 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0020 × 0308 ÷ 2764 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0020 ÷ 1F466 ÷    #  ÷ [0.2] SPACE (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0020 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0020 ÷ 0378 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -93,8 +94,8 @@
 ÷ 000D ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000D ÷ 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 000D ÷ 0308 × 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 000D ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 000D ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 0378 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000A ÷ 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 000A ÷ 0308 × 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 000A ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 000A ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 0378 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0001 ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0001 ÷ 200D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0001 ÷ 0308 × 200D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0001 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0001 ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0001 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 ÷ 0378 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0300 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0300 × 0308 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0300 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0300 × 0308 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0300 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 ÷ 0378 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0600 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0600 × 200D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0600 × 0308 × 200D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0600 × 2640 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0600 × 0308 ÷ 2640 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0600 × 2764 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0600 × 0308 ÷ 2764 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0600 × 1F466 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] BOY (EBG) ÷ [0.3]
 ÷ 0600 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0600 × 0378 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0903 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0903 × 200D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0903 × 0308 × 200D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0903 ÷ 2640 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0903 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0903 ÷ 2764 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0903 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0903 ÷ 1F466 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0903 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0903 ÷ 0378 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1100 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1100 × 200D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1100 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1100 ÷ 2640 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1100 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1100 ÷ 2764 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1100 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1100 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1100 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1100 ÷ 0378 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1160 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1160 × 200D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1160 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1160 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1160 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1160 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1160 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1160 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1160 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1160 ÷ 0378 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 11A8 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 11A8 × 200D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 11A8 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 11A8 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 11A8 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 11A8 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 11A8 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 11A8 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 11A8 ÷ 0378 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ AC00 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ AC00 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ AC00 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ AC00 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ AC00 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ AC00 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC00 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ AC00 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC00 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC00 ÷ 0378 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ AC01 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ AC01 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ AC01 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ AC01 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ AC01 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ AC01 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC01 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ AC01 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC01 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ AC01 ÷ 0378 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F1E6 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1F1E6 × 0308 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1F1E6 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F1E6 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 ÷ 0378 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 261D × 0308 × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 261D × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 261D × 0308 × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 261D ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 261D × 0308 ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 261D ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D × 0308 ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 261D ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D ÷ 0378 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F3FB × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1F3FB × 0308 × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1F3FB ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1F3FB × 0308 ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F3FB ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB ÷ 0378 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 200D × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 200D × 0308 × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 200D Ã\97 2640 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 200D × 0308 ÷ 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 200D Ã\97 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
+÷ 200D Ã· 2764 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 0308 ÷ 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D Ã· 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 200D ÷ 0378 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 200D × 0308 ÷ 0378 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 200D ÷ D800 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
 ÷ 200D × 0308 ÷ D800 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 2640 ÷ 0020 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0020 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 2640 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2640 × 0308 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2640 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2640 × 0308 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2640 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 2640 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
-÷ 2640 × 0308 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
-÷ 2640 ÷ 0600 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0600 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 2640 × 0903 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 2640 × 0308 × 0903 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 2640 ÷ 1100 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1100 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 2640 ÷ 1160 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1160 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 2640 ÷ 11A8 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 2640 × 0308 ÷ 11A8 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 2640 ÷ AC00 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 2640 × 0308 ÷ AC00 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 2640 ÷ AC01 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 2640 × 0308 ÷ AC01 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 2640 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2640 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2640 × 0308 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2640 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2640 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 2640 × 0308 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 2640 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 2640 × 0308 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 2640 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2640 ÷ 0378 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0378 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 2640 ÷ D800 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 2640 × 0308 ÷ D800 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 2764 ÷ 0020 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0020 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 2764 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 2764 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 2764 × 0308 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 2764 ÷ 0600 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 2764 × 0903 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 2764 × 0308 × 0903 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 2764 ÷ 1100 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1100 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 2764 ÷ 1160 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1160 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 2764 ÷ 11A8 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 2764 × 0308 ÷ 11A8 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 2764 ÷ AC00 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 2764 × 0308 ÷ AC00 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 2764 ÷ AC01 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 2764 × 0308 ÷ AC01 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 2764 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 2764 × 0308 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 2764 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 ÷ 0378 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0378 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 2764 ÷ D800 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 2764 × 0308 ÷ D800 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
 ÷ 1F466 ÷ 0020 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] SPACE (Other) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 0020 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
 ÷ 1F466 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 1F466 × 0308 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F466 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 1F466 × 0308 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 1F466 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1F466 × 0308 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 ÷ 0378 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0378 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0378 × 200D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ 0378 × 0308 × 200D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ 0378 ÷ 2640 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0378 × 0308 ÷ 2640 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0378 ÷ 2764 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0378 × 0308 ÷ 2764 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0378 ÷ 1F466 ÷    #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0378 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0378 ÷ 0378 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ D800 ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ D800 ÷ 200D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
 ÷ D800 ÷ 0308 × 200D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
-÷ D800 ÷ 2640 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ D800 ÷ 2764 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ D800 ÷ 1F466 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] BOY (EBG) ÷ [0.3]
 ÷ D800 ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ D800 ÷ 0378 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
 ÷ 0061 ÷ 0600 × 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]
 ÷ 261D × 1F3FB ÷ 261D ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D Ã\97 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D Ã\97 2640 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 200D Ã\97 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
+÷ 200D Ã· 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D Ã· 2764 Ã·     #  Ã· [0.2] ZERO WIDTH JOINER (ZWJ) Ã\97 [11.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D Ã· 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 #
 # Lines: 822
index b8c49a4..76805e6 100644 (file)
@@ -1,6 +1,6 @@
-# LineBreakTest-10.0.0.txt
-# Date: 2017-02-27, 22:57:17 GMT
-# © 2017 Unicode®, Inc.
+# LineBreakTest-9.0.0.txt
+# Date: 2016-06-18, 00:42:06 GMT
+# © 2016 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
index e33fd63..50cdf2e 100644 (file)
@@ -1,6 +1,6 @@
-# SentenceBreakTest-10.0.0.txt
-# Date: 2017-02-14, 04:26:30 GMT
-# © 2017 Unicode®, Inc.
+# SentenceBreakTest-9.0.0.txt
+# Date: 2016-06-02, 18:28:30 GMT
+# © 2016 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
index 3a1cc9c..1cf9023 100644 (file)
@@ -1,6 +1,6 @@
-# WordBreakTest-10.0.0.txt
-# Date: 2017-02-14, 04:26:31 GMT
-# © 2017 Unicode®, Inc.
+# WordBreakTest-9.0.0.txt
+# Date: 2016-06-02, 18:28:31 GMT
+# © 2016 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -8,6 +8,7 @@
 #   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Word Break Test
+#    Hand-patched for Emoji ZWJ Proposal L2/16-208R2.
 #
 # Format:
 # <string> (# <comment>)? 
@@ -55,8 +56,8 @@
 ÷ 0001 × 0308 ÷ 261D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0001 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0001 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0001 × 0308 ÷ 2640 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 × 0308 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0001 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 × 00AD ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 000D ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 000D ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 000D ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 00AD ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 000A ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 000A ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 000A ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 00AD ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 000B ÷ 1F3FB ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 000B ÷ 2640 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 000B ÷ 0308 ÷ 2640 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 000B ÷ 2764 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 000B ÷ 1F466 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] BOY (EBG) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000B ÷ 00AD ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 261D ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 3031 ÷ 1F3FB ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 3031 ÷ 2640 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 3031 × 0308 ÷ 2640 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 3031 ÷ 2764 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 3031 × 0308 ÷ 2764 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 3031 ÷ 1F466 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 3031 × 00AD ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0041 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0041 ÷ 2640 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0041 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0041 ÷ 2764 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0041 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0041 ÷ 1F466 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0041 × 00AD ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 003A ÷ 2640 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 003A × 0308 ÷ 2640 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 003A ÷ 2764 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 003A × 00AD ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 002C ÷ 2640 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 002C × 0308 ÷ 2640 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 002C ÷ 2764 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002C × 00AD ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002E × 0308 ÷ 261D ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 002E ÷ 1F3FB ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 002E × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 002E ÷ 2640 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 002E × 0308 ÷ 2640 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 002E ÷ 2764 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002E × 0308 ÷ 2764 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 002E ÷ 1F466 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002E × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002E × 00AD ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0030 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0030 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0030 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0030 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0030 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0030 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0030 × 00AD ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 005F × 0308 ÷ 261D ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 005F ÷ 1F3FB ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 005F × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 005F ÷ 2640 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 005F × 0308 ÷ 2640 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 005F ÷ 2764 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 005F × 0308 ÷ 2764 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 005F ÷ 1F466 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 005F × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 005F × 00AD ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 261D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F1E6 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 1F1E6 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 2640 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F1E6 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F1E6 × 00AD ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 05D0 ÷ 1F3FB ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 05D0 ÷ 2640 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 05D0 × 0308 ÷ 2640 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 05D0 ÷ 2764 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 05D0 ÷ 1F466 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 05D0 × 00AD ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 261D ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0022 ÷ 1F3FB ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0022 ÷ 2640 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0022 × 0308 ÷ 2640 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0022 ÷ 2764 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0022 × 0308 ÷ 2764 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0022 ÷ 1F466 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0022 × 00AD ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0027 ÷ 2640 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0027 × 0308 ÷ 2640 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0027 × 00AD ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 261D × 0308 ÷ 261D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 261D × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 261D × 0308 × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 261D ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 261D × 0308 ÷ 2640 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 261D ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D × 0308 ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 261D ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 261D × 00AD ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 261D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F3FB ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 1F3FB ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1F3FB × 0308 ÷ 2640 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F3FB ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F3FB × 00AD ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
 ÷ 1F3FB ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 1F3FB × 0308 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2640 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0001 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 2640 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2640 × 0308 ÷ 000D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 2640 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2640 × 0308 ÷ 000A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 2640 ÷ 000B ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
-÷ 2640 × 0308 ÷ 000B ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
-÷ 2640 ÷ 3031 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
-÷ 2640 × 0308 ÷ 3031 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
-÷ 2640 ÷ 0041 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0041 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
-÷ 2640 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2640 × 0308 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2640 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2640 × 0308 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2640 ÷ 002E ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
-÷ 2640 × 0308 ÷ 002E ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
-÷ 2640 ÷ 0030 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0030 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 2640 ÷ 005F ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 2640 × 0308 ÷ 005F ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 2640 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 2640 ÷ 05D0 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 2640 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 2640 ÷ 0022 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0022 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
-÷ 2640 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2640 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2640 × 0308 ÷ 261D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 2640 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 2640 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 2640 × 0308 ÷ 2640 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 2640 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2640 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
-÷ 2640 × 00AD ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
-÷ 2640 × 0308 × 00AD ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
-÷ 2640 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 2640 × 0308 × 0300 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 2640 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
-÷ 2640 × 0308 × 200D ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
-÷ 2640 ÷ 0061 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2640 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2640 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2640 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2640 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2640 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 2640 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 2640 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 2640 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2640 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] FEMALE SIGN (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 2764 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 ÷ 000B ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000B ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 2764 ÷ 3031 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 2764 × 0308 ÷ 3031 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 2764 ÷ 0041 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0041 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 2764 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 × 0308 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 ÷ 002E ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 2764 × 0308 ÷ 002E ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 2764 ÷ 0030 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0030 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 2764 ÷ 005F ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 2764 × 0308 ÷ 005F ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 2764 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 ÷ 05D0 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 2764 ÷ 0022 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0022 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 2764 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 × 00AD ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 × 00AD ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 2764 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 2764 × 0308 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 2764 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 2764 × 0308 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 2764 ÷ 0061 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 1F466 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 1F466 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 261D ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 1F466 × 0308 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 1F466 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 1F466 × 0308 ÷ 2640 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 1F466 × 00AD ÷    #  ÷ [0.2] BOY (EBG) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 261D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 00AD ÷ 1F3FB ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 00AD ÷ 2640 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 00AD × 0308 ÷ 2640 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 00AD ÷ 2764 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 00AD × 0308 ÷ 2764 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 00AD ÷ 1F466 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 1F466 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 00AD × 00AD ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 261D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0300 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0300 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0300 × 0308 ÷ 2640 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0300 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 00AD ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 200D × 0308 ÷ 0022 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 200D ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 200D × 0308 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 200D Ã· 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 200D Ã\97 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 200D × 0308 ÷ 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
-÷ 200D Ã· 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D Ã\97 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D × 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 200D × 0308 ÷ 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 0308 ÷ 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) ÷ [0.3]
 ÷ 200D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 200D × 00AD ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 × 2060 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 × 2060 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 × 2060 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 2060 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 003A ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 003A × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 003A × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 0027 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 0027 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 0027 × 2060 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0061 ÷ 002C ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0061 ÷ 002C × 0308 ÷ 2640 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 002C × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 003A ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 003A × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 003A × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 0027 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 0027 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 002C ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 002C × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002C × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 0031 ÷ 002E × 2060 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
-÷ 0031 ÷ 002E × 2060 × 0308 ÷ 2640 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 261D × 1F3FB ÷ 261D ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
 ÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
 ÷ 200D × 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
-÷ 200D × 2640 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] FEMALE SIGN (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
 ÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) ÷ [0.3]
 ÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 0308 × 200D × 0308 × 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
index 0b551ba..ea18ef2 100644 (file)
@@ -36,12 +36,12 @@ LVT                = [\p{Grapheme_Cluster_Break = LVT}];
 # Emoji defintions
 
 EmojiNRK           = [[\p{Emoji}] - [Regional_Indicator\u002a\u00230-9©®™〰〽]];
-E_Base             = [\p{Grapheme_Cluster_Break = EB}];
+E_Base             = [\p{Grapheme_Cluster_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 E_Modifier         = [\p{Grapheme_Cluster_Break = EM}];
 E_Base_GAZ         = [\p{Grapheme_Cluster_Break = EBG}];
 
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict         = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict         = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 
 
 GB3:     CR LF;
@@ -53,7 +53,7 @@ GB7:     (LV | V) (V | T);
 GB8:     (LVT | T) T;
 
 GB10:    (E_Base | E_Base_GAZ) Extend* E_Modifier;
-GB11:    (Extended_Pict | EmojiNRK) Extend* ZWJ (Extended_Pict | EmojiNRK);
+GB11:    (Extended_Pict | EmojiNRK) ZWJ (Extended_Pict | EmojiNRK);
 GB9:     . (Extend | ZWJ);
 
 GB9a:    . SpacingMark;
index 268da1c..4000740 100644 (file)
@@ -27,7 +27,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [:LineBreak =  EB:];
+EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -60,8 +60,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index a25e9dc..ec0fdcd 100644 (file)
@@ -34,7 +34,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [:LineBreak =  EB:];
+EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -68,8 +68,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index 14458cf..884d04a 100644 (file)
@@ -48,7 +48,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [:LineBreak =  EB:];
+EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 EM = [:LineBreak =  EM:];
 EXX = [\uFF01 \uFF1F];
 EX = [[:LineBreak =  Exclamation:] - EXX];
@@ -85,8 +85,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index a2e0bc5..ad9244a 100644 (file)
@@ -41,7 +41,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [:LineBreak =  EB:];
+EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -74,8 +74,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
index 388cd03..d84bd87 100644 (file)
@@ -42,7 +42,7 @@ CL = [:LineBreak =  Close_Punctuation:];
 CM = [:LineBreak =  Combining_Mark:];
 CP = [:LineBreak =  Close_Parenthesis:];
 CR = [:LineBreak =  Carriage_Return:];
-EB = [:LineBreak =  EB:];
+EB = [[:LineBreak =  EB:]\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 EM = [:LineBreak =  EM:];
 EX = [:LineBreak =  Exclamation:];
 GL = [:LineBreak =  Glue:];
@@ -76,8 +76,8 @@ ZW = [:LineBreak =  ZWSpace:];
 ZWJ = [:LineBreak =  ZWJ:];
 
 EmojiNRK = [[\p{Emoji}] - [[RI]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 
 # LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
 AL = [AL AI SG XX ];
@@ -164,7 +164,7 @@ LB20.1b:      CB CM* ÷;
 #       not picking up the continuing match after the BA from 21a.
 # TODO: For CJ tailorings (with BAX) does this rule want to include BAX? If so,
 #       should "HL BAX" not break when followed by a CB? Thats what the current
-#       rules do, which is why "[^CM CB]?" includes the ?.
+#       rules do, which is why "[^CM CB]?"\13 includes the ?.
 LB21a:       HL CM* (HY | BA | BAX) CM* [^CM CB]?;
 
 # DO allow breaks here before $BAXcm and $NSXcm, so don't include them
index 783dfc9..2f24d6e 100644 (file)
@@ -32,11 +32,11 @@ MidLetter          = [\p{Word_Break = MidLetter}];
 MidNum             = [\p{Word_Break = MidNum}];
 Numeric            = [\p{Word_Break = Numeric}];
 ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];
-E_Base             = [\p{Word_Break = EB}];
+E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 E_Modifier         = [\p{Word_Break = EM}];
 EmojiNRK           = [[\p{Emoji}] - [[Regional_Indicator]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict      = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 EBG                = [\p{Word_Break = EBG}];
 
 #define dicitionary, with the effect being that those characters don't appear in test data.
index 232e4dd..359d444 100644 (file)
@@ -31,11 +31,11 @@ MidLetter          = [\p{Word_Break = MidLetter} - [\:]];
 MidNum             = [\p{Word_Break = MidNum} [.]];
 Numeric            = [\p{Word_Break = Numeric}];
 ExtendNumLet       = [\p{Word_Break = ExtendNumLet}];
-E_Base             = [\p{Word_Break = EB}];
+E_Base             = [\p{Word_Break = EB}\U0001F3C2\U0001F3C7\U0001F3CC\U0001F46A-\U0001F46D\U0001F46F\U0001F574\U0001F6CC];
 E_Modifier         = [\p{Word_Break = EM}];
 EmojiNRK           = [[\p{Emoji}] - [[Regional_Indicator]\u002a\u00230-9©®™〰〽]];
-# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r13267
-Extended_Pict      = [\U0001F774-\U0001F77F\U00002700-\U00002701\U00002703-\U00002704\U0000270E\U00002710-\U00002711\U00002765-\U00002767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F260-\U0001F265\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F25F\U0001F266-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\U00002605\U00002607-\U0000260D\U0000260F-\U00002610\U00002612\U00002616-\U00002617\U00002619-\U0000261C\U0000261E-\U0000261F\U00002621\U00002624-\U00002625\U00002627-\U00002629\U0000262B-\U0000262D\U00002630-\U00002637\U0000263B-\U00002647\U00002654-\U0000265F\U00002661-\U00002662\U00002664\U00002667\U00002669-\U0000267A\U0000267C-\U0000267E\U00002680-\U00002691\U00002695\U00002698\U0000269A\U0000269D-\U0000269F\U000026A2-\U000026A9\U000026AC-\U000026AF\U000026B2-\U000026BC\U000026BF-\U000026C3\U000026C6-\U000026C7\U000026C9-\U000026CD\U000026D0\U000026D2\U000026D5-\U000026E8\U000026EB-\U000026EF\U000026F6\U000026FB-\U000026FC\U000026FE-\U000026FF\U00002388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90B\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F94C\U0001F95F-\U0001F96B\U0001F992-\U0001F997\U0001F9D0-\U0001F9E6\U0001F90C-\U0001F90F\U0001F93F\U0001F94D-\U0001F94F\U0001F96C-\U0001F97F\U0001F998-\U0001F9BF\U0001F9C1-\U0001F9CF\U0001F9E7-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6D3-\U0001F6D4\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6F7-\U0001F6F8\U0001F6D5-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F9-\U0001F6FF];
+# Data for Extended Pictographic scraped from CLDR common/properties/ExtendedPictographic.txt, r12773
+Extended_Pict      = [\U0001F774-\U0001F77F\u2700-\u2701\u2703-\u2704\u270E\u2710-\u2711\u2765-\u2767\U0001F030-\U0001F093\U0001F094-\U0001F09F\U0001F10D-\U0001F10F\U0001F12F\U0001F16C-\U0001F16F\U0001F1AD-\U0001F1E5\U0001F203-\U0001F20F\U0001F23C-\U0001F23F\U0001F249-\U0001F24F\U0001F252-\U0001F2FF\U0001F7D5-\U0001F7FF\U0001F000-\U0001F003\U0001F005-\U0001F02B\U0001F02C-\U0001F02F\U0001F322-\U0001F323\U0001F394-\U0001F395\U0001F398\U0001F39C-\U0001F39D\U0001F3F1-\U0001F3F2\U0001F3F6\U0001F4FE\U0001F53E-\U0001F548\U0001F54F\U0001F568-\U0001F56E\U0001F571-\U0001F572\U0001F57B-\U0001F586\U0001F588-\U0001F589\U0001F58E-\U0001F58F\U0001F591-\U0001F594\U0001F597-\U0001F5A3\U0001F5A6-\U0001F5A7\U0001F5A9-\U0001F5B0\U0001F5B3-\U0001F5BB\U0001F5BD-\U0001F5C1\U0001F5C5-\U0001F5D0\U0001F5D4-\U0001F5DB\U0001F5DF-\U0001F5E0\U0001F5E2\U0001F5E4-\U0001F5E7\U0001F5E9-\U0001F5EE\U0001F5F0-\U0001F5F2\U0001F5F4-\U0001F5F9\u2605\u2607-\u260D\u260F-\u2610\u2612\u2616-\u2617\u2619-\u261C\u261E-\u261F\u2621\u2624-\u2625\u2627-\u2629\u262B-\u262D\u2630-\u2637\u263B-\u2647\u2654-\u265F\u2661-\u2662\u2664\u2667\u2669-\u267A\u267C-\u267E\u2680-\u2691\u2695\u2698\u269A\u269D-\u269F\u26A2-\u26A9\u26AC-\u26AF\u26B2-\u26BC\u26BF-\u26C3\u26C6-\u26C7\u26C9-\u26CD\u26D0\u26D2\u26D5-\u26E8\u26EB-\u26EF\u26F6\u26FB-\u26FC\u26FE-\u26FF\u2388\U0001FA00-\U0001FFFD\U0001F0A0-\U0001F0AE\U0001F0B1-\U0001F0BF\U0001F0C1-\U0001F0CF\U0001F0D1-\U0001F0F5\U0001F0AF-\U0001F0B0\U0001F0C0\U0001F0D0\U0001F0F6-\U0001F0FF\U0001F80C-\U0001F80F\U0001F848-\U0001F84F\U0001F85A-\U0001F85F\U0001F888-\U0001F88F\U0001F8AE-\U0001F8FF\U0001F900-\U0001F90F\U0001F91F\U0001F928-\U0001F92F\U0001F931-\U0001F932\U0001F93F\U0001F94C-\U0001F94F\U0001F95F-\U0001F97F\U0001F992-\U0001F9BF\U0001F9C1-\U0001F9FF\U0001F6C6-\U0001F6CA\U0001F6E6-\U0001F6E8\U0001F6EA\U0001F6F1-\U0001F6F2\U0001F6D3-\U0001F6DF\U0001F6ED-\U0001F6EF\U0001F6F7-\U0001F6FF];
 EBG                = [\p{Word_Break = EBG}];
 
 #define dicitionary, with the effect being that those characters don't appear in test data.
index a5fc436..82f9de3 100644 (file)
@@ -37,7 +37,7 @@
 #   Temp debugging tests
 <locale en>
 <word>
-<data><0>1•2•3•4•</data>
+<data><0>ク<400>ライアン<400>ト<400>サーバー<400></data>
 # <data><0>ク<400>ライアン<400>トサーバー<400></data>
 
 ## FILTERED BREAK TESTS
@@ -1090,221 +1090,3 @@ Bangkok)•</data>
 <line>
 #     •brk OK before 3063               •no brk before 301C •brk OK btw 2026   •no brk before FF01•
 <data>•\u3084•\u3063•\u3071•\u308A\u0020•\u0031\u301C\u0020•\u2026•\u2026\u0020•u30A2\uFF01\u0020•</data>
-
-####################################################################################
-#
-#  Test breaks for emoji clusters (same for all locales, mostly the same for all break types)
-#
-####################################################################################
-
-<locale root>
-
-<char>
-# woman zwj woman zwj girl zwj girl, woman/fitz-1-2 zwj woman/fitz-4 zwj boy/fitz-6
-<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•\U0001F469\U0001F3FB\u200D\U0001F469\U0001F3FD\u200D\U0001F466\U0001F3FF•</data>
-# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
-<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
-# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
-<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
-# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horse_racing/fitz-5
-<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
-# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5, space,
-<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE•\u0020•</data>
-# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
-<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8•\u0020•</data>
-# family (man, boy, boy), family (woman, girl), space
-<data>•\U0001F468\u200D\U0001F466\u200D\U0001F466•\U0001F469\u200D\U0001F467•\u0020•</data>
-# rainbow flag using evar, rainbow flag no evar, space
-<data>•\U0001F3F3\uFE0F\u200D\U0001F308•\U0001F3F3\u200D\U0001F308•\u0020•</data>
-# woman with ball using evar, woman with ball no evar, woman with ball fitz 4 using evar, woman with ball fitz 4 no evar, space
-<data>•\u26F9\uFE0F\u200D\u2640\uFE0F•\u26F9\u200D\u2640•\u26F9\U0001F3FD\u200D\u2640\uFE0F•\u26F9\U0001F3FD\u200D\u2640•\u0020•</data>
-# woman runner using evar, woman runner no evar, woman runner fitz 4 using evar, woman runner fitz 4 no evar, space
-<data>•\U0001F3C3\u200D\u2640\uFE0F•\U0001F3C3\u200D\u2640•\U0001F3C3\U0001F3FD\u200D\u2640\uFE0F•\U0001F3C3\U0001F3FD\u200D\u2640•\u0020•</data>
-# 9.0 + professions
-# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
-<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD•\u0020•</data>
-# facepalm, facepalm / fitz4, facepalm + woman +var, facepalm + woman -var, facepalm/fitz4 + woman +var, facepalm/fitz4 + woman -var
-<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640•\u0020•</data>
-# handball, handball / fitz4, handball + man +var, handball + man -var, handball/fitz4 + man +var, handball/fitz4 + man -var
-<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642•\u0020•</data>
-# man health worker +var, man health worker -var, man health worker / fitz4 +var, man health worker / fitz4 -var
-<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695•\u0020•</data>
-# woman astronaut, woman astronaut / fitz4
-<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680•\u0020•</data>
-# modifier bases added in emoji 4.0
-# SNOWBOARDER/fitz-3, HORSE RACING/fitz-4, GOLFER/fitz-5, MAN IN BUSINESS SUIT LEVITATING/fitz-6, SLEEPING ACCOMMODATION/fitz-12, space
-<data>•\U0001F3C2\U0001F3FC•\U0001F3C7\U0001F3FD•\U0001F3CC\U0001F3FE•\U0001F574\U0001F3FF•\U0001F6CC\U0001F3FB•\u0020•</data>
-# test kiss: man, man with variation selector
-<data>•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F468•\u0020•</data>
-
-# flags1    AE AF AL AM AO AR AT
-<data>•\U0001F1E6\U0001F1EA•\U0001F1E6\U0001F1EB•\U0001F1E6\U0001F1F1•\U0001F1E6\U0001F1F2•\U0001F1E6\U0001F1F4•\U0001F1E6\U0001F1F7•\U0001F1E6\U0001F1F9•</data>
-# flags2    AU AZ BA BD BE BF BG
-<data>•\U0001F1E6\U0001F1FA•\U0001F1E6\U0001F1FF•\U0001F1E7\U0001F1E6•\U0001F1E7\U0001F1E9•\U0001F1E7\U0001F1EA•\U0001F1E7\U0001F1EB•\U0001F1E7\U0001F1EC•</data>
-# flags3    BH BJ BN BO BR BS BT
-<data>•\U0001F1E7\U0001F1ED•\U0001F1E7\U0001F1EF•\U0001F1E7\U0001F1F3•\U0001F1E7\U0001F1F4•\U0001F1E7\U0001F1F7•\U0001F1E7\U0001F1F8•\U0001F1E7\U0001F1F9•</data>
-# flags4    BW BY BZ CA CD CF CG
-<data>•\U0001F1E7\U0001F1FC•\U0001F1E7\U0001F1FE•\U0001F1E7\U0001F1FF•\U0001F1E8\U0001F1E6•\U0001F1E8\U0001F1E9•\U0001F1E8\U0001F1EB•\U0001F1E8\U0001F1EC•</data>
-# flags5    CH CI CL CM CN CO CR
-<data>•\U0001F1E8\U0001F1ED•\U0001F1E8\U0001F1EE•\U0001F1E8\U0001F1F1•\U0001F1E8\U0001F1F2•\U0001F1E8\U0001F1F3•\U0001F1E8\U0001F1F4•\U0001F1E8\U0001F1F7•</data>
-# flags6    CU CV CY CZ DE DJ DK
-<data>•\U0001F1E8\U0001F1FA•\U0001F1E8\U0001F1FB•\U0001F1E8\U0001F1FE•\U0001F1E8\U0001F1FF•\U0001F1E9\U0001F1EA•\U0001F1E9\U0001F1EF•\U0001F1E9\U0001F1F0•</data>
-# flags7    DM DO DZ EC EE EG ER
-<data>•\U0001F1E9\U0001F1F2•\U0001F1E9\U0001F1F4•\U0001F1E9\U0001F1FF•\U0001F1EA\U0001F1E8•\U0001F1EA\U0001F1EA•\U0001F1EA\U0001F1EC•\U0001F1EA\U0001F1F7•</data>
-# flags8    ES ET FI FJ FR GA GB
-<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F9•\U0001F1EB\U0001F1EE•\U0001F1EB\U0001F1EF•\U0001F1EB\U0001F1F7•\U0001F1EC\U0001F1E6•\U0001F1EC\U0001F1E7•</data>
-# flags9    GE GH GM GN GR GT GW
-<data>•\U0001F1EC\U0001F1EA•\U0001F1EC\U0001F1ED•\U0001F1EC\U0001F1F2•\U0001F1EC\U0001F1F3•\U0001F1EC\U0001F1F7•\U0001F1EC\U0001F1F9•\U0001F1EC\U0001F1FC•</data>
-# flags10   GY HK HN HR HT HU ID
-<data>•\U0001F1EC\U0001F1FE•\U0001F1ED\U0001F1F0•\U0001F1ED\U0001F1F3•\U0001F1ED\U0001F1F7•\U0001F1ED\U0001F1F9•\U0001F1ED\U0001F1FA•\U0001F1EE\U0001F1E9•</data>
-# flags11   IE IL IN IQ IR IS IT
-<data>•\U0001F1EE\U0001F1EA•\U0001F1EE\U0001F1F1•\U0001F1EE\U0001F1F3•\U0001F1EE\U0001F1F6•\U0001F1EE\U0001F1F7•\U0001F1EE\U0001F1F8•\U0001F1EE\U0001F1F9•</data>
-# flags12   JM JO JP KE KG KH KR
-<data>•\U0001F1EF\U0001F1F2•\U0001F1EF\U0001F1F4•\U0001F1EF\U0001F1F5•\U0001F1F0\U0001F1EA•\U0001F1F0\U0001F1EC•\U0001F1F0\U0001F1ED•\U0001F1F0\U0001F1F7•</data>
-# flags13   MX MY NL NO PL PT
-<data>•\U0001F1F2\U0001F1FD•\U0001F1F2\U0001F1FE•\U0001F1F3\U0001F1F1•\U0001F1F3\U0001F1F4•\U0001F1F5\U0001F1F1•\U0001F1F5\U0001F1F9•</data>
-# flags14   RO RU SA SE SK TH TR
-<data>•\U0001F1F7\U0001F1F4•\U0001F1F7\U0001F1FA•\U0001F1F8\U0001F1E6•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1F0•\U0001F1F9\U0001F1ED•\U0001F1F9\U0001F1F7•</data>
-# flags15   UA US VN XK ZW
-<data>•\U0001F1FA\U0001F1E6•\U0001F1FA\U0001F1F8•\U0001F1FB\U0001F1F3•\U0001F1FD\U0001F1F0•\U0001F1FF\U0001F1FC•</data>
-# flagsX1   ES ES ES SE SE SE
-<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•</data>
-# flagsX2   GB GB GB BG BG BG
-<data>•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•</data>
-# flagsXtnd AE AF AL AM AO AR
-<data>•\U0001F1E6\U0001F1EA\u200C•\U0001F1E6\U0001F1EB\u200C•\U0001F1E6\U0001F1F1\u200C•\U0001F1E6\U0001F1F2\u0300•\U0001F1E6\U0001F1F4\u20DE•\U0001F1E6\U0001F1F7\u200C•</data>
-
-<word>
-# woman zwj woman zwj girl zwj girl, woman/fitz-1-2 zwj woman/fitz-4 zwj boy/fitz-6
-<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•\U0001F469\U0001F3FB\u200D\U0001F469\U0001F3FD\u200D\U0001F466\U0001F3FF•</data>
-# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
-<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
-# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
-<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
-# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horse_racing/fitz-5
-<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
-# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5, space,
-<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE•\u0020•</data>
-# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
-<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8•\u0020•</data>
-# family (man, boy, boy), family (woman, girl), space
-<data>•\U0001F468\u200D\U0001F466\u200D\U0001F466•\U0001F469\u200D\U0001F467•\u0020•</data>
-# rainbow flag using evar, rainbow flag no evar, space
-<data>•\U0001F3F3\uFE0F\u200D\U0001F308•\U0001F3F3\u200D\U0001F308•\u0020•</data>
-# woman with ball using evar, woman with ball no evar, woman with ball fitz 4 using evar, woman with ball fitz 4 no evar, space
-<data>•\u26F9\uFE0F\u200D\u2640\uFE0F•\u26F9\u200D\u2640•\u26F9\U0001F3FD\u200D\u2640\uFE0F•\u26F9\U0001F3FD\u200D\u2640•\u0020•</data>
-# woman runner using evar, woman runner no evar, woman runner fitz 4 using evar, woman runner fitz 4 no evar, space
-<data>•\U0001F3C3\u200D\u2640\uFE0F•\U0001F3C3\u200D\u2640•\U0001F3C3\U0001F3FD\u200D\u2640\uFE0F•\U0001F3C3\U0001F3FD\u200D\u2640•\u0020•</data>
-# 9.0 + professions
-# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
-<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD•\u0020•</data>
-# facepalm, facepalm / fitz4, facepalm + woman +evar, facepalm + woman -evar, facepalm/fitz4 + woman +evar, facepalm/fitz4 + woman -evar
-<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640•\u0020•</data>
-# handball, handball / fitz4, handball + man +evar, handball + man -evar, handball/fitz4 + man +evar, handball/fitz4 + man -evar
-<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642•\u0020•</data>
-# man health worker +evar, man health worker -evar, man health worker / fitz4 +evar, man health worker / fitz4 -evar
-<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695•\u0020•</data>
-# woman astronaut, woman astronaut / fitz4
-<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680•\u0020•</data>
-# modifier bases added in emoji 4.0
-# SNOWBOARDER/fitz-3, HORSE RACING/fitz-4, GOLFER/fitz-5, MAN IN BUSINESS SUIT LEVITATING/fitz-6, SLEEPING ACCOMMODATION/fitz-12, space
-<data>•\U0001F3C2\U0001F3FC•\U0001F3C7\U0001F3FD•\U0001F3CC\U0001F3FE•\U0001F574\U0001F3FF•\U0001F6CC\U0001F3FB•\u0020•</data>
-
-# flags1    AE AF AL AM AO AR AT
-<data>•\U0001F1E6\U0001F1EA•\U0001F1E6\U0001F1EB•\U0001F1E6\U0001F1F1•\U0001F1E6\U0001F1F2•\U0001F1E6\U0001F1F4•\U0001F1E6\U0001F1F7•\U0001F1E6\U0001F1F9•</data>
-# flags2    AU AZ BA BD BE BF BG
-<data>•\U0001F1E6\U0001F1FA•\U0001F1E6\U0001F1FF•\U0001F1E7\U0001F1E6•\U0001F1E7\U0001F1E9•\U0001F1E7\U0001F1EA•\U0001F1E7\U0001F1EB•\U0001F1E7\U0001F1EC•</data>
-# flags3    BH BJ BN BO BR BS BT
-<data>•\U0001F1E7\U0001F1ED•\U0001F1E7\U0001F1EF•\U0001F1E7\U0001F1F3•\U0001F1E7\U0001F1F4•\U0001F1E7\U0001F1F7•\U0001F1E7\U0001F1F8•\U0001F1E7\U0001F1F9•</data>
-# flags4    BW BY BZ CA CD CF CG
-<data>•\U0001F1E7\U0001F1FC•\U0001F1E7\U0001F1FE•\U0001F1E7\U0001F1FF•\U0001F1E8\U0001F1E6•\U0001F1E8\U0001F1E9•\U0001F1E8\U0001F1EB•\U0001F1E8\U0001F1EC•</data>
-# flags5    CH CI CL CM CN CO CR
-<data>•\U0001F1E8\U0001F1ED•\U0001F1E8\U0001F1EE•\U0001F1E8\U0001F1F1•\U0001F1E8\U0001F1F2•\U0001F1E8\U0001F1F3•\U0001F1E8\U0001F1F4•\U0001F1E8\U0001F1F7•</data>
-# flags6    CU CV CY CZ DE DJ DK
-<data>•\U0001F1E8\U0001F1FA•\U0001F1E8\U0001F1FB•\U0001F1E8\U0001F1FE•\U0001F1E8\U0001F1FF•\U0001F1E9\U0001F1EA•\U0001F1E9\U0001F1EF•\U0001F1E9\U0001F1F0•</data>
-# flags7    DM DO DZ EC EE EG ER
-<data>•\U0001F1E9\U0001F1F2•\U0001F1E9\U0001F1F4•\U0001F1E9\U0001F1FF•\U0001F1EA\U0001F1E8•\U0001F1EA\U0001F1EA•\U0001F1EA\U0001F1EC•\U0001F1EA\U0001F1F7•</data>
-# flags8    ES ET FI FJ FR GA GB
-<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F9•\U0001F1EB\U0001F1EE•\U0001F1EB\U0001F1EF•\U0001F1EB\U0001F1F7•\U0001F1EC\U0001F1E6•\U0001F1EC\U0001F1E7•</data>
-# flags9    GE GH GM GN GR GT GW
-<data>•\U0001F1EC\U0001F1EA•\U0001F1EC\U0001F1ED•\U0001F1EC\U0001F1F2•\U0001F1EC\U0001F1F3•\U0001F1EC\U0001F1F7•\U0001F1EC\U0001F1F9•\U0001F1EC\U0001F1FC•</data>
-# flags10   GY HK HN HR HT HU ID
-<data>•\U0001F1EC\U0001F1FE•\U0001F1ED\U0001F1F0•\U0001F1ED\U0001F1F3•\U0001F1ED\U0001F1F7•\U0001F1ED\U0001F1F9•\U0001F1ED\U0001F1FA•\U0001F1EE\U0001F1E9•</data>
-# flags11   IE IL IN IQ IR IS IT
-<data>•\U0001F1EE\U0001F1EA•\U0001F1EE\U0001F1F1•\U0001F1EE\U0001F1F3•\U0001F1EE\U0001F1F6•\U0001F1EE\U0001F1F7•\U0001F1EE\U0001F1F8•\U0001F1EE\U0001F1F9•</data>
-# flags12   JM JO JP KE KG KH KR
-<data>•\U0001F1EF\U0001F1F2•\U0001F1EF\U0001F1F4•\U0001F1EF\U0001F1F5•\U0001F1F0\U0001F1EA•\U0001F1F0\U0001F1EC•\U0001F1F0\U0001F1ED•\U0001F1F0\U0001F1F7•</data>
-# flags13   MX MY NL NO PL PT
-<data>•\U0001F1F2\U0001F1FD•\U0001F1F2\U0001F1FE•\U0001F1F3\U0001F1F1•\U0001F1F3\U0001F1F4•\U0001F1F5\U0001F1F1•\U0001F1F5\U0001F1F9•</data>
-# flags14   RO RU SA SE SK TH TR
-<data>•\U0001F1F7\U0001F1F4•\U0001F1F7\U0001F1FA•\U0001F1F8\U0001F1E6•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1F0•\U0001F1F9\U0001F1ED•\U0001F1F9\U0001F1F7•</data>
-# flags15   UA US VN XK ZW
-<data>•\U0001F1FA\U0001F1E6•\U0001F1FA\U0001F1F8•\U0001F1FB\U0001F1F3•\U0001F1FD\U0001F1F0•\U0001F1FF\U0001F1FC•</data>
-# flagsX1   ES ES ES SE SE SE
-<data>•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1EA\U0001F1F8•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•\U0001F1F8\U0001F1EA•</data>
-# flagsX2   GB GB GB BG BG BG
-<data>•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1EC\U0001F1E7•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•\U0001F1E7\U0001F1EC•</data>
-# flagsXtnd AE AF AL AM AO AR
-<data>•\U0001F1E6\U0001F1EA\u200C•\U0001F1E6\U0001F1EB\u200C•\U0001F1E6\U0001F1F1\u200C•\U0001F1E6\U0001F1F2\u0300•\U0001F1E6\U0001F1F4\u20DE•\U0001F1E6\U0001F1F7\u200C•</data>
-
-<line>
-# woman zwj woman zwj girl zwj girl
-<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•</data>
-# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
-<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
-# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
-<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
-# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horse_racing/fitz-5
-<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
-# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5 space,
-<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE\u0020•</data>
-# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
-<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8\u0020•</data>
-# family (man, boy, boy), family (woman, girl), space
-<data>•\U0001F468\u200D\U0001F466\u200D\U0001F466•\U0001F469\u200D\U0001F467\u0020•</data>
-# rainbow flag using evar, rainbow flag no evar, space
-<data>•\U0001F3F3\uFE0F\u200D\U0001F308•\U0001F3F3\u200D\U0001F308\u0020•</data>
-# woman with ball using evar, woman with ball no evar, woman with ball fitz 4 using evar, woman with ball fitz 4 no evar, space
-<data>•\u26F9\uFE0F\u200D\u2640\uFE0F•\u26F9\u200D\u2640•\u26F9\U0001F3FD\u200D\u2640\uFE0F•\u26F9\U0001F3FD\u200D\u2640\u0020•</data>
-# woman runner using evar, woman runner no evar, woman runner fitz 4 using evar, woman runner fitz 4 no evar, space
-<data>•\U0001F3C3\u200D\u2640\uFE0F•\U0001F3C3\u200D\u2640•\U0001F3C3\U0001F3FD\u200D\u2640\uFE0F•\U0001F3C3\U0001F3FD\u200D\u2640\u0020•</data>
-# 9.0 + professions
-# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
-<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD\u0020•</data>
-# facepalm, facepalm / fitz4, facepalm + woman +evar, facepalm + woman -evar, facepalm/fitz4 + woman +evar, facepalm/fitz4 + woman -evar
-<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640\u0020•</data>
-# handball, handball / fitz4, handball + man +evar, handball + man -evar, handball/fitz4 + man +evar, handball/fitz4 + man -evar
-<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642\u0020•</data>
-# man health worker +evar, man health worker -evar, man health worker / fitz4 +evar, man health worker / fitz4 -evar
-<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695\u0020•</data>
-# woman astronaut, woman astronaut / fitz4
-<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680\u0020•</data>
-# modifier bases added in emoji 4.0
-# SNOWBOARDER/fitz-3, HORSE RACING/fitz-4, GOLFER/fitz-5, MAN IN BUSINESS SUIT LEVITATING/fitz-6, SLEEPING ACCOMMODATION/fitz-12 space
-<data>•\U0001F3C2\U0001F3FC•\U0001F3C7\U0001F3FD•\U0001F3CC\U0001F3FE•\U0001F574\U0001F3FF•\U0001F6CC\U0001F3FB\u0020•</data>
-
-<locale ja@lb=loose>
-<line>
-# woman zwj woman zwj girl zwj girl
-<data>•\U0001F469\u200D\U0001F469\u200D\U0001F467\u200D\U0001F467•</data>
-# woman zwj baby/fitz-3, older_woman/fitz-5, runner/fitz-4, raised_fist/fitz-3, fuel_pump, fitz-3
-<data>•\U0001F469\u200D\U0001F476\U0001F3FC•\U0001F475\U0001F3FE•\U0001F3C3\U0001F3FD•\u270A\U0001F3FC•\u26FD•\U0001F3FC•</data>
-# man zwj hvy_blk_heart zwj man, woman, man zwj hvy_blk_heart/evar zwj man, woman
-<data>•\U0001F468\u200D\u2764\u200D\U0001F468•\U0001F469•\U0001F468\u200D\u2764\uFE0F\u200D\U0001F468•\U0001F469•</data>
-# woman zwj hvy_blk_heart/evar zwj kiss_mark zwj woman, sleuth/fitz-4, horseRacing/fitz-5
-<data>•\U0001F469\u200D\u2764\uFE0F\u200D\U0001F48B\u200D\U0001F469•\U0001F575\U0001F3FD•\U0001F3C7\U0001F3FE•</data>
-# victory_hand/evar, victory_hand/evar/fitz-1-2, victory_hand/fitz-1-2, rowboat/fitz-4, vulcan_salute/fitz-5 space,
-<data>•\u270C\uFE0F•\u270C\uFE0F\U0001F3FB•\u270C\U0001F3FB•\U0001F6A3\U0001F3FD•\U0001F596\U0001F3FE\u0020•</data>
-# writing_hand fitz-1-2, splayed_hand/fitz-3, middle_finger/fitz-4, sign_of_horns/fitz-5, eye zwj left_speech_bubble, space
-<data>•\u270D\U0001F3FB•\U0001F590\U0001F3FC•\U0001F595\U0001F3FD•\U0001F918\U0001F3FE•\U0001F441\u200D\U0001F5E8\u0020•</data>
-# 9.0 + professions
-# black heart, fitz 4, squid, fitz4, man dancing /fitz4, mother xmas /fitz4
-<data>•\U0001F5A4•\U0001F3FD•\U0001F991•\U0001F3FD•\U0001F57A\U0001F3FD•\U0001F936\U0001F3FD\u0020•</data>
-# facepalm, facepalm / fitz4, facepalm + woman +evar, facepalm + woman -evar, facepalm/fitz4 + woman +evar, facepalm/fitz4 + woman -evar
-<data>•\U0001F926•\U0001F926\U0001F3FD•\U0001F926\u200D\u2640\uFE0F•\U0001F926\u200D\u2640•\U0001F926\U0001F3FD\u200D\u2640\uFE0F•\U0001F926\U0001F3FD\u200D\u2640\u0020•</data>
-# handball, handball / fitz4, handball + man +evar, handball + man -evar, handball/fitz4 + man +evar, handball/fitz4 + man -evar
-<data>•\U0001F93E•\U0001F93E\U0001F3FD•\U0001F93E\u200D\u2642\uFE0F•\U0001F93E\u200D\u2642•\U0001F93E\U0001F3FD\u200D\u2642\uFE0F•\U0001F93E\U0001F3FD\u200D\u2642\u0020•</data>
-# man health worker +evar, man health worker -evar, man health worker / fitz4 +evar, man health worker / fitz4 -evar
-<data>•\U0001F468\u200D\u2695\uFE0F•\U0001F468\u200D\u2695•\U0001F468\U0001F3FD\u200D\u2695\uFE0F•\U0001F468\U0001F3FD\u200D\u2695\u0020•</data>
-# woman astronaut, woman astronaut / fitz4
-<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680\u0020•</data>
index 6873f48..276fad8 100644 (file)
 "(?<!aą)spam"                   "**bą<0>spam</0>**"
 "(?<!ąabc)spam"                 "**ąabx<0>spam</0>**"
 
-# Bug #12930
-#
-#   Minimum Match Length computation, int32_t overflow on an empty set in the pattern.
-#   The empty set, with no match possible, has a min match length of INT32_MAX.
-#   Was incremented subsequently. Caused assertion failure on pattern compile.
-
-"[^\u0000-\U0010ffff]bc?"       "bc no match"
-"[^\u0000-\U0010ffff]?bc?"      "<0>bc</0> has a match"
-
-
 #  Random debugging, Temporary
 #
 
index 32f88d2..3a1a046 100644 (file)
@@ -13,8 +13,8 @@
 root
 {
     Version { 44.0 }
-    ExpectCLDRVersionAtLeast { 31.0 } // 'base' cldr version. Allow up to version =.=.* of this
-    CurrentCLDRVersion { 31.0 } // Current CLDR version as of the test update. Warn if not an exact match.
+    ExpectCLDRVersionAtLeast { 30.0 } // 'base' cldr version. Allow up to version =.=.* of this
+    CurrentCLDRVersion { 30.0.1 } // Current CLDR version as of the test update. Warn if not an exact match.
 
     ShortLanguage { xxx }
 
index 1aa51ba..f0de36c 100644 (file)
@@ -4250,15 +4250,6 @@ structLocale:table(nofallback){
                 }
             }
         }
-        dayOfYear{
-            dn{""}
-        }
-        dayOfYear-short{
-            dn{""}
-        }
-        dayOfYear-narrow{
-            dn{""}
-        }
         dayperiod{
             dn{""}
             dn%variant{""}
@@ -4268,14 +4259,6 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
-        dayperiod-short{
-            dn{""}
-            dn%variant{""}
-        }
-        dayperiod-narrow{
-            dn{""}
-            dn%variant{""}
-        }
         era{
             dn{""}
             relative{
@@ -4284,12 +4267,6 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
-        era-short{
-            dn{""}
-        }
-        era-narrow{
-            dn{""}
-        }
         fri{
             relative{
                 "-1"{""}
@@ -5286,15 +5263,6 @@ structLocale:table(nofallback){
                 }
             }
         }
-        weekOfMonth{
-            dn{""}
-        }
-        weekOfMonth-short{
-            dn{""}
-        }
-        weekOfMonth-narrow{
-            dn{""}
-        }
         weekday{
             dn{""}
             relative{
@@ -5303,21 +5271,6 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
-        weekday-short{
-            dn{""}
-        }
-        weekday-narrow{
-            dn{""}
-        }
-        weekdayOfMonth{
-            dn{""}
-        }
-        weekdayOfMonth-short{
-            dn{""}
-        }
-        weekdayOfMonth-narrow{
-            dn{""}
-        }
         year{
             dn{""}                    
             relative{
@@ -5407,12 +5360,6 @@ structLocale:table(nofallback){
                 "1"{""}
             }
         }
-        zone-short{
-            dn{""}
-        }
-        zone-narrow{
-            dn{""}
-        }
     }
     CurrencyUnitPatterns{
         zero{""}
@@ -5462,7 +5409,6 @@ structLocale:table(nofallback){
         aro{""}
         arp{""}
         arq{""}
-        ars{""}
         arw{""}
         ary{""}
         arz{""}
@@ -13249,24 +13195,6 @@ structLocale:table(nofallback){
                 timeSeparator{""}
             }
         }
-        minimalPairs{
-            ordinal{
-                zero{""}
-                one{""}
-                two{""}
-                few{""}
-                many{""}
-                other{""}
-            }
-            plural{
-                zero{""}
-                one{""}
-                two{""}
-                few{""}
-                many{""}
-                other{""}
-            }
-        }
         mlym{
             miscPatterns{
                 atLeast{""}
index 87ad62a..13121fa 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index d05ef97..6546c99 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index c3f81d6..1cbef00 100644 (file)
@@ -19,10 +19,6 @@ SUBDIRS = toolutil ctestfw makeconv genrb genbrk \
 gencnval gensprep icuinfo genccode gencmn icupkg pkgdata \
 gentest gennorm2 gencfu gendict
 
-ifneq (@platform_make_fragment_name@,mh-cygwin-msvc)
-SUBDIRS += escapesrc
-endif
-
 ## List of phony targets
 .PHONY : all all-local all-recursive install install-local     \
 install-recursive clean clean-local clean-recursive distclean          \
index 6b0ee96..7d2a447 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ********************************************************************************
index 7ca7bd0..3ffa3e3 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib\icutest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <WholeProgramOptimization>true</WholeProgramOptimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/icutest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin\icutest59.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\..\..\..\lib\icutest.pdb</ProgramDatabaseFile>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>.\..\..\..\lib\icutest.lib</ImportLibrary>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib\icutestd.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/icutest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin\icutest59d.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\..\..\..\lib\icutestd.pdb</ProgramDatabaseFile>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>.\..\..\..\lib\icutestd.lib</ImportLibrary>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib64\icutest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <WholeProgramOptimization>true</WholeProgramOptimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/icutest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin64\icutest59.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\..\..\..\lib64\icutest.pdb</ProgramDatabaseFile>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
-      <ImportLibrary>.\..\..\..\lib64\icutest.lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib64\icutestd.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/icutest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin64\icutest59d.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\..\..\..\lib64\icutestd.pdb</ProgramDatabaseFile>
-      <ImportLibrary>.\..\..\..\lib64\icutestd.lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="ctest.c" />
-    <ClCompile Include="datamap.cpp" />
-    <ClCompile Include="testdata.cpp">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-    </ClCompile>
-    <ClCompile Include="tstdtmod.cpp">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-    </ClCompile>
-    <ClCompile Include="ucln_ct.c">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-    </ClCompile>
-    <ClCompile Include="uperf.cpp">
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="unicode\ctest.h" />
-    <ClInclude Include="unicode\datamap.h" />
-    <ClInclude Include="unicode\testdata.h" />
-    <ClInclude Include="unicode\testlog.h" />
-    <ClInclude Include="unicode\testtype.h" />
-    <ClInclude Include="unicode\tstdtmod.h" />
-    <ClInclude Include="unicode\uperf.h" />
-    <ClInclude Include="unicode\utimer.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib\icutest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <WholeProgramOptimization>true</WholeProgramOptimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/icutest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin\icutest58.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\..\..\..\lib\icutest.pdb</ProgramDatabaseFile>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>.\..\..\..\lib\icutest.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib\icutestd.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/icutest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin\icutest58d.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\..\..\..\lib\icutestd.pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>.\..\..\..\lib\icutestd.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib64\icutest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <WholeProgramOptimization>true</WholeProgramOptimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/icutest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin64\icutest58.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\..\..\..\lib64\icutest.pdb</ProgramDatabaseFile>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
+      <ImportLibrary>.\..\..\..\lib64\icutest.lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib64\icutestd.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/icutest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin64\icutest58d.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\..\..\..\lib64\icutestd.pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>.\..\..\..\lib64\icutestd.lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="ctest.c" />\r
+    <ClCompile Include="datamap.cpp" />\r
+    <ClCompile Include="testdata.cpp">\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+    </ClCompile>\r
+    <ClCompile Include="tstdtmod.cpp">\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+    </ClCompile>\r
+    <ClCompile Include="ucln_ct.c">\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+    </ClCompile>\r
+    <ClCompile Include="uperf.cpp">\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="unicode\ctest.h" />\r
+    <ClInclude Include="unicode\datamap.h" />\r
+    <ClInclude Include="unicode\testdata.h" />\r
+    <ClInclude Include="unicode\testlog.h" />\r
+    <ClInclude Include="unicode\testtype.h" />\r
+    <ClInclude Include="unicode\tstdtmod.h" />\r
+    <ClInclude Include="unicode\uperf.h" />\r
+    <ClInclude Include="unicode\utimer.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 96241a0..0bdee5a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
@@ -10,7 +10,6 @@
 
 #include "unicode/datamap.h"
 #include "unicode/resbund.h"
-#include "unicode/unistr.h"
 #include "hash.h"
 #include <stdlib.h>
 
@@ -21,7 +20,7 @@ int32_t
 DataMap::utoi(const UnicodeString &s) const
 {
   char ch[256];
-  const UChar *u = toUCharPtr(s.getBuffer());
+  const UChar *u = s.getBuffer();
   int32_t len = s.length();
   u_UCharsToChars(u, ch, len);
   ch[len] = 0; /* include terminating \0 */
index 3ccf009..83d949d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index bb1008d..be8d318 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index a4d1ce8..6ed1d7e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index c950bad..f3549a5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index 56e9076..ccc9948 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index cbee692..40536a4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 811f62f..f9582d0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index 7849a6d..00c20a0 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *****************************************************************************************
index 6cdce88..4a1628d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT: 
index d1e0d6e..ba128ad 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 51b7f26..899feea 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
@@ -12,7 +12,7 @@
 
 #include "unicode/utypes.h"
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 #   define VC_EXTRALEAN
 #   define WIN32_LEAN_AND_MEAN
 #   include <windows.h>
@@ -162,7 +162,7 @@ typedef struct UTimer UTimer;
 typedef void FuntionToBeTimed(void* param);
 
 
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
 
     struct UTimer{
         LARGE_INTEGER start;
index 0735f8a..1022353 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
index 0a4ec3c..294f671 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index f5f06d7..fa47d55 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C2BE5000-7501-4E87-9724-B8D82494FAE6}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{C2BE5000-7501-4E87-9724-B8D82494FAE6}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/genbrk.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/genbrk.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/genbrk.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/genbrk.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/genbrk.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/genbrk.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/genbrk.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/genbrk.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/genbrk.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/genbrk.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/genbrk.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/genbrk.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/genbrk.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/genbrk.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/genbrk.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/genbrk.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/genbrk.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/genbrk.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/genbrk.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/genbrk.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/genbrk.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/genbrk.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/genbrk.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/genbrk.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/genbrk.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/genbrk.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/genbrk.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/genbrk.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="genbrk.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/genbrk.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/genbrk.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/genbrk.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/genbrk.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="genbrk.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index d35b589..2534820 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  *******************************************************************************
  *   file name:  gennames.c
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
index b6d00a3..d9b4196 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/genccode.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/genccode.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/genccode.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/genccode.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/genccode.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/genccode.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/genccode.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/genccode.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/genccode.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/genccode.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/genccode.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/genccode.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/genccode.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/genccode.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/genccode.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/genccode.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/genccode.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/genccode.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/genccode.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/genccode.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/genccode.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/genccode.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/genccode.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/genccode.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/genccode.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/genccode.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/genccode.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/genccode.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="genccode.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/genccode.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/genccode.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/genccode.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/genccode.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="genccode.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c4098c8..f1175a7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index 223ace1..9bb9f1d 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
-      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <Link>
-      <OutputFile>.\x86\Debug\gencfu.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
-      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <MinimalRebuild>false</MinimalRebuild>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <Link>
-      <OutputFile>.\x86\Release\gencfu.exe</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
-      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gencfu.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gencfu.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/gencfu.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gencfu.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
-      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gencfu.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gencfu.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/gencfu.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gencfu.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="gencfu.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}</ProjectGuid>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
+      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>false</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug\gencfu.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
+      <Command>copy "$(TargetPath)" ..\..\..\bin</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <MinimalRebuild>false</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release\gencfu.exe</OutputFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
+      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gencfu.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gencfu.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/gencfu.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gencfu.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
+      <Command>copy "$(TargetPath)" ..\..\..\bin64%3b</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gencfu.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gencfu.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/gencfu.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gencfu.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="gencfu.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 77f0c20..d328a30 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gencmn.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e3d13d9..43096fe 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/gencmn.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/gencmn.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/gencmn.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/gencmn.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/gencmn.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/gencmn.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/gencmn.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/gencmn.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/gencmn.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gencmn.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/gencmn.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/gencmn.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/gencmn.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gencmn.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/gencmn.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/gencmn.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gencmn.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gencmn.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/gencmn.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gencmn.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gencmn.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gencmn.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/gencmn.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gencmn.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gencmn.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gencmn.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/gencmn.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gencmn.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="gencmn.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gencmn.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gencmn.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/gencmn.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gencmn.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="gencmn.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 8d2a04c..ad5b3d2 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gencnval.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 09647f9..9114002 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/gencnval.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/gencnval.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/gencnval.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/gencnval.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/gencnval.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/gencnval.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/gencnval.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/gencnval.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/gencnval.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gencnval.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/gencnval.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/gencnval.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/gencnval.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gencnval.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/gencnval.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/gencnval.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gencnval.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gencnval.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/gencnval.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gencnval.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gencnval.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gencnval.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/gencnval.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gencnval.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gencnval.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gencnval.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/gencnval.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gencnval.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="gencnval.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gencnval.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gencnval.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/gencnval.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gencnval.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="gencnval.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c5302e0..ef5b8de 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  * Copyright (c) 1999-2016, International Business Machines Corporation and
index d043532..0dc3119 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**
  * Copyright (c) 1999-2012, International Business Machines Corporation and
index 73b9fec..75c0bdd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
@@ -22,7 +22,6 @@
 #include "unicode/ucharstrie.h"
 #include "unicode/bytestrie.h"
 #include "unicode/ucnv.h"
-#include "unicode/ustring.h"
 #include "unicode/utf16.h"
 
 #include "charstr.h"
index 76ed333..373f02f 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{9D4211F7-2C77-439C-82F0-30A4E43BA569}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{9D4211F7-2C77-439C-82F0-30A4E43BA569}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/gendict.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/gendict.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/gendict.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/gendict.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/gendict.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/gendict.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/gendict.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/gendict.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/gendict.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gendict.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/gendict.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/gendict.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/gendict.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gendict.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/gendict.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/gendict.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gendict.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gendict.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/gendict.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gendict.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gendict.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gendict.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/gendict.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gendict.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gendict.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gendict.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/gendict.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gendict.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="gendict.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gendict.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gendict.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/gendict.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gendict.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="gendict.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 729a3d0..2280763 100644 (file)
@@ -24,7 +24,7 @@ CLEANFILES = *~ $(DEPS)
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
 OBJECTS = gennorm2.o n2builder.o
index 477bfd6..9c85e0b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gennorm2.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5d264bb..99625eb 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C7891A65-80AB-4245-912E-5F1E17B0E6C4}</ProjectGuid>
-    <RootNamespace>gennorm2</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{C7891A65-80AB-4245-912E-5F1E17B0E6C4}</ProjectGuid>\r
+    <RootNamespace>gennorm2</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release\gennorm2.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release\</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release\</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release\gennorm2.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release\gennorm2.pdb</ProgramDatabaseFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>false</DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release\gennorm2.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release\</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release\</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release\</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release\gennorm2.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release\gennorm2.pdb</ProgramDatabaseFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>false</DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug\</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug\</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug\</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug\gennorm2.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug\gennorm2.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>false</DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug\</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug\</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug\</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug\gennorm2.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug\gennorm2.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>false</DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release\gennorm2.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release\</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release\</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release\gennorm2.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release\gennorm2.pdb</ProgramDatabaseFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>false</DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release\gennorm2.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release\</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release\</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release\</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release\gennorm2.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release\gennorm2.pdb</ProgramDatabaseFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>false</DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug\</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug\</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug\</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug\gennorm2.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug\gennorm2.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>false</DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="gennorm2.cpp" />
-    <ClCompile Include="n2builder.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="n2builder.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug\gennorm2.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug\</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug\</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug\</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug\gennorm2.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug\gennorm2.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>false</DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="gennorm2.cpp" />\r
+    <ClCompile Include="n2builder.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="n2builder.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 66ccd70..54ad860 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  n2builder.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -25,7 +25,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#if U_HAVE_STD_STRING
 #include <vector>
+#endif
 #include "unicode/errorcode.h"
 #include "unicode/localpointer.h"
 #include "unicode/putil.h"
@@ -280,7 +282,7 @@ uint8_t Normalizer2DataBuilder::getCC(UChar32 c) const {
 
 static UBool isWellFormed(const UnicodeString &s) {
     UErrorCode errorCode=U_ZERO_ERROR;
-    u_strToUTF8(NULL, 0, NULL, toUCharPtr(s.getBuffer()), s.length(), &errorCode);
+    u_strToUTF8(NULL, 0, NULL, s.getBuffer(), s.length(), &errorCode);
     return U_SUCCESS(errorCode) || errorCode==U_BUFFER_OVERFLOW_ERROR;
 }
 
@@ -313,7 +315,7 @@ void Normalizer2DataBuilder::setRoundTripMapping(UChar32 c, const UnicodeString
                 (int)phase, (long)c);
         exit(U_INVALID_FORMAT_ERROR);
     }
-    int32_t numCP=u_countChar32(toUCharPtr(m.getBuffer()), m.length());
+    int32_t numCP=u_countChar32(m.getBuffer(), m.length());
     if(numCP!=2) {
         fprintf(stderr,
                 "error in gennorm2 phase %d: "
@@ -450,7 +452,7 @@ Normalizer2DataBuilder::decompose(UChar32 start, UChar32 end, uint32_t value) {
         Norm &norm=norms[value];
         const UnicodeString &m=*norm.mapping;
         UnicodeString *decomposed=NULL;
-        const UChar *s=toUCharPtr(m.getBuffer());
+        const UChar *s=m.getBuffer();
         int32_t length=m.length();
         int32_t prev, i=0;
         UChar32 c;
@@ -605,7 +607,7 @@ Normalizer2DataBuilder::reorder(Norm *p, BuilderReorderingBuffer &buffer) {
     if(length>Normalizer2Impl::MAPPING_LENGTH_MASK) {
         return;  // writeMapping() will complain about it and print the code point.
     }
-    const UChar *s=toUCharPtr(m.getBuffer());
+    const UChar *s=m.getBuffer();
     int32_t i=0;
     UChar32 c;
     while(i<length) {
@@ -1207,7 +1209,7 @@ void Normalizer2DataBuilder::writeBinaryFile(const char *filename) {
     }
     udata_writeBlock(pData, indexes, sizeof(indexes));
     udata_writeBlock(pData, norm16TrieBytes.getAlias(), norm16TrieLength);
-    udata_writeUString(pData, toUCharPtr(extraData.getBuffer()), extraData.length());
+    udata_writeUString(pData, extraData.getBuffer(), extraData.length());
     udata_writeBlock(pData, smallFCD, sizeof(smallFCD));
     int32_t writtenSize=udata_finish(pData, errorCode);
     if(errorCode.isFailure()) {
index c231a3d..6f8b8af 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  n2builder.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7e2360b..63cd52b 100644 (file)
@@ -33,7 +33,7 @@ TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 # derb depends on icuio
 @ICUIO_TRUE@DERB = $(BINDIR)/$(DERB_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil -I$(top_srcdir)/io
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil -I$(top_srcdir)/io
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
index ac26d95..22e275e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  derb.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 73180d0..2777eec 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D3065ADB-8820-4CC7-9B6C-9510833961A3}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{D3065ADB-8820-4CC7-9B6C-9510833961A3}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release_derb\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug_derb\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release_derb\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug_derb\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\x86\Release_derb/derb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release_derb/derb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release_derb/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release_derb/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release_derb/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release_derb/derb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release_derb/derb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\x86\Release_derb/derb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release_derb/derb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release_derb/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release_derb/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release_derb/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release_derb/derb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release_derb/derb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\x86\Debug_derb/derb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug_derb/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug_derb/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug_derb/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug_derb/derb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug_derb/derb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\x86\Debug_derb/derb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug_derb/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug_derb/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug_derb/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug_derb/derb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug_derb/derb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release_derb/derb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release_derb/derb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release_derb/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release_derb/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release_derb/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release_derb/derb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release_derb/derb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release_derb/derb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release_derb/derb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release_derb/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release_derb/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release_derb/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release_derb/derb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release_derb/derb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug_derb/derb.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug_derb/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug_derb/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug_derb/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug_derb/derb.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug_derb/derb.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="derb.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\io\io.vcxproj">
-      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>
-      <Private>true</Private>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug_derb/derb.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug_derb/derb.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug_derb/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug_derb/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug_derb/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug_derb/derb.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug_derb/derb.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="derb.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\io\io.vcxproj">\r
+      <Project>{c2b04507-2521-4801-bf0d-5fd79d6d518c}</Project>\r
+      <Private>true</Private>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 603f26a..7340f01 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e01b955..5026ecf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 68870bd..685fb58 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 019020a..99c604f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 7ac4512..d795450 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 18f994d..81a3bf5 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index dfe3b8d..d7341be 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5e44547..03cad7f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
index 43195d2..7ceaa6c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 1983a2f..d3882c4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9a12c50..d2a3035 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 9135da2..468c27e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index e5b8d15..74b8c82 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2e04bbc..9420184 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -271,7 +271,7 @@ StringBaseResource::StringBaseResource(SRBRoot *bundle, const char *tag, int8_t
         return;
     }
 
-    fString.setTo(ConstChar16Ptr(value), len);
+    fString.setTo(value, len);
     fString.getTerminatedBuffer();  // Some code relies on NUL-termination.
     if (U_SUCCESS(errorCode) && fString.isBogus()) {
         errorCode = U_MEMORY_ALLOCATION_ERROR;
@@ -1031,7 +1031,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
             if (f16BitUnits.length() <= 1) {
                 // no pool strings to checksum
             } else if (U_IS_BIG_ENDIAN) {
-                checksum = computeCRC(reinterpret_cast<const char *>(f16BitUnits.getBuffer()),
+                checksum = computeCRC((const char *)f16BitUnits.getBuffer(),
                                       (uint32_t)f16BitUnits.length() * 2, checksum);
             } else {
                 // Swap to big-endian so we get the same checksum on all platforms
@@ -1039,7 +1039,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
                 UnicodeString s(f16BitUnits);
                 s.append((UChar)1);  // Ensure that we own this buffer.
                 assert(!s.isBogus());
-                uint16_t *p = const_cast<uint16_t *>(reinterpret_cast<const uint16_t *>(s.getBuffer()));
+                uint16_t *p = (uint16_t *)s.getBuffer();
                 for (int32_t count = f16BitUnits.length(); count > 0; --count) {
                     uint16_t x = *p;
                     *p++ = (uint16_t)((x << 8) | (x >> 8));
index ee1ecf3..de6faf6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -304,7 +304,7 @@ public:
     StringBaseResource(int8_t type, const UChar *value, int32_t len, UErrorCode &errorCode);
     virtual ~StringBaseResource();
 
-    const UChar *getBuffer() const { return icu::toUCharPtr(fString.getBuffer()); }
+    const UChar *getBuffer() const { return fString.getBuffer(); }
     int32_t length() const { return fString.length(); }
 
     virtual void handlePreWrite(uint32_t *byteOffset);
index 91be063..33e42d6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2684bbe..682ee7a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 15f76a8..07e9b15 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 91483d1..c27a781 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 02bcb62..d5cc942 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 2bfcfeb..62fdd24 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -73,7 +73,7 @@ static int32_t write_utf8_file(FileStream* fileStream, UnicodeString outString)
     u_strToUTF8(NULL,
                 0,
                 &len,
-                toUCharPtr(outString.getBuffer()),
+                outString.getBuffer(),
                 outString.length(),
                 &status);
 
@@ -85,7 +85,7 @@ static int32_t write_utf8_file(FileStream* fileStream, UnicodeString outString)
     u_strToUTF8(dest,
                 len,
                 &len,
-                toUCharPtr(outString.getBuffer()),
+                outString.getBuffer(),
                 outString.length(),
                 &status);
 
index faf0047..592a641 100755 (executable)
@@ -8,7 +8,7 @@
 #*******************************************************************************
 #*
 #*   file name:  genren.pl
-#*   encoding:   UTF-8
+#*   encoding:   US-ASCII
 #*   tab size:   8 (not used)
 #*   indentation:4
 #*
@@ -80,7 +80,7 @@ print HEADER <<"EndOfHeaderComment";
 *******************************************************************************
 *
 *   file name:  $headername
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a835323..258bad4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gensprep.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index a2e5e61..487ef6c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gensprep.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index ccfadd2..e2260a5 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{631C23CE-6C1D-4875-88F0-85E0A42B36EA}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{631C23CE-6C1D-4875-88F0-85E0A42B36EA}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/gensprep.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/gensprep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/gensprep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/gensprep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/gensprep.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/gensprep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/gensprep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/gensprep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/gensprep.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gensprep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/gensprep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/gensprep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/gensprep.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gensprep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/gensprep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/gensprep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gensprep.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gensprep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/gensprep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gensprep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gensprep.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gensprep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/gensprep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gensprep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gensprep.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>false</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gensprep.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/gensprep.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gensprep.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="gensprep.c" />
-    <ClCompile Include="store.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="gensprep.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gensprep.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gensprep.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/gensprep.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gensprep.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="gensprep.c" />\r
+    <ClCompile Include="store.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="gensprep.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 60252b9..ea7ee70 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  store.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6417155..68ae0fd 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  genres32.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 77076e9..4ae6280 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gentest.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index adb08c7..f55bd00 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index d8840ff..7815094 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{77C78066-746F-4EA6-B3FE-B8C8A4A97891}</ProjectGuid>
-    <RootNamespace>gentest</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/gentest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/gentest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/gentest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/gentest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/gentest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/gentest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/gentest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/gentest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/gentest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/gentest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/gentest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/gentest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/gentest.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/gentest.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/gentest.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/gentest.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="genres32.c" />
-    <ClCompile Include="gentest.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="gentest.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{77C78066-746F-4EA6-B3FE-B8C8A4A97891}</ProjectGuid>\r
+    <RootNamespace>gentest</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/gentest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/gentest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/gentest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/gentest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/gentest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/gentest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/gentest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/gentest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/gentest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/gentest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/gentest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/gentest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/gentest.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/gentest.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/gentest.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/gentest.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="genres32.c" />\r
+    <ClCompile Include="gentest.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="gentest.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">\r
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 080b9fe..4eb505c 100755 (executable)
@@ -30,6 +30,64 @@ import os.path
 import re
 import getopt
 
+#
+#  svn autoprops definitions.
+#      Copy and paste here the ICU recommended auto-props from
+#      http://icu-project.org/docs/subversion_howto/index.html
+#
+#  This program will parse this autoprops string, and verify that files in
+#  the repository have the recommeded properties set.
+#
+svn_auto_props = """
+### Section for configuring automatic properties.
+[auto-props]
+### The format of the entries is:
+###   file-name-pattern = propname[=value][;propname[=value]...]
+### The file-name-pattern can contain wildcards (such as '*' and
+### '?').  All entries which match will be applied to the file.
+### Note that auto-props functionality must be enabled, which
+### is typically done by setting the 'enable-auto-props' option.
+*.c = svn:eol-style=native
+*.cc = svn:eol-style=native
+*.cpp = svn:eol-style=native
+*.h = svn:eol-style=native
+*.rc = svn:eol-style=native
+*.dsp = svn:eol-style=native
+*.dsw = svn:eol-style=native
+*.sln = svn:eol-style=native
+*.vcproj = svn:eol-style=native
+configure = svn:eol-style=native;svn:executable
+*.sh = svn:eol-style=native;svn:executable
+*.pl = svn:eol-style=native;svn:executable
+*.py = svn:eol-style=native;svn:executable
+*.txt = svn:mime-type=text/plain;svn:eol-style=native
+*.java = svn:eol-style=native;svn:mime-type=text/plain;;charset=utf-8
+*.ucm = svn:eol-style=native
+*.html = svn:eol-style=native;svn:mime-type=text/html
+*.htm = svn:eol-style=native;svn:mime-type=text/html
+*.xml = svn:eol-style=native
+Makefile = svn:eol-style=native
+*.in = svn:eol-style=native
+*.mak = svn:eol-style=native
+*.mk = svn:eol-style=native
+*.png = svn:mime-type=image/png
+*.jpeg = svn:mime-type=image/jpeg
+*.jpg = svn:mime-type=image/jpeg
+*.bin = svn:mime-type=application/octet-stream
+*.brk = svn:mime-type=application/octet-stream
+*.cnv = svn:mime-type=application/octet-stream
+*.dat = svn:mime-type=application/octet-stream
+*.icu = svn:mime-type=application/octet-stream
+*.res = svn:mime-type=application/octet-stream
+*.spp = svn:mime-type=application/octet-stream
+# new additions 2007-dec-5 srl
+*.rtf = mime-type=text/rtf
+*.pdf = mime-type=application/pdf
+# changed 2008-04-08: modified .txt, above, adding mime-type
+# changed 2010-11-09: modified .java, adding mime-type
+# Note: The escape syntax for semicolon (";;") is supported since subversion 1.6.1
+"""
+
 
 # file_types:  The parsed form of the svn auto-props specification.
 #              A list of file types - .cc, .cpp, .txt, etc.
@@ -90,48 +148,45 @@ def runCommand(cmd):
         sys.exit(exit_status)
     return output_text
 
-svn_auto_props = runCommand("svn propget svn:auto-props http://source.icu-project.org/repos/icu")
 
 def usage():
     print "usage: " + sys.argv[0] + " [-f | --fix] [-h | --help]"
 
     
 #
-#  UTF-8 file check.   For text files with svn:mime-type=text/anything, check the specified charset
+#  UTF-8 file check.   For text files, add a charset to the mime-type if their contents are UTF-8
 #    file_name:        name of a text file.
-#    base_mime_type:   svn:mime-type property from the auto-props settings for this file type.
+#    base_mime_type:   svn:mime-type property value from the auto-props file (no charset= part)
 #    actual_mime_type: existing svn:mime-type property value for the file.
-#    return:           The correct svn:mime-type property value,
-#                         either the original, if it looks OK, otherwise the value from auto-props
+#    return:           svn:mime-type property value, with charset added when appropriate.
 #
 def check_utf8(file_name, base_mime_type, actual_mime_type):
 
+    # If the file already has a charset in its mime-type, don't make any change.
+
+    if actual_mime_type.find("charset=") > 0:
+        return actual_mime_type;
+
     f = open(file_name, 'r')
     bytes = f.read()
     f.close()
-    file_is_utf8 = True
+
+    if all(ord(byte) < 128 for byte in bytes):
+        # pure ASCII.
+        # print "Pure ASCII " + file_name
+        return base_mime_type
+
     try:
         bytes.decode("UTF-8")
     except UnicodeDecodeError:
-        file_is_utf8 = False
-
-    if not file_is_utf8 and actual_mime_type.find("utf-8") >= 0:
-        print "Error: %s is not valid utf-8, but has a utf-8 mime type." % file_name
-        return actual_mime_type
-
-    if file_is_utf8 and actual_mime_type.find("charset") >=0 and actual_mime_type.find("utf-8") < 0:
-        print "Warning: %s is valid utf-8, but has a mime-type of %s." % (file_name, actual_mime_type)
+        print "warning: %s: not ASCII, not UTF-8" % file_name
+        return base_mime_type
 
-    if ord(bytes[0]) == 0xef:
-        if not file_name.endswith(".txt"):
-            print "Warning: file %s contains a UTF-8 BOM: " % file_name
-
-    # If the file already has a charset in its mime-type, don't make any change.
-
-    if actual_mime_type.find("charset=") >= 0:
-        return actual_mime_type;
+    if ord(bytes[0]) != 0xef:
+      print "UTF-8 file with no BOM: " + file_name
 
-    return base_mime_type
+    # Append charset=utf-8.
+    return base_mime_type + ';charset=utf-8'
 
 
 def main(argv):
@@ -178,6 +233,13 @@ def main(argv):
                         print "svn propset %s '%s' %s" % (propname, propval, f)
                         if fix_problems:
                             os.system("svn propset %s '%s' %s" % (propname, propval, f))
+                    if propname == "svn:eol-style" and propval == "native":
+                        if os.system("grep -q -v \r " + f):
+                            if fix_problems:
+                                print f + ": Removing DOS CR characters."
+                                os.system("sed -i s/\r// " + f);
+                            else:
+                                print f + " contains DOS CR characters."
 
 
 if __name__ == "__main__":
index 08bd87b..77f45fb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icuinfo.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 05f1dbb..33a0bd6 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E7611F49-F088-4175-9446-6111444E72C8}</ProjectGuid>
-    <RootNamespace>icuinfo</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{E7611F49-F088-4175-9446-6111444E72C8}</ProjectGuid>\r
+    <RootNamespace>icuinfo</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>x86\Release/icuinfo.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>x86\Release/icuinfo.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>x86\Release/icuinfo.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>x86\Release/icuinfo.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
-      <ObjectFileName>Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>x64\Release/icuinfo.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>x64\Release/icuinfo.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>x64\Release/icuinfo.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>x64\Release/icuinfo.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
-      <ObjectFileName>Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="icuinfo.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="icuplugins_windows_sample.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\..\i18n\i18n.vcxproj">
-      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">
-      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>Debug/icuinfo.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icuinfo.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)icuinfo.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="icuinfo.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="icuplugins_windows_sample.txt" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\i18n\i18n.vcxproj">\r
+      <Project>{0178b127-6269-407d-b112-93877bb62776}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\ctestfw\ctestfw.vcxproj">\r
+      <Project>{eca6b435-b4fa-4f9f-bf95-f451d078fc47}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 011a2b2..f9cff6a 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index b31ee28..80db332 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release-testplug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug-testplug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib\testplug.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <WholeProgramOptimization>true</WholeProgramOptimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release-testplug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release-testplug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release-testplug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\..\..\..\lib\testplug.pdb</ProgramDatabaseFile>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>.\..\..\..\lib\testplug.lib</ImportLibrary>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib\testplugd.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug-testplug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug-testplug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug-testplug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\..\..\..\lib\testplugd.pdb</ProgramDatabaseFile>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>.\..\..\..\lib\testplugd.lib</ImportLibrary>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib64\testplug.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <WholeProgramOptimization>true</WholeProgramOptimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release-testplug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release-testplug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release-testplug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\..\..\..\lib64\testplug.pdb</ProgramDatabaseFile>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
-      <ImportLibrary>.\..\..\..\lib64\testplug.lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>true</MkTypLibCompatible>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\..\..\..\lib64\testplugd.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug-testplug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug-testplug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug-testplug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\..\..\..\lib64\testplugd.pdb</ProgramDatabaseFile>
-      <ImportLibrary>.\..\..\..\lib64\testplugd.lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="testplug.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\..\lib\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release-testplug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\..\lib\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug-testplug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release-testplug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug-testplug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib\testplug.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <WholeProgramOptimization>true</WholeProgramOptimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release-testplug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release-testplug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release-testplug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\..\..\..\lib\testplug.pdb</ProgramDatabaseFile>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>.\..\..\..\lib\testplug.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib\testplugd.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug-testplug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug-testplug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug-testplug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin\testplug.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\..\..\..\lib\testplugd.pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>.\..\..\..\lib\testplugd.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib64\testplug.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <WholeProgramOptimization>true</WholeProgramOptimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release-testplug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release-testplug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release-testplug/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\..\..\..\lib64\testplug.pdb</ProgramDatabaseFile>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
+      <ImportLibrary>.\..\..\..\lib64\testplug.lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\..\..\..\lib64\testplugd.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug-testplug/testplug.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug-testplug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug-testplug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug-testplug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>..\..\..\bin64\testplug.dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\..\..\..\lib64\testplugd.pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>.\..\..\..\lib64\testplugd.lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="testplug.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index ea7be4a..2023930 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icupkg.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4b43ae4..321640d 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}</ProjectGuid>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>x86\Release/icupkg.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>x86\Release/icupkg.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>x86\Release/icupkg.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>x86\Release/icupkg.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
-      <ObjectFileName>Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>x64\Release/icupkg.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>x64\Release/icupkg.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>x64\Release/icupkg.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>x64\Release/icupkg.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>Debug/</AssemblerListingLocation>
-      <ObjectFileName>Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level4</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>$(OutDir)icupkg.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="icupkg.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\common;..\toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>Debug/icupkg.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)icupkg.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)icupkg.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="icupkg.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 228554c..641a6cb 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icuswap.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 6447283..35d92fe 100644 (file)
@@ -28,7 +28,7 @@ CLEANFILES = *~ $(DEPS) $(MAN_FILES)
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
 OBJECTS = makeconv.o ucnvstat.o genmbcs.o gencnvex.o
index dcc849d..124d3d9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  gencnvex.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 79f185f..68c9eb3 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  genmbcs.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -64,7 +64,6 @@ struct MBCSData {
 };
 
 /* prototypes */
-U_CDECL_BEGIN
 static void
 MBCSClose(NewConverter *cnvData);
 
@@ -102,7 +101,6 @@ MBCSAddTable(NewConverter *cnvData, UCMTable *table, UConverterStaticData *stati
 static uint32_t
 MBCSWrite(NewConverter *cnvData, const UConverterStaticData *staticData,
           UNewDataMemory *pData, int32_t tableType);
-U_CDECL_END
 
 /* helper ------------------------------------------------------------------- */
 
@@ -129,7 +127,6 @@ printBytes(char *buffer, const uint8_t *bytes, int32_t length) {
 
 static MBCSData gDummy;
 
-
 U_CFUNC const MBCSData *
 MBCSGetDummy() {
     uprv_memset(&gDummy, 0, sizeof(MBCSData));
@@ -163,7 +160,7 @@ MBCSInit(MBCSData *mbcsData, UCMFile *ucm) {
     mbcsData->newConverter.write=MBCSWrite;
 }
 
-U_CFUNC NewConverter *
+NewConverter *
 MBCSOpen(UCMFile *ucm) {
     MBCSData *mbcsData=(MBCSData *)uprv_malloc(sizeof(MBCSData));
     if(mbcsData==NULL) {
@@ -181,7 +178,6 @@ MBCSDestruct(MBCSData *mbcsData) {
     uprv_free(mbcsData->fromUBytes);
 }
 
-U_CDECL_BEGIN
 static void
 MBCSClose(NewConverter *cnvData) {
     MBCSData *mbcsData=(MBCSData *)cnvData;
@@ -190,7 +186,6 @@ MBCSClose(NewConverter *cnvData) {
         uprv_free(mbcsData);
     }
 }
-U_CDECL_END
 
 static UBool
 MBCSStartMappings(MBCSData *mbcsData) {
@@ -551,7 +546,6 @@ MBCSAddToUnicode(MBCSData *mbcsData,
     }
 }
 
-U_CDECL_BEGIN
 /* is this byte sequence valid? (this is almost the same as MBCSAddToUnicode()) */
 static UBool
 MBCSIsValid(NewConverter *cnvData,
@@ -560,7 +554,7 @@ MBCSIsValid(NewConverter *cnvData,
 
     return (UBool)(1==ucm_countChars(&mbcsData->ucm->states, bytes, length));
 }
-U_CDECL_END
+
 static UBool
 MBCSSingleAddFromUnicode(MBCSData *mbcsData,
                          const uint8_t *bytes, int32_t /*length*/,
@@ -942,7 +936,6 @@ MBCSOkForBaseFromUnicode(const MBCSData *mbcsData,
     return TRUE;
 }
 
-U_CDECL_BEGIN
 /* we can assume that the table only contains 1:1 mappings with <=4 bytes each */
 static UBool
 MBCSAddTable(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData) {
@@ -1078,7 +1071,7 @@ MBCSAddTable(NewConverter *cnvData, UCMTable *table, UConverterStaticData *stati
 
     return isOK;
 }
-U_CDECL_END
+
 static UBool
 transformEUC(MBCSData *mbcsData) {
     uint8_t *p8;
@@ -1417,7 +1410,6 @@ MBCSPostprocess(MBCSData *mbcsData, const UConverterStaticData * /*staticData*/)
     }
 }
 
-U_CDECL_BEGIN
 static uint32_t
 MBCSWrite(NewConverter *cnvData, const UConverterStaticData *staticData,
           UNewDataMemory *pData, int32_t tableType) {
@@ -1572,4 +1564,3 @@ MBCSWrite(NewConverter *cnvData, const UConverterStaticData *staticData,
     /* return the number of bytes that should have been written */
     return top;
 }
-U_CDECL_END
index 9ff1c77..b1bf8e1 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  genmbcs.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 5a01e20..6ca3e61 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
index e174393..b791885 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  makeconv.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -41,22 +41,21 @@ enum {
 struct NewConverter;
 typedef struct NewConverter NewConverter;
 
-U_CDECL_BEGIN
 struct NewConverter {
     void
-    (* U_CALLCONV close)(NewConverter *cnvData);
+    (*close)(NewConverter *cnvData);
 
     /** is this byte sequence valid? */
     UBool
-    (* U_CALLCONV isValid)(NewConverter *cnvData,
+    (*isValid)(NewConverter *cnvData,
                const uint8_t *bytes, int32_t length);
 
     UBool
-    (* U_CALLCONV addTable)(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData);
+    (*addTable)(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData);
 
     uint32_t
-    (* U_CALLCONV write)(NewConverter *cnvData, const UConverterStaticData *staticData,
+    (*write)(NewConverter *cnvData, const UConverterStaticData *staticData,
              UNewDataMemory *pData, int32_t tableType);
 };
-U_CDECL_END
+
 #endif /* __MAKECONV_H__ */
index 9fbd0e9..3895e89 100644 (file)
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index c04a025..890e731 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
index 13e1289..6f08b8e 100644 (file)
@@ -32,7 +32,7 @@ endif
 ## Target information
 TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
+CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 DEFS += -DUDATA_SO_SUFFIX=\".$(SO)\" -DSTATIC_O=\"$(STATIC_O)\"
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
index ffcf459..2b3c29f 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2000-2016, International Business Machines
@@ -26,7 +26,7 @@
 #include "putilimp.h"
 
 #if U_HAVE_POPEN
-#if (U_PF_MINGW <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(__STRICT_ANSI__)
+#if (U_PF_MINGW <= U_PLATFORM || U_PLATFORM <= U_PF_CYGWIN) && defined(__STRICT_ANSI__)
 /* popen/pclose aren't defined in strict ANSI on Cygwin and MinGW */
 #undef __STRICT_ANSI__
 #endif
@@ -121,9 +121,7 @@ enum {
     LIBNAME,
     QUIET,
     WITHOUT_ASSEMBLY,
-    PDS_BUILD,
-    UWP_BUILD,
-    UWP_ARM_BUILD
+    PDS_BUILD
 };
 
 /* This sets the modes that are available */
@@ -165,9 +163,7 @@ static UOption options[]={
     /*18*/    UOPTION_DEF( "libname", 'L', UOPT_REQUIRES_ARG),
     /*19*/    UOPTION_DEF( "quiet", 'q', UOPT_NO_ARG),
     /*20*/    UOPTION_DEF( "without-assembly", 'w', UOPT_NO_ARG),
-    /*21*/    UOPTION_DEF("zos-pds-build", 'z', UOPT_NO_ARG),
-    /*22*/    UOPTION_DEF("windows-uwp-build", 'u', UOPT_NO_ARG),
-    /*23*/    UOPTION_DEF("windows-uwp-arm-build", 'a', UOPT_NO_ARG)
+    /*21*/    UOPTION_DEF( "zos-pds-build", 'z', UOPT_NO_ARG)
 };
 
 /* This enum and the following char array should be kept in sync. */
@@ -254,11 +250,9 @@ const char options_help[][320]={
     "Specify a version when packaging in dll or static mode",
     "Add package to all file names if not present",
     "Library name to build (if different than package name)",
-    "Quiet mode. (e.g. Do not output a readme file for static libraries)",
+    "Quite mode. (e.g. Do not output a readme file for static libraries)",
     "Build the data without assembly code",
-    "Build PDS dataset (zOS build only)",
-    "Build for Universal Windows Platform (Windows build only)",
-    "Set DLL machine type for UWP to target windows ARM (Windows UWP build only)"
+    "Build PDS dataset (zOS build only)"
 };
 
 const char  *progname = "PKGDATA";
@@ -1757,14 +1751,7 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
 
 #ifdef WINDOWS_WITH_MSVC
 #define LINK_CMD "link.exe /nologo /release /out:"
-#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO /implib:"
-#ifdef _WIN64
-#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /DYNAMICBASE /APPCONTAINER "
-#else
-#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /SAFESEH /DYNAMICBASE /APPCONTAINER /MACHINE:X86"
-#endif
-#define LINK_EXTRA_UWP_FLAGS_ARM "/NXCOMPAT /DYNAMICBASE /APPCONTAINER /MACHINE:ARM"
-#define LINK_EXTRA_NO_UWP_FLAGS "/base:0x4ad00000 "
+#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO  /base:0x4ad00000 /implib:"
 #define LIB_CMD "LIB.exe /nologo /out:"
 #define LIB_FILE "icudt.lib"
 #define LIB_EXT UDATA_LIB_SUFFIX
@@ -1844,33 +1831,14 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
           return 0;
         }
 
-        char *extraFlags = "";
-#ifdef WINDOWS_WITH_MSVC
-        if (options[UWP_BUILD].doesOccur)
-        {
-            if (options[UWP_ARM_BUILD].doesOccur)
-            {
-                extraFlags = LINK_EXTRA_UWP_FLAGS_ARM;
-            }
-            else
-            {
-                extraFlags = LINK_EXTRA_UWP_FLAGS;
-            }
-        }
-        else
-        {
-            extraFlags = LINK_EXTRA_NO_UWP_FLAGS;
-        }
-#endif
-        sprintf(cmd, "%s\"%s\" %s %s\"%s\" \"%s\" %s",
-            LINK_CMD,
-            dllFilePath,
-            extraFlags,
-            LINK_FLAGS,
-            libFilePath,
-            gencFilePath,
-            resFilePath
-        );
+        sprintf(cmd, "%s\"%s\" %s\"%s\" \"%s\" %s",
+                LINK_CMD,
+                dllFilePath,
+                LINK_FLAGS,
+                libFilePath,
+                gencFilePath,
+                resFilePath
+                );
     }
 
     result = runCommand(cmd, TRUE);
index dc2bf11..9f4e589 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <CustomBuildStep>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Debug/pkgdata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0411</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Debug/pkgdata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x86\Debug/pkgdata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Debug/pkgdata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0411</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Debug/pkgdata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x86\Debug/pkgdata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin
-</Command>
-      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TypeLibraryName>.\x86\Release/pkgdata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x86\Release/pkgdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x86\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0411</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x86\Release/pkgdata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x86\Release/pkgdata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TypeLibraryName>.\x86\Release/pkgdata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x86\Release/pkgdata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x86\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0411</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x86\Release/pkgdata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x86\Release/pkgdata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Debug/pkgdata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0411</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Debug/pkgdata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\x64\Debug/pkgdata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <CustomBuildStep>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Debug/pkgdata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BufferSecurityCheck>true</BufferSecurityCheck>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Debug/pkgdata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Debug/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0411</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Debug/pkgdata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>.\x64\Debug/pkgdata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <CustomBuildStep>\r
       <Command>copy "$(TargetPath)" ..\..\..\bin64
-</Command>
-      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>
-    </CustomBuildStep>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\x64\Release/pkgdata.tlb</TypeLibraryName>
-    </Midl>
-    <ClCompile>
-      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeaderOutputFile>.\x64\Release/pkgdata.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
-      <ObjectFileName>.\x64\Release/</ObjectFileName>
-      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0411</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\x64\Release/pkgdata.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\x64\Release/pkgdata.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="pkgdata.cpp" />
-    <ClCompile Include="pkgtypes.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="pkgtypes.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\common\common.vcxproj">
-      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\genccode\genccode.vcxproj">
-      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\gencmn\gencmn.vcxproj">
-      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\icupkg\icupkg.vcxproj">
-      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="..\toolutil\toolutil.vcxproj">
-      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+</Command>\r
+      <Outputs>..\..\..\bin64\$(TargetFileName);%(Outputs)</Outputs>\r
+    </CustomBuildStep>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\x64\Release/pkgdata.tlb</TypeLibraryName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <DisableLanguageExtensions>true</DisableLanguageExtensions>\r
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>\r
+      <PrecompiledHeaderOutputFile>.\x64\Release/pkgdata.pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>\r
+      <ObjectFileName>.\x64\Release/</ObjectFileName>\r
+      <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0411</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <OutputFile>.\x64\Release/pkgdata.exe</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>.\x64\Release/pkgdata.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="pkgdata.cpp" />\r
+    <ClCompile Include="pkgtypes.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="pkgtypes.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\common\common.vcxproj">\r
+      <Project>{73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\genccode\genccode.vcxproj">\r
+      <Project>{fdd3c4f2-9805-44eb-9a77-bc1c1c95b547}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\gencmn\gencmn.vcxproj">\r
+      <Project>{a8d36f8d-09e6-4174-91c3-7beaa9c3f04f}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\icupkg\icupkg.vcxproj">\r
+      <Project>{62d4b15d-7a90-4ecb-ba19-5e021d6a21bc}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\toolutil\toolutil.vcxproj">\r
+      <Project>{6b231032-3cb5-4eed-9210-810d666a23a0}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 43ee3df..eadf634 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**************************************************************************
 *
index 3297d0a..c7eeba4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /**************************************************************************
 *
index 82ca0d8..097fcf1 100644 (file)
@@ -45,7 +45,7 @@ DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
 CFLAGS += $(LIBCFLAGS)
 CXXFLAGS += $(LIBCXXFLAGS)
 
-CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS)
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n $(LIBCPPFLAGS)
 
 # from icuinfo
 CPPFLAGS+=  "-DU_BUILD=\"@build@\"" "-DU_HOST=\"@host@\"" "-DU_CC=\"@CC@\"" "-DU_CXX=\"@CXX@\""
index 6bad90e..bbb1839 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 815b89d..48cd556 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index a5a3f51..77e2711 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -117,7 +117,7 @@ U_CAPI int32_t
 udbg_stoi(const UnicodeString &s)
 {
     char ch[256];
-    const UChar *u = toUCharPtr(s.getBuffer());
+    const UChar *u = s.getBuffer();
     int32_t len = s.length();
     u_UCharsToChars(u, ch, len);
     ch[len] = 0; /* include terminating \0 */
@@ -129,7 +129,7 @@ U_CAPI double
 udbg_stod(const UnicodeString &s)
 {
     char ch[256];
-    const UChar *u = toUCharPtr(s.getBuffer());
+    const UChar *u = s.getBuffer();
     int32_t len = s.length();
     u_UCharsToChars(u, ch, len);
     ch[len] = 0; /* include terminating \0 */
index 43fe217..ad61532 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
 /*
index f5e52b1..3b83715 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  denseranges.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index c489ca4..7b072f4 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  denseranges.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/filestrm.c b/source/tools/toolutil/filestrm.c
new file mode 100644 (file)
index 0000000..e84160e
--- /dev/null
@@ -0,0 +1,227 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+******************************************************************************
+*
+*   Copyright (C) 1997-2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File FILESTRM.C
+*
+* @author       Glenn Marcy
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   5/8/98      gm          Created
+*  03/02/99     stephen     Reordered params in ungetc to match stdio
+*                           Added wopen
+*   3/29/99     helena      Merged Stephen and Bertrand's changes.
+*
+******************************************************************************
+*/
+
+#include "filestrm.h"
+
+#include "cmemory.h"
+
+#include <stdio.h>
+
+U_CAPI FileStream* U_EXPORT2
+T_FileStream_open(const char* filename, const char* mode)
+{
+    if(filename != NULL && *filename != 0 && mode != NULL && *mode != 0) {
+        FILE *file = fopen(filename, mode);
+        return (FileStream*)file;
+    } else {
+        return NULL;
+    }
+}
+
+/*
+U_CAPI FileStream* U_EXPORT2
+T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode)
+{
+   // TBD: _wfopen is believed to be MS-specific? 
+#if U_PLATFORM_USES_ONLY_WIN32_API
+    FILE* result = _wfopen(filename, mode);
+    return (FileStream*)result;
+#else
+    size_t fnMbsSize, mdMbsSize;
+    char *fn, *md;
+    FILE *result;
+
+    // convert from wchar_t to char 
+    fnMbsSize = wcstombs(NULL, filename, ((size_t)-1) >> 1);
+    fn = (char*)uprv_malloc(fnMbsSize+2);
+    wcstombs(fn, filename, fnMbsSize);
+    fn[fnMbsSize] = 0;
+
+    mdMbsSize = wcstombs(NULL, mode, ((size_t)-1) >> 1);
+    md = (char*)uprv_malloc(mdMbsSize+2);
+    wcstombs(md, mode, mdMbsSize);
+    md[mdMbsSize] = 0;
+
+    result = fopen(fn, md);
+    uprv_free(fn);
+    uprv_free(md);
+    return (FileStream*)result;
+#endif
+}
+*/
+U_CAPI void U_EXPORT2
+T_FileStream_close(FileStream* fileStream)
+{
+    if (fileStream != 0)
+        fclose((FILE*)fileStream);
+}
+
+U_CAPI UBool U_EXPORT2
+T_FileStream_file_exists(const char* filename)
+{
+    FILE* temp = fopen(filename, "r");
+    if (temp) {
+        fclose(temp);
+        return TRUE;
+    } else
+        return FALSE;
+}
+
+/*static const int32_t kEOF;
+const int32_t FileStream::kEOF = EOF;*/
+
+/*
+U_CAPI FileStream*
+T_FileStream_tmpfile()
+{
+    FILE* file = tmpfile();
+    return (FileStream*)file;
+}
+*/
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_read(FileStream* fileStream, void* addr, int32_t len)
+{
+    return fread(addr, 1, len, (FILE*)fileStream);
+}
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_write(FileStream* fileStream, const void* addr, int32_t len)
+{
+
+    return fwrite(addr, 1, len, (FILE*)fileStream);
+}
+
+U_CAPI void U_EXPORT2
+T_FileStream_rewind(FileStream* fileStream)
+{
+    rewind((FILE*)fileStream);
+}
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_putc(FileStream* fileStream, int32_t ch)
+{
+    int32_t c = fputc(ch, (FILE*)fileStream);
+    return c;
+}
+
+U_CAPI int U_EXPORT2
+T_FileStream_getc(FileStream* fileStream)
+{
+    int c = fgetc((FILE*)fileStream);
+    return c;
+}
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_ungetc(int32_t ch, FileStream* fileStream)
+{
+
+    int32_t c = ungetc(ch, (FILE*)fileStream);
+    return c;
+}
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_peek(FileStream* fileStream)
+{
+    int32_t c = fgetc((FILE*)fileStream);
+    return ungetc(c, (FILE*)fileStream);
+}
+
+U_CAPI char* U_EXPORT2
+T_FileStream_readLine(FileStream* fileStream, char* buffer, int32_t length)
+{
+    return fgets(buffer, length, (FILE*)fileStream);
+}
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_writeLine(FileStream* fileStream, const char* buffer)
+{
+    return fputs(buffer, (FILE*)fileStream);
+}
+
+U_CAPI int32_t U_EXPORT2
+T_FileStream_size(FileStream* fileStream)
+{
+    int32_t savedPos = ftell((FILE*)fileStream);
+    int32_t size = 0;
+
+    /*Changes by Bertrand A. D. doesn't affect the current position
+    goes to the end of the file before ftell*/
+    fseek((FILE*)fileStream, 0, SEEK_END);
+    size = (int32_t)ftell((FILE*)fileStream);
+    fseek((FILE*)fileStream, savedPos, SEEK_SET);
+    return size;
+}
+
+U_CAPI int U_EXPORT2
+T_FileStream_eof(FileStream* fileStream)
+{
+    return feof((FILE*)fileStream);
+}
+
+/*
+ Warning 
+ This function may not work consistently on all platforms
+ (e.g. HP-UX, FreeBSD and MacOSX don't return an error when
+ putc is used on a file opened as readonly)
+*/
+U_CAPI int U_EXPORT2
+T_FileStream_error(FileStream* fileStream)
+{
+    return (fileStream == 0 || ferror((FILE*)fileStream));
+}
+
+/* This function doesn't work. */
+/* force the stream to set its error flag*/
+/*U_CAPI void U_EXPORT2
+T_FileStream_setError(FileStream* fileStream)
+{
+    fseek((FILE*)fileStream, 99999, SEEK_SET);
+}
+*/
+
+U_CAPI FileStream* U_EXPORT2
+T_FileStream_stdin(void)
+{
+    return (FileStream*)stdin;
+}
+
+U_CAPI FileStream* U_EXPORT2
+T_FileStream_stdout(void)
+{
+    return (FileStream*)stdout;
+}
+
+
+U_CAPI FileStream* U_EXPORT2
+T_FileStream_stderr(void)
+{
+    return (FileStream*)stderr;
+}
+
+U_CAPI UBool U_EXPORT2
+T_FileStream_remove(const char* fileName){
+    return (remove(fileName) == 0);
+}
index 86fac30..b423451 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
index 176a791..b0d4ed8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2009-2013, International Business Machines
index 6a25c36..5ede027 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  filetools.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/flagparser.c b/source/tools/toolutil/flagparser.c
new file mode 100644 (file)
index 0000000..0ffc371
--- /dev/null
@@ -0,0 +1,180 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/******************************************************************************
+ *   Copyright (C) 2009-2015, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+
+#include "flagparser.h"
+#include "filestrm.h"
+#include "cstring.h"
+#include "cmemory.h"
+
+#define DEFAULT_BUFFER_SIZE 512
+
+static int32_t currentBufferSize = DEFAULT_BUFFER_SIZE;
+
+static int32_t extractFlag(char* buffer, int32_t bufferSize, char* flag, int32_t flagSize, const char ** flagNames, int32_t numOfFlags, UErrorCode *status);
+static int32_t getFlagOffset(const char *buffer, int32_t bufferSize);
+
+/*
+ * Opens the given fileName and reads in the information storing the data in flagBuffer.
+ */
+U_CAPI int32_t U_EXPORT2
+parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize, const char ** flagNames, int32_t numOfFlags, UErrorCode *status) {
+    char* buffer = NULL;
+    char* tmpFlagBuffer = NULL;
+    UBool allocateMoreSpace = FALSE;
+    int32_t idx, i;
+    int32_t result = 0;
+
+    FileStream *f = T_FileStream_open(fileName, "r");
+    if (f == NULL) {
+        *status = U_FILE_ACCESS_ERROR;
+        goto parseFlagsFile_cleanup;
+    }
+    
+    buffer = uprv_malloc(sizeof(char) * currentBufferSize);
+    tmpFlagBuffer = uprv_malloc(sizeof(char) * flagBufferSize);
+
+    if (buffer == NULL || tmpFlagBuffer == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        goto parseFlagsFile_cleanup;
+    }
+
+    do {
+        if (allocateMoreSpace) {
+            allocateMoreSpace = FALSE;
+            currentBufferSize *= 2;
+            uprv_free(buffer);
+            buffer = uprv_malloc(sizeof(char) * currentBufferSize);
+            if (buffer == NULL) {
+                *status = U_MEMORY_ALLOCATION_ERROR;
+                goto parseFlagsFile_cleanup;
+            }
+        }
+        for (i = 0; i < numOfFlags;) {
+            if (T_FileStream_readLine(f, buffer, currentBufferSize) == NULL) {
+                /* End of file reached. */
+                break;
+            }
+            if (buffer[0] == '#') {
+                continue;
+            }
+
+            if ((int32_t)uprv_strlen(buffer) == (currentBufferSize - 1) && buffer[currentBufferSize-2] != '\n') {
+                /* Allocate more space for buffer if it didnot read the entrire line */
+                allocateMoreSpace = TRUE;
+                T_FileStream_rewind(f);
+                break;
+            } else {
+                idx = extractFlag(buffer, currentBufferSize, tmpFlagBuffer, flagBufferSize, flagNames, numOfFlags, status);
+                if (U_FAILURE(*status)) {
+                    if (*status == U_BUFFER_OVERFLOW_ERROR) {
+                        result = currentBufferSize;
+                    } else {
+                        result = -1;
+                    }
+                    break;
+                } else {
+                    if (flagNames != NULL) {
+                        if (idx >= 0) {
+                            uprv_strcpy(flagBuffer[idx], tmpFlagBuffer);
+                        } else {
+                            /* No match found.  Skip it. */
+                            continue;
+                        }
+                    } else {
+                        uprv_strcpy(flagBuffer[i++], tmpFlagBuffer);
+                    }
+                }
+            }
+        }
+    } while (allocateMoreSpace && U_SUCCESS(*status));
+
+parseFlagsFile_cleanup:
+    uprv_free(tmpFlagBuffer);
+    uprv_free(buffer);
+
+    T_FileStream_close(f);
+    
+    if (U_FAILURE(*status) && *status != U_BUFFER_OVERFLOW_ERROR) {
+        return -1;
+    }
+
+    if (U_SUCCESS(*status) && result == 0) {
+        currentBufferSize = DEFAULT_BUFFER_SIZE;
+    }
+
+    return result;
+}
+
+
+/*
+ * Extract the setting after the '=' and store it in flag excluding the newline character.
+ */
+static int32_t extractFlag(char* buffer, int32_t bufferSize, char* flag, int32_t flagSize, const char **flagNames, int32_t numOfFlags, UErrorCode *status) {
+    int32_t i, idx = -1;
+    char *pBuffer;
+    int32_t offset=0;
+    UBool bufferWritten = FALSE;
+
+    if (buffer[0] != 0) {
+        /* Get the offset (i.e. position after the '=') */
+        offset = getFlagOffset(buffer, bufferSize);
+        pBuffer = buffer+offset;
+        for(i = 0;;i++) {
+            if (i >= flagSize) {
+                *status = U_BUFFER_OVERFLOW_ERROR;
+                return -1;
+            }
+            if (pBuffer[i+1] == 0) {
+                /* Indicates a new line character. End here. */
+                flag[i] = 0;
+                break;
+            }
+
+            flag[i] = pBuffer[i];
+            if (i == 0) {
+                bufferWritten = TRUE;
+            }
+        }
+    }
+
+    if (!bufferWritten) {
+        flag[0] = 0;
+    }
+
+    if (flagNames != NULL && offset>0) {
+        offset--;  /* Move offset back 1 because of '='*/
+        for (i = 0; i < numOfFlags; i++) {
+            if (uprv_strncmp(buffer, flagNames[i], offset) == 0) {
+                idx = i;
+                break;
+            }
+        }
+    }
+
+    return idx;
+}
+
+/*
+ * Get the position after the '=' character.
+ */
+static int32_t getFlagOffset(const char *buffer, int32_t bufferSize) {
+    int32_t offset = 0;
+
+    for (offset = 0; offset < bufferSize;offset++) {
+        if (buffer[offset] == '=') {
+            offset++;
+            break;
+        }
+    }
+
+    if (offset == bufferSize || (offset - 1) == bufferSize) {
+        offset = 0;
+    }
+
+    return offset;
+}
index aa42547..4aa03c8 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  flagparser.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index e3354b3..a5835e9 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  package.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -381,7 +381,7 @@ U_CDECL_END
 
 U_NAMESPACE_BEGIN
 
-Package::Package()
+Package::Package() 
         : doAutoPrefix(FALSE), prefixEndsWithType(FALSE) {
     inPkgName[0]=0;
     pkgPrefix[0]=0;
@@ -1281,7 +1281,7 @@ Package::sortItems() {
     }
 }
 
-void Package::setItemCapacity(int32_t max)
+void Package::setItemCapacity(int32_t max) 
 {
   if(max<=itemMax) {
     return;
@@ -1289,8 +1289,8 @@ void Package::setItemCapacity(int32_t max)
   Item *newItems = (Item*)uprv_malloc(max * sizeof(items[0]));
   Item *oldItems = items;
   if(newItems == NULL) {
-    fprintf(stderr, "icupkg: Out of memory trying to allocate %lu bytes for %d items\n",
-        (unsigned long)(max*sizeof(items[0])), max);
+    fprintf(stderr, "icupkg: Out of memory trying to allocate %lu bytes for %d items\n", 
+        (unsigned long)max*sizeof(items[0]), max);
     exit(U_MEMORY_ALLOCATION_ERROR);
   }
   if(items && itemCount>0) {
index 2c5bd16..d3b83b6 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  package.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/pkg_genc.c b/source/tools/toolutil/pkg_genc.c
new file mode 100644 (file)
index 0000000..f0dbd4c
--- /dev/null
@@ -0,0 +1,1199 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/******************************************************************************
+ *   Copyright (C) 2009-2016, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+#include "unicode/utypes.h"
+
+#if U_PLATFORM_HAS_WIN32_API
+#   define VC_EXTRALEAN
+#   define WIN32_LEAN_AND_MEAN
+#   define NOUSER
+#   define NOSERVICE
+#   define NOIME
+#   define NOMCX
+#include <windows.h>
+#include <time.h>
+#   ifdef __GNUC__
+#       define WINDOWS_WITH_GNUC
+#   endif
+#endif
+
+#if U_PLATFORM_IS_LINUX_BASED && U_HAVE_ELF_H
+#   define U_ELF
+#endif
+
+#ifdef U_ELF
+#   include <elf.h>
+#   if defined(ELFCLASS64)
+#       define U_ELF64
+#   endif
+    /* Old elf.h headers may not have EM_X86_64, or have EM_X8664 instead. */
+#   ifndef EM_X86_64
+#       define EM_X86_64 62
+#   endif
+#   define ICU_ENTRY_OFFSET 0
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "unicode/putil.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "filestrm.h"
+#include "toolutil.h"
+#include "unicode/uclean.h"
+#include "uoptions.h"
+#include "pkg_genc.h"
+
+#define MAX_COLUMN ((uint32_t)(0xFFFFFFFFU))
+
+#define HEX_0X 0 /*  0x1234 */
+#define HEX_0H 1 /*  01234h */
+
+/* prototypes --------------------------------------------------------------- */
+static void
+getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix, const char *optFilename);
+
+static uint32_t
+write8(FileStream *out, uint8_t byte, uint32_t column);
+
+static uint32_t
+write32(FileStream *out, uint32_t byte, uint32_t column);
+
+#if U_PLATFORM == U_PF_OS400
+static uint32_t
+write8str(FileStream *out, uint8_t byte, uint32_t column);
+#endif
+/* -------------------------------------------------------------------------- */
+
+/*
+Creating Template Files for New Platforms
+
+Let the cc compiler help you get started.
+Compile this program
+    const unsigned int x[5] = {1, 2, 0xdeadbeef, 0xffffffff, 16};
+with the -S option to produce assembly output.
+
+For example, this will generate array.s:
+gcc -S array.c
+
+This will produce a .s file that may look like this:
+
+    .file   "array.c"
+    .version        "01.01"
+gcc2_compiled.:
+    .globl x
+    .section        .rodata
+    .align 4
+    .type    x,@object
+    .size    x,20
+x:
+    .long   1
+    .long   2
+    .long   -559038737
+    .long   -1
+    .long   16
+    .ident  "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-85)"
+
+which gives a starting point that will compile, and can be transformed
+to become the template, generally with some consulting of as docs and
+some experimentation.
+
+If you want ICU to automatically use this assembly, you should
+specify "GENCCODE_ASSEMBLY=-a name" in the specific config/mh-* file,
+where the name is the compiler or platform that you used in this
+assemblyHeader data structure.
+*/
+static const struct AssemblyType {
+    const char *name;
+    const char *header;
+    const char *beginLine;
+    const char *footer;
+    int8_t      hexType; /* HEX_0X or HEX_0h */
+} assemblyHeader[] = {
+    /* For gcc assemblers, the meaning of .align changes depending on the */
+    /* hardware, so we use .balign 16 which always means 16 bytes. */
+    /* https://sourceware.org/binutils/docs/as/Pseudo-Ops.html */
+    {"gcc",
+        ".globl %s\n"
+        "\t.section .note.GNU-stack,\"\",%%progbits\n"
+        "\t.section .rodata\n"
+        "\t.balign 16\n"
+        "#ifdef U_HIDE_DATA_SYMBOL\n"
+        "\t.hidden %s\n"
+        "#endif\n"
+        "\t.type %s,%%object\n"
+        "%s:\n\n",
+
+        ".long ",".size %s, .-%s\n",HEX_0X
+    },
+    {"gcc-darwin",
+        /*"\t.section __TEXT,__text,regular,pure_instructions\n"
+        "\t.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32\n"*/
+        ".globl _%s\n"
+        "#ifdef U_HIDE_DATA_SYMBOL\n"
+        "\t.private_extern _%s\n"
+        "#endif\n"
+        "\t.data\n"
+        "\t.const\n"
+        "\t.balign 16\n"
+        "_%s:\n\n",
+
+        ".long ","",HEX_0X
+    },
+    {"gcc-cygwin",
+        ".globl _%s\n"
+        "\t.section .rodata\n"
+        "\t.balign 16\n"
+        "_%s:\n\n",
+
+        ".long ","",HEX_0X
+    },
+    {"gcc-mingw64",
+        ".globl %s\n"
+        "\t.section .rodata\n"
+        "\t.balign 16\n"
+        "%s:\n\n",
+
+        ".long ","",HEX_0X
+    },
+/* 16 bytes alignment. */
+/* http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf */
+    {"sun",
+        "\t.section \".rodata\"\n"
+        "\t.align   16\n"
+        ".globl     %s\n"
+        "%s:\n",
+
+        ".word ","",HEX_0X
+    },
+/* 16 bytes alignment for sun-x86. */
+/* http://docs.oracle.com/cd/E19963-01/html/821-1608/eoiyg.html */
+    {"sun-x86",
+        "Drodata.rodata:\n"
+        "\t.type   Drodata.rodata,@object\n"
+        "\t.size   Drodata.rodata,0\n"
+        "\t.globl  %s\n"
+        "\t.align  16\n" 
+        "%s:\n",
+
+        ".4byte ","",HEX_0X
+    },
+/* 1<<4 bit alignment for aix. */
+/* http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.aixassem%2Fdoc%2Falangref%2Fidalangref_csect_pseudoop.htm */
+    {"xlc",
+        ".globl %s{RO}\n"
+        "\t.toc\n"
+        "%s:\n"
+        "\t.csect %s{RO}, 4\n",
+
+        ".long ","",HEX_0X
+    },
+    {"aCC-ia64",
+        "\t.file   \"%s.s\"\n"
+        "\t.type   %s,@object\n"
+        "\t.global %s\n"
+        "\t.secalias .abe$0.rodata, \".rodata\"\n"
+        "\t.section .abe$0.rodata = \"a\", \"progbits\"\n"
+        "\t.align  16\n"
+        "%s::\t",
+
+        "data4 ","",HEX_0X
+    },
+    {"aCC-parisc",
+        "\t.SPACE  $TEXT$\n"
+        "\t.SUBSPA $LIT$\n"
+        "%s\n"
+        "\t.EXPORT %s\n"
+        "\t.ALIGN  16\n",
+
+        ".WORD ","",HEX_0X
+    },
+/* align 16 bytes */
+/*  http://msdn.microsoft.com/en-us/library/dwa9fwef.aspx */
+    { "masm",
+      "\tTITLE %s\n"
+      "; generated by genccode\n"
+      ".386\n"
+      ".model flat\n"
+      "\tPUBLIC _%s\n"
+      "ICUDATA_%s\tSEGMENT READONLY PARA PUBLIC FLAT 'DATA'\n"
+      "\tALIGN 16\n"
+      "_%s\tLABEL DWORD\n",
+      "\tDWORD ","\nICUDATA_%s\tENDS\n\tEND\n",HEX_0H
+    }
+};
+
+static int32_t assemblyHeaderIndex = -1;
+static int32_t hexType = HEX_0X;
+
+U_CAPI UBool U_EXPORT2
+checkAssemblyHeaderName(const char* optAssembly) {
+    int32_t idx;
+    assemblyHeaderIndex = -1;
+    for (idx = 0; idx < UPRV_LENGTHOF(assemblyHeader); idx++) {
+        if (uprv_strcmp(optAssembly, assemblyHeader[idx].name) == 0) {
+            assemblyHeaderIndex = idx;
+            hexType = assemblyHeader[idx].hexType; /* set the hex type */
+            return TRUE;
+        }
+    }
+
+    return FALSE;
+}
+
+
+U_CAPI void U_EXPORT2
+printAssemblyHeadersToStdErr(void) {
+    int32_t idx;
+    fprintf(stderr, "%s", assemblyHeader[0].name);
+    for (idx = 1; idx < UPRV_LENGTHOF(assemblyHeader); idx++) {
+        fprintf(stderr, ", %s", assemblyHeader[idx].name);
+    }
+    fprintf(stderr,
+        ")\n");
+}
+
+U_CAPI void U_EXPORT2
+writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath) {
+    uint32_t column = MAX_COLUMN;
+    char entry[64];
+    uint32_t buffer[1024];
+    char *bufferStr = (char *)buffer;
+    FileStream *in, *out;
+    size_t i, length;
+
+    in=T_FileStream_open(filename, "rb");
+    if(in==NULL) {
+        fprintf(stderr, "genccode: unable to open input file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    getOutFilename(filename, destdir, bufferStr, entry, ".S", optFilename);
+    out=T_FileStream_open(bufferStr, "w");
+    if(out==NULL) {
+        fprintf(stderr, "genccode: unable to open output file %s\n", bufferStr);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    if (outFilePath != NULL) {
+        uprv_strcpy(outFilePath, bufferStr);
+    }
+
+#ifdef WINDOWS_WITH_GNUC
+    /* Need to fix the file seperator character when using MinGW. */
+    swapFileSepChar(outFilePath, U_FILE_SEP_CHAR, '/');
+#endif
+
+    if(optEntryPoint != NULL) {
+        uprv_strcpy(entry, optEntryPoint);
+        uprv_strcat(entry, "_dat");
+    }
+
+    /* turn dashes or dots in the entry name into underscores */
+    length=uprv_strlen(entry);
+    for(i=0; i<length; ++i) {
+        if(entry[i]=='-' || entry[i]=='.') {
+            entry[i]='_';
+        }
+    }
+
+    sprintf(bufferStr, assemblyHeader[assemblyHeaderIndex].header,
+        entry, entry, entry, entry,
+        entry, entry, entry, entry);
+    T_FileStream_writeLine(out, bufferStr);
+    T_FileStream_writeLine(out, assemblyHeader[assemblyHeaderIndex].beginLine);
+
+    for(;;) {
+        length=T_FileStream_read(in, buffer, sizeof(buffer));
+        if(length==0) {
+            break;
+        }
+        if (length != sizeof(buffer)) {
+            /* pad with extra 0's when at the end of the file */
+            for(i=0; i < (length % sizeof(uint32_t)); ++i) {
+                buffer[length+i] = 0;
+            }
+        }
+        for(i=0; i<(length/sizeof(buffer[0])); i++) {
+            column = write32(out, buffer[i], column);
+        }
+    }
+
+    T_FileStream_writeLine(out, "\n");
+
+    sprintf(bufferStr, assemblyHeader[assemblyHeaderIndex].footer,
+        entry, entry, entry, entry,
+        entry, entry, entry, entry);
+    T_FileStream_writeLine(out, bufferStr);
+
+    if(T_FileStream_error(in)) {
+        fprintf(stderr, "genccode: file read error while generating from file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    if(T_FileStream_error(out)) {
+        fprintf(stderr, "genccode: file write error while generating from file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    T_FileStream_close(out);
+    T_FileStream_close(in);
+}
+
+U_CAPI void U_EXPORT2
+writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath) {
+    uint32_t column = MAX_COLUMN;
+    char buffer[4096], entry[64];
+    FileStream *in, *out;
+    size_t i, length;
+
+    in=T_FileStream_open(filename, "rb");
+    if(in==NULL) {
+        fprintf(stderr, "genccode: unable to open input file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    if(optName != NULL) { /* prepend  'icudt28_' */
+      strcpy(entry, optName);
+      strcat(entry, "_");
+    } else {
+      entry[0] = 0;
+    }
+
+    getOutFilename(filename, destdir, buffer, entry+uprv_strlen(entry), ".c", optFilename);
+    if (outFilePath != NULL) {
+        uprv_strcpy(outFilePath, buffer);
+    }
+    out=T_FileStream_open(buffer, "w");
+    if(out==NULL) {
+        fprintf(stderr, "genccode: unable to open output file %s\n", buffer);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    /* turn dashes or dots in the entry name into underscores */
+    length=uprv_strlen(entry);
+    for(i=0; i<length; ++i) {
+        if(entry[i]=='-' || entry[i]=='.') {
+            entry[i]='_';
+        }
+    }
+
+#if U_PLATFORM == U_PF_OS400
+    /*
+    TODO: Fix this once the compiler implements this feature. Keep in sync with udatamem.c
+
+    This is here because this platform can't currently put
+    const data into the read-only pages of an object or
+    shared library (service program). Only strings are allowed in read-only
+    pages, so we use char * strings to store the data.
+
+    In order to prevent the beginning of the data from ever matching the
+    magic numbers we must still use the initial double.
+    [grhoten 4/24/2003]
+    */
+    sprintf(buffer,
+        "#ifndef IN_GENERATED_CCODE\n"
+        "#define IN_GENERATED_CCODE\n"
+        "#define U_DISABLE_RENAMING 1\n"
+        "#include \"unicode/umachine.h\"\n"
+        "#endif\n"
+        "U_CDECL_BEGIN\n"
+        "const struct {\n"
+        "    double bogus;\n"
+        "    const char *bytes; \n"
+        "} %s={ 0.0, \n",
+        entry);
+    T_FileStream_writeLine(out, buffer);
+
+    for(;;) {
+        length=T_FileStream_read(in, buffer, sizeof(buffer));
+        if(length==0) {
+            break;
+        }
+        for(i=0; i<length; ++i) {
+            column = write8str(out, (uint8_t)buffer[i], column);
+        }
+    }
+
+    T_FileStream_writeLine(out, "\"\n};\nU_CDECL_END\n");
+#else
+    /* Function renaming shouldn't be done in data */
+    sprintf(buffer,
+        "#ifndef IN_GENERATED_CCODE\n"
+        "#define IN_GENERATED_CCODE\n"
+        "#define U_DISABLE_RENAMING 1\n"
+        "#include \"unicode/umachine.h\"\n"
+        "#endif\n"
+        "U_CDECL_BEGIN\n"
+        "const struct {\n"
+        "    double bogus;\n"
+        "    uint8_t bytes[%ld]; \n"
+        "} %s={ 0.0, {\n",
+        (long)T_FileStream_size(in), entry);
+    T_FileStream_writeLine(out, buffer);
+
+    for(;;) {
+        length=T_FileStream_read(in, buffer, sizeof(buffer));
+        if(length==0) {
+            break;
+        }
+        for(i=0; i<length; ++i) {
+            column = write8(out, (uint8_t)buffer[i], column);
+        }
+    }
+
+    T_FileStream_writeLine(out, "\n}\n};\nU_CDECL_END\n");
+#endif
+
+    if(T_FileStream_error(in)) {
+        fprintf(stderr, "genccode: file read error while generating from file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    if(T_FileStream_error(out)) {
+        fprintf(stderr, "genccode: file write error while generating from file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    T_FileStream_close(out);
+    T_FileStream_close(in);
+}
+
+static uint32_t
+write32(FileStream *out, uint32_t bitField, uint32_t column) {
+    int32_t i;
+    char bitFieldStr[64]; /* This is more bits than needed for a 32-bit number */
+    char *s = bitFieldStr;
+    uint8_t *ptrIdx = (uint8_t *)&bitField;
+    static const char hexToStr[16] = {
+        '0','1','2','3',
+        '4','5','6','7',
+        '8','9','A','B',
+        'C','D','E','F'
+    };
+
+    /* write the value, possibly with comma and newline */
+    if(column==MAX_COLUMN) {
+        /* first byte */
+        column=1;
+    } else if(column<32) {
+        *(s++)=',';
+        ++column;
+    } else {
+        *(s++)='\n';
+        uprv_strcpy(s, assemblyHeader[assemblyHeaderIndex].beginLine);
+        s+=uprv_strlen(s);
+        column=1;
+    }
+
+    if (bitField < 10) {
+        /* It's a small number. Don't waste the space for 0x */
+        *(s++)=hexToStr[bitField];
+    }
+    else {
+        int seenNonZero = 0; /* This is used to remove leading zeros */
+
+        if(hexType==HEX_0X) {
+         *(s++)='0';
+         *(s++)='x';
+        } else if(hexType==HEX_0H) {
+         *(s++)='0';
+        }
+
+        /* This creates a 32-bit field */
+#if U_IS_BIG_ENDIAN
+        for (i = 0; i < sizeof(uint32_t); i++)
+#else
+        for (i = sizeof(uint32_t)-1; i >= 0 ; i--)
+#endif
+        {
+            uint8_t value = ptrIdx[i];
+            if (value || seenNonZero) {
+                *(s++)=hexToStr[value>>4];
+                *(s++)=hexToStr[value&0xF];
+                seenNonZero = 1;
+            }
+        }
+        if(hexType==HEX_0H) {
+         *(s++)='h';
+        }
+    }
+
+    *(s++)=0;
+    T_FileStream_writeLine(out, bitFieldStr);
+    return column;
+}
+
+static uint32_t
+write8(FileStream *out, uint8_t byte, uint32_t column) {
+    char s[4];
+    int i=0;
+
+    /* convert the byte value to a string */
+    if(byte>=100) {
+        s[i++]=(char)('0'+byte/100);
+        byte%=100;
+    }
+    if(i>0 || byte>=10) {
+        s[i++]=(char)('0'+byte/10);
+        byte%=10;
+    }
+    s[i++]=(char)('0'+byte);
+    s[i]=0;
+
+    /* write the value, possibly with comma and newline */
+    if(column==MAX_COLUMN) {
+        /* first byte */
+        column=1;
+    } else if(column<16) {
+        T_FileStream_writeLine(out, ",");
+        ++column;
+    } else {
+        T_FileStream_writeLine(out, ",\n");
+        column=1;
+    }
+    T_FileStream_writeLine(out, s);
+    return column;
+}
+
+#if U_PLATFORM == U_PF_OS400
+static uint32_t
+write8str(FileStream *out, uint8_t byte, uint32_t column) {
+    char s[8];
+
+    if (byte > 7)
+        sprintf(s, "\\x%X", byte);
+    else
+        sprintf(s, "\\%X", byte);
+
+    /* write the value, possibly with comma and newline */
+    if(column==MAX_COLUMN) {
+        /* first byte */
+        column=1;
+        T_FileStream_writeLine(out, "\"");
+    } else if(column<24) {
+        ++column;
+    } else {
+        T_FileStream_writeLine(out, "\"\n\"");
+        column=1;
+    }
+    T_FileStream_writeLine(out, s);
+    return column;
+}
+#endif
+
+static void
+getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix, const char *optFilename) {
+    const char *basename=findBasename(inFilename), *suffix=uprv_strrchr(basename, '.');
+
+    /* copy path */
+    if(destdir!=NULL && *destdir!=0) {
+        do {
+            *outFilename++=*destdir++;
+        } while(*destdir!=0);
+        if(*(outFilename-1)!=U_FILE_SEP_CHAR) {
+            *outFilename++=U_FILE_SEP_CHAR;
+        }
+        inFilename=basename;
+    } else {
+        while(inFilename<basename) {
+            *outFilename++=*inFilename++;
+        }
+    }
+
+    if(suffix==NULL) {
+        /* the filename does not have a suffix */
+        uprv_strcpy(entryName, inFilename);
+        if(optFilename != NULL) {
+          uprv_strcpy(outFilename, optFilename);
+        } else {
+          uprv_strcpy(outFilename, inFilename);
+        }
+        uprv_strcat(outFilename, newSuffix);
+    } else {
+        char *saveOutFilename = outFilename;
+        /* copy basename */
+        while(inFilename<suffix) {
+            if(*inFilename=='-') {
+                /* iSeries cannot have '-' in the .o objects. */
+                *outFilename++=*entryName++='_';
+                inFilename++;
+            }
+            else {
+                *outFilename++=*entryName++=*inFilename++;
+            }
+        }
+
+        /* replace '.' by '_' */
+        *outFilename++=*entryName++='_';
+        ++inFilename;
+
+        /* copy suffix */
+        while(*inFilename!=0) {
+            *outFilename++=*entryName++=*inFilename++;
+        }
+
+        *entryName=0;
+
+        if(optFilename != NULL) {
+            uprv_strcpy(saveOutFilename, optFilename);
+            uprv_strcat(saveOutFilename, newSuffix);
+        } else {
+            /* add ".c" */
+            uprv_strcpy(outFilename, newSuffix);
+        }
+    }
+}
+
+#ifdef CAN_GENERATE_OBJECTS
+static void
+getArchitecture(uint16_t *pCPU, uint16_t *pBits, UBool *pIsBigEndian, const char *optMatchArch) {
+    union {
+        char        bytes[2048];
+#ifdef U_ELF
+        Elf32_Ehdr  header32;
+        /* Elf32_Ehdr and ELF64_Ehdr are identical for the necessary fields. */
+#elif U_PLATFORM_HAS_WIN32_API
+        IMAGE_FILE_HEADER header;
+#endif
+    } buffer;
+
+    const char *filename;
+    FileStream *in;
+    int32_t length;
+
+#ifdef U_ELF
+
+#elif U_PLATFORM_HAS_WIN32_API
+    const IMAGE_FILE_HEADER *pHeader;
+#else
+#   error "Unknown platform for CAN_GENERATE_OBJECTS."
+#endif
+
+    if(optMatchArch != NULL) {
+        filename=optMatchArch;
+    } else {
+        /* set defaults */
+#ifdef U_ELF
+        /* set EM_386 because elf.h does not provide better defaults */
+        *pCPU=EM_386;
+        *pBits=32;
+        *pIsBigEndian=(UBool)(U_IS_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB);
+#elif U_PLATFORM_HAS_WIN32_API
+/* _M_IA64 should be defined in windows.h */
+#   if defined(_M_IA64)
+        *pCPU=IMAGE_FILE_MACHINE_IA64;
+#   elif defined(_M_AMD64)
+        *pCPU=IMAGE_FILE_MACHINE_AMD64;
+#   else
+        *pCPU=IMAGE_FILE_MACHINE_I386;
+#   endif
+        *pBits= *pCPU==IMAGE_FILE_MACHINE_I386 ? 32 : 64;
+        *pIsBigEndian=FALSE;
+#else
+#   error "Unknown platform for CAN_GENERATE_OBJECTS."
+#endif
+        return;
+    }
+
+    in=T_FileStream_open(filename, "rb");
+    if(in==NULL) {
+        fprintf(stderr, "genccode: unable to open match-arch file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+    length=T_FileStream_read(in, buffer.bytes, sizeof(buffer.bytes));
+
+#ifdef U_ELF
+    if(length<sizeof(Elf32_Ehdr)) {
+        fprintf(stderr, "genccode: match-arch file %s is too short\n", filename);
+        exit(U_UNSUPPORTED_ERROR);
+    }
+    if(
+        buffer.header32.e_ident[0]!=ELFMAG0 ||
+        buffer.header32.e_ident[1]!=ELFMAG1 ||
+        buffer.header32.e_ident[2]!=ELFMAG2 ||
+        buffer.header32.e_ident[3]!=ELFMAG3 ||
+        buffer.header32.e_ident[EI_CLASS]<ELFCLASS32 || buffer.header32.e_ident[EI_CLASS]>ELFCLASS64
+    ) {
+        fprintf(stderr, "genccode: match-arch file %s is not an ELF object file, or not supported\n", filename);
+        exit(U_UNSUPPORTED_ERROR);
+    }
+
+    *pBits= buffer.header32.e_ident[EI_CLASS]==ELFCLASS32 ? 32 : 64; /* only 32 or 64: see check above */
+#ifdef U_ELF64
+    if(*pBits!=32 && *pBits!=64) {
+        fprintf(stderr, "genccode: currently only supports 32-bit and 64-bit ELF format\n");
+        exit(U_UNSUPPORTED_ERROR);
+    }
+#else
+    if(*pBits!=32) {
+        fprintf(stderr, "genccode: built with elf.h missing 64-bit definitions\n");
+        exit(U_UNSUPPORTED_ERROR);
+    }
+#endif
+
+    *pIsBigEndian=(UBool)(buffer.header32.e_ident[EI_DATA]==ELFDATA2MSB);
+    if(*pIsBigEndian!=U_IS_BIG_ENDIAN) {
+        fprintf(stderr, "genccode: currently only same-endianness ELF formats are supported\n");
+        exit(U_UNSUPPORTED_ERROR);
+    }
+    /* TODO: Support byte swapping */
+
+    *pCPU=buffer.header32.e_machine;
+#elif U_PLATFORM_HAS_WIN32_API
+    if(length<sizeof(IMAGE_FILE_HEADER)) {
+        fprintf(stderr, "genccode: match-arch file %s is too short\n", filename);
+        exit(U_UNSUPPORTED_ERROR);
+    }
+    /* TODO: Use buffer.header.  Keep aliasing legal.  */
+    pHeader=(const IMAGE_FILE_HEADER *)buffer.bytes;
+    *pCPU=pHeader->Machine;
+    /*
+     * The number of bits is implicit with the Machine value.
+     * *pBits is ignored in the calling code, so this need not be precise.
+     */
+    *pBits= *pCPU==IMAGE_FILE_MACHINE_I386 ? 32 : 64;
+    /* Windows always runs on little-endian CPUs. */
+    *pIsBigEndian=FALSE;
+#else
+#   error "Unknown platform for CAN_GENERATE_OBJECTS."
+#endif
+
+    T_FileStream_close(in);
+}
+
+U_CAPI void U_EXPORT2
+writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath) {
+    /* common variables */
+    char buffer[4096], entry[96]={ 0 };
+    FileStream *in, *out;
+    const char *newSuffix;
+    int32_t i, entryLength, length, size, entryOffset=0, entryLengthOffset=0;
+
+    uint16_t cpu, bits;
+    UBool makeBigEndian;
+
+    /* platform-specific variables and initialization code */
+#ifdef U_ELF
+    /* 32-bit Elf file header */
+    static Elf32_Ehdr header32={
+        {
+            /* e_ident[] */
+            ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3,
+            ELFCLASS32,
+            U_IS_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB,
+            EV_CURRENT /* EI_VERSION */
+        },
+        ET_REL,
+        EM_386,
+        EV_CURRENT, /* e_version */
+        0, /* e_entry */
+        0, /* e_phoff */
+        (Elf32_Off)sizeof(Elf32_Ehdr), /* e_shoff */
+        0, /* e_flags */
+        (Elf32_Half)sizeof(Elf32_Ehdr), /* eh_size */
+        0, /* e_phentsize */
+        0, /* e_phnum */
+        (Elf32_Half)sizeof(Elf32_Shdr), /* e_shentsize */
+        5, /* e_shnum */
+        2 /* e_shstrndx */
+    };
+
+    /* 32-bit Elf section header table */
+    static Elf32_Shdr sectionHeaders32[5]={
+        { /* SHN_UNDEF */
+            0
+        },
+        { /* .symtab */
+            1, /* sh_name */
+            SHT_SYMTAB,
+            0, /* sh_flags */
+            0, /* sh_addr */
+            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)), /* sh_offset */
+            (Elf32_Word)(2*sizeof(Elf32_Sym)), /* sh_size */
+            3, /* sh_link=sect hdr index of .strtab */
+            1, /* sh_info=One greater than the symbol table index of the last
+                * local symbol (with STB_LOCAL). */
+            4, /* sh_addralign */
+            (Elf32_Word)(sizeof(Elf32_Sym)) /* sh_entsize */
+        },
+        { /* .shstrtab */
+            9, /* sh_name */
+            SHT_STRTAB,
+            0, /* sh_flags */
+            0, /* sh_addr */
+            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)+2*sizeof(Elf32_Sym)), /* sh_offset */
+            40, /* sh_size */
+            0, /* sh_link */
+            0, /* sh_info */
+            1, /* sh_addralign */
+            0 /* sh_entsize */
+        },
+        { /* .strtab */
+            19, /* sh_name */
+            SHT_STRTAB,
+            0, /* sh_flags */
+            0, /* sh_addr */
+            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)+2*sizeof(Elf32_Sym)+40), /* sh_offset */
+            (Elf32_Word)sizeof(entry), /* sh_size */
+            0, /* sh_link */
+            0, /* sh_info */
+            1, /* sh_addralign */
+            0 /* sh_entsize */
+        },
+        { /* .rodata */
+            27, /* sh_name */
+            SHT_PROGBITS,
+            SHF_ALLOC, /* sh_flags */
+            0, /* sh_addr */
+            (Elf32_Off)(sizeof(header32)+sizeof(sectionHeaders32)+2*sizeof(Elf32_Sym)+40+sizeof(entry)), /* sh_offset */
+            0, /* sh_size */
+            0, /* sh_link */
+            0, /* sh_info */
+            16, /* sh_addralign */
+            0 /* sh_entsize */
+        }
+    };
+
+    /* symbol table */
+    static Elf32_Sym symbols32[2]={
+        { /* STN_UNDEF */
+            0
+        },
+        { /* data entry point */
+            1, /* st_name */
+            0, /* st_value */
+            0, /* st_size */
+            ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT),
+            0, /* st_other */
+            4 /* st_shndx=index of related section table entry */
+        }
+    };
+
+    /* section header string table, with decimal string offsets */
+    static const char sectionStrings[40]=
+        /*  0 */ "\0"
+        /*  1 */ ".symtab\0"
+        /*  9 */ ".shstrtab\0"
+        /* 19 */ ".strtab\0"
+        /* 27 */ ".rodata\0"
+        /* 35 */ "\0\0\0\0"; /* contains terminating NUL */
+        /* 40: padded to multiple of 8 bytes */
+
+    /*
+     * Use entry[] for the string table which will contain only the
+     * entry point name.
+     * entry[0] must be 0 (NUL)
+     * The entry point name can be up to 38 characters long (sizeof(entry)-2).
+     */
+
+    /* 16-align .rodata in the .o file, just in case */
+    static const char padding[16]={ 0 };
+    int32_t paddingSize;
+
+#ifdef U_ELF64
+    /* 64-bit Elf file header */
+    static Elf64_Ehdr header64={
+        {
+            /* e_ident[] */
+            ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3,
+            ELFCLASS64,
+            U_IS_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB,
+            EV_CURRENT /* EI_VERSION */
+        },
+        ET_REL,
+        EM_X86_64,
+        EV_CURRENT, /* e_version */
+        0, /* e_entry */
+        0, /* e_phoff */
+        (Elf64_Off)sizeof(Elf64_Ehdr), /* e_shoff */
+        0, /* e_flags */
+        (Elf64_Half)sizeof(Elf64_Ehdr), /* eh_size */
+        0, /* e_phentsize */
+        0, /* e_phnum */
+        (Elf64_Half)sizeof(Elf64_Shdr), /* e_shentsize */
+        5, /* e_shnum */
+        2 /* e_shstrndx */
+    };
+
+    /* 64-bit Elf section header table */
+    static Elf64_Shdr sectionHeaders64[5]={
+        { /* SHN_UNDEF */
+            0
+        },
+        { /* .symtab */
+            1, /* sh_name */
+            SHT_SYMTAB,
+            0, /* sh_flags */
+            0, /* sh_addr */
+            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)), /* sh_offset */
+            (Elf64_Xword)(2*sizeof(Elf64_Sym)), /* sh_size */
+            3, /* sh_link=sect hdr index of .strtab */
+            1, /* sh_info=One greater than the symbol table index of the last
+                * local symbol (with STB_LOCAL). */
+            4, /* sh_addralign */
+            (Elf64_Xword)(sizeof(Elf64_Sym)) /* sh_entsize */
+        },
+        { /* .shstrtab */
+            9, /* sh_name */
+            SHT_STRTAB,
+            0, /* sh_flags */
+            0, /* sh_addr */
+            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)+2*sizeof(Elf64_Sym)), /* sh_offset */
+            40, /* sh_size */
+            0, /* sh_link */
+            0, /* sh_info */
+            1, /* sh_addralign */
+            0 /* sh_entsize */
+        },
+        { /* .strtab */
+            19, /* sh_name */
+            SHT_STRTAB,
+            0, /* sh_flags */
+            0, /* sh_addr */
+            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)+2*sizeof(Elf64_Sym)+40), /* sh_offset */
+            (Elf64_Xword)sizeof(entry), /* sh_size */
+            0, /* sh_link */
+            0, /* sh_info */
+            1, /* sh_addralign */
+            0 /* sh_entsize */
+        },
+        { /* .rodata */
+            27, /* sh_name */
+            SHT_PROGBITS,
+            SHF_ALLOC, /* sh_flags */
+            0, /* sh_addr */
+            (Elf64_Off)(sizeof(header64)+sizeof(sectionHeaders64)+2*sizeof(Elf64_Sym)+40+sizeof(entry)), /* sh_offset */
+            0, /* sh_size */
+            0, /* sh_link */
+            0, /* sh_info */
+            16, /* sh_addralign */
+            0 /* sh_entsize */
+        }
+    };
+
+    /*
+     * 64-bit symbol table
+     * careful: different order of items compared with Elf32_sym!
+     */
+    static Elf64_Sym symbols64[2]={
+        { /* STN_UNDEF */
+            0
+        },
+        { /* data entry point */
+            1, /* st_name */
+            ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT),
+            0, /* st_other */
+            4, /* st_shndx=index of related section table entry */
+            0, /* st_value */
+            0 /* st_size */
+        }
+    };
+
+#endif /* U_ELF64 */
+
+    /* entry[] have a leading NUL */
+    entryOffset=1;
+
+    /* in the common code, count entryLength from after the NUL */
+    entryLengthOffset=1;
+
+    newSuffix=".o";
+
+#elif U_PLATFORM_HAS_WIN32_API
+    struct {
+        IMAGE_FILE_HEADER fileHeader;
+        IMAGE_SECTION_HEADER sections[2];
+        char linkerOptions[100];
+    } objHeader;
+    IMAGE_SYMBOL symbols[1];
+    struct {
+        DWORD sizeofLongNames;
+        char longNames[100];
+    } symbolNames;
+
+    /*
+     * entry sometimes have a leading '_'
+     * overwritten if entryOffset==0 depending on the target platform
+     * see check for cpu below
+     */
+    entry[0]='_';
+
+    newSuffix=".obj";
+#else
+#   error "Unknown platform for CAN_GENERATE_OBJECTS."
+#endif
+
+    /* deal with options, files and the entry point name */
+    getArchitecture(&cpu, &bits, &makeBigEndian, optMatchArch);
+    printf("genccode: --match-arch cpu=%hu bits=%hu big-endian=%d\n", cpu, bits, makeBigEndian);
+#if U_PLATFORM_HAS_WIN32_API
+    if(cpu==IMAGE_FILE_MACHINE_I386) {
+        entryOffset=1;
+    }
+#endif
+
+    in=T_FileStream_open(filename, "rb");
+    if(in==NULL) {
+        fprintf(stderr, "genccode: unable to open input file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+    size=T_FileStream_size(in);
+
+    getOutFilename(filename, destdir, buffer, entry+entryOffset, newSuffix, optFilename);
+    if (outFilePath != NULL) {
+        uprv_strcpy(outFilePath, buffer);
+    }
+
+    if(optEntryPoint != NULL) {
+        uprv_strcpy(entry+entryOffset, optEntryPoint);
+        uprv_strcat(entry+entryOffset, "_dat");
+    }
+    /* turn dashes in the entry name into underscores */
+    entryLength=(int32_t)uprv_strlen(entry+entryLengthOffset);
+    for(i=0; i<entryLength; ++i) {
+        if(entry[entryLengthOffset+i]=='-') {
+            entry[entryLengthOffset+i]='_';
+        }
+    }
+
+    /* open the output file */
+    out=T_FileStream_open(buffer, "wb");
+    if(out==NULL) {
+        fprintf(stderr, "genccode: unable to open output file %s\n", buffer);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+#ifdef U_ELF
+    if(bits==32) {
+        header32.e_ident[EI_DATA]= makeBigEndian ? ELFDATA2MSB : ELFDATA2LSB;
+        header32.e_machine=cpu;
+
+        /* 16-align .rodata in the .o file, just in case */
+        paddingSize=sectionHeaders32[4].sh_offset & 0xf;
+        if(paddingSize!=0) {
+                paddingSize=0x10-paddingSize;
+                sectionHeaders32[4].sh_offset+=paddingSize;
+        }
+
+        sectionHeaders32[4].sh_size=(Elf32_Word)size;
+
+        symbols32[1].st_size=(Elf32_Word)size;
+
+        /* write .o headers */
+        T_FileStream_write(out, &header32, (int32_t)sizeof(header32));
+        T_FileStream_write(out, sectionHeaders32, (int32_t)sizeof(sectionHeaders32));
+        T_FileStream_write(out, symbols32, (int32_t)sizeof(symbols32));
+    } else /* bits==64 */ {
+#ifdef U_ELF64
+        header64.e_ident[EI_DATA]= makeBigEndian ? ELFDATA2MSB : ELFDATA2LSB;
+        header64.e_machine=cpu;
+
+        /* 16-align .rodata in the .o file, just in case */
+        paddingSize=sectionHeaders64[4].sh_offset & 0xf;
+        if(paddingSize!=0) {
+                paddingSize=0x10-paddingSize;
+                sectionHeaders64[4].sh_offset+=paddingSize;
+        }
+
+        sectionHeaders64[4].sh_size=(Elf64_Xword)size;
+
+        symbols64[1].st_size=(Elf64_Xword)size;
+
+        /* write .o headers */
+        T_FileStream_write(out, &header64, (int32_t)sizeof(header64));
+        T_FileStream_write(out, sectionHeaders64, (int32_t)sizeof(sectionHeaders64));
+        T_FileStream_write(out, symbols64, (int32_t)sizeof(symbols64));
+#endif
+    }
+
+    T_FileStream_write(out, sectionStrings, (int32_t)sizeof(sectionStrings));
+    T_FileStream_write(out, entry, (int32_t)sizeof(entry));
+    if(paddingSize!=0) {
+        T_FileStream_write(out, padding, paddingSize);
+    }
+#elif U_PLATFORM_HAS_WIN32_API
+    /* populate the .obj headers */
+    uprv_memset(&objHeader, 0, sizeof(objHeader));
+    uprv_memset(&symbols, 0, sizeof(symbols));
+    uprv_memset(&symbolNames, 0, sizeof(symbolNames));
+
+    /* write the linker export directive */
+    uprv_strcpy(objHeader.linkerOptions, "-export:");
+    length=8;
+    uprv_strcpy(objHeader.linkerOptions+length, entry);
+    length+=entryLength;
+    uprv_strcpy(objHeader.linkerOptions+length, ",data ");
+    length+=6;
+
+    /* set the file header */
+    objHeader.fileHeader.Machine=cpu;
+    objHeader.fileHeader.NumberOfSections=2;
+    objHeader.fileHeader.TimeDateStamp=(DWORD)time(NULL);
+    objHeader.fileHeader.PointerToSymbolTable=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER+length+size; /* start of symbol table */
+    objHeader.fileHeader.NumberOfSymbols=1;
+
+    /* set the section for the linker options */
+    uprv_strncpy((char *)objHeader.sections[0].Name, ".drectve", 8);
+    objHeader.sections[0].SizeOfRawData=length;
+    objHeader.sections[0].PointerToRawData=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER;
+    objHeader.sections[0].Characteristics=IMAGE_SCN_LNK_INFO|IMAGE_SCN_LNK_REMOVE|IMAGE_SCN_ALIGN_1BYTES;
+
+    /* set the data section */
+    uprv_strncpy((char *)objHeader.sections[1].Name, ".rdata", 6);
+    objHeader.sections[1].SizeOfRawData=size;
+    objHeader.sections[1].PointerToRawData=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER+length;
+    objHeader.sections[1].Characteristics=IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_ALIGN_16BYTES|IMAGE_SCN_MEM_READ;
+
+    /* set the symbol table */
+    if(entryLength<=8) {
+        uprv_strncpy((char *)symbols[0].N.ShortName, entry, entryLength);
+        symbolNames.sizeofLongNames=4;
+    } else {
+        symbols[0].N.Name.Short=0;
+        symbols[0].N.Name.Long=4;
+        symbolNames.sizeofLongNames=4+entryLength+1;
+        uprv_strcpy(symbolNames.longNames, entry);
+    }
+    symbols[0].SectionNumber=2;
+    symbols[0].StorageClass=IMAGE_SYM_CLASS_EXTERNAL;
+
+    /* write the file header and the linker options section */
+    T_FileStream_write(out, &objHeader, objHeader.sections[1].PointerToRawData);
+#else
+#   error "Unknown platform for CAN_GENERATE_OBJECTS."
+#endif
+
+    /* copy the data file into section 2 */
+    for(;;) {
+        length=T_FileStream_read(in, buffer, sizeof(buffer));
+        if(length==0) {
+            break;
+        }
+        T_FileStream_write(out, buffer, (int32_t)length);
+    }
+
+#if U_PLATFORM_HAS_WIN32_API
+    /* write the symbol table */
+    T_FileStream_write(out, symbols, IMAGE_SIZEOF_SYMBOL);
+    T_FileStream_write(out, &symbolNames, symbolNames.sizeofLongNames);
+#endif
+
+    if(T_FileStream_error(in)) {
+        fprintf(stderr, "genccode: file read error while generating from file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    if(T_FileStream_error(out)) {
+        fprintf(stderr, "genccode: file write error while generating from file %s\n", filename);
+        exit(U_FILE_ACCESS_ERROR);
+    }
+
+    T_FileStream_close(out);
+    T_FileStream_close(in);
+}
+#endif
index 5039f27..12ffc92 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008-2011, International Business Machines
diff --git a/source/tools/toolutil/pkg_gencmn.c b/source/tools/toolutil/pkg_gencmn.c
new file mode 100644 (file)
index 0000000..38cc820
--- /dev/null
@@ -0,0 +1,573 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/******************************************************************************
+ *   Copyright (C) 2008-2012, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+#include "unicode/utypes.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "unicode/utypes.h"
+#include "unicode/putil.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "filestrm.h"
+#include "toolutil.h"
+#include "unicode/uclean.h"
+#include "unewdata.h"
+#include "putilimp.h"
+#include "pkg_gencmn.h"
+
+#define STRING_STORE_SIZE 200000
+
+#define COMMON_DATA_NAME U_ICUDATA_NAME
+#define DATA_TYPE "dat"
+
+/* ICU package data file format (.dat files) ------------------------------- ***
+
+Description of the data format after the usual ICU data file header
+(UDataInfo etc.).
+
+Format version 1
+
+A .dat package file contains a simple Table of Contents of item names,
+followed by the items themselves:
+
+1. ToC table
+
+uint32_t count; - number of items
+UDataOffsetTOCEntry entry[count]; - pair of uint32_t values per item:
+    uint32_t nameOffset; - offset of the item name
+    uint32_t dataOffset; - offset of the item data
+both are byte offsets from the beginning of the data
+
+2. item name strings
+
+All item names are stored as char * strings in one block between the ToC table
+and the data items.
+
+3. data items
+
+The data items are stored following the item names block.
+Each data item is 16-aligned.
+The data items are stored in the sorted order of their names.
+
+Therefore, the top of the name strings block is the offset of the first item,
+the length of the last item is the difference between its offset and
+the .dat file length, and the length of all previous items is the difference
+between its offset and the next one.
+
+----------------------------------------------------------------------------- */
+
+/* UDataInfo cf. udata.h */
+static const UDataInfo dataInfo={
+    sizeof(UDataInfo),
+    0,
+
+    U_IS_BIG_ENDIAN,
+    U_CHARSET_FAMILY,
+    sizeof(UChar),
+    0,
+
+    {0x43, 0x6d, 0x6e, 0x44},     /* dataFormat="CmnD" */
+    {1, 0, 0, 0},                 /* formatVersion */
+    {3, 0, 0, 0}                  /* dataVersion */
+};
+
+static uint32_t maxSize;
+
+static char stringStore[STRING_STORE_SIZE];
+static uint32_t stringTop=0, basenameTotal=0;
+
+typedef struct {
+    char *pathname, *basename;
+    uint32_t basenameLength, basenameOffset, fileSize, fileOffset;
+} File;
+
+#define CHUNK_FILE_COUNT 256
+static File *files = NULL;
+static uint32_t fileCount=0;
+static uint32_t fileMax = 0;
+
+
+static char *symPrefix = NULL;
+
+#define LINE_BUFFER_SIZE 512
+/* prototypes --------------------------------------------------------------- */
+
+static void
+addFile(const char *filename, const char *name, const char *source, UBool sourceTOC, UBool verbose);
+
+static char *
+allocString(uint32_t length);
+
+static int
+compareFiles(const void *file1, const void *file2);
+
+static char *
+pathToFullPath(const char *path, const char *source);
+
+/* map non-tree separator (such as '\') to tree separator ('/') inplace. */
+static void
+fixDirToTreePath(char *s);
+/* -------------------------------------------------------------------------- */
+
+U_CAPI void U_EXPORT2
+createCommonDataFile(const char *destDir, const char *name, const char *entrypointName, const char *type, const char *source, const char *copyRight,
+                     const char *dataFile, uint32_t max_size, UBool sourceTOC, UBool verbose, char *gencmnFileName) {
+    static char buffer[4096];
+    char *line;
+    char *linePtr;
+    char *s = NULL;
+    UErrorCode errorCode=U_ZERO_ERROR;
+    uint32_t i, fileOffset, basenameOffset, length, nread;
+    FileStream *in, *file;
+
+    line = (char *)uprv_malloc(sizeof(char) * LINE_BUFFER_SIZE);
+    if (line == NULL) {
+        fprintf(stderr, "gencmn: unable to allocate memory for line buffer of size %d\n", LINE_BUFFER_SIZE);
+        exit(U_MEMORY_ALLOCATION_ERROR);
+    }
+
+    linePtr = line;
+
+    maxSize = max_size;
+
+    if (destDir == NULL) {
+        destDir = u_getDataDirectory();
+    }
+    if (name == NULL) {
+        name = COMMON_DATA_NAME;
+    }
+    if (type == NULL) {
+        type = DATA_TYPE;
+    }
+    if (source == NULL) {
+        source = ".";
+    }
+
+    if (dataFile == NULL) {
+        in = T_FileStream_stdin();
+    } else {
+        in = T_FileStream_open(dataFile, "r");
+        if(in == NULL) {
+            fprintf(stderr, "gencmn: unable to open input file %s\n", dataFile);
+            exit(U_FILE_ACCESS_ERROR);
+        }
+    }
+
+    if (verbose) {
+        if(sourceTOC) {
+            printf("generating %s_%s.c (table of contents source file)\n", name, type);
+        } else {
+            printf("generating %s.%s (common data file with table of contents)\n", name, type);
+        }
+    }
+
+    /* read the list of files and get their lengths */
+    while((s != NULL && *s != 0) || (s=T_FileStream_readLine(in, (line=linePtr),
+                                                             LINE_BUFFER_SIZE))!=NULL) {
+        /* remove trailing newline characters and parse space separated items */
+        if (s != NULL && *s != 0) {
+            line=s;
+        } else {
+            s=line;
+        }
+        while(*s!=0) {
+            if(*s==' ') {
+                *s=0;
+                ++s;
+                break;
+            } else if(*s=='\r' || *s=='\n') {
+                *s=0;
+                break;
+            }
+            ++s;
+        }
+
+        /* check for comment */
+
+        if (*line == '#') {
+            continue;
+        }
+
+        /* add the file */
+#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
+        {
+          char *t;
+          while((t = uprv_strchr(line,U_FILE_ALT_SEP_CHAR))) {
+            *t = U_FILE_SEP_CHAR;
+          }
+        }
+#endif
+        addFile(getLongPathname(line), name, source, sourceTOC, verbose);
+    }
+
+    uprv_free(linePtr);
+
+    if(in!=T_FileStream_stdin()) {
+        T_FileStream_close(in);
+    }
+
+    if(fileCount==0) {
+        fprintf(stderr, "gencmn: no files listed in %s\n", dataFile == NULL ? "<stdin>" : dataFile);
+        return;
+    }
+
+    /* sort the files by basename */
+    qsort(files, fileCount, sizeof(File), compareFiles);
+
+    if(!sourceTOC) {
+        UNewDataMemory *out;
+
+        /* determine the offsets of all basenames and files in this common one */
+        basenameOffset=4+8*fileCount;
+        fileOffset=(basenameOffset+(basenameTotal+15))&~0xf;
+        for(i=0; i<fileCount; ++i) {
+            files[i].fileOffset=fileOffset;
+            fileOffset+=(files[i].fileSize+15)&~0xf;
+            files[i].basenameOffset=basenameOffset;
+            basenameOffset+=files[i].basenameLength;
+        }
+
+        /* create the output file */
+        out=udata_create(destDir, type, name,
+                         &dataInfo,
+                         copyRight == NULL ? U_COPYRIGHT_STRING : copyRight,
+                         &errorCode);
+        if(U_FAILURE(errorCode)) {
+            fprintf(stderr, "gencmn: udata_create(-d %s -n %s -t %s) failed - %s\n",
+                destDir, name, type,
+                u_errorName(errorCode));
+            exit(errorCode);
+        }
+
+        /* write the table of contents */
+        udata_write32(out, fileCount);
+        for(i=0; i<fileCount; ++i) {
+            udata_write32(out, files[i].basenameOffset);
+            udata_write32(out, files[i].fileOffset);
+        }
+
+        /* write the basenames */
+        for(i=0; i<fileCount; ++i) {
+            udata_writeString(out, files[i].basename, files[i].basenameLength);
+        }
+        length=4+8*fileCount+basenameTotal;
+
+        /* copy the files */
+        for(i=0; i<fileCount; ++i) {
+            /* pad to 16-align the next file */
+            length&=0xf;
+            if(length!=0) {
+                udata_writePadding(out, 16-length);
+            }
+
+            if (verbose) {
+                printf("adding %s (%ld byte%s)\n", files[i].pathname, (long)files[i].fileSize, files[i].fileSize == 1 ? "" : "s");
+            }
+
+            /* copy the next file */
+            file=T_FileStream_open(files[i].pathname, "rb");
+            if(file==NULL) {
+                fprintf(stderr, "gencmn: unable to open listed file %s\n", files[i].pathname);
+                exit(U_FILE_ACCESS_ERROR);
+            }
+            for(nread = 0;;) {
+                length=T_FileStream_read(file, buffer, sizeof(buffer));
+                if(length <= 0) {
+                    break;
+                }
+                nread += length;
+                udata_writeBlock(out, buffer, length);
+            }
+            T_FileStream_close(file);
+            length=files[i].fileSize;
+
+            if (nread != files[i].fileSize) {
+              fprintf(stderr, "gencmn: unable to read %s properly (got %ld/%ld byte%s)\n", files[i].pathname,  (long)nread, (long)files[i].fileSize, files[i].fileSize == 1 ? "" : "s");
+                exit(U_FILE_ACCESS_ERROR);
+            }
+        }
+
+        /* pad to 16-align the last file (cleaner, avoids growing .dat files in icuswap) */
+        length&=0xf;
+        if(length!=0) {
+            udata_writePadding(out, 16-length);
+        }
+
+        /* finish */
+        udata_finish(out, &errorCode);
+        if(U_FAILURE(errorCode)) {
+            fprintf(stderr, "gencmn: udata_finish() failed - %s\n", u_errorName(errorCode));
+            exit(errorCode);
+        }
+    } else {
+        /* write a .c source file with the table of contents */
+        char *filename;
+        FileStream *out;
+
+        /* create the output filename */
+        filename=s=buffer;
+        uprv_strcpy(filename, destDir);
+        s=filename+uprv_strlen(filename);
+        if(s>filename && *(s-1)!=U_FILE_SEP_CHAR) {
+            *s++=U_FILE_SEP_CHAR;
+        }
+        uprv_strcpy(s, name);
+        if(*(type)!=0) {
+            s+=uprv_strlen(s);
+            *s++='_';
+            uprv_strcpy(s, type);
+        }
+        s+=uprv_strlen(s);
+        uprv_strcpy(s, ".c");
+
+        /* open the output file */
+        out=T_FileStream_open(filename, "w");
+        if (gencmnFileName != NULL) {
+            uprv_strcpy(gencmnFileName, filename);
+        }
+        if(out==NULL) {
+            fprintf(stderr, "gencmn: unable to open .c output file %s\n", filename);
+            exit(U_FILE_ACCESS_ERROR);
+        }
+
+        /* write the source file */
+        sprintf(buffer,
+            "/*\n"
+            " * ICU common data table of contents for %s.%s\n"
+            " * Automatically generated by icu/source/tools/gencmn/gencmn .\n"
+            " */\n\n"
+            "#include \"unicode/utypes.h\"\n"
+            "#include \"unicode/udata.h\"\n"
+            "\n"
+            "/* external symbol declarations for data (%d files) */\n",
+                name, type, fileCount);
+        T_FileStream_writeLine(out, buffer);
+
+        sprintf(buffer, "extern const char\n    %s%s[]", symPrefix?symPrefix:"", files[0].pathname);
+        T_FileStream_writeLine(out, buffer);
+        for(i=1; i<fileCount; ++i) {
+            sprintf(buffer, ",\n    %s%s[]", symPrefix?symPrefix:"", files[i].pathname);
+            T_FileStream_writeLine(out, buffer);
+        }
+        T_FileStream_writeLine(out, ";\n\n");
+
+        sprintf(
+            buffer,
+            "U_EXPORT struct {\n"
+            "    uint16_t headerSize;\n"
+            "    uint8_t magic1, magic2;\n"
+            "    UDataInfo info;\n"
+            "    char padding[%lu];\n"
+            "    uint32_t count, reserved;\n"
+            "    struct {\n"
+            "        const char *name;\n"
+            "        const void *data;\n"
+            "    } toc[%lu];\n"
+            "} U_EXPORT2 %s_dat = {\n"
+            "    32, 0xda, 0x27, {\n"
+            "        %lu, 0,\n"
+            "        %u, %u, %u, 0,\n"
+            "        {0x54, 0x6f, 0x43, 0x50},\n"
+            "        {1, 0, 0, 0},\n"
+            "        {0, 0, 0, 0}\n"
+            "    },\n"
+            "    \"\", %lu, 0, {\n",
+            (unsigned long)32-4-sizeof(UDataInfo),
+            (unsigned long)fileCount,
+            entrypointName,
+            (unsigned long)sizeof(UDataInfo),
+            U_IS_BIG_ENDIAN,
+            U_CHARSET_FAMILY,
+            U_SIZEOF_UCHAR,
+            (unsigned long)fileCount
+        );
+        T_FileStream_writeLine(out, buffer);
+
+        sprintf(buffer, "        { \"%s\", %s%s }", files[0].basename, symPrefix?symPrefix:"", files[0].pathname);
+        T_FileStream_writeLine(out, buffer);
+        for(i=1; i<fileCount; ++i) {
+            sprintf(buffer, ",\n        { \"%s\", %s%s }", files[i].basename, symPrefix?symPrefix:"", files[i].pathname);
+            T_FileStream_writeLine(out, buffer);
+        }
+
+        T_FileStream_writeLine(out, "\n    }\n};\n");
+        T_FileStream_close(out);
+
+        uprv_free(symPrefix);
+    }
+}
+
+static void
+addFile(const char *filename, const char *name, const char *source, UBool sourceTOC, UBool verbose) {
+    char *s;
+    uint32_t length;
+    char *fullPath = NULL;
+
+    if(fileCount==fileMax) {
+      fileMax += CHUNK_FILE_COUNT;
+      files = uprv_realloc(files, fileMax*sizeof(files[0])); /* note: never freed. */
+      if(files==NULL) {
+        fprintf(stderr, "pkgdata/gencmn: Could not allocate %u bytes for %d files\n", (unsigned int)(fileMax*sizeof(files[0])), fileCount);
+        exit(U_MEMORY_ALLOCATION_ERROR);
+      }
+    }
+
+    if(!sourceTOC) {
+        FileStream *file;
+
+        if(uprv_pathIsAbsolute(filename)) {
+            fprintf(stderr, "gencmn: Error: absolute path encountered. Old style paths are not supported. Use relative paths such as 'fur.res' or 'translit%cfur.res'.\n\tBad path: '%s'\n", U_FILE_SEP_CHAR, filename);
+            exit(U_ILLEGAL_ARGUMENT_ERROR);
+        }
+        fullPath = pathToFullPath(filename, source);
+        /* store the pathname */
+        length = (uint32_t)(uprv_strlen(filename) + 1 + uprv_strlen(name) + 1);
+        s=allocString(length);
+        uprv_strcpy(s, name);
+        uprv_strcat(s, U_TREE_ENTRY_SEP_STRING);
+        uprv_strcat(s, filename);
+
+        /* get the basename */
+        fixDirToTreePath(s);
+        files[fileCount].basename=s;
+        files[fileCount].basenameLength=length;
+
+        files[fileCount].pathname=fullPath;
+
+        basenameTotal+=length;
+
+        /* try to open the file */
+        file=T_FileStream_open(fullPath, "rb");
+        if(file==NULL) {
+            fprintf(stderr, "gencmn: unable to open listed file %s\n", fullPath);
+            exit(U_FILE_ACCESS_ERROR);
+        }
+
+        /* get the file length */
+        length=T_FileStream_size(file);
+        if(T_FileStream_error(file) || length<=20) {
+            fprintf(stderr, "gencmn: unable to get length of listed file %s\n", fullPath);
+            exit(U_FILE_ACCESS_ERROR);
+        }
+
+        T_FileStream_close(file);
+
+        /* do not add files that are longer than maxSize */
+        if(maxSize && length>maxSize) {
+            if (verbose) {
+                printf("%s ignored (size %ld > %ld)\n", fullPath, (long)length, (long)maxSize);
+            }
+            return;
+        }
+        files[fileCount].fileSize=length;
+    } else {
+        char *t;
+        /* get and store the basename */
+        /* need to include the package name */
+        length = (uint32_t)(uprv_strlen(filename) + 1 + uprv_strlen(name) + 1);
+        s=allocString(length);
+        uprv_strcpy(s, name);
+        uprv_strcat(s, U_TREE_ENTRY_SEP_STRING);
+        uprv_strcat(s, filename);
+        fixDirToTreePath(s);
+        files[fileCount].basename=s;
+        /* turn the basename into an entry point name and store in the pathname field */
+        t=files[fileCount].pathname=allocString(length);
+        while(--length>0) {
+            if(*s=='.' || *s=='-' || *s=='/') {
+                *t='_';
+            } else {
+                *t=*s;
+            }
+            ++s;
+            ++t;
+        }
+        *t=0;
+    }
+    ++fileCount;
+}
+
+static char *
+allocString(uint32_t length) {
+    uint32_t top=stringTop+length;
+    char *p;
+
+    if(top>STRING_STORE_SIZE) {
+        fprintf(stderr, "gencmn: out of memory\n");
+        exit(U_MEMORY_ALLOCATION_ERROR);
+    }
+    p=stringStore+stringTop;
+    stringTop=top;
+    return p;
+}
+
+static char *
+pathToFullPath(const char *path, const char *source) {
+    int32_t length;
+    int32_t newLength;
+    char *fullPath;
+    int32_t n;
+
+    length = (uint32_t)(uprv_strlen(path) + 1);
+    newLength = (length + 1 + (int32_t)uprv_strlen(source));
+    fullPath = uprv_malloc(newLength);
+    if(source != NULL) {
+        uprv_strcpy(fullPath, source);
+        uprv_strcat(fullPath, U_FILE_SEP_STRING);
+    } else {
+        fullPath[0] = 0;
+    }
+    n = (int32_t)uprv_strlen(fullPath);
+    fullPath[n] = 0;       /* Suppress compiler warning for unused variable n    */
+                           /*  when conditional code below is not compiled.      */
+    uprv_strcat(fullPath, path);
+
+#if (U_FILE_ALT_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
+#if (U_FILE_ALT_SEP_CHAR != U_FILE_SEP_CHAR)
+    /* replace tree separator (such as '/') with file sep char (such as ':' or '\\') */
+    for(;fullPath[n];n++) {
+        if(fullPath[n] == U_FILE_ALT_SEP_CHAR) {
+            fullPath[n] = U_FILE_SEP_CHAR;
+        }
+    }
+#endif
+#endif
+#if (U_FILE_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
+    /* replace tree separator (such as '/') with file sep char (such as ':' or '\\') */
+    for(;fullPath[n];n++) {
+        if(fullPath[n] == U_TREE_ENTRY_SEP_CHAR) {
+            fullPath[n] = U_FILE_SEP_CHAR;
+        }
+    }
+#endif
+    return fullPath;
+}
+
+static int
+compareFiles(const void *file1, const void *file2) {
+    /* sort by basename */
+    return uprv_strcmp(((File *)file1)->basename, ((File *)file2)->basename);
+}
+
+static void
+fixDirToTreePath(char *s)
+{
+#if (U_FILE_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR) || ((U_FILE_ALT_SEP_CHAR != U_FILE_SEP_CHAR) && (U_FILE_ALT_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR))
+    char *t;
+#endif
+#if (U_FILE_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
+    for(t=s;t=uprv_strchr(t,U_FILE_SEP_CHAR);) {
+        *t = U_TREE_ENTRY_SEP_CHAR;
+    }
+#endif
+#if (U_FILE_ALT_SEP_CHAR != U_FILE_SEP_CHAR) && (U_FILE_ALT_SEP_CHAR != U_TREE_ENTRY_SEP_CHAR)
+    for(t=s;t=uprv_strchr(t,U_FILE_ALT_SEP_CHAR);) {
+        *t = U_TREE_ENTRY_SEP_CHAR;
+    }
+#endif
+}
index 2382399..62f8327 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008, International Business Machines
index ce0bfc2..e679c23 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008-2015, International Business Machines
index 638056e..3d620f7 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
  *   Copyright (C) 2008-2016, International Business Machines
index 29abd8d..c9fe81b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  pkg_imp.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index cb23b45..b4bcf18 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  pkgitems.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index cccde81..18d317e 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ppucd.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -515,12 +515,12 @@ PreparsedUCD::parseCodePointRange(const char *s, UChar32 &start, UChar32 &end, U
 
 void
 PreparsedUCD::parseString(const char *s, UnicodeString &uni, UErrorCode &errorCode) {
-    UChar *buffer=toUCharPtr(uni.getBuffer(-1));
+    UChar *buffer=uni.getBuffer(-1);
     int32_t length=u_parseString(s, buffer, uni.getCapacity(), NULL, &errorCode);
     if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
         errorCode=U_ZERO_ERROR;
         uni.releaseBuffer(0);
-        buffer=toUCharPtr(uni.getBuffer(length));
+        buffer=uni.getBuffer(length);
         length=u_parseString(s, buffer, uni.getCapacity(), NULL, &errorCode);
     }
     uni.releaseBuffer(length);
index 3cd6fee..593bd24 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -6,7 +6,7 @@
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  ppucd.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 620a387..6cc2162 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  swapimpl.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 8c6474f..0e4d417 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  swapimpl.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index fb7263d..6afce5b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  toolutil.c
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 7ab665c..ad51438 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  toolutil.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 4ea1907..6567fae 100644 (file)
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin\icutu59.dll</OutputFile>
+      <OutputFile>..\..\..\bin\icutu58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ProgramDatabaseFile>.\..\..\..\lib\icutu.pdb</ProgramDatabaseFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin\icutu59d.dll</OutputFile>
+      <OutputFile>..\..\..\bin\icutu58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <WarningLevel>Level3</WarningLevel>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin64\icutu59.dll</OutputFile>
+      <OutputFile>..\..\..\bin64\icutu58.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ProgramDatabaseFile>.\..\..\..\lib64\icutu.pdb</ProgramDatabaseFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0409</Culture>
     </ResourceCompile>
     <Link>
-      <OutputFile>..\..\..\bin64\icutu59d.dll</OutputFile>
+      <OutputFile>..\..\..\bin64\icutu58d.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <AdditionalLibraryDirectories>..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="denseranges.cpp" />
-    <ClCompile Include="filestrm.cpp" />
+    <ClCompile Include="filestrm.c" />
     <ClCompile Include="filetools.cpp" />
-    <ClCompile Include="flagparser.cpp" />
+    <ClCompile Include="flagparser.c" />
     <ClCompile Include="package.cpp" />
-    <ClCompile Include="pkg_genc.cpp">
+    <ClCompile Include="pkg_genc.c">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
-    <ClCompile Include="pkg_gencmn.cpp">
+    <ClCompile Include="pkg_gencmn.c">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="pkg_icu.cpp" />
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
     <ClCompile Include="ucbuf.cpp" />
-    <ClCompile Include="ucm.cpp" />
-    <ClCompile Include="ucmstate.cpp" />
-    <ClCompile Include="unewdata.cpp" />
-    <ClCompile Include="uoptions.cpp" />
-    <ClCompile Include="uparse.cpp" />
-    <ClCompile Include="writesrc.cpp" />
+    <ClCompile Include="ucm.c" />
+    <ClCompile Include="ucmstate.c" />
+    <ClCompile Include="unewdata.c" />
+    <ClCompile Include="uoptions.c" />
+    <ClCompile Include="uparse.c" />
+    <ClCompile Include="writesrc.c" />
     <ClCompile Include="xmlparser.cpp">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index fa9edd1..a203cfa 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 81f8ba6..3894c89 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
index 5354fe1..2f67641 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
diff --git a/source/tools/toolutil/ucm.c b/source/tools/toolutil/ucm.c
new file mode 100644 (file)
index 0000000..8d4cdfc
--- /dev/null
@@ -0,0 +1,1191 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2003-2013, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ucm.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2003jun20
+*   created by: Markus W. Scherer
+*
+*   This file reads a .ucm file, stores its mappings and sorts them.
+*   It implements handling of Unicode conversion mappings from .ucm files
+*   for makeconv, canonucm, rptp2ucm, etc.
+*
+*   Unicode code point sequences with a length of more than 1,
+*   as well as byte sequences with more than 4 bytes or more than one complete
+*   character sequence are handled to support m:n mappings.
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "cstring.h"
+#include "cmemory.h"
+#include "filestrm.h"
+#include "uarrsort.h"
+#include "ucnvmbcs.h"
+#include "ucnv_bld.h"
+#include "ucnv_ext.h"
+#include "uparse.h"
+#include "ucm.h"
+#include <stdio.h>
+
+#if !UCONFIG_NO_CONVERSION
+
+/* -------------------------------------------------------------------------- */
+
+static void
+printMapping(UCMapping *m, UChar32 *codePoints, uint8_t *bytes, FILE *f) {
+    int32_t j;
+
+    for(j=0; j<m->uLen; ++j) {
+        fprintf(f, "<U%04lX>", (long)codePoints[j]);
+    }
+
+    fputc(' ', f);
+
+    for(j=0; j<m->bLen; ++j) {
+        fprintf(f, "\\x%02X", bytes[j]);
+    }
+
+    if(m->f>=0) {
+        fprintf(f, " |%u\n", m->f);
+    } else {
+        fputs("\n", f);
+    }
+}
+
+U_CAPI void U_EXPORT2
+ucm_printMapping(UCMTable *table, UCMapping *m, FILE *f) {
+    printMapping(m, UCM_GET_CODE_POINTS(table, m), UCM_GET_BYTES(table, m), f);
+}
+
+U_CAPI void U_EXPORT2
+ucm_printTable(UCMTable *table, FILE *f, UBool byUnicode) {
+    UCMapping *m;
+    int32_t i, length;
+
+    m=table->mappings;
+    length=table->mappingsLength;
+    if(byUnicode) {
+        for(i=0; i<length; ++m, ++i) {
+            ucm_printMapping(table, m, f);
+        }
+    } else {
+        const int32_t *map=table->reverseMap;
+        for(i=0; i<length; ++i) {
+            ucm_printMapping(table, m+map[i], f);
+        }
+    }
+}
+
+/* mapping comparisons ------------------------------------------------------ */
+
+static int32_t
+compareUnicode(UCMTable *lTable, const UCMapping *l,
+               UCMTable *rTable, const UCMapping *r) {
+    const UChar32 *lu, *ru;
+    int32_t result, i, length;
+
+    if(l->uLen==1 && r->uLen==1) {
+        /* compare two single code points */
+        return l->u-r->u;
+    }
+
+    /* get pointers to the code point sequences */
+    lu=UCM_GET_CODE_POINTS(lTable, l);
+    ru=UCM_GET_CODE_POINTS(rTable, r);
+
+    /* get the minimum length */
+    if(l->uLen<=r->uLen) {
+        length=l->uLen;
+    } else {
+        length=r->uLen;
+    }
+
+    /* compare the code points */
+    for(i=0; i<length; ++i) {
+        result=lu[i]-ru[i];
+        if(result!=0) {
+            return result;
+        }
+    }
+
+    /* compare the lengths */
+    return l->uLen-r->uLen;
+}
+
+static int32_t
+compareBytes(UCMTable *lTable, const UCMapping *l,
+             UCMTable *rTable, const UCMapping *r,
+             UBool lexical) {
+    const uint8_t *lb, *rb;
+    int32_t result, i, length;
+
+    /*
+     * A lexical comparison is used for sorting in the builder, to allow
+     * an efficient search for a byte sequence that could be a prefix
+     * of a previously entered byte sequence.
+     *
+     * Comparing by lengths first is for compatibility with old .ucm tools
+     * like canonucm and rptp2ucm.
+     */
+    if(lexical) {
+        /* get the minimum length and continue */
+        if(l->bLen<=r->bLen) {
+            length=l->bLen;
+        } else {
+            length=r->bLen;
+        }
+    } else {
+        /* compare lengths first */
+        result=l->bLen-r->bLen;
+        if(result!=0) {
+            return result;
+        } else {
+            length=l->bLen;
+        }
+    }
+
+    /* get pointers to the byte sequences */
+    lb=UCM_GET_BYTES(lTable, l);
+    rb=UCM_GET_BYTES(rTable, r);
+
+    /* compare the bytes */
+    for(i=0; i<length; ++i) {
+        result=lb[i]-rb[i];
+        if(result!=0) {
+            return result;
+        }
+    }
+
+    /* compare the lengths */
+    return l->bLen-r->bLen;
+}
+
+/* compare UCMappings for sorting */
+static int32_t
+compareMappings(UCMTable *lTable, const UCMapping *l,
+                UCMTable *rTable, const UCMapping *r,
+                UBool uFirst) {
+    int32_t result;
+
+    /* choose which side to compare first */
+    if(uFirst) {
+        /* Unicode then bytes */
+        result=compareUnicode(lTable, l, rTable, r);
+        if(result==0) {
+            result=compareBytes(lTable, l, rTable, r, FALSE); /* not lexically, like canonucm */
+        }
+    } else {
+        /* bytes then Unicode */
+        result=compareBytes(lTable, l, rTable, r, TRUE); /* lexically, for builder */
+        if(result==0) {
+            result=compareUnicode(lTable, l, rTable, r);
+        }
+    }
+
+    if(result!=0) {
+        return result;
+    }
+
+    /* compare the flags */
+    return l->f-r->f;
+}
+
+/* sorting by Unicode first sorts mappings directly */
+static int32_t
+compareMappingsUnicodeFirst(const void *context, const void *left, const void *right) {
+    return compareMappings(
+        (UCMTable *)context, (const UCMapping *)left,
+        (UCMTable *)context, (const UCMapping *)right, TRUE);
+}
+
+/* sorting by bytes first sorts the reverseMap; use indirection to mappings */
+static int32_t
+compareMappingsBytesFirst(const void *context, const void *left, const void *right) {
+    UCMTable *table=(UCMTable *)context;
+    int32_t l=*(const int32_t *)left, r=*(const int32_t *)right;
+    return compareMappings(
+        table, table->mappings+l,
+        table, table->mappings+r, FALSE);
+}
+
+U_CAPI void U_EXPORT2
+ucm_sortTable(UCMTable *t) {
+    UErrorCode errorCode;
+    int32_t i;
+
+    if(t->isSorted) {
+        return;
+    }
+
+    errorCode=U_ZERO_ERROR;
+
+    /* 1. sort by Unicode first */
+    uprv_sortArray(t->mappings, t->mappingsLength, sizeof(UCMapping),
+                   compareMappingsUnicodeFirst, t,
+                   FALSE, &errorCode);
+
+    /* build the reverseMap */
+    if(t->reverseMap==NULL) {
+        /*
+         * allocate mappingsCapacity instead of mappingsLength so that
+         * if mappings are added, the reverseMap need not be
+         * reallocated each time
+         * (see ucm_moveMappings() and ucm_addMapping())
+         */
+        t->reverseMap=(int32_t *)uprv_malloc(t->mappingsCapacity*sizeof(int32_t));
+        if(t->reverseMap==NULL) {
+            fprintf(stderr, "ucm error: unable to allocate reverseMap\n");
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+    }
+    for(i=0; i<t->mappingsLength; ++i) {
+        t->reverseMap[i]=i;
+    }
+
+    /* 2. sort reverseMap by mappings bytes first */
+    uprv_sortArray(t->reverseMap, t->mappingsLength, sizeof(int32_t),
+                   compareMappingsBytesFirst, t,
+                   FALSE, &errorCode);
+
+    if(U_FAILURE(errorCode)) {
+        fprintf(stderr, "ucm error: sortTable()/uprv_sortArray() fails - %s\n",
+                u_errorName(errorCode));
+        exit(errorCode);
+    }
+
+    t->isSorted=TRUE;
+}
+
+/*
+ * remove mappings with their move flag set from the base table
+ * and move some of them (with UCM_MOVE_TO_EXT) to the extension table
+ */
+U_CAPI void U_EXPORT2
+ucm_moveMappings(UCMTable *base, UCMTable *ext) {
+    UCMapping *mb, *mbLimit;
+    int8_t flag;
+
+    mb=base->mappings;
+    mbLimit=mb+base->mappingsLength;
+
+    while(mb<mbLimit) {
+        flag=mb->moveFlag;
+        if(flag!=0) {
+            /* reset the move flag */
+            mb->moveFlag=0;
+
+            if(ext!=NULL && (flag&UCM_MOVE_TO_EXT)) {
+                /* add the mapping to the extension table */
+                ucm_addMapping(ext, mb, UCM_GET_CODE_POINTS(base, mb), UCM_GET_BYTES(base, mb));
+            }
+
+            /* remove this mapping: move the last base mapping down and overwrite the current one */
+            if(mb<(mbLimit-1)) {
+                uprv_memcpy(mb, mbLimit-1, sizeof(UCMapping));
+            }
+            --mbLimit;
+            --base->mappingsLength;
+            base->isSorted=FALSE;
+        } else {
+            ++mb;
+        }
+    }
+}
+
+enum {
+    NEEDS_MOVE=1,
+    HAS_ERRORS=2
+};
+
+static uint8_t
+checkBaseExtUnicode(UCMStates *baseStates, UCMTable *base, UCMTable *ext,
+                    UBool moveToExt, UBool intersectBase) {
+    UCMapping *mb, *me, *mbLimit, *meLimit;
+    int32_t cmp;
+    uint8_t result;
+
+    mb=base->mappings;
+    mbLimit=mb+base->mappingsLength;
+
+    me=ext->mappings;
+    meLimit=me+ext->mappingsLength;
+
+    result=0;
+
+    for(;;) {
+        /* skip irrelevant mappings on both sides */
+        for(;;) {
+            if(mb==mbLimit) {
+                return result;
+            }
+
+            if((0<=mb->f && mb->f<=2) || mb->f==4) {
+                break;
+            }
+
+            ++mb;
+        }
+
+        for(;;) {
+            if(me==meLimit) {
+                return result;
+            }
+
+            if((0<=me->f && me->f<=2) || me->f==4) {
+                break;
+            }
+
+            ++me;
+        }
+
+        /* compare the base and extension mappings */
+        cmp=compareUnicode(base, mb, ext, me);
+        if(cmp<0) {
+            if(intersectBase && (intersectBase!=2 || mb->bLen>1)) {
+                /*
+                 * mapping in base but not in ext, move it
+                 *
+                 * if ext is DBCS, move DBCS mappings here
+                 * and check SBCS ones for Unicode prefix below
+                 */
+                mb->moveFlag|=UCM_MOVE_TO_EXT;
+                result|=NEEDS_MOVE;
+
+            /* does mb map from an input sequence that is a prefix of me's? */
+            } else if( mb->uLen<me->uLen &&
+                0==uprv_memcmp(UCM_GET_CODE_POINTS(base, mb), UCM_GET_CODE_POINTS(ext, me), 4*mb->uLen)
+            ) {
+                if(moveToExt) {
+                    /* mark this mapping to be moved to the extension table */
+                    mb->moveFlag|=UCM_MOVE_TO_EXT;
+                    result|=NEEDS_MOVE;
+                } else {
+                    fprintf(stderr,
+                            "ucm error: the base table contains a mapping whose input sequence\n"
+                            "           is a prefix of the input sequence of an extension mapping\n");
+                    ucm_printMapping(base, mb, stderr);
+                    ucm_printMapping(ext, me, stderr);
+                    result|=HAS_ERRORS;
+                }
+            }
+
+            ++mb;
+        } else if(cmp==0) {
+            /*
+             * same output: remove the extension mapping,
+             * otherwise treat as an error
+             */
+            if( mb->f==me->f && mb->bLen==me->bLen &&
+                0==uprv_memcmp(UCM_GET_BYTES(base, mb), UCM_GET_BYTES(ext, me), mb->bLen)
+            ) {
+                me->moveFlag|=UCM_REMOVE_MAPPING;
+                result|=NEEDS_MOVE;
+            } else if(intersectBase) {
+                /* mapping in base but not in ext, move it */
+                mb->moveFlag|=UCM_MOVE_TO_EXT;
+                result|=NEEDS_MOVE;
+            } else {
+                fprintf(stderr,
+                        "ucm error: the base table contains a mapping whose input sequence\n"
+                        "           is the same as the input sequence of an extension mapping\n"
+                        "           but it maps differently\n");
+                ucm_printMapping(base, mb, stderr);
+                ucm_printMapping(ext, me, stderr);
+                result|=HAS_ERRORS;
+            }
+
+            ++mb;
+        } else /* cmp>0 */ {
+            ++me;
+        }
+    }
+}
+
+static uint8_t
+checkBaseExtBytes(UCMStates *baseStates, UCMTable *base, UCMTable *ext,
+                  UBool moveToExt, UBool intersectBase) {
+    UCMapping *mb, *me;
+    int32_t *baseMap, *extMap;
+    int32_t b, e, bLimit, eLimit, cmp;
+    uint8_t result;
+    UBool isSISO;
+
+    baseMap=base->reverseMap;
+    extMap=ext->reverseMap;
+
+    b=e=0;
+    bLimit=base->mappingsLength;
+    eLimit=ext->mappingsLength;
+
+    result=0;
+
+    isSISO=(UBool)(baseStates->outputType==MBCS_OUTPUT_2_SISO);
+
+    for(;;) {
+        /* skip irrelevant mappings on both sides */
+        for(;; ++b) {
+            if(b==bLimit) {
+                return result;
+            }
+            mb=base->mappings+baseMap[b];
+
+            if(intersectBase==2 && mb->bLen==1) {
+                /*
+                 * comparing a base against a DBCS extension:
+                 * leave SBCS base mappings alone
+                 */
+                continue;
+            }
+
+            if(mb->f==0 || mb->f==3) {
+                break;
+            }
+        }
+
+        for(;;) {
+            if(e==eLimit) {
+                return result;
+            }
+            me=ext->mappings+extMap[e];
+
+            if(me->f==0 || me->f==3) {
+                break;
+            }
+
+            ++e;
+        }
+
+        /* compare the base and extension mappings */
+        cmp=compareBytes(base, mb, ext, me, TRUE);
+        if(cmp<0) {
+            if(intersectBase) {
+                /* mapping in base but not in ext, move it */
+                mb->moveFlag|=UCM_MOVE_TO_EXT;
+                result|=NEEDS_MOVE;
+
+            /*
+             * does mb map from an input sequence that is a prefix of me's?
+             * for SI/SO tables, a single byte is never a prefix because it
+             * occurs in a separate single-byte state
+             */
+            } else if( mb->bLen<me->bLen &&
+                (!isSISO || mb->bLen>1) &&
+                0==uprv_memcmp(UCM_GET_BYTES(base, mb), UCM_GET_BYTES(ext, me), mb->bLen)
+            ) {
+                if(moveToExt) {
+                    /* mark this mapping to be moved to the extension table */
+                    mb->moveFlag|=UCM_MOVE_TO_EXT;
+                    result|=NEEDS_MOVE;
+                } else {
+                    fprintf(stderr,
+                            "ucm error: the base table contains a mapping whose input sequence\n"
+                            "           is a prefix of the input sequence of an extension mapping\n");
+                    ucm_printMapping(base, mb, stderr);
+                    ucm_printMapping(ext, me, stderr);
+                    result|=HAS_ERRORS;
+                }
+            }
+
+            ++b;
+        } else if(cmp==0) {
+            /*
+             * same output: remove the extension mapping,
+             * otherwise treat as an error
+             */
+            if( mb->f==me->f && mb->uLen==me->uLen &&
+                0==uprv_memcmp(UCM_GET_CODE_POINTS(base, mb), UCM_GET_CODE_POINTS(ext, me), 4*mb->uLen)
+            ) {
+                me->moveFlag|=UCM_REMOVE_MAPPING;
+                result|=NEEDS_MOVE;
+            } else if(intersectBase) {
+                /* mapping in base but not in ext, move it */
+                mb->moveFlag|=UCM_MOVE_TO_EXT;
+                result|=NEEDS_MOVE;
+            } else {
+                fprintf(stderr,
+                        "ucm error: the base table contains a mapping whose input sequence\n"
+                        "           is the same as the input sequence of an extension mapping\n"
+                        "           but it maps differently\n");
+                ucm_printMapping(base, mb, stderr);
+                ucm_printMapping(ext, me, stderr);
+                result|=HAS_ERRORS;
+            }
+
+            ++b;
+        } else /* cmp>0 */ {
+            ++e;
+        }
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+ucm_checkValidity(UCMTable *table, UCMStates *baseStates) {
+    UCMapping *m, *mLimit;
+    int32_t count;
+    UBool isOK;
+
+    m=table->mappings;
+    mLimit=m+table->mappingsLength;
+    isOK=TRUE;
+
+    while(m<mLimit) {
+        count=ucm_countChars(baseStates, UCM_GET_BYTES(table, m), m->bLen);
+        if(count<1) {
+            ucm_printMapping(table, m, stderr);
+            isOK=FALSE;
+        }
+        ++m;
+    }
+
+    return isOK;
+}
+
+U_CAPI UBool U_EXPORT2
+ucm_checkBaseExt(UCMStates *baseStates,
+                 UCMTable *base, UCMTable *ext, UCMTable *moveTarget,
+                 UBool intersectBase) {
+    uint8_t result;
+
+    /* if we have an extension table, we must always use precision flags */
+    if(base->flagsType&UCM_FLAGS_IMPLICIT) {
+        fprintf(stderr, "ucm error: the base table contains mappings without precision flags\n");
+        return FALSE;
+    }
+    if(ext->flagsType&UCM_FLAGS_IMPLICIT) {
+        fprintf(stderr, "ucm error: extension table contains mappings without precision flags\n");
+        return FALSE;
+    }
+
+    /* checking requires both tables to be sorted */
+    ucm_sortTable(base);
+    ucm_sortTable(ext);
+
+    /* check */
+    result=
+        checkBaseExtUnicode(baseStates, base, ext, (UBool)(moveTarget!=NULL), intersectBase)|
+        checkBaseExtBytes(baseStates, base, ext, (UBool)(moveTarget!=NULL), intersectBase);
+
+    if(result&HAS_ERRORS) {
+        return FALSE;
+    }
+
+    if(result&NEEDS_MOVE) {
+        ucm_moveMappings(ext, NULL);
+        ucm_moveMappings(base, moveTarget);
+        ucm_sortTable(base);
+        ucm_sortTable(ext);
+        if(moveTarget!=NULL) {
+            ucm_sortTable(moveTarget);
+        }
+    }
+
+    return TRUE;
+}
+
+/* merge tables for rptp2ucm ------------------------------------------------ */
+
+U_CAPI void U_EXPORT2
+ucm_mergeTables(UCMTable *fromUTable, UCMTable *toUTable,
+                const uint8_t *subchar, int32_t subcharLength,
+                uint8_t subchar1) {
+    UCMapping *fromUMapping, *toUMapping;
+    int32_t fromUIndex, toUIndex, fromUTop, toUTop, cmp;
+
+    ucm_sortTable(fromUTable);
+    ucm_sortTable(toUTable);
+
+    fromUMapping=fromUTable->mappings;
+    toUMapping=toUTable->mappings;
+
+    fromUTop=fromUTable->mappingsLength;
+    toUTop=toUTable->mappingsLength;
+
+    fromUIndex=toUIndex=0;
+
+    while(fromUIndex<fromUTop && toUIndex<toUTop) {
+        cmp=compareMappings(fromUTable, fromUMapping, toUTable, toUMapping, TRUE);
+        if(cmp==0) {
+            /* equal: roundtrip, nothing to do (flags are initially 0) */
+            ++fromUMapping;
+            ++toUMapping;
+
+            ++fromUIndex;
+            ++toUIndex;
+        } else if(cmp<0) {
+            /*
+             * the fromU mapping does not have a toU counterpart:
+             * fallback Unicode->codepage
+             */
+            if( (fromUMapping->bLen==subcharLength &&
+                 0==uprv_memcmp(UCM_GET_BYTES(fromUTable, fromUMapping), subchar, subcharLength)) ||
+                (subchar1!=0 && fromUMapping->bLen==1 && fromUMapping->b.bytes[0]==subchar1)
+            ) {
+                fromUMapping->f=2; /* SUB mapping */
+            } else {
+                fromUMapping->f=1; /* normal fallback */
+            }
+
+            ++fromUMapping;
+            ++fromUIndex;
+        } else {
+            /*
+             * the toU mapping does not have a fromU counterpart:
+             * (reverse) fallback codepage->Unicode, copy it to the fromU table
+             */
+
+            /* ignore reverse fallbacks to Unicode SUB */
+            if(!(toUMapping->uLen==1 && (toUMapping->u==0xfffd || toUMapping->u==0x1a))) {
+                toUMapping->f=3; /* reverse fallback */
+                ucm_addMapping(fromUTable, toUMapping, UCM_GET_CODE_POINTS(toUTable, toUMapping), UCM_GET_BYTES(toUTable, toUMapping));
+
+                /* the table may have been reallocated */
+                fromUMapping=fromUTable->mappings+fromUIndex;
+            }
+
+            ++toUMapping;
+            ++toUIndex;
+        }
+    }
+
+    /* either one or both tables are exhausted */
+    while(fromUIndex<fromUTop) {
+        /* leftover fromU mappings are fallbacks */
+        if( (fromUMapping->bLen==subcharLength &&
+             0==uprv_memcmp(UCM_GET_BYTES(fromUTable, fromUMapping), subchar, subcharLength)) ||
+            (subchar1!=0 && fromUMapping->bLen==1 && fromUMapping->b.bytes[0]==subchar1)
+        ) {
+            fromUMapping->f=2; /* SUB mapping */
+        } else {
+            fromUMapping->f=1; /* normal fallback */
+        }
+
+        ++fromUMapping;
+        ++fromUIndex;
+    }
+
+    while(toUIndex<toUTop) {
+        /* leftover toU mappings are reverse fallbacks */
+
+        /* ignore reverse fallbacks to Unicode SUB */
+        if(!(toUMapping->uLen==1 && (toUMapping->u==0xfffd || toUMapping->u==0x1a))) {
+            toUMapping->f=3; /* reverse fallback */
+            ucm_addMapping(fromUTable, toUMapping, UCM_GET_CODE_POINTS(toUTable, toUMapping), UCM_GET_BYTES(toUTable, toUMapping));
+        }
+
+        ++toUMapping;
+        ++toUIndex;
+    }
+
+    fromUTable->isSorted=FALSE;
+}
+
+/* separate extension mappings out of base table for rptp2ucm --------------- */
+
+U_CAPI UBool U_EXPORT2
+ucm_separateMappings(UCMFile *ucm, UBool isSISO) {
+    UCMTable *table;
+    UCMapping *m, *mLimit;
+    int32_t type;
+    UBool needsMove, isOK;
+
+    table=ucm->base;
+    m=table->mappings;
+    mLimit=m+table->mappingsLength;
+
+    needsMove=FALSE;
+    isOK=TRUE;
+
+    for(; m<mLimit; ++m) {
+        if(isSISO && m->bLen==1 && (m->b.bytes[0]==0xe || m->b.bytes[0]==0xf)) {
+            fprintf(stderr, "warning: removing illegal mapping from an SI/SO-stateful table\n");
+            ucm_printMapping(table, m, stderr);
+            m->moveFlag|=UCM_REMOVE_MAPPING;
+            needsMove=TRUE;
+            continue;
+        }
+
+        type=ucm_mappingType(
+                &ucm->states, m,
+                UCM_GET_CODE_POINTS(table, m), UCM_GET_BYTES(table, m));
+        if(type<0) {
+            /* illegal byte sequence */
+            printMapping(m, UCM_GET_CODE_POINTS(table, m), UCM_GET_BYTES(table, m), stderr);
+            isOK=FALSE;
+        } else if(type>0) {
+            m->moveFlag|=UCM_MOVE_TO_EXT;
+            needsMove=TRUE;
+        }
+    }
+
+    if(!isOK) {
+        return FALSE;
+    }
+    if(needsMove) {
+        ucm_moveMappings(ucm->base, ucm->ext);
+        return ucm_checkBaseExt(&ucm->states, ucm->base, ucm->ext, ucm->ext, FALSE);
+    } else {
+        ucm_sortTable(ucm->base);
+        return TRUE;
+    }
+}
+
+/* ucm parser --------------------------------------------------------------- */
+
+U_CAPI int8_t U_EXPORT2
+ucm_parseBytes(uint8_t bytes[UCNV_EXT_MAX_BYTES], const char *line, const char **ps) {
+    const char *s=*ps;
+    char *end;
+    uint8_t byte;
+    int8_t bLen;
+
+    bLen=0;
+    for(;;) {
+        /* skip an optional plus sign */
+        if(bLen>0 && *s=='+') {
+            ++s;
+        }
+        if(*s!='\\') {
+            break;
+        }
+
+        if( s[1]!='x' ||
+            (byte=(uint8_t)uprv_strtoul(s+2, &end, 16), end)!=s+4
+        ) {
+            fprintf(stderr, "ucm error: byte must be formatted as \\xXX (2 hex digits) - \"%s\"\n", line);
+            return -1;
+        }
+
+        if(bLen==UCNV_EXT_MAX_BYTES) {
+            fprintf(stderr, "ucm error: too many bytes on \"%s\"\n", line);
+            return -1;
+        }
+        bytes[bLen++]=byte;
+        s=end;
+    }
+
+    *ps=s;
+    return bLen;
+}
+
+/* parse a mapping line; must not be empty */
+U_CAPI UBool U_EXPORT2
+ucm_parseMappingLine(UCMapping *m,
+                     UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
+                     uint8_t bytes[UCNV_EXT_MAX_BYTES],
+                     const char *line) {
+    const char *s;
+    char *end;
+    UChar32 cp;
+    int32_t u16Length;
+    int8_t uLen, bLen, f;
+
+    s=line;
+    uLen=bLen=0;
+
+    /* parse code points */
+    for(;;) {
+        /* skip an optional plus sign */
+        if(uLen>0 && *s=='+') {
+            ++s;
+        }
+        if(*s!='<') {
+            break;
+        }
+
+        if( s[1]!='U' ||
+            (cp=(UChar32)uprv_strtoul(s+2, &end, 16), end)==s+2 ||
+            *end!='>'
+        ) {
+            fprintf(stderr, "ucm error: Unicode code point must be formatted as <UXXXX> (1..6 hex digits) - \"%s\"\n", line);
+            return FALSE;
+        }
+        if((uint32_t)cp>0x10ffff || U_IS_SURROGATE(cp)) {
+            fprintf(stderr, "ucm error: Unicode code point must be 0..d7ff or e000..10ffff - \"%s\"\n", line);
+            return FALSE;
+        }
+
+        if(uLen==UCNV_EXT_MAX_UCHARS) {
+            fprintf(stderr, "ucm error: too many code points on \"%s\"\n", line);
+            return FALSE;
+        }
+        codePoints[uLen++]=cp;
+        s=end+1;
+    }
+
+    if(uLen==0) {
+        fprintf(stderr, "ucm error: no Unicode code points on \"%s\"\n", line);
+        return FALSE;
+    } else if(uLen==1) {
+        m->u=codePoints[0];
+    } else {
+        UErrorCode errorCode=U_ZERO_ERROR;
+        u_strFromUTF32(NULL, 0, &u16Length, codePoints, uLen, &errorCode);
+        if( (U_FAILURE(errorCode) && errorCode!=U_BUFFER_OVERFLOW_ERROR) ||
+            u16Length>UCNV_EXT_MAX_UCHARS
+        ) {
+            fprintf(stderr, "ucm error: too many UChars on \"%s\"\n", line);
+            return FALSE;
+        }
+    }
+
+    s=u_skipWhitespace(s);
+
+    /* parse bytes */
+    bLen=ucm_parseBytes(bytes, line, &s);
+
+    if(bLen<0) {
+        return FALSE;
+    } else if(bLen==0) {
+        fprintf(stderr, "ucm error: no bytes on \"%s\"\n", line);
+        return FALSE;
+    } else if(bLen<=4) {
+        uprv_memcpy(m->b.bytes, bytes, bLen);
+    }
+
+    /* skip everything until the fallback indicator, even the start of a comment */
+    for(;;) {
+        if(*s==0) {
+            f=-1; /* no fallback indicator */
+            break;
+        } else if(*s=='|') {
+            f=(int8_t)(s[1]-'0');
+            if((uint8_t)f>4) {
+                fprintf(stderr, "ucm error: fallback indicator must be |0..|4 - \"%s\"\n", line);
+                return FALSE;
+            }
+            break;
+        }
+        ++s;
+    }
+
+    m->uLen=uLen;
+    m->bLen=bLen;
+    m->f=f;
+    return TRUE;
+}
+
+/* general APIs ------------------------------------------------------------- */
+
+U_CAPI UCMTable * U_EXPORT2
+ucm_openTable() {
+    UCMTable *table=(UCMTable *)uprv_malloc(sizeof(UCMTable));
+    if(table==NULL) {
+        fprintf(stderr, "ucm error: unable to allocate a UCMTable\n");
+        exit(U_MEMORY_ALLOCATION_ERROR);
+    }
+
+    memset(table, 0, sizeof(UCMTable));
+    return table;
+}
+
+U_CAPI void U_EXPORT2
+ucm_closeTable(UCMTable *table) {
+    if(table!=NULL) {
+        uprv_free(table->mappings);
+        uprv_free(table->codePoints);
+        uprv_free(table->bytes);
+        uprv_free(table->reverseMap);
+        uprv_free(table);
+    }
+}
+
+U_CAPI void U_EXPORT2
+ucm_resetTable(UCMTable *table) {
+    if(table!=NULL) {
+        table->mappingsLength=0;
+        table->flagsType=0;
+        table->unicodeMask=0;
+        table->bytesLength=table->codePointsLength=0;
+        table->isSorted=FALSE;
+    }
+}
+
+U_CAPI void U_EXPORT2
+ucm_addMapping(UCMTable *table,
+               UCMapping *m,
+               UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
+               uint8_t bytes[UCNV_EXT_MAX_BYTES]) {
+    UCMapping *tm;
+    UChar32 c;
+    int32_t idx;
+
+    if(table->mappingsLength>=table->mappingsCapacity) {
+        /* make the mappings array larger */
+        if(table->mappingsCapacity==0) {
+            table->mappingsCapacity=1000;
+        } else {
+            table->mappingsCapacity*=10;
+        }
+        table->mappings=(UCMapping *)uprv_realloc(table->mappings,
+                                             table->mappingsCapacity*sizeof(UCMapping));
+        if(table->mappings==NULL) {
+            fprintf(stderr, "ucm error: unable to allocate %d UCMappings\n",
+                            (int)table->mappingsCapacity);
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+
+        if(table->reverseMap!=NULL) {
+            /* the reverseMap must be reallocated in a new sort */
+            uprv_free(table->reverseMap);
+            table->reverseMap=NULL;
+        }
+    }
+
+    if(m->uLen>1 && table->codePointsCapacity==0) {
+        table->codePointsCapacity=10000;
+        table->codePoints=(UChar32 *)uprv_malloc(table->codePointsCapacity*4);
+        if(table->codePoints==NULL) {
+            fprintf(stderr, "ucm error: unable to allocate %d UChar32s\n",
+                            (int)table->codePointsCapacity);
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+    }
+
+    if(m->bLen>4 && table->bytesCapacity==0) {
+        table->bytesCapacity=10000;
+        table->bytes=(uint8_t *)uprv_malloc(table->bytesCapacity);
+        if(table->bytes==NULL) {
+            fprintf(stderr, "ucm error: unable to allocate %d bytes\n",
+                            (int)table->bytesCapacity);
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+    }
+
+    if(m->uLen>1) {
+        idx=table->codePointsLength;
+        table->codePointsLength+=m->uLen;
+        if(table->codePointsLength>table->codePointsCapacity) {
+            fprintf(stderr, "ucm error: too many code points in multiple-code point mappings\n");
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+
+        uprv_memcpy(table->codePoints+idx, codePoints, (size_t)m->uLen*4);
+        m->u=idx;
+    }
+
+    if(m->bLen>4) {
+        idx=table->bytesLength;
+        table->bytesLength+=m->bLen;
+        if(table->bytesLength>table->bytesCapacity) {
+            fprintf(stderr, "ucm error: too many bytes in mappings with >4 charset bytes\n");
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+
+        uprv_memcpy(table->bytes+idx, bytes, m->bLen);
+        m->b.idx=idx;
+    }
+
+    /* set unicodeMask */
+    for(idx=0; idx<m->uLen; ++idx) {
+        c=codePoints[idx];
+        if(c>=0x10000) {
+            table->unicodeMask|=UCNV_HAS_SUPPLEMENTARY; /* there are supplementary code points */
+        } else if(U_IS_SURROGATE(c)) {
+            table->unicodeMask|=UCNV_HAS_SURROGATES;    /* there are surrogate code points */
+        }
+    }
+
+    /* set flagsType */
+    if(m->f<0) {
+        table->flagsType|=UCM_FLAGS_IMPLICIT;
+    } else {
+        table->flagsType|=UCM_FLAGS_EXPLICIT;
+    }
+
+    tm=table->mappings+table->mappingsLength++;
+    uprv_memcpy(tm, m, sizeof(UCMapping));
+
+    table->isSorted=FALSE;
+}
+
+U_CAPI UCMFile * U_EXPORT2
+ucm_open() {
+    UCMFile *ucm=(UCMFile *)uprv_malloc(sizeof(UCMFile));
+    if(ucm==NULL) {
+        fprintf(stderr, "ucm error: unable to allocate a UCMFile\n");
+        exit(U_MEMORY_ALLOCATION_ERROR);
+    }
+
+    memset(ucm, 0, sizeof(UCMFile));
+
+    ucm->base=ucm_openTable();
+    ucm->ext=ucm_openTable();
+
+    ucm->states.stateFlags[0]=MBCS_STATE_FLAG_DIRECT;
+    ucm->states.conversionType=UCNV_UNSUPPORTED_CONVERTER;
+    ucm->states.outputType=-1;
+    ucm->states.minCharLength=ucm->states.maxCharLength=1;
+
+    return ucm;
+}
+
+U_CAPI void U_EXPORT2
+ucm_close(UCMFile *ucm) {
+    if(ucm!=NULL) {
+        ucm_closeTable(ucm->base);
+        ucm_closeTable(ucm->ext);
+        uprv_free(ucm);
+    }
+}
+
+U_CAPI int32_t U_EXPORT2
+ucm_mappingType(UCMStates *baseStates,
+                UCMapping *m,
+                UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
+                uint8_t bytes[UCNV_EXT_MAX_BYTES]) {
+    /* check validity of the bytes and count the characters in them */
+    int32_t count=ucm_countChars(baseStates, bytes, m->bLen);
+    if(count<1) {
+        /* illegal byte sequence */
+        return -1;
+    }
+
+    /*
+     * Suitable for an ICU conversion base table means:
+     * - a 1:1 mapping (1 Unicode code point : 1 byte sequence)
+     * - precision flag 0..3
+     * - SBCS: any 1:1 mapping
+     *         (the table stores additional bits to distinguish mapping types)
+     * - MBCS: not a |2 SUB mapping for <subchar1>
+     * - MBCS: not a |1 fallback to 0x00
+     * - MBCS: not a multi-byte mapping with leading 0x00 bytes
+     *
+     * Further restrictions for fromUnicode tables
+     * are enforced in makeconv (MBCSOkForBaseFromUnicode()).
+     *
+     * All of the MBCS fromUnicode specific tests could be removed from here,
+     * but the ones above are for unusual mappings, and removing the tests
+     * from here would change canonucm output which seems gratuitous.
+     * (Markus Scherer 2006-nov-28)
+     *
+     * Exception: All implicit mappings (f<0) that need to be moved
+     * because of fromUnicode restrictions _must_ be moved here because
+     * makeconv uses a hack for moving mappings only for the fromUnicode table
+     * that only works with non-negative values of f.
+     */
+    if( m->uLen==1 && count==1 && m->f<=3 &&
+        (baseStates->maxCharLength==1 ||
+            !((m->f==2 && m->bLen==1) ||
+              (m->f==1 && bytes[0]==0) ||
+              (m->f<=1 && m->bLen>1 && bytes[0]==0)))
+    ) {
+        return 0; /* suitable for a base table */
+    } else {
+        return 1; /* needs to go into an extension table */
+    }
+}
+
+U_CAPI UBool U_EXPORT2
+ucm_addMappingAuto(UCMFile *ucm, UBool forBase, UCMStates *baseStates,
+                   UCMapping *m,
+                   UChar32 codePoints[UCNV_EXT_MAX_UCHARS],
+                   uint8_t bytes[UCNV_EXT_MAX_BYTES]) {
+    int32_t type;
+
+    if(m->f==2 && m->uLen>1) {
+        fprintf(stderr, "ucm error: illegal <subchar1> |2 mapping from multiple code points\n");
+        printMapping(m, codePoints, bytes, stderr);
+        return FALSE;
+    }
+
+    if(baseStates!=NULL) {
+        /* check validity of the bytes and count the characters in them */
+        type=ucm_mappingType(baseStates, m, codePoints, bytes);
+        if(type<0) {
+            /* illegal byte sequence */
+            printMapping(m, codePoints, bytes, stderr);
+            return FALSE;
+        }
+    } else {
+        /* not used - adding a mapping for an extension-only table before its base table is read */
+        type=1;
+    }
+
+    /*
+     * Add the mapping to the base table if this is requested and suitable.
+     * Otherwise, add it to the extension table.
+     */
+    if(forBase && type==0) {
+        ucm_addMapping(ucm->base, m, codePoints, bytes);
+    } else {
+        ucm_addMapping(ucm->ext, m, codePoints, bytes);
+    }
+
+    return TRUE;
+}
+
+U_CAPI UBool U_EXPORT2
+ucm_addMappingFromLine(UCMFile *ucm, const char *line, UBool forBase, UCMStates *baseStates) {
+  UCMapping m={ 0, {0}, 0, 0, 0, 0 };
+    UChar32 codePoints[UCNV_EXT_MAX_UCHARS];
+    uint8_t bytes[UCNV_EXT_MAX_BYTES];
+
+    const char *s;
+
+    /* ignore empty and comment lines */
+    if(line[0]=='#' || *(s=u_skipWhitespace(line))==0 || *s=='\n' || *s=='\r') {
+        return TRUE;
+    }
+
+    return
+        ucm_parseMappingLine(&m, codePoints, bytes, line) &&
+        ucm_addMappingAuto(ucm, forBase, baseStates, &m, codePoints, bytes);
+}
+
+U_CAPI void U_EXPORT2
+ucm_readTable(UCMFile *ucm, FileStream* convFile,
+              UBool forBase, UCMStates *baseStates,
+              UErrorCode *pErrorCode) {
+    char line[500];
+    char *end;
+    UBool isOK;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    isOK=TRUE;
+
+    for(;;) {
+        /* read the next line */
+        if(!T_FileStream_readLine(convFile, line, sizeof(line))) {
+            fprintf(stderr, "incomplete charmap section\n");
+            isOK=FALSE;
+            break;
+        }
+
+        /* remove CR LF */
+        end=uprv_strchr(line, 0);
+        while(line<end && (*(end-1)=='\r' || *(end-1)=='\n')) {
+            --end;
+        }
+        *end=0;
+
+        /* ignore empty and comment lines */
+        if(line[0]==0 || line[0]=='#') {
+            continue;
+        }
+
+        /* stop at the end of the mapping table */
+        if(0==uprv_strcmp(line, "END CHARMAP")) {
+            break;
+        }
+
+        isOK&=ucm_addMappingFromLine(ucm, line, forBase, baseStates);
+    }
+
+    if(!isOK) {
+        *pErrorCode=U_INVALID_TABLE_FORMAT;
+    }
+}
+#endif
index 04e6b20..a3e3b8d 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
@@ -6,7 +6,7 @@
  *   Corporation and others.  All Rights Reserved.
  *******************************************************************************
  *   file name:  ucm.h
- *   encoding:   UTF-8
+ *   encoding:   US-ASCII
  *   tab size:   8 (not used)
  *   indentation:4
  *
diff --git a/source/tools/toolutil/ucmstate.c b/source/tools/toolutil/ucmstate.c
new file mode 100644 (file)
index 0000000..1aabbfb
--- /dev/null
@@ -0,0 +1,1049 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2003-2012, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ucmstate.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2003oct09
+*   created by: Markus W. Scherer
+*
+*   This file handles ICU .ucm file state information as part of the ucm module.
+*   Most of this code used to be in makeconv.c.
+*/
+
+#include "unicode/utypes.h"
+#include "cstring.h"
+#include "cmemory.h"
+#include "uarrsort.h"
+#include "ucnvmbcs.h"
+#include "ucnv_ext.h"
+#include "uparse.h"
+#include "ucm.h"
+#include <stdio.h>
+
+#if !UCONFIG_NO_CONVERSION
+
+/* MBCS state handling ------------------------------------------------------ */
+
+/*
+ * state table row grammar (ebnf-style):
+ * (whitespace is allowed between all tokens)
+ *
+ * row=[[firstentry ','] entry (',' entry)*]
+ * firstentry="initial" | "surrogates"
+ *            (initial state (default for state 0), output is all surrogate pairs)
+ * entry=range [':' nextstate] ['.' action]
+ * range=number ['-' number]
+ * nextstate=number
+ *           (0..7f)
+ * action='u' | 's' | 'p' | 'i'
+ *        (unassigned, state change only, surrogate pair, illegal)
+ * number=(1- or 2-digit hexadecimal number)
+ */
+static const char *
+parseState(const char *s, int32_t state[256], uint32_t *pFlags) {
+    const char *t;
+    uint32_t start, end, i;
+    int32_t entry;
+
+    /* initialize the state: all illegal with U+ffff */
+    for(i=0; i<256; ++i) {
+        state[i]=MBCS_ENTRY_FINAL(0, MBCS_STATE_ILLEGAL, 0xffff);
+    }
+
+    /* skip leading white space */
+    s=u_skipWhitespace(s);
+
+    /* is there an "initial" or "surrogates" directive? */
+    if(uprv_strncmp("initial", s, 7)==0) {
+        *pFlags=MBCS_STATE_FLAG_DIRECT;
+        s=u_skipWhitespace(s+7);
+        if(*s++!=',') {
+            return s-1;
+        }
+    } else if(*pFlags==0 && uprv_strncmp("surrogates", s, 10)==0) {
+        *pFlags=MBCS_STATE_FLAG_SURROGATES;
+        s=u_skipWhitespace(s+10);
+        if(*s++!=',') {
+            return s-1;
+        }
+    } else if(*s==0) {
+        /* empty state row: all-illegal */
+        return NULL;
+    }
+
+    for(;;) {
+        /* read an entry, the start of the range first */
+        s=u_skipWhitespace(s);
+        start=uprv_strtoul(s, (char **)&t, 16);
+        if(s==t || 0xff<start) {
+            return s;
+        }
+        s=u_skipWhitespace(t);
+
+        /* read the end of the range if there is one */
+        if(*s=='-') {
+            s=u_skipWhitespace(s+1);
+            end=uprv_strtoul(s, (char **)&t, 16);
+            if(s==t || end<start || 0xff<end) {
+                return s;
+            }
+            s=u_skipWhitespace(t);
+        } else {
+            end=start;
+        }
+
+        /* determine the state entrys for this range */
+        if(*s!=':' && *s!='.') {
+            /* the default is: final state with valid entries */
+            entry=MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_16, 0);
+        } else {
+            entry=MBCS_ENTRY_TRANSITION(0, 0);
+            if(*s==':') {
+                /* get the next state, default to 0 */
+                s=u_skipWhitespace(s+1);
+                i=uprv_strtoul(s, (char **)&t, 16);
+                if(s!=t) {
+                    if(0x7f<i) {
+                        return s;
+                    }
+                    s=u_skipWhitespace(t);
+                    entry=MBCS_ENTRY_SET_STATE(entry, i);
+                }
+            }
+
+            /* get the state action, default to valid */
+            if(*s=='.') {
+                /* this is a final state */
+                entry=MBCS_ENTRY_SET_FINAL(entry);
+
+                s=u_skipWhitespace(s+1);
+                if(*s=='u') {
+                    /* unassigned set U+fffe */
+                    entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_UNASSIGNED, 0xfffe);
+                    s=u_skipWhitespace(s+1);
+                } else if(*s=='p') {
+                    if(*pFlags!=MBCS_STATE_FLAG_DIRECT) {
+                        entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_VALID_16_PAIR);
+                    } else {
+                        entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_VALID_16);
+                    }
+                    s=u_skipWhitespace(s+1);
+                } else if(*s=='s') {
+                    entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_CHANGE_ONLY);
+                    s=u_skipWhitespace(s+1);
+                } else if(*s=='i') {
+                    /* illegal set U+ffff */
+                    entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_ILLEGAL, 0xffff);
+                    s=u_skipWhitespace(s+1);
+                } else {
+                    /* default to valid */
+                    entry=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_VALID_16);
+                }
+            } else {
+                /* this is an intermediate state, nothing to do */
+            }
+        }
+
+        /* adjust "final valid" states according to the state flags */
+        if(MBCS_ENTRY_FINAL_ACTION(entry)==MBCS_STATE_VALID_16) {
+            switch(*pFlags) {
+            case 0:
+                /* no adjustment */
+                break;
+            case MBCS_STATE_FLAG_DIRECT:
+                /* set the valid-direct code point to "unassigned"==0xfffe */
+                entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_VALID_DIRECT_16, 0xfffe);
+                break;
+            case MBCS_STATE_FLAG_SURROGATES:
+                entry=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_VALID_16_PAIR, 0);
+                break;
+            default:
+                break;
+            }
+        }
+
+        /* set this entry for the range */
+        for(i=start; i<=end; ++i) {
+            state[i]=entry;
+        }
+
+        if(*s==',') {
+            ++s;
+        } else {
+            return *s==0 ? NULL : s;
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+ucm_addState(UCMStates *states, const char *s) {
+    const char *error;
+
+    if(states->countStates==MBCS_MAX_STATE_COUNT) {
+        fprintf(stderr, "ucm error: too many states (maximum %u)\n", MBCS_MAX_STATE_COUNT);
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+
+    error=parseState(s, states->stateTable[states->countStates],
+                       &states->stateFlags[states->countStates]);
+    if(error!=NULL) {
+        fprintf(stderr, "ucm error: parse error in state definition at '%s'\n", error);
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+
+    ++states->countStates;
+}
+
+U_CAPI UBool U_EXPORT2
+ucm_parseHeaderLine(UCMFile *ucm,
+                    char *line, char **pKey, char **pValue) {
+    UCMStates *states;
+    char *s, *end;
+    char c;
+
+    states=&ucm->states;
+
+    /* remove comments and trailing CR and LF and remove whitespace from the end */
+    for(end=line; (c=*end)!=0; ++end) {
+        if(c=='#' || c=='\r' || c=='\n') {
+            break;
+        }
+    }
+    while(end>line && (*(end-1)==' ' || *(end-1)=='\t')) {
+        --end;
+    }
+    *end=0;
+
+    /* skip leading white space and ignore empty lines */
+    s=(char *)u_skipWhitespace(line);
+    if(*s==0) {
+        return TRUE;
+    }
+
+    /* stop at the beginning of the mapping section */
+    if(uprv_memcmp(s, "CHARMAP", 7)==0) {
+        return FALSE;
+    }
+
+    /* get the key name, bracketed in <> */
+    if(*s!='<') {
+        fprintf(stderr, "ucm error: no header field <key> in line \"%s\"\n", line);
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+    *pKey=++s;
+    while(*s!='>') {
+        if(*s==0) {
+            fprintf(stderr, "ucm error: incomplete header field <key> in line \"%s\"\n", line);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        ++s;
+    }
+    *s=0;
+
+    /* get the value string, possibly quoted */
+    s=(char *)u_skipWhitespace(s+1);
+    if(*s!='"') {
+        *pValue=s;
+    } else {
+        /* remove the quotes */
+        *pValue=s+1;
+        if(end>*pValue && *(end-1)=='"') {
+            *--end=0;
+        }
+    }
+
+    /* collect the information from the header field, ignore unknown keys */
+    if(uprv_strcmp(*pKey, "uconv_class")==0) {
+        if(uprv_strcmp(*pValue, "DBCS")==0) {
+            states->conversionType=UCNV_DBCS;
+        } else if(uprv_strcmp(*pValue, "SBCS")==0) {
+            states->conversionType = UCNV_SBCS;
+        } else if(uprv_strcmp(*pValue, "MBCS")==0) {
+            states->conversionType = UCNV_MBCS;
+        } else if(uprv_strcmp(*pValue, "EBCDIC_STATEFUL")==0) {
+            states->conversionType = UCNV_EBCDIC_STATEFUL;
+        } else {
+            fprintf(stderr, "ucm error: unknown <uconv_class> %s\n", *pValue);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        return TRUE;
+    } else if(uprv_strcmp(*pKey, "mb_cur_max")==0) {
+        c=**pValue;
+        if('1'<=c && c<='4' && (*pValue)[1]==0) {
+            states->maxCharLength=(int8_t)(c-'0');
+            states->outputType=(int8_t)(states->maxCharLength-1);
+        } else {
+            fprintf(stderr, "ucm error: illegal <mb_cur_max> %s\n", *pValue);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        return TRUE;
+    } else if(uprv_strcmp(*pKey, "mb_cur_min")==0) {
+        c=**pValue;
+        if('1'<=c && c<='4' && (*pValue)[1]==0) {
+            states->minCharLength=(int8_t)(c-'0');
+        } else {
+            fprintf(stderr, "ucm error: illegal <mb_cur_min> %s\n", *pValue);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        return TRUE;
+    } else if(uprv_strcmp(*pKey, "icu:state")==0) {
+        /* if an SBCS/DBCS/EBCDIC_STATEFUL converter has icu:state, then turn it into MBCS */
+        switch(states->conversionType) {
+        case UCNV_SBCS:
+        case UCNV_DBCS:
+        case UCNV_EBCDIC_STATEFUL:
+            states->conversionType=UCNV_MBCS;
+            break;
+        case UCNV_MBCS:
+            break;
+        default:
+            fprintf(stderr, "ucm error: <icu:state> entry for non-MBCS table or before the <uconv_class> line\n");
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+
+        if(states->maxCharLength==0) {
+            fprintf(stderr, "ucm error: <icu:state> before the <mb_cur_max> line\n");
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        ucm_addState(states, *pValue);
+        return TRUE;
+    } else if(uprv_strcmp(*pKey, "icu:base")==0) {
+        if(**pValue==0) {
+            fprintf(stderr, "ucm error: <icu:base> without a base table name\n");
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        uprv_strcpy(ucm->baseName, *pValue);
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+/* post-processing ---------------------------------------------------------- */
+
+static int32_t
+sumUpStates(UCMStates *states) {
+    int32_t entry, sum, state, cell, count;
+    UBool allStatesReady;
+
+    /*
+     * Sum up the offsets for all states.
+     * In each final state (where there are only final entries),
+     * the offsets add up directly.
+     * In all other state table rows, for each transition entry to another state,
+     * the offsets sum of that state needs to be added.
+     * This is achieved in at most countStates iterations.
+     */
+    allStatesReady=FALSE;
+    for(count=states->countStates; !allStatesReady && count>=0; --count) {
+        allStatesReady=TRUE;
+        for(state=states->countStates-1; state>=0; --state) {
+            if(!(states->stateFlags[state]&MBCS_STATE_FLAG_READY)) {
+                allStatesReady=FALSE;
+                sum=0;
+
+                /* at first, add up only the final delta offsets to keep them <512 */
+                for(cell=0; cell<256; ++cell) {
+                    entry=states->stateTable[state][cell];
+                    if(MBCS_ENTRY_IS_FINAL(entry)) {
+                        switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
+                        case MBCS_STATE_VALID_16:
+                            states->stateTable[state][cell]=MBCS_ENTRY_FINAL_SET_VALUE(entry, sum);
+                            sum+=1;
+                            break;
+                        case MBCS_STATE_VALID_16_PAIR:
+                            states->stateTable[state][cell]=MBCS_ENTRY_FINAL_SET_VALUE(entry, sum);
+                            sum+=2;
+                            break;
+                        default:
+                            /* no addition */
+                            break;
+                        }
+                    }
+                }
+
+                /* now, add up the delta offsets for the transitional entries */
+                for(cell=0; cell<256; ++cell) {
+                    entry=states->stateTable[state][cell];
+                    if(MBCS_ENTRY_IS_TRANSITION(entry)) {
+                        if(states->stateFlags[MBCS_ENTRY_TRANSITION_STATE(entry)]&MBCS_STATE_FLAG_READY) {
+                            states->stateTable[state][cell]=MBCS_ENTRY_TRANSITION_SET_OFFSET(entry, sum);
+                            sum+=states->stateOffsetSum[MBCS_ENTRY_TRANSITION_STATE(entry)];
+                        } else {
+                            /* that next state does not have a sum yet, we cannot finish the one for this state */
+                            sum=-1;
+                            break;
+                        }
+                    }
+                }
+
+                if(sum!=-1) {
+                    states->stateOffsetSum[state]=sum;
+                    states->stateFlags[state]|=MBCS_STATE_FLAG_READY;
+                }
+            }
+        }
+    }
+
+    if(!allStatesReady) {
+        fprintf(stderr, "ucm error: the state table contains loops\n");
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+
+    /*
+     * For all "direct" (i.e., initial) states>0,
+     * the offsets need to be increased by the sum of
+     * the previous initial states.
+     */
+    sum=states->stateOffsetSum[0];
+    for(state=1; state<states->countStates; ++state) {
+        if((states->stateFlags[state]&0xf)==MBCS_STATE_FLAG_DIRECT) {
+            int32_t sum2=sum;
+            sum+=states->stateOffsetSum[state];
+            for(cell=0; cell<256; ++cell) {
+                entry=states->stateTable[state][cell];
+                if(MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    states->stateTable[state][cell]=MBCS_ENTRY_TRANSITION_ADD_OFFSET(entry, sum2);
+                }
+            }
+        }
+    }
+
+    /* round up to the next even number to have the following data 32-bit-aligned */
+    return states->countToUCodeUnits=(sum+1)&~1;
+}
+
+U_CAPI void U_EXPORT2
+ucm_processStates(UCMStates *states, UBool ignoreSISOCheck) {
+    int32_t entry, state, cell, count;
+
+    if(states->conversionType==UCNV_UNSUPPORTED_CONVERTER) {
+        fprintf(stderr, "ucm error: missing conversion type (<uconv_class>)\n");
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+
+    if(states->countStates==0) {
+        switch(states->conversionType) {
+        case UCNV_SBCS:
+            /* SBCS: use MBCS data structure with a default state table */
+            if(states->maxCharLength!=1) {
+                fprintf(stderr, "error: SBCS codepage with max B/char!=1\n");
+                exit(U_INVALID_TABLE_FORMAT);
+            }
+            states->conversionType=UCNV_MBCS;
+            ucm_addState(states, "0-ff");
+            break;
+        case UCNV_MBCS:
+            fprintf(stderr, "ucm error: missing state table information (<icu:state>) for MBCS\n");
+            exit(U_INVALID_TABLE_FORMAT);
+            break;
+        case UCNV_EBCDIC_STATEFUL:
+            /* EBCDIC_STATEFUL: use MBCS data structure with a default state table */
+            if(states->minCharLength!=1 || states->maxCharLength!=2) {
+                fprintf(stderr, "error: DBCS codepage with min B/char!=1 or max B/char!=2\n");
+                exit(U_INVALID_TABLE_FORMAT);
+            }
+            states->conversionType=UCNV_MBCS;
+            ucm_addState(states, "0-ff, e:1.s, f:0.s");
+            ucm_addState(states, "initial, 0-3f:4, e:1.s, f:0.s, 40:3, 41-fe:2, ff:4");
+            ucm_addState(states, "0-40:1.i, 41-fe:1., ff:1.i");
+            ucm_addState(states, "0-ff:1.i, 40:1.");
+            ucm_addState(states, "0-ff:1.i");
+            break;
+        case UCNV_DBCS:
+            /* DBCS: use MBCS data structure with a default state table */
+            if(states->minCharLength!=2 || states->maxCharLength!=2) {
+                fprintf(stderr, "error: DBCS codepage with min or max B/char!=2\n");
+                exit(U_INVALID_TABLE_FORMAT);
+            }
+            states->conversionType = UCNV_MBCS;
+            ucm_addState(states, "0-3f:3, 40:2, 41-fe:1, ff:3");
+            ucm_addState(states, "41-fe");
+            ucm_addState(states, "40");
+            ucm_addState(states, "");
+            break;
+        default:
+            fprintf(stderr, "ucm error: unknown charset structure\n");
+            exit(U_INVALID_TABLE_FORMAT);
+            break;
+        }
+    }
+
+    /*
+     * check that the min/max character lengths are reasonable;
+     * to do this right, all paths through the state table would have to be
+     * recursively walked while keeping track of the sequence lengths,
+     * but these simple checks cover most state tables in practice
+     */
+    if(states->maxCharLength<states->minCharLength) {
+        fprintf(stderr, "ucm error: max B/char < min B/char\n");
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+
+    /* count non-direct states and compare with max B/char */
+    count=0;
+    for(state=0; state<states->countStates; ++state) {
+        if((states->stateFlags[state]&0xf)!=MBCS_STATE_FLAG_DIRECT) {
+            ++count;
+        }
+    }
+    if(states->maxCharLength>count+1) {
+        fprintf(stderr, "ucm error: max B/char too large\n");
+        exit(U_INVALID_TABLE_FORMAT);
+    }
+
+    if(states->minCharLength==1) {
+        int32_t action;
+
+        /*
+         * if there are single-byte characters,
+         * then the initial state must have direct result states
+         */
+        for(cell=0; cell<256; ++cell) {
+            entry=states->stateTable[0][cell];
+            if( MBCS_ENTRY_IS_FINAL(entry) &&
+                ((action=MBCS_ENTRY_FINAL_ACTION(entry))==MBCS_STATE_VALID_DIRECT_16 ||
+                 action==MBCS_STATE_UNASSIGNED)
+            ) {
+                break;
+            }
+        }
+
+        if(cell==256) {
+            fprintf(stderr, "ucm warning: min B/char too small\n");
+        }
+    }
+
+    /*
+     * make sure that all "next state" values are within limits
+     * and that all next states after final ones have the "direct"
+     * flag of initial states
+     */
+    for(state=states->countStates-1; state>=0; --state) {
+        for(cell=0; cell<256; ++cell) {
+            entry=states->stateTable[state][cell];
+            if((uint8_t)MBCS_ENTRY_STATE(entry)>=states->countStates) {
+                fprintf(stderr, "ucm error: state table entry [%x][%x] has a next state of %x that is too high\n",
+                    (int)state, (int)cell, (int)MBCS_ENTRY_STATE(entry));
+                exit(U_INVALID_TABLE_FORMAT);
+            }
+            if(MBCS_ENTRY_IS_FINAL(entry) && (states->stateFlags[MBCS_ENTRY_STATE(entry)]&0xf)!=MBCS_STATE_FLAG_DIRECT) {
+                fprintf(stderr, "ucm error: state table entry [%x][%x] is final but has a non-initial next state of %x\n",
+                    (int)state, (int)cell, (int)MBCS_ENTRY_STATE(entry));
+                exit(U_INVALID_TABLE_FORMAT);
+            } else if(MBCS_ENTRY_IS_TRANSITION(entry) && (states->stateFlags[MBCS_ENTRY_STATE(entry)]&0xf)==MBCS_STATE_FLAG_DIRECT) {
+                fprintf(stderr, "ucm error: state table entry [%x][%x] is not final but has an initial next state of %x\n",
+                    (int)state, (int)cell, (int)MBCS_ENTRY_STATE(entry));
+                exit(U_INVALID_TABLE_FORMAT);
+            }
+        }
+    }
+
+    /* is this an SI/SO (like EBCDIC-stateful) state table? */
+    if(states->countStates>=2 && (states->stateFlags[1]&0xf)==MBCS_STATE_FLAG_DIRECT) {
+        if(states->maxCharLength!=2) {
+            fprintf(stderr, "ucm error: SI/SO codepages must have max 2 bytes/char (not %x)\n", (int)states->maxCharLength);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        if(states->countStates<3) {
+            fprintf(stderr, "ucm error: SI/SO codepages must have at least 3 states (not %x)\n", (int)states->countStates);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        /* are the SI/SO all in the right places? */
+        if( ignoreSISOCheck ||
+           (states->stateTable[0][0xe]==MBCS_ENTRY_FINAL(1, MBCS_STATE_CHANGE_ONLY, 0) &&
+            states->stateTable[0][0xf]==MBCS_ENTRY_FINAL(0, MBCS_STATE_CHANGE_ONLY, 0) &&
+            states->stateTable[1][0xe]==MBCS_ENTRY_FINAL(1, MBCS_STATE_CHANGE_ONLY, 0) &&
+            states->stateTable[1][0xf]==MBCS_ENTRY_FINAL(0, MBCS_STATE_CHANGE_ONLY, 0))
+        ) {
+            states->outputType=MBCS_OUTPUT_2_SISO;
+        } else {
+            fprintf(stderr, "ucm error: SI/SO codepages must have in states 0 and 1 transitions e:1.s, f:0.s\n");
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        state=2;
+    } else {
+        state=1;
+    }
+
+    /* check that no unexpected state is a "direct" one */
+    while(state<states->countStates) {
+        if((states->stateFlags[state]&0xf)==MBCS_STATE_FLAG_DIRECT) {
+            fprintf(stderr, "ucm error: state %d is 'initial' - not supported except for SI/SO codepages\n", (int)state);
+            exit(U_INVALID_TABLE_FORMAT);
+        }
+        ++state;
+    }
+
+    sumUpStates(states);
+}
+
+/* find a fallback for this offset; return the index or -1 if not found */
+U_CAPI int32_t U_EXPORT2
+ucm_findFallback(_MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
+                 uint32_t offset) {
+    int32_t i;
+
+    if(countToUFallbacks==0) {
+        /* shortcut: most codepages do not have fallbacks from codepage to Unicode */
+        return -1;
+    }
+
+    /* do a linear search for the fallback mapping (the table is not yet sorted) */
+    for(i=0; i<countToUFallbacks; ++i) {
+        if(offset==toUFallbacks[i].offset) {
+            return i;
+        }
+    }
+    return -1;
+}
+
+/*
+ * This function tries to compact toUnicode tables for 2-byte codepages
+ * by finding lead bytes with all-unassigned trail bytes and adding another state
+ * for them.
+ */
+static void
+compactToUnicode2(UCMStates *states,
+                  uint16_t **pUnicodeCodeUnits,
+                  _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
+                  UBool verbose) {
+    int32_t (*oldStateTable)[256];
+    uint16_t count[256];
+    uint16_t *oldUnicodeCodeUnits;
+    int32_t entry, offset, oldOffset, trailOffset, oldTrailOffset, savings, sum;
+    int32_t i, j, leadState, trailState, newState, fallback;
+    uint16_t unit;
+
+    /* find the lead state */
+    if(states->outputType==MBCS_OUTPUT_2_SISO) {
+        /* use the DBCS lead state for SI/SO codepages */
+        leadState=1;
+    } else {
+        leadState=0;
+    }
+
+    /* find the main trail state: the most used target state */
+    uprv_memset(count, 0, sizeof(count));
+    for(i=0; i<256; ++i) {
+        entry=states->stateTable[leadState][i];
+        if(MBCS_ENTRY_IS_TRANSITION(entry)) {
+            ++count[MBCS_ENTRY_TRANSITION_STATE(entry)];
+        }
+    }
+    trailState=0;
+    for(i=1; i<states->countStates; ++i) {
+        if(count[i]>count[trailState]) {
+            trailState=i;
+        }
+    }
+
+    /* count possible savings from lead bytes with all-unassigned results in all trail bytes */
+    uprv_memset(count, 0, sizeof(count));
+    savings=0;
+    /* for each lead byte */
+    for(i=0; i<256; ++i) {
+        entry=states->stateTable[leadState][i];
+        if(MBCS_ENTRY_IS_TRANSITION(entry) && (MBCS_ENTRY_TRANSITION_STATE(entry))==trailState) {
+            /* the offset is different for each lead byte */
+            offset=MBCS_ENTRY_TRANSITION_OFFSET(entry);
+            /* for each trail byte for this lead byte */
+            for(j=0; j<256; ++j) {
+                entry=states->stateTable[trailState][j];
+                switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
+                case MBCS_STATE_VALID_16:
+                    entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    if((*pUnicodeCodeUnits)[entry]==0xfffe && ucm_findFallback(toUFallbacks, countToUFallbacks, entry)<0) {
+                        ++count[i];
+                    } else {
+                        j=999; /* do not count for this lead byte because there are assignments */
+                    }
+                    break;
+                case MBCS_STATE_VALID_16_PAIR:
+                    entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    if((*pUnicodeCodeUnits)[entry]==0xfffe) {
+                        count[i]+=2;
+                    } else {
+                        j=999; /* do not count for this lead byte because there are assignments */
+                    }
+                    break;
+                default:
+                    break;
+                }
+            }
+            if(j==256) {
+                /* all trail bytes for this lead byte are unassigned */
+                savings+=count[i];
+            } else {
+                count[i]=0;
+            }
+        }
+    }
+    /* subtract from the possible savings the cost of an additional state */
+    savings=savings*2-1024; /* count bytes, not 16-bit words */
+    if(savings<=0) {
+        return;
+    }
+    if(verbose) {
+        printf("compacting toUnicode data saves %ld bytes\n", (long)savings);
+    }
+    if(states->countStates>=MBCS_MAX_STATE_COUNT) {
+        fprintf(stderr, "cannot compact toUnicode because the maximum number of states is reached\n");
+        return;
+    }
+
+    /* make a copy of the state table */
+    oldStateTable=(int32_t (*)[256])uprv_malloc(states->countStates*1024);
+    if(oldStateTable==NULL) {
+        fprintf(stderr, "cannot compact toUnicode: out of memory\n");
+        return;
+    }
+    uprv_memcpy(oldStateTable, states->stateTable, states->countStates*1024);
+
+    /* add the new state */
+    /*
+     * this function does not catch the degenerate case where all lead bytes
+     * have all-unassigned trail bytes and the lead state could be removed
+     */
+    newState=states->countStates++;
+    states->stateFlags[newState]=0;
+    /* copy the old trail state, turning all assigned states into unassigned ones */
+    for(i=0; i<256; ++i) {
+        entry=states->stateTable[trailState][i];
+        switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
+        case MBCS_STATE_VALID_16:
+        case MBCS_STATE_VALID_16_PAIR:
+            states->stateTable[newState][i]=MBCS_ENTRY_FINAL_SET_ACTION_VALUE(entry, MBCS_STATE_UNASSIGNED, 0xfffe);
+            break;
+        default:
+            states->stateTable[newState][i]=entry;
+            break;
+        }
+    }
+
+    /* in the lead state, redirect all lead bytes with all-unassigned trail bytes to the new state */
+    for(i=0; i<256; ++i) {
+        if(count[i]>0) {
+            states->stateTable[leadState][i]=MBCS_ENTRY_SET_STATE(states->stateTable[leadState][i], newState);
+        }
+    }
+
+    /* sum up the new state table */
+    for(i=0; i<states->countStates; ++i) {
+        states->stateFlags[i]&=~MBCS_STATE_FLAG_READY;
+    }
+    sum=sumUpStates(states);
+
+    /* allocate a new, smaller code units array */
+    oldUnicodeCodeUnits=*pUnicodeCodeUnits;
+    if(sum==0) {
+        *pUnicodeCodeUnits=NULL;
+        if(oldUnicodeCodeUnits!=NULL) {
+            uprv_free(oldUnicodeCodeUnits);
+        }
+        uprv_free(oldStateTable);
+        return;
+    }
+    *pUnicodeCodeUnits=(uint16_t *)uprv_malloc(sum*sizeof(uint16_t));
+    if(*pUnicodeCodeUnits==NULL) {
+        fprintf(stderr, "cannot compact toUnicode: out of memory allocating %ld 16-bit code units\n",
+            (long)sum);
+        /* revert to the old state table */
+        *pUnicodeCodeUnits=oldUnicodeCodeUnits;
+        --states->countStates;
+        uprv_memcpy(states->stateTable, oldStateTable, states->countStates*1024);
+        uprv_free(oldStateTable);
+        return;
+    }
+    for(i=0; i<sum; ++i) {
+        (*pUnicodeCodeUnits)[i]=0xfffe;
+    }
+
+    /* copy the code units for all assigned characters */
+    /*
+     * The old state table has the same lead _and_ trail states for assigned characters!
+     * The differences are in the offsets, and in the trail states for some unassigned characters.
+     * For each character with an assigned state in the new table, it was assigned in the old one.
+     * Only still-assigned characters are copied.
+     * Note that fallback mappings need to get their offset values adjusted.
+     */
+
+    /* for each initial state */
+    for(leadState=0; leadState<states->countStates; ++leadState) {
+        if((states->stateFlags[leadState]&0xf)==MBCS_STATE_FLAG_DIRECT) {
+            /* for each lead byte from there */
+            for(i=0; i<256; ++i) {
+                entry=states->stateTable[leadState][i];
+                if(MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    trailState=(uint8_t)MBCS_ENTRY_TRANSITION_STATE(entry);
+                    /* the new state does not have assigned states */
+                    if(trailState!=newState) {
+                        trailOffset=MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                        oldTrailOffset=MBCS_ENTRY_TRANSITION_OFFSET(oldStateTable[leadState][i]);
+                        /* for each trail byte */
+                        for(j=0; j<256; ++j) {
+                            entry=states->stateTable[trailState][j];
+                            /* copy assigned-character code units and adjust fallback offsets */
+                            switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
+                            case MBCS_STATE_VALID_16:
+                                offset=trailOffset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                                /* find the old offset according to the old state table */
+                                oldOffset=oldTrailOffset+MBCS_ENTRY_FINAL_VALUE_16(oldStateTable[trailState][j]);
+                                unit=(*pUnicodeCodeUnits)[offset]=oldUnicodeCodeUnits[oldOffset];
+                                if(unit==0xfffe && (fallback=ucm_findFallback(toUFallbacks, countToUFallbacks, oldOffset))>=0) {
+                                    toUFallbacks[fallback].offset=0x80000000|offset;
+                                }
+                                break;
+                            case MBCS_STATE_VALID_16_PAIR:
+                                offset=trailOffset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                                /* find the old offset according to the old state table */
+                                oldOffset=oldTrailOffset+MBCS_ENTRY_FINAL_VALUE_16(oldStateTable[trailState][j]);
+                                (*pUnicodeCodeUnits)[offset++]=oldUnicodeCodeUnits[oldOffset++];
+                                (*pUnicodeCodeUnits)[offset]=oldUnicodeCodeUnits[oldOffset];
+                                break;
+                            default:
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /* remove temporary flags from fallback offsets that protected them from being modified twice */
+    for(i=0; i<countToUFallbacks; ++i) {
+        toUFallbacks[i].offset&=0x7fffffff;
+    }
+
+    /* free temporary memory */
+    uprv_free(oldUnicodeCodeUnits);
+    uprv_free(oldStateTable);
+}
+
+/*
+ * recursive sub-function of compactToUnicodeHelper()
+ * returns:
+ * >0 number of bytes that are used in unicodeCodeUnits[] that could be saved,
+ *    if all sequences from this state are unassigned, returns the
+ * <0 there are assignments in unicodeCodeUnits[]
+ * 0  no use of unicodeCodeUnits[]
+ */
+static int32_t
+findUnassigned(UCMStates *states,
+               uint16_t *unicodeCodeUnits,
+               _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
+               int32_t state, int32_t offset, uint32_t b) {
+    int32_t i, entry, savings, localSavings, belowSavings;
+    UBool haveAssigned;
+
+    localSavings=belowSavings=0;
+    haveAssigned=FALSE;
+    for(i=0; i<256; ++i) {
+        entry=states->stateTable[state][i];
+        if(MBCS_ENTRY_IS_TRANSITION(entry)) {
+            savings=findUnassigned(states,
+                        unicodeCodeUnits,
+                        toUFallbacks, countToUFallbacks,
+                        MBCS_ENTRY_TRANSITION_STATE(entry),
+                        offset+MBCS_ENTRY_TRANSITION_OFFSET(entry),
+                        (b<<8)|(uint32_t)i);
+            if(savings<0) {
+                haveAssigned=TRUE;
+            } else if(savings>0) {
+                printf("    all-unassigned sequences from prefix 0x%02lx state %ld use %ld bytes\n",
+                    (unsigned long)((b<<8)|i), (long)state, (long)savings);
+                belowSavings+=savings;
+            }
+        } else if(!haveAssigned) {
+            switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
+            case MBCS_STATE_VALID_16:
+                entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                if(unicodeCodeUnits[entry]==0xfffe && ucm_findFallback(toUFallbacks, countToUFallbacks, entry)<0) {
+                    localSavings+=2;
+                } else {
+                    haveAssigned=TRUE;
+                }
+                break;
+            case MBCS_STATE_VALID_16_PAIR:
+                entry=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                if(unicodeCodeUnits[entry]==0xfffe) {
+                    localSavings+=4;
+                } else {
+                    haveAssigned=TRUE;
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+    if(haveAssigned) {
+        return -1;
+    } else {
+        return localSavings+belowSavings;
+    }
+}
+
+/* helper function for finding compaction opportunities */
+static void
+compactToUnicodeHelper(UCMStates *states,
+                       uint16_t *unicodeCodeUnits,
+                       _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks) {
+    int32_t state, savings;
+
+    /* for each initial state */
+    for(state=0; state<states->countStates; ++state) {
+        if((states->stateFlags[state]&0xf)==MBCS_STATE_FLAG_DIRECT) {
+            savings=findUnassigned(states,
+                        unicodeCodeUnits,
+                        toUFallbacks, countToUFallbacks,
+                        state, 0, 0);
+            if(savings>0) {
+                printf("    all-unassigned sequences from initial state %ld use %ld bytes\n",
+                    (long)state, (long)savings);
+            }
+        }
+    }
+}
+
+static int32_t
+compareFallbacks(const void *context, const void *fb1, const void *fb2) {
+    return ((const _MBCSToUFallback *)fb1)->offset-((const _MBCSToUFallback *)fb2)->offset;
+}
+
+U_CAPI void U_EXPORT2
+ucm_optimizeStates(UCMStates *states,
+                   uint16_t **pUnicodeCodeUnits,
+                   _MBCSToUFallback *toUFallbacks, int32_t countToUFallbacks,
+                   UBool verbose) {
+    UErrorCode errorCode;
+    int32_t state, cell, entry;
+
+    /* test each state table entry */
+    for(state=0; state<states->countStates; ++state) {
+        for(cell=0; cell<256; ++cell) {
+            entry=states->stateTable[state][cell];
+            /*
+             * if the entry is a final one with an MBCS_STATE_VALID_DIRECT_16 action code
+             * and the code point is "unassigned" (0xfffe), then change it to
+             * the "unassigned" action code with bits 26..23 set to zero and U+fffe.
+             */
+            if(MBCS_ENTRY_SET_STATE(entry, 0)==MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, 0xfffe)) {
+                states->stateTable[state][cell]=MBCS_ENTRY_FINAL_SET_ACTION(entry, MBCS_STATE_UNASSIGNED);
+            }
+        }
+    }
+
+    /* try to compact the toUnicode tables */
+    if(states->maxCharLength==2) {
+        compactToUnicode2(states, pUnicodeCodeUnits, toUFallbacks, countToUFallbacks, verbose);
+    } else if(states->maxCharLength>2) {
+        if(verbose) {
+            compactToUnicodeHelper(states, *pUnicodeCodeUnits, toUFallbacks, countToUFallbacks);
+        }
+    }
+
+    /* sort toUFallbacks */
+    /*
+     * It should be safe to sort them before compactToUnicode2() is called,
+     * because it should not change the relative order of the offset values
+     * that it adjusts, but they need to be sorted at some point, and
+     * it is safest here.
+     */
+    if(countToUFallbacks>0) {
+        errorCode=U_ZERO_ERROR; /* nothing bad will happen... */
+        uprv_sortArray(toUFallbacks, countToUFallbacks,
+                       sizeof(_MBCSToUFallback),
+                       compareFallbacks, NULL, FALSE, &errorCode);
+    }
+}
+
+/* use a complete state table ----------------------------------------------- */
+
+U_CAPI int32_t U_EXPORT2
+ucm_countChars(UCMStates *states,
+               const uint8_t *bytes, int32_t length) {
+    uint32_t offset;
+    int32_t i, entry, count;
+    uint8_t state;
+
+    offset=0;
+    count=0;
+    state=0;
+
+    if(states->countStates==0) {
+        fprintf(stderr, "ucm error: there is no state information!\n");
+        return -1;
+    }
+
+    /* for SI/SO (like EBCDIC-stateful), double-byte sequences start in state 1 */
+    if(length==2 && states->outputType==MBCS_OUTPUT_2_SISO) {
+        state=1;
+    }
+
+    /*
+     * Walk down the state table like in conversion,
+     * much like getNextUChar().
+     * We assume that c<=0x10ffff.
+     */
+    for(i=0; i<length; ++i) {
+        entry=states->stateTable[state][bytes[i]];
+        if(MBCS_ENTRY_IS_TRANSITION(entry)) {
+            state=(uint8_t)MBCS_ENTRY_TRANSITION_STATE(entry);
+            offset+=MBCS_ENTRY_TRANSITION_OFFSET(entry);
+        } else {
+            switch(MBCS_ENTRY_FINAL_ACTION(entry)) {
+            case MBCS_STATE_ILLEGAL:
+                fprintf(stderr, "ucm error: byte sequence ends in illegal state\n");
+                return -1;
+            case MBCS_STATE_CHANGE_ONLY:
+                fprintf(stderr, "ucm error: byte sequence ends in state-change-only\n");
+                return -1;
+            case MBCS_STATE_UNASSIGNED:
+            case MBCS_STATE_FALLBACK_DIRECT_16:
+            case MBCS_STATE_VALID_DIRECT_16:
+            case MBCS_STATE_FALLBACK_DIRECT_20:
+            case MBCS_STATE_VALID_DIRECT_20:
+            case MBCS_STATE_VALID_16:
+            case MBCS_STATE_VALID_16_PAIR:
+                /* count a complete character and prepare for a new one */
+                ++count;
+                state=(uint8_t)MBCS_ENTRY_FINAL_STATE(entry);
+                offset=0;
+                break;
+            default:
+                /* reserved, must never occur */
+                fprintf(stderr, "ucm error: byte sequence reached reserved action code, entry: 0x%02lx\n", (unsigned long)entry);
+                return -1;
+            }
+        }
+    }
+
+    if(offset!=0) {
+        fprintf(stderr, "ucm error: byte sequence too short, ends in non-final state %u\n", state);
+        return -1;
+    }
+
+    /*
+     * for SI/SO (like EBCDIC-stateful), multiple-character results
+     * must consist of only double-byte sequences
+     */
+    if(count>1 && states->outputType==MBCS_OUTPUT_2_SISO && length!=2*count) {
+        fprintf(stderr, "ucm error: SI/SO (like EBCDIC-stateful) result with %d characters does not contain all DBCS\n", (int)count);
+        return -1;
+    }
+
+    return count;
+}
+#endif
+
index 446e11a..bbb814b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
@@ -351,10 +351,8 @@ int32_t udbg_enumByName(UDebugEnumType type, const char *value) {
  */
 U_CAPI const char *udbg_getPlatform(void)
 {
-#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WIN32_API
     return "Windows";
-#elif U_PLATFORM == U_PF_CYGWIN
-    return "Cygwin";
 #elif U_PLATFORM == U_PF_UNKNOWN
     return "unknown";
 #elif U_PLATFORM == U_PF_DARWIN
@@ -615,6 +613,40 @@ U_CAPI char *udbg_knownIssueURLFrom(const char *ticket, char *buf) {
 }
 
 
+#if !U_HAVE_STD_STRING
+const char *warning = "WARNING: Don't have std::string (STL) - known issue logs will be deficient.";
+
+U_CAPI void *udbg_knownIssue_openU(void *ptr, const char *ticket, char *where, const UChar *msg, UBool *firstForTicket,
+                                   UBool *firstForWhere) {
+  if(ptr==NULL) {
+    puts(warning);
+  }
+  printf("%s\tKnown Issue #%s\n", where, ticket);
+
+  return (void*)warning;
+}
+
+U_CAPI void *udbg_knownIssue_open(void *ptr, const char *ticket, char *where, const char *msg, UBool *firstForTicket,
+                                   UBool *firstForWhere) {
+  if(ptr==NULL) {
+    puts(warning);
+  }
+  if(msg==NULL) msg = "";
+  printf("%s\tKnown Issue #%s  \"%s\n", where, ticket, msg);
+
+  return (void*)warning;
+}
+
+U_CAPI UBool udbg_knownIssue_print(void *ptr) {
+  puts(warning);
+  return FALSE;
+}
+
+U_CAPI void udbg_knownIssue_close(void *ptr) {
+  // nothing to do
+}
+#else
+
 #include <set>
 #include <map>
 #include <string>
@@ -753,3 +785,5 @@ U_CAPI void udbg_knownIssue_close(void *ptr) {
   KnownIssues *t = static_cast<KnownIssues*>(ptr);
   delete t;
 }
+
+#endif
index 2f186e6..4bfb4cf 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ************************************************************************
diff --git a/source/tools/toolutil/unewdata.c b/source/tools/toolutil/unewdata.c
new file mode 100644 (file)
index 0000000..0fb9d43
--- /dev/null
@@ -0,0 +1,276 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 1999-2010, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  unewdata.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 1999oct25
+*   created by: Markus W. Scherer
+*/
+
+#include <stdio.h>
+#include "unicode/utypes.h"
+#include "unicode/putil.h"
+#include "unicode/ustring.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "filestrm.h"
+#include "unicode/udata.h"
+#include "unewdata.h"
+
+struct UNewDataMemory {
+    FileStream *file;
+    uint16_t headerSize;
+    uint8_t magic1, magic2;
+};
+
+U_CAPI UNewDataMemory * U_EXPORT2
+udata_create(const char *dir, const char *type, const char *name,
+             const UDataInfo *pInfo,
+             const char *comment,
+             UErrorCode *pErrorCode) {
+    UNewDataMemory *pData;
+    uint16_t headerSize, commentLength;
+    char filename[512];
+    uint8_t bytes[16];
+    int32_t length;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return NULL;
+    } else if(name==NULL || *name==0 || pInfo==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+
+    /* allocate the data structure */
+    pData=(UNewDataMemory *)uprv_malloc(sizeof(UNewDataMemory));
+    if(pData==NULL) {
+        *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    
+    /* Check that the full path won't be too long */
+    length = 0;                                        /* Start with nothing */
+    if(dir != NULL  && *dir !=0)       /* Add directory length if one was given */
+    {
+       length += strlen(dir);
+       
+       /* Add 1 if dir doesn't end with path sep */
+        if (dir[strlen(dir) - 1]!= U_FILE_SEP_CHAR) {
+            length++;
+        }
+       }
+    length += strlen(name);            /* Add the filename length */
+
+    if(type != NULL  && *type !=0) { /* Add directory length if  given */
+        length += strlen(type);
+    }
+
+        
+     /* LDH buffer Length error check */
+    if(length  > ((int32_t)sizeof(filename) - 1))
+    {
+           *pErrorCode = U_BUFFER_OVERFLOW_ERROR;
+           uprv_free(pData);
+           return NULL;
+    }
+   
+    /* open the output file */
+    if(dir!=NULL && *dir!=0) { /* if dir has a value, we prepend it to the filename */
+        char *p=filename+strlen(dir);
+        uprv_strcpy(filename, dir);
+        if (*(p-1)!=U_FILE_SEP_CHAR) {
+            *p++=U_FILE_SEP_CHAR;
+            *p=0;
+        }
+    } else { /* otherwise, we'll output to the current dir */
+        filename[0]=0;
+    }
+    uprv_strcat(filename, name);
+    if(type!=NULL && *type!=0) {
+        uprv_strcat(filename, ".");
+        uprv_strcat(filename, type);
+    }
+    pData->file=T_FileStream_open(filename, "wb");
+    if(pData->file==NULL) {
+        uprv_free(pData);
+        *pErrorCode=U_FILE_ACCESS_ERROR;
+        return NULL;
+    }
+
+    /* write the header information */
+    headerSize=(uint16_t)(pInfo->size+4);
+    if(comment!=NULL && *comment!=0) {
+        commentLength=(uint16_t)(uprv_strlen(comment)+1);
+        headerSize+=commentLength;
+    } else {
+        commentLength=0;
+    }
+
+    /* write the size of the header, take padding into account */
+    pData->headerSize=(uint16_t)((headerSize+15)&~0xf);
+    pData->magic1=0xda;
+    pData->magic2=0x27;
+    T_FileStream_write(pData->file, &pData->headerSize, 4);
+
+    /* write the information data */
+    T_FileStream_write(pData->file, pInfo, pInfo->size);
+
+    /* write the comment */
+    if(commentLength>0) {
+        T_FileStream_write(pData->file, comment, commentLength);
+    }
+
+    /* write padding bytes to align the data section to 16 bytes */
+    headerSize&=0xf;
+    if(headerSize!=0) {
+        headerSize=(uint16_t)(16-headerSize);
+        uprv_memset(bytes, 0, headerSize);
+        T_FileStream_write(pData->file, bytes, headerSize);
+    }
+
+    return pData;
+}
+
+U_CAPI uint32_t U_EXPORT2
+udata_finish(UNewDataMemory *pData, UErrorCode *pErrorCode) {
+    uint32_t fileLength=0;
+
+    if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+
+    if(pData!=NULL) {
+        if(pData->file!=NULL) {
+            /* fflush(pData->file);*/
+            fileLength=T_FileStream_size(pData->file);
+            if(T_FileStream_error(pData->file)) {
+                *pErrorCode=U_FILE_ACCESS_ERROR;
+            } else {
+                fileLength-=pData->headerSize;
+            }
+            T_FileStream_close(pData->file);
+        }
+        uprv_free(pData);
+    }
+
+    return fileLength;
+}
+
+/* dummy UDataInfo cf. udata.h */
+static const UDataInfo dummyDataInfo = {
+    sizeof(UDataInfo),
+    0,
+
+    U_IS_BIG_ENDIAN,
+    U_CHARSET_FAMILY,
+    U_SIZEOF_UCHAR,
+    0,
+
+    { 0, 0, 0, 0 },                 /* dummy dataFormat */
+    { 0, 0, 0, 0 },                 /* dummy formatVersion */
+    { 0, 0, 0, 0 }                  /* dummy dataVersion */
+};
+
+U_CAPI void U_EXPORT2
+udata_createDummy(const char *dir, const char *type, const char *name, UErrorCode *pErrorCode) {
+    if(U_SUCCESS(*pErrorCode)) {
+        udata_finish(udata_create(dir, type, name, &dummyDataInfo, NULL, pErrorCode), pErrorCode);
+        if(U_FAILURE(*pErrorCode)) {
+            fprintf(stderr, "error %s writing dummy data file %s" U_FILE_SEP_STRING "%s.%s\n",
+                    u_errorName(*pErrorCode), dir, name, type);
+            exit(*pErrorCode);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_write8(UNewDataMemory *pData, uint8_t byte) {
+    if(pData!=NULL && pData->file!=NULL) {
+        T_FileStream_write(pData->file, &byte, 1);
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_write16(UNewDataMemory *pData, uint16_t word) {
+    if(pData!=NULL && pData->file!=NULL) {
+        T_FileStream_write(pData->file, &word, 2);
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_write32(UNewDataMemory *pData, uint32_t wyde) {
+    if(pData!=NULL && pData->file!=NULL) {
+        T_FileStream_write(pData->file, &wyde, 4);
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_writeBlock(UNewDataMemory *pData, const void *s, int32_t length) {
+    if(pData!=NULL && pData->file!=NULL) {
+        if(length>0) {
+            T_FileStream_write(pData->file, s, length);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_writePadding(UNewDataMemory *pData, int32_t length) {
+    static const uint8_t padding[16]={
+        0xaa, 0xaa, 0xaa, 0xaa,
+        0xaa, 0xaa, 0xaa, 0xaa,
+        0xaa, 0xaa, 0xaa, 0xaa,
+        0xaa, 0xaa, 0xaa, 0xaa
+    };
+    if(pData!=NULL && pData->file!=NULL) {
+        while(length>=16) {
+            T_FileStream_write(pData->file, padding, 16);
+            length-=16;
+        }
+        if(length>0) {
+            T_FileStream_write(pData->file, padding, length);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_writeString(UNewDataMemory *pData, const char *s, int32_t length) {
+    if(pData!=NULL && pData->file!=NULL) {
+        if(length==-1) {
+            length=(int32_t)uprv_strlen(s);
+        }
+        if(length>0) {
+            T_FileStream_write(pData->file, s, length);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+udata_writeUString(UNewDataMemory *pData, const UChar *s, int32_t length) {
+    if(pData!=NULL && pData->file!=NULL) {
+        if(length==-1) {
+            length=u_strlen(s);
+        }
+        if(length>0) {
+            T_FileStream_write(pData->file, s, length*sizeof(UChar));
+        }
+    }
+}
+
+/*
+ * Hey, Emacs, please set the following:
+ *
+ * Local Variables:
+ * indent-tabs-mode: nil
+ * End:
+ *
+ */
+
index 137fb49..9cc3994 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  unewdata.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/uoptions.c b/source/tools/toolutil/uoptions.c
new file mode 100644 (file)
index 0000000..e5ce64a
--- /dev/null
@@ -0,0 +1,133 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2000-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  uoptions.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2000apr17
+*   created by: Markus W. Scherer
+*
+*   This file provides a command line argument parser.
+*/
+
+#include "unicode/utypes.h"
+#include "cstring.h"
+#include "uoptions.h"
+
+U_CAPI int U_EXPORT2
+u_parseArgs(int argc, char* argv[],
+            int optionCount, UOption options[]) {
+    char *arg;
+    int i=1, remaining=1;
+    char c, stopOptions=0;
+
+    while(i<argc) {
+        arg=argv[i];
+        if(!stopOptions && *arg=='-' && (c=arg[1])!=0) {
+            /* process an option */
+            UOption *option=NULL;
+            arg+=2;
+            if(c=='-') {
+                /* process a long option */
+                if(*arg==0) {
+                    /* stop processing options after "--" */
+                    stopOptions=1;
+                } else {
+                    /* search for the option string */
+                    int j;
+                    for(j=0; j<optionCount; ++j) {
+                        if(options[j].longName && uprv_strcmp(arg, options[j].longName)==0) {
+                            option=options+j;
+                            break;
+                        }
+                    }
+                    if(option==NULL) {
+                        /* no option matches */
+                        return -i;
+                    }
+                    option->doesOccur=1;
+
+                    if(option->hasArg!=UOPT_NO_ARG) {
+                        /* parse the argument for the option, if any */
+                        if(i+1<argc && !(argv[i+1][0]=='-' && argv[i+1][1]!=0)) {
+                            /* argument in the next argv[], and there is not an option in there */
+                            option->value=argv[++i];
+                        } else if(option->hasArg==UOPT_REQUIRES_ARG) {
+                            /* there is no argument, but one is required: return with error */
+                            option->doesOccur=0;
+                            return -i;
+                        }
+                    }
+
+                    if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
+                        /* the option function was called and returned an error */
+                        option->doesOccur=0;
+                        return -i;
+                    }
+                }
+            } else {
+                /* process one or more short options */
+                do {
+                    /* search for the option letter */
+                    int j;
+                    for(j=0; j<optionCount; ++j) {
+                        if(c==options[j].shortName) {
+                            option=options+j;
+                            break;
+                        }
+                    }
+                    if(option==NULL) {
+                        /* no option matches */
+                        return -i;
+                    }
+                    option->doesOccur=1;
+
+                    if(option->hasArg!=UOPT_NO_ARG) {
+                        /* parse the argument for the option, if any */
+                        if(*arg!=0) {
+                            /* argument following in the same argv[] */
+                            option->value=arg;
+                            /* do not process the rest of this arg as option letters */
+                            break;
+                        } else if(i+1<argc && !(argv[i+1][0]=='-' && argv[i+1][1]!=0)) {
+                            /* argument in the next argv[], and there is not an option in there */
+                            option->value=argv[++i];
+                            /* this break is redundant because we know that *arg==0 */
+                            break;
+                        } else if(option->hasArg==UOPT_REQUIRES_ARG) {
+                            /* there is no argument, but one is required: return with error */
+                            option->doesOccur=0;
+                            return -i;
+                        }
+                    }
+
+                    if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
+                        /* the option function was called and returned an error */
+                        option->doesOccur=0;
+                        return -i;
+                    }
+
+                    /* get the next option letter */
+                    option=NULL;
+                    c=*arg++;
+                } while(c!=0);
+            }
+
+            /* go to next argv[] */
+            ++i;
+        } else {
+            /* move a non-option up in argv[] */
+            argv[remaining++]=arg;
+            ++i;
+        }
+    }
+    return remaining;
+}
index e6d5cbf..6f8f53b 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uoptions.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/uparse.c b/source/tools/toolutil/uparse.c
new file mode 100644 (file)
index 0000000..373b67f
--- /dev/null
@@ -0,0 +1,383 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2000-2012, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  uparse.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2000apr18
+*   created by: Markus W. Scherer
+*
+*   This file provides a parser for files that are delimited by one single
+*   character like ';' or TAB. Example: the Unicode Character Properties files
+*   like UnicodeData.txt are semicolon-delimited.
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/uchar.h"
+#include "unicode/ustring.h"
+#include "unicode/utf16.h"
+#include "cstring.h"
+#include "filestrm.h"
+#include "uparse.h"
+#include "ustr_imp.h"
+
+#include <stdio.h>
+
+U_CAPI const char * U_EXPORT2
+u_skipWhitespace(const char *s) {
+    while(U_IS_INV_WHITESPACE(*s)) {
+        ++s;
+    }
+    return s;
+}
+
+U_CAPI char * U_EXPORT2
+u_rtrim(char *s) {
+    char *end=uprv_strchr(s, 0);
+    while(s<end && U_IS_INV_WHITESPACE(*(end-1))) {
+        *--end = 0;
+    }
+    return end;
+}
+
+/*
+ * If the string starts with # @missing: then return the pointer to the
+ * following non-whitespace character.
+ * Otherwise return the original pointer.
+ * Unicode 5.0 adds such lines in some data files to document
+ * default property values.
+ * Poor man's regex for variable amounts of white space.
+ */
+static const char *
+getMissingLimit(const char *s) {
+    const char *s0=s;
+    if(
+        *(s=u_skipWhitespace(s))=='#' &&
+        *(s=u_skipWhitespace(s+1))=='@' &&
+        0==strncmp((s=u_skipWhitespace(s+1)), "missing", 7) &&
+        *(s=u_skipWhitespace(s+7))==':'
+    ) {
+        return u_skipWhitespace(s+1);
+    } else {
+        return s0;
+    }
+}
+
+U_CAPI void U_EXPORT2
+u_parseDelimitedFile(const char *filename, char delimiter,
+                     char *fields[][2], int32_t fieldCount,
+                     UParseLineFn *lineFn, void *context,
+                     UErrorCode *pErrorCode) {
+    FileStream *file;
+    char line[300];
+    char *start, *limit;
+    int32_t i, length;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    if(fields==NULL || lineFn==NULL || fieldCount<=0) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    if(filename==NULL || *filename==0 || (*filename=='-' && filename[1]==0)) {
+        filename=NULL;
+        file=T_FileStream_stdin();
+    } else {
+        file=T_FileStream_open(filename, "r");
+    }
+    if(file==NULL) {
+        *pErrorCode=U_FILE_ACCESS_ERROR;
+        return;
+    }
+
+    while(T_FileStream_readLine(file, line, sizeof(line))!=NULL) {
+        /* remove trailing newline characters */
+        length=(int32_t)(u_rtrim(line)-line);
+
+        /*
+         * detect a line with # @missing:
+         * start parsing after that, or else from the beginning of the line
+         * set the default warning for @missing lines
+         */
+        start=(char *)getMissingLimit(line);
+        if(start==line) {
+            *pErrorCode=U_ZERO_ERROR;
+        } else {
+            *pErrorCode=U_USING_DEFAULT_WARNING;
+        }
+
+        /* skip this line if it is empty or a comment */
+        if(*start==0 || *start=='#') {
+            continue;
+        }
+
+        /* remove in-line comments */
+        limit=uprv_strchr(start, '#');
+        if(limit!=NULL) {
+            /* get white space before the pound sign */
+            while(limit>start && U_IS_INV_WHITESPACE(*(limit-1))) {
+                --limit;
+            }
+
+            /* truncate the line */
+            *limit=0;
+        }
+
+        /* skip lines with only whitespace */
+        if(u_skipWhitespace(start)[0]==0) {
+            continue;
+        }
+
+        /* for each field, call the corresponding field function */
+        for(i=0; i<fieldCount; ++i) {
+            /* set the limit pointer of this field */
+            limit=start;
+            while(*limit!=delimiter && *limit!=0) {
+                ++limit;
+            }
+
+            /* set the field start and limit in the fields array */
+            fields[i][0]=start;
+            fields[i][1]=limit;
+
+            /* set start to the beginning of the next field, if any */
+            start=limit;
+            if(*start!=0) {
+                ++start;
+            } else if(i+1<fieldCount) {
+                *pErrorCode=U_PARSE_ERROR;
+                limit=line+length;
+                i=fieldCount;
+                break;
+            }
+        }
+
+        /* error in a field function? */
+        if(U_FAILURE(*pErrorCode)) {
+            break;
+        }
+
+        /* call the field function */
+        lineFn(context, fields, fieldCount, pErrorCode);
+        if(U_FAILURE(*pErrorCode)) {
+            break;
+        }
+    }
+
+    if(filename!=NULL) {
+        T_FileStream_close(file);
+    }
+}
+
+/*
+ * parse a list of code points
+ * store them as a UTF-32 string in dest[destCapacity]
+ * return the number of code points
+ */
+U_CAPI int32_t U_EXPORT2
+u_parseCodePoints(const char *s,
+                  uint32_t *dest, int32_t destCapacity,
+                  UErrorCode *pErrorCode) {
+    char *end;
+    uint32_t value;
+    int32_t count;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(s==NULL || destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    count=0;
+    for(;;) {
+        s=u_skipWhitespace(s);
+        if(*s==';' || *s==0) {
+            return count;
+        }
+
+        /* read one code point */
+        value=(uint32_t)uprv_strtoul(s, &end, 16);
+        if(end<=s || (!U_IS_INV_WHITESPACE(*end) && *end!=';' && *end!=0) || value>=0x110000) {
+            *pErrorCode=U_PARSE_ERROR;
+            return 0;
+        }
+
+        /* append it to the destination array */
+        if(count<destCapacity) {
+            dest[count++]=value;
+        } else {
+            *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+        }
+
+        /* go to the following characters */
+        s=end;
+    }
+}
+
+/*
+ * parse a list of code points
+ * store them as a string in dest[destCapacity]
+ * set the first code point in *pFirst
+ * @return The length of the string in numbers of UChars.
+ */
+U_CAPI int32_t U_EXPORT2
+u_parseString(const char *s,
+              UChar *dest, int32_t destCapacity,
+              uint32_t *pFirst,
+              UErrorCode *pErrorCode) {
+    char *end;
+    uint32_t value;
+    int32_t destLength;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(s==NULL || destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    if(pFirst!=NULL) {
+        *pFirst=0xffffffff;
+    }
+
+    destLength=0;
+    for(;;) {
+        s=u_skipWhitespace(s);
+        if(*s==';' || *s==0) {
+            if(destLength<destCapacity) {
+                dest[destLength]=0;
+            } else if(destLength==destCapacity) {
+                *pErrorCode=U_STRING_NOT_TERMINATED_WARNING;
+            } else {
+                *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
+            }
+            return destLength;
+        }
+
+        /* read one code point */
+        value=(uint32_t)uprv_strtoul(s, &end, 16);
+        if(end<=s || (!U_IS_INV_WHITESPACE(*end) && *end!=';' && *end!=0) || value>=0x110000) {
+            *pErrorCode=U_PARSE_ERROR;
+            return 0;
+        }
+
+        /* store the first code point */
+        if(pFirst!=NULL) {
+            *pFirst=value;
+            pFirst=NULL;
+        }
+
+        /* append it to the destination array */
+        if((destLength+U16_LENGTH(value))<=destCapacity) {
+            U16_APPEND_UNSAFE(dest, destLength, value);
+        } else {
+            destLength+=U16_LENGTH(value);
+        }
+
+        /* go to the following characters */
+        s=end;
+    }
+}
+
+/* read a range like start or start..end */
+U_CAPI int32_t U_EXPORT2
+u_parseCodePointRangeAnyTerminator(const char *s,
+                                   uint32_t *pStart, uint32_t *pEnd,
+                                   const char **terminator,
+                                   UErrorCode *pErrorCode) {
+    char *end;
+    uint32_t value;
+
+    if(U_FAILURE(*pErrorCode)) {
+        return 0;
+    }
+    if(s==NULL || pStart==NULL || pEnd==NULL) {
+        *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+
+    /* read the start code point */
+    s=u_skipWhitespace(s);
+    value=(uint32_t)uprv_strtoul(s, &end, 16);
+    if(end<=s || value>=0x110000) {
+        *pErrorCode=U_PARSE_ERROR;
+        return 0;
+    }
+    *pStart=*pEnd=value;
+
+    /* is there a "..end"? */
+    s=u_skipWhitespace(end);
+    if(*s!='.' || s[1]!='.') {
+        *terminator=end;
+        return 1;
+    }
+    s=u_skipWhitespace(s+2);
+
+    /* read the end code point */
+    value=(uint32_t)uprv_strtoul(s, &end, 16);
+    if(end<=s || value>=0x110000) {
+        *pErrorCode=U_PARSE_ERROR;
+        return 0;
+    }
+    *pEnd=value;
+
+    /* is this a valid range? */
+    if(value<*pStart) {
+        *pErrorCode=U_PARSE_ERROR;
+        return 0;
+    }
+
+    *terminator=end;
+    return value-*pStart+1;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_parseCodePointRange(const char *s,
+                      uint32_t *pStart, uint32_t *pEnd,
+                      UErrorCode *pErrorCode) {
+    const char *terminator;
+    int32_t rangeLength=
+        u_parseCodePointRangeAnyTerminator(s, pStart, pEnd, &terminator, pErrorCode);
+    if(U_SUCCESS(*pErrorCode)) {
+        terminator=u_skipWhitespace(terminator);
+        if(*terminator!=';' && *terminator!=0) {
+            *pErrorCode=U_PARSE_ERROR;
+            return 0;
+        }
+    }
+    return rangeLength;
+}
+
+U_CAPI int32_t U_EXPORT2
+u_parseUTF8(const char *source, int32_t sLen, char *dest, int32_t destCapacity, UErrorCode *status) {
+    const char *read = source;
+    int32_t i = 0;
+    unsigned int value = 0;
+    if(sLen == -1) {
+        sLen = (int32_t)strlen(source);
+    }
+    
+    while(read < source+sLen) {
+        sscanf(read, "%2x", &value);
+        if(i < destCapacity) {
+            dest[i] = (char)value;
+        }
+        i++;
+        read += 2;
+    }
+    return u_terminateChars(dest, destCapacity, i, status);
+}
index df0e79a..5ad766c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  uparse.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
diff --git a/source/tools/toolutil/writesrc.c b/source/tools/toolutil/writesrc.c
new file mode 100644 (file)
index 0000000..278336f
--- /dev/null
@@ -0,0 +1,268 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2005-2012, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  writesrc.c
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005apr23
+*   created by: Markus W. Scherer
+*
+*   Helper functions for writing source code for data.
+*/
+
+#include <stdio.h>
+#include <time.h>
+#include "unicode/utypes.h"
+#include "unicode/putil.h"
+#include "utrie2.h"
+#include "cstring.h"
+#include "writesrc.h"
+
+static FILE *
+usrc_createWithHeader(const char *path, const char *filename,
+                      const char *generator, const char *header) {
+    char buffer[1024];
+    const char *p;
+    char *q;
+    FILE *f;
+    char c;
+
+    if(path==NULL) {
+        p=filename;
+    } else {
+        /* concatenate path and filename, with U_FILE_SEP_CHAR in between if necessary */
+        uprv_strcpy(buffer, path);
+        q=buffer+uprv_strlen(buffer);
+        if(q>buffer && (c=*(q-1))!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
+            *q++=U_FILE_SEP_CHAR;
+        }
+        uprv_strcpy(q, filename);
+        p=buffer;
+    }
+
+    f=fopen(p, "w");
+    if(f!=NULL) {
+        const struct tm *lt;
+        time_t t;
+
+        time(&t);
+        lt=localtime(&t);
+        if(generator==NULL) {
+            strftime(buffer, sizeof(buffer), "%Y-%m-%d", lt);
+            fprintf(f, header, filename, buffer);
+        } else {
+            fprintf(f, header, filename, generator);
+        }
+    } else {
+        fprintf(
+            stderr,
+            "usrc_create(%s, %s): unable to create file\n",
+            path!=NULL ? path : "", filename);
+    }
+    return f;
+}
+
+U_CAPI FILE * U_EXPORT2
+usrc_create(const char *path, const char *filename, const char *generator) {
+    // TODO: Add parameter for the first year this file was generated, not before 2016.
+    static const char *header=
+        "// Copyright (C) 2016 and later: Unicode, Inc. and others.\n"
+        "// License & terms of use: http://www.unicode.org/copyright.html\n"
+        "//\n"
+        "// Copyright (C) 1999-2016, International Business Machines\n"
+        "// Corporation and others.  All Rights Reserved.\n"
+        "//\n"
+        "// file name: %s\n"
+        "//\n"
+        "// machine-generated by: %s\n"
+        "\n\n";
+    return usrc_createWithHeader(path, filename, generator, header);
+}
+
+U_CAPI FILE * U_EXPORT2
+usrc_createTextData(const char *path, const char *filename, const char *generator) {
+    // TODO: Add parameter for the first year this file was generated, not before 2016.
+    static const char *header=
+        "# Copyright (C) 2016 and later: Unicode, Inc. and others.\n"
+        "# License & terms of use: http://www.unicode.org/copyright.html\n"
+        "# Copyright (C) 1999-2016, International Business Machines\n"
+        "# Corporation and others.  All Rights Reserved.\n"
+        "#\n"
+        "# file name: %s\n"
+        "#\n"
+        "# machine-generated by: %s\n"
+        "\n\n";
+    return usrc_createWithHeader(path, filename, generator, header);
+}
+
+U_CAPI void U_EXPORT2
+usrc_writeArray(FILE *f,
+                const char *prefix,
+                const void *p, int32_t width, int32_t length,
+                const char *postfix) {
+    const uint8_t *p8;
+    const uint16_t *p16;
+    const uint32_t *p32;
+    uint32_t value;
+    int32_t i, col;
+
+    p8=NULL;
+    p16=NULL;
+    p32=NULL;
+    switch(width) {
+    case 8:
+        p8=(const uint8_t *)p;
+        break;
+    case 16:
+        p16=(const uint16_t *)p;
+        break;
+    case 32:
+        p32=(const uint32_t *)p;
+        break;
+    default:
+        fprintf(stderr, "usrc_writeArray(width=%ld) unrecognized width\n", (long)width);
+        return;
+    }
+    if(prefix!=NULL) {
+        fprintf(f, prefix, (long)length);
+    }
+    for(i=col=0; i<length; ++i, ++col) {
+        if(i>0) {
+            if(col<16) {
+                fputc(',', f);
+            } else {
+                fputs(",\n", f);
+                col=0;
+            }
+        }
+        switch(width) {
+        case 8:
+            value=p8[i];
+            break;
+        case 16:
+            value=p16[i];
+            break;
+        case 32:
+            value=p32[i];
+            break;
+        default:
+            value=0; /* unreachable */
+            break;
+        }
+        fprintf(f, value<=9 ? "%lu" : "0x%lx", (unsigned long)value);
+    }
+    if(postfix!=NULL) {
+        fputs(postfix, f);
+    }
+}
+
+U_CAPI void U_EXPORT2
+usrc_writeUTrie2Arrays(FILE *f,
+                       const char *indexPrefix, const char *data32Prefix,
+                       const UTrie2 *pTrie,
+                       const char *postfix) {
+    if(pTrie->data32==NULL) {
+        /* 16-bit trie */
+        usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength+pTrie->dataLength, postfix);
+    } else {
+        /* 32-bit trie */
+        usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, postfix);
+        usrc_writeArray(f, data32Prefix, pTrie->data32, 32, pTrie->dataLength, postfix);
+    }
+}
+
+U_CAPI void U_EXPORT2
+usrc_writeUTrie2Struct(FILE *f,
+                       const char *prefix,
+                       const UTrie2 *pTrie,
+                       const char *indexName, const char *data32Name,
+                       const char *postfix) {
+    if(prefix!=NULL) {
+        fputs(prefix, f);
+    }
+    if(pTrie->data32==NULL) {
+        /* 16-bit trie */
+        fprintf(
+            f,
+            "    %s,\n"         /* index */
+            "    %s+%ld,\n"     /* data16 */
+            "    NULL,\n",      /* data32 */
+            indexName,
+            indexName, 
+            (long)pTrie->indexLength);
+    } else {
+        /* 32-bit trie */
+        fprintf(
+            f,
+            "    %s,\n"         /* index */
+            "    NULL,\n"       /* data16 */
+            "    %s,\n",        /* data32 */
+            indexName,
+            data32Name);
+    }
+    fprintf(
+        f,
+        "    %ld,\n"            /* indexLength */
+        "    %ld,\n"            /* dataLength */
+        "    0x%hx,\n"          /* index2NullOffset */
+        "    0x%hx,\n"          /* dataNullOffset */
+        "    0x%lx,\n"          /* initialValue */
+        "    0x%lx,\n"          /* errorValue */
+        "    0x%lx,\n"          /* highStart */
+        "    0x%lx,\n"          /* highValueIndex */
+        "    NULL, 0, FALSE, FALSE, 0, NULL\n",
+        (long)pTrie->indexLength, (long)pTrie->dataLength,
+        (short)pTrie->index2NullOffset, (short)pTrie->dataNullOffset,
+        (long)pTrie->initialValue, (long)pTrie->errorValue,
+        (long)pTrie->highStart, (long)pTrie->highValueIndex);
+    if(postfix!=NULL) {
+        fputs(postfix, f);
+    }
+}
+
+U_CAPI void U_EXPORT2
+usrc_writeArrayOfMostlyInvChars(FILE *f,
+                                const char *prefix,
+                                const char *p, int32_t length,
+                                const char *postfix) {
+    int32_t i, col;
+    int prev2, prev, c;
+
+    if(prefix!=NULL) {
+        fprintf(f, prefix, (long)length);
+    }
+    prev2=prev=-1;
+    for(i=col=0; i<length; ++i, ++col) {
+        c=(uint8_t)p[i];
+        if(i>0) {
+            /* Break long lines. Try to break at interesting places, to minimize revision diffs. */
+            if( 
+                /* Very long line. */
+                col>=32 ||
+                /* Long line, break after terminating NUL. */
+                (col>=24 && prev2>=0x20 && prev==0) ||
+                /* Medium-long line, break before non-NUL, non-character byte. */
+                (col>=16 && (prev==0 || prev>=0x20) && 0<c && c<0x20)
+            ) {
+                fputs(",\n", f);
+                col=0;
+            } else {
+                fputc(',', f);
+            }
+        }
+        fprintf(f, c<0x20 ? "%u" : "'%c'", c);
+        prev2=prev;
+        prev=c;
+    }
+    if(postfix!=NULL) {
+        fputs(postfix, f);
+    }
+}
index fdcf1f9..c82bf3c 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  writesrc.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index 1ca111c..1c158da 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  xmlparser.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -209,7 +209,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
             goto exit;
         }
 
-        buffer=toUCharPtr(src.getBuffer(bytesLength));
+        buffer=src.getBuffer(bytesLength);
         if(buffer==NULL) {
             // unexpected failure to reserve some string capacity
             errorCode=U_MEMORY_ALLOCATION_ERROR;
@@ -278,7 +278,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
         pb=bytes;
         for(;;) {
             length=src.length();
-            buffer=toUCharPtr(src.getBuffer(capacity));
+            buffer=src.getBuffer(capacity);
             if(buffer==NULL) {
                 // unexpected failure to reserve some string capacity
                 errorCode=U_MEMORY_ALLOCATION_ERROR;
index 75c8ed7..aff9d88 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  xmlparser.h
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index b156921..02fe6eb 100644 (file)
@@ -121,7 +121,7 @@ $(ZICTARG):         $(OBJECTS) $(TDATA) yearistype $(srcdir)/tz2icu.h
                $(CC) $(CFLAGS) $(TZORIG_EXTRA_CFLAGS) $(LFLAGS) -I$(srcdir) $(OBJECTS) $(LDLIBS) -o $@
 
 $(TZ2ICUTARG): $(srcdir)/tz2icu.cpp $(srcdir)/tz2icu.h
-               $(CXX) $(CXXFLAGS) -I$(srcdir) -I$(top_srcdir)/common $(srcdir)/tz2icu.cpp -o $@
+               $(CXX) -W -Wall  -I$(srcdir) -I$(top_srcdir)/common -pedantic $(srcdir)/tz2icu.cpp -o $@
 
 $(ICUZDUMPTARG):       $(srcdir)/icuzdump.cpp
                $(LINK.cc)  -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/io  -pedantic $(srcdir)/icuzdump.cpp $(LIBICUUC) $(LIBICUDT) $(LIBICUI18N) $(LIBICUIO) $(LIBICUTOOLUTIL) -o $@
index 91d5b37..92d3eb6 100644 (file)
@@ -12,5 +12,4 @@
 Africa/Asmera ER
 America/Montreal CA
 Europe/Simferopol UA
-Pacific/Johnston UM
 
index 3e5ed1d..69c4848 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
@@ -8,7 +8,7 @@
 *
 *******************************************************************************
 *   file name:  icuzdump.cpp
-*   encoding:   UTF-8
+*   encoding:   US-ASCII
 *   tab size:   8 (not used)
 *   indentation:4
 *
index f0ee63e..def8f94 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
index b88442f..87fe3da 100644 (file)
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************