ICU-21242 Replacing instances of 'master' with 'primary'
diff --git a/docs/userguide/boundaryanalysis/index.md b/docs/userguide/boundaryanalysis/index.md
index 697602a..dc08e77 100644
--- a/docs/userguide/boundaryanalysis/index.md
+++ b/docs/userguide/boundaryanalysis/index.md
@@ -193,7 +193,7 @@
 
 For concurrent break iteration, each thread must use its own break iterator.
 These can be obtained by creating separate break iterators of the desired type,
-or by initially creating a master break iterator and then creating a clone for
+or by initially creating a primary break iterator and then creating a clone for
 each thread.
 
 ### Line Breaking Strictness, a CSS Property
diff --git a/docs/userguide/dev/codingguidelines.md b/docs/userguide/dev/codingguidelines.md
index c702dea..b76b5ab 100644
--- a/docs/userguide/dev/codingguidelines.md
+++ b/docs/userguide/dev/codingguidelines.md
@@ -1907,7 +1907,7 @@
 
 Most of the data items are pre-built into binary files that are then installed
 on a user's machine. Some data can also be built at runtime but is not
-persistent. In the latter case, a master object should be built once and then
+persistent. In the latter case, a primary object should be built once and then
 cloned to avoid the multiple parsing, processing, and building of the same data.
 
 Binary data formats for ICU must be portable across platforms that share the
diff --git a/icu4c/source/Doxyfile.in b/icu4c/source/Doxyfile.in
index 25b535c..7ced104 100644
--- a/icu4c/source/Doxyfile.in
+++ b/icu4c/source/Doxyfile.in
@@ -1310,7 +1310,7 @@
 HHC_LOCATION           =
 
 # The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
+# (YES) or that it should be included in the primary .chm file (NO).
 # The default value is: NO.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
diff --git a/icu4c/source/MAKE_OUT.txt b/icu4c/source/MAKE_OUT.txt
new file mode 100644
index 0000000..1c0acc8
--- /dev/null
+++ b/icu4c/source/MAKE_OUT.txt
@@ -0,0 +1,502 @@
+Note: rebuild with "make VERBOSE=1 check" to show all compiler parameters.
+make[0]: Making `all' in `stubdata'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/stubdata'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/stubdata'
+make[0]: Making `all' in `common'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/common'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/common'
+make[0]: Making `all' in `i18n'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/i18n'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/i18n'
+make[0]: Making `all' in `layoutex'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/layoutex'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/layoutex'
+make[0]: Making `all' in `io'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/io'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/io'
+make[0]: Making `all' in `tools'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[1]: Making `all' in `toolutil'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/toolutil'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/toolutil'
+make[1]: Making `all' in `ctestfw'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/ctestfw'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/ctestfw'
+make[1]: Making `all' in `makeconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/makeconv'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/makeconv'
+make[1]: Making `all' in `genrb'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genrb'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genrb'
+make[1]: Making `all' in `genbrk'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genbrk'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genbrk'
+make[1]: Making `all' in `gencnval'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencnval'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencnval'
+make[1]: Making `all' in `gensprep'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gensprep'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gensprep'
+make[1]: Making `all' in `icuinfo'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icuinfo'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icuinfo'
+make[1]: Making `all' in `genccode'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genccode'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genccode'
+make[1]: Making `all' in `gencmn'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencmn'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencmn'
+make[1]: Making `all' in `icupkg'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icupkg'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icupkg'
+make[1]: Making `all' in `pkgdata'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/pkgdata'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/pkgdata'
+make[1]: Making `all' in `gentest'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gentest'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gentest'
+make[1]: Making `all' in `gennorm2'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gennorm2'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gennorm2'
+make[1]: Making `all' in `gencfu'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencfu'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencfu'
+make[1]: Making `all' in `gendict'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gendict'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gendict'
+make[1]: Making `all' in `escapesrc'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/escapesrc'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/escapesrc'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[2]: Nothing to be done for 'all-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[0]: Making `all' in `data'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/data'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/data'
+make[0]: Making `all' in `extra'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[1]: Making `all' in `scrptrun'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/scrptrun'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/scrptrun'
+make[1]: Making `all' in `uconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/uconv'
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/uconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[2]: Nothing to be done for 'all-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[0]: Making `all' in `samples'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[1]: Making `all' in `date'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/date'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/date'
+make[1]: Making `all' in `cal'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/cal'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/cal'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[2]: Nothing to be done for 'all-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[0]: Making `all' in `test'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source'
+Note: rebuild with "make VERBOSE=1 all-local" to show all compiler parameters.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source'
+make[0]: Making `check' in `stubdata'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/stubdata'
+make[1]: Nothing to be done for 'check'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/stubdata'
+make[0]: Making `check' in `common'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/common'
+make[1]: Nothing to be done for 'check'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/common'
+make[0]: Making `check' in `i18n'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/i18n'
+make[1]: Nothing to be done for 'check'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/i18n'
+make[0]: Making `check' in `layoutex'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/layoutex'
+make[1]: Nothing to be done for 'check'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/layoutex'
+make[0]: Making `check' in `io'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/io'
+make[1]: Nothing to be done for 'check'.
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/io'
+make[0]: Making `check' in `tools'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[1]: Making `check' in `toolutil'
+make[1]: Making `all' in `toolutil'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/toolutil'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/toolutil'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/toolutil'
+make[1]: Making `check' in `ctestfw'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/ctestfw'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/toolutil'
+make[1]: Making `all' in `ctestfw'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/ctestfw'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/ctestfw'
+make[1]: Making `check' in `makeconv'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/ctestfw'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/makeconv'
+make[1]: Making `all' in `makeconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/makeconv'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/makeconv'
+make[1]: Making `check' in `genrb'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genrb'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/makeconv'
+make[1]: Making `all' in `genrb'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genrb'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genrb'
+make[1]: Making `check' in `genbrk'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genrb'
+make[1]: Making `all' in `genbrk'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genbrk'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genbrk'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genbrk'
+make[1]: Making `check' in `gencnval'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genbrk'
+make[1]: Making `all' in `gencnval'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencnval'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencnval'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencnval'
+make[1]: Making `check' in `gensprep'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencnval'
+make[1]: Making `all' in `gensprep'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gensprep'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gensprep'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gensprep'
+make[1]: Making `all' in `icuinfo'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gensprep'
+make[1]: Making `check' in `icuinfo'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icuinfo'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icuinfo'
+LD_LIBRARY_PATH=../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH  ./icuinfo -i ../../data/out/build/icudt67l -x ../../config/icuinfo.xml -v -K
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icuinfo'
+make[1]: Making `all' in `genccode'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genccode'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genccode'
+make[1]: Making `all' in `gencmn'
+Plugins are disabled.
+ <icuSystemParams type="icu4c">
+    <param name="copyright"> Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html </param>
+    <param name="product">icu4c</param>
+    <param name="product.full">International Components for Unicode for C/C++</param>
+    <param name="version">67.1</param>
+    <param name="version.unicode">13.0</param>
+    <param name="platform.number">4000</param>
+    <param name="platform.type">Linux</param>
+    <param name="locale.default">en_US</param>
+    <param name="locale.default.bcp47">en-US</param>
+    <param name="converter.default">UTF-8</param>
+    <param name="icudata.name">icudt67l</param>
+    <param name="icudata.path">../../data/out/build/icudt67l</param>
+    <param name="cldr.version">37.0</param>
+    <param name="tz.version">2020a</param>
+    <param name="tz.default">America/Los_Angeles</param>
+    <param name="cpu.bits">64</param>
+    <param name="cpu.big_endian">0</param>
+    <param name="os.wchar_width">4</param>
+    <param name="os.charset_family">0</param>
+    <param name="os.host">x86_64-pc-linux-gnu</param>
+    <param name="build.build">x86_64-pc-linux-gnu</param>
+    <param name="build.cc">clang</param>
+    <param name="build.cxx">clang++</param>
+    <param name="uconfig.internal_digitlist">1</param>
+    <param name="uconfig.have_parseallinput">1</param>
+ </icuSystemParams>
+
+
+ICU Initialization returned: U_ZERO_ERROR
+ICU u_cleanup() called.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icuinfo'
+make[1]: Making `check' in `genccode'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencmn'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genccode'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencmn'
+make[1]: Making `all' in `icupkg'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/genccode'
+make[1]: Making `check' in `gencmn'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icupkg'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencmn'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icupkg'
+make[1]: Making `all' in `pkgdata'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencmn'
+make[1]: Making `check' in `icupkg'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/pkgdata'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icupkg'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/pkgdata'
+make[1]: Making `all' in `gentest'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/icupkg'
+make[1]: Making `check' in `pkgdata'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gentest'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/pkgdata'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gentest'
+make[1]: Making `all' in `gennorm2'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/pkgdata'
+make[1]: Making `check' in `gentest'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gennorm2'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gentest'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gentest'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gennorm2'
+make[1]: Making `check' in `gennorm2'
+make[1]: Making `all' in `gencfu'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gennorm2'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencfu'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gennorm2'
+make[1]: Making `check' in `gencfu'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencfu'
+make[1]: Making `all' in `gendict'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencfu'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gendict'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gendict'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gencfu'
+make[1]: Making `all' in `escapesrc'
+make[1]: Making `check' in `gendict'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gendict'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/escapesrc'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/escapesrc'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[2]: Nothing to be done for 'all-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/gendict'
+make[1]: Making `check' in `escapesrc'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/escapesrc'
+Testing test-nochange.cpp
+escapesrc: ./test-nochange.cpp -> ./output-nochange.cpp
+Testing test-simple.cpp
+escapesrc: ./test-simple.cpp -> ./output-simple.cpp
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools/escapesrc'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[2]: Nothing to be done for 'check-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/tools'
+make[0]: Making `check' in `data'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/data'
+PYTHONPATH=../python python3 -m icutools.databuilder.test
+...............
+----------------------------------------------------------------------
+Ran 15 tests in 0.014s
+
+OK
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/data'
+make[0]: Making `check' in `extra'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[1]: Making `all' in `scrptrun'
+make[1]: Making `check' in `scrptrun'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/scrptrun'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/scrptrun'
+make[2]: Nothing to be done for 'check'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/scrptrun'
+make[1]: Making `check' in `uconv'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/scrptrun'
+make[1]: Making `all' in `uconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/uconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/uconv'
+LD_LIBRARY_PATH=../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH  ./../../bin/uconv -f ibm-37 ./samples/ibm-37-test.txt
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/uconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[2]: Nothing to be done for 'all-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+PASS: Conversion from ibm-37 was successful.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra/uconv'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[2]: Nothing to be done for 'check-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/extra'
+make[0]: Making `check' in `samples'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[1]: Making `all' in `date'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/date'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/date'
+make[1]: Making `all' in `cal'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/cal'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples/cal'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[2]: Nothing to be done for 'all-local'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/samples'
+make[0]: Making `check' in `test'
+make[1]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test'
+make[1]: Making `all' in `testdata'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/testdata'
+LD_LIBRARY_PATH=../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH   ../../bin/pkgdata -q -c -s /usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/testdata/out/build/icudt67l -T ../../test/testdata/out/build -d ../../test/testdata/out -s ../../test/testdata/out/build -p testdata -m common ../../test/testdata/out/testdata/testdata.lst
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/testdata'
+make[1]: Making `all' in `intltest'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/intltest'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/intltest'
+make[1]: Making `all' in `iotest'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/iotest'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/iotest'
+make[1]: Making `all' in `cintltst'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/cintltst'
+make[2]: Nothing to be done for 'all'.
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/cintltst'
+make[1]: Making `all' in `letest'
+make[2]: Entering directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/letest'
+clang++ -O3  -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -std=c++11  -Qunused-arguments -Wno-parentheses-equality   -o letest letsutil.o cmaps.o FontTableCache.o SimpleFontInstance.o PortableFontInstance.o letest.o cfonts.o xmlreader.o cletest.o -L../../lib -liculx -L../../lib -licuuc -L../../stubdata -licudata -L../../lib -licui18n -L../../tools/ctestfw -licutest -L../../lib -licutu -lpthread -ldl -lm   -licu-le-hb
+/usr/bin/ld: warning: libicuuc.so.63, needed by /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libicu-le-hb.so, may conflict with libicuuc.so.67
+/usr/bin/ld: warning: libicudata.so.63, needed by /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libicu-le-hb.so, may conflict with libicudata.so.67
+/usr/bin/ld: SimpleFontInstance.o: in function `SimpleFontInstance::SimpleFontInstance(float, LEErrorCode&)':
+SimpleFontInstance.cpp:(.text+0x31): undefined reference to `icu_67::LEFontInstance::yUnitsToPoints(float) const'
+/usr/bin/ld: SimpleFontInstance.cpp:(.text+0x66): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: SimpleFontInstance.o: in function `SimpleFontInstance::~SimpleFontInstance()':
+SimpleFontInstance.cpp:(.text+0x81): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: SimpleFontInstance.o: in function `SimpleFontInstance::~SimpleFontInstance()':
+SimpleFontInstance.cpp:(.text+0x95): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: SimpleFontInstance.o: in function `SimpleFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*, signed char) const':
+SimpleFontInstance.cpp:(.text+0x121): undefined reference to `icu_67::LEFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*, signed char) const'
+/usr/bin/ld: SimpleFontInstance.o: in function `SimpleFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*) const':
+SimpleFontInstance.cpp:(.text+0x131): undefined reference to `icu_67::LEFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x20): undefined reference to `icu_67::LEFontInstance::getDynamicClassID() const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x28): undefined reference to `icu_67::LEFontInstance::getSubFont(char16_t const*, int*, int, int, LEErrorCode&) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x38): undefined reference to `icu_67::LEFontInstance::canDisplay(int) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x48): undefined reference to `icu_67::LEFontInstance::mapCharsToGlyphs(char16_t const*, int, int, signed char, icu_67::LECharMapper const*, signed char, icu_67::LEGlyphStorage&) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x88): undefined reference to `icu_67::LEFontInstance::xUnitsToPoints(float) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x90): undefined reference to `icu_67::LEFontInstance::yUnitsToPoints(float) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x98): undefined reference to `icu_67::LEFontInstance::unitsToPoints(LEPoint&, LEPoint&) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0xa0): undefined reference to `icu_67::LEFontInstance::xPixelsToUnits(float) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0xa8): undefined reference to `icu_67::LEFontInstance::yPixelsToUnits(float) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0xb0): undefined reference to `icu_67::LEFontInstance::pixelsToUnits(LEPoint&, LEPoint&) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0xc8): undefined reference to `icu_67::LEFontInstance::transformFunits(float, float, LEPoint&) const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0xe8): undefined reference to `icu_67::LEFontInstance::getLineHeight() const'
+/usr/bin/ld: SimpleFontInstance.o:(.rodata+0x118): undefined reference to `typeinfo for icu_67::LEFontInstance'
+/usr/bin/ld: PortableFontInstance.o: in function `PortableFontInstance::PortableFontInstance(char const*, float, LEErrorCode&)':
+PortableFontInstance.cpp:(.text+0x8f): undefined reference to `vtable for icu_67::LEFontInstance'
+/usr/bin/ld: PortableFontInstance.cpp:(.text+0x3ea): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: PortableFontInstance.cpp:(.text+0x3fd): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: PortableFontInstance.o: in function `PortableFontInstance::~PortableFontInstance()':
+PortableFontInstance.cpp:(.text+0x4bb): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: PortableFontInstance.cpp:(.text+0x4ce): undefined reference to `icu_67::LEFontInstance::~LEFontInstance()'
+/usr/bin/ld: PortableFontInstance.o: in function `PortableFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*, signed char) const':
+PortableFontInstance.cpp:(.text+0xcf1): undefined reference to `icu_67::LEFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*, signed char) const'
+/usr/bin/ld: PortableFontInstance.o: in function `PortableFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*) const':
+PortableFontInstance.cpp:(.text+0xd01): undefined reference to `icu_67::LEFontInstance::mapCharToGlyph(int, icu_67::LECharMapper const*) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x20): undefined reference to `icu_67::LEFontInstance::getDynamicClassID() const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x28): undefined reference to `icu_67::LEFontInstance::getSubFont(char16_t const*, int*, int, int, LEErrorCode&) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x38): undefined reference to `icu_67::LEFontInstance::canDisplay(int) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x48): undefined reference to `icu_67::LEFontInstance::mapCharsToGlyphs(char16_t const*, int, int, signed char, icu_67::LECharMapper const*, signed char, icu_67::LEGlyphStorage&) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x88): undefined reference to `icu_67::LEFontInstance::xUnitsToPoints(float) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x90): undefined reference to `icu_67::LEFontInstance::yUnitsToPoints(float) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x98): undefined reference to `icu_67::LEFontInstance::unitsToPoints(LEPoint&, LEPoint&) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0xa0): undefined reference to `icu_67::LEFontInstance::xPixelsToUnits(float) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0xa8): undefined reference to `icu_67::LEFontInstance::yPixelsToUnits(float) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0xb0): undefined reference to `icu_67::LEFontInstance::pixelsToUnits(LEPoint&, LEPoint&) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0xc8): undefined reference to `icu_67::LEFontInstance::transformFunits(float, float, LEPoint&) const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0xe8): undefined reference to `icu_67::LEFontInstance::getLineHeight() const'
+/usr/bin/ld: PortableFontInstance.o:(.rodata+0x188): undefined reference to `typeinfo for icu_67::LEFontInstance'
+/usr/bin/ld: letest.o: in function `ParamTest()':
+letest.cpp:(.text+0xd05): undefined reference to `icu_67::LayoutEngine::layoutEngineFactory(icu_67::LEFontInstance const*, int, int, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0xd10): undefined reference to `icu_67::LayoutEngine::getGlyphCount() const'
+/usr/bin/ld: letest.cpp:(.text+0xd5f): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xd8a): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xdb9): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, unsigned int, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xde9): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, unsigned int, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xe13): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xe3e): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xe6d): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, int, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xe9d): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, int, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xec7): undefined reference to `icu_67::LayoutEngine::getGlyphPositions(float*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xef5): undefined reference to `icu_67::LayoutEngine::getGlyphPositions(float*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0xf46): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0xfb2): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0xffa): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0x1042): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0x108a): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.o:letest.cpp:(.text+0x10e2): more undefined references to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)' follow
+/usr/bin/ld: letest.o: in function `ParamTest()':
+letest.cpp:(.text+0x110c): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x1143): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.o: in function `FactoryTest()':
+letest.cpp:(.text+0x1211): undefined reference to `icu_67::LayoutEngine::layoutEngineFactory(icu_67::LEFontInstance const*, int, int, LEErrorCode&)'
+/usr/bin/ld: letest.o: in function `AccessTest()':
+letest.cpp:(.text+0x12d4): undefined reference to `icu_67::LayoutEngine::layoutEngineFactory(icu_67::LEFontInstance const*, int, int, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0x1345): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0x1369): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x1379): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x138c): undefined reference to `icu_67::LayoutEngine::getGlyphPositions(float*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x13e5): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, unsigned int, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x14d9): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, int, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x15c5): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x1681): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x16ff): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x177d): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x17fb): undefined reference to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const'
+/usr/bin/ld: letest.o:letest.cpp:(.text+0x1879): more undefined references to `icu_67::LayoutEngine::getGlyphPosition(int, float&, float&, LEErrorCode&) const' follow
+/usr/bin/ld: letest.o: in function `DataDrivenTest()':
+letest.cpp:(.text+0x263a): undefined reference to `icu_67::LayoutEngine::layoutEngineFactory(icu_67::LEFontInstance const*, int, int, int, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0x26ba): undefined reference to `icu_67::LayoutEngine::layoutChars(char16_t const*, int, int, int, signed char, float, float, LEErrorCode&)'
+/usr/bin/ld: letest.cpp:(.text+0x274e): undefined reference to `icu_67::LayoutEngine::getGlyphs(unsigned int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x2760): undefined reference to `icu_67::LayoutEngine::getCharIndices(int*, LEErrorCode&) const'
+/usr/bin/ld: letest.cpp:(.text+0x2772): undefined reference to `icu_67::LayoutEngine::getGlyphPositions(float*, LEErrorCode&) const'
+clang: error: linker command failed with exit code 1 (use -v to see invocation)
+make[2]: *** [Makefile:87: letest] Error 1
+make[2]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test/letest'
+make[1]: *** [Makefile:73: all-recursive] Error 2
+make[1]: Leaving directory '/usr/local/google/home/ccornelius/ICU/icu/icu4c/source/test'
+make: *** [Makefile:153: check-recursive] Error 2
diff --git a/icu4c/source/common/unicode/ucnv.h b/icu4c/source/common/unicode/ucnv.h
index ec7c5f3..614001c 100644
--- a/icu4c/source/common/unicode/ucnv.h
+++ b/icu4c/source/common/unicode/ucnv.h
@@ -476,7 +476,7 @@
  * <p>The name will NOT be looked up in the alias mechanism, nor will the converter be
  * stored in the converter cache or the alias table. The only way to open further converters
  * is call this function multiple times, or use the ucnv_safeClone() function to clone a
- * 'master' converter.</p>
+ * 'primary' converter.</p>
  *
  * <p>A future version of ICU may add alias table lookups and/or caching
  * to this function.</p>
diff --git a/icu4c/source/common/unifiedcache.cpp b/icu4c/source/common/unifiedcache.cpp
index f2dd916..493ab79 100644
--- a/icu4c/source/common/unifiedcache.cpp
+++ b/icu4c/source/common/unifiedcache.cpp
@@ -311,7 +311,7 @@
     }
     keyToAdopt->fCreationStatus = creationStatus;
     if (value->softRefCount == 0) {
-        _registerMaster(keyToAdopt, value);
+        _registerPrimary(keyToAdopt, value);
     }
     void *oldValue = uhash_put(fHashtable, keyToAdopt, (void *) value, &status);
     U_ASSERT(oldValue == nullptr);
@@ -338,7 +338,7 @@
     } else {
         _put(element, value, status);
     }
-    // Run an eviction slice. This will run even if we added a master entry
+    // Run an eviction slice. This will run even if we added a primary entry
     // which doesn't increase the unused count, but that is still o.k
     _runEvictionSlice();
 }
@@ -403,9 +403,9 @@
     }
 }
 
-void UnifiedCache::_registerMaster(
+void UnifiedCache::_registerPrimary(
             const CacheKeyBase *theKey, const SharedObject *value) const {
-    theKey->fIsMaster = true;
+    theKey->fIsPrimary = true;
     value->cachePtr = this;
     ++fNumValuesTotal;
     ++fNumValuesInUse;
@@ -420,7 +420,7 @@
     const SharedObject *oldValue = (const SharedObject *) element->value.pointer;
     theKey->fCreationStatus = status;
     if (value->softRefCount == 0) {
-        _registerMaster(theKey, value);
+        _registerPrimary(theKey, value);
     }
     value->softRefCount++;
     UHashElement *ptr = const_cast<UHashElement *>(element);
@@ -474,9 +474,9 @@
         return FALSE;
     }
 
-    // We can evict entries that are either not a master or have just
+    // We can evict entries that are either not a primary or have just
     // one reference (The one reference being from the cache itself).
-    return (!theKey->fIsMaster || (theValue->softRefCount == 1 && theValue->noHardReferences()));
+    return (!theKey->fIsPrimary || (theValue->softRefCount == 1 && theValue->noHardReferences()));
 }
 
 void UnifiedCache::removeSoftRef(const SharedObject *value) const {
diff --git a/icu4c/source/common/unifiedcache.h b/icu4c/source/common/unifiedcache.h
index d6c9945..6bb46a5 100644
--- a/icu4c/source/common/unifiedcache.h
+++ b/icu4c/source/common/unifiedcache.h
@@ -34,13 +34,13 @@
  */
 class U_COMMON_API CacheKeyBase : public UObject {
  public:
-   CacheKeyBase() : fCreationStatus(U_ZERO_ERROR), fIsMaster(FALSE) {}
+   CacheKeyBase() : fCreationStatus(U_ZERO_ERROR), fIsPrimary(FALSE) {}
 
    /**
     * Copy constructor. Needed to support cloning.
     */
    CacheKeyBase(const CacheKeyBase &other) 
-           : UObject(other), fCreationStatus(other.fCreationStatus), fIsMaster(FALSE) { }
+           : UObject(other), fCreationStatus(other.fCreationStatus), fIsPrimary(FALSE) { }
    virtual ~CacheKeyBase();
 
    /**
@@ -88,7 +88,7 @@
    }
  private:
    mutable UErrorCode fCreationStatus;
-   mutable UBool fIsMaster;
+   mutable UBool fIsPrimary;
    friend class UnifiedCache;
 };
 
@@ -463,17 +463,17 @@
    void _runEvictionSlice() const;
  
    /**
-    * Register a master cache entry. A master key is the first key to create
+    * Register a primary cache entry. A primary key is the first key to create
     * a given  SharedObject value. Subsequent keys whose create function
-    * produce referneces to an already existing SharedObject are not masters -
+    * produce referneces to an already existing SharedObject are not primary -
     * they can be evicted and subsequently recreated.
     * 
     * On entry, gCacheMutex must be held.
-    * On exit, items in use count incremented, entry is marked as a master
+    * On exit, items in use count incremented, entry is marked as a primary
     * entry, and value registered with cache so that subsequent calls to
     * addRef() and removeRef() on it correctly interact with the cache.
     */
-   void _registerMaster(const CacheKeyBase *theKey, const SharedObject *value) const;
+   void _registerPrimary(const CacheKeyBase *theKey, const SharedObject *value) const;
         
    /**
     * Store a value and creation error status in given hash entry.
diff --git a/icu4c/source/data/cldr-icu-readme.txt b/icu4c/source/data/cldr-icu-readme.txt
index 701ba98..9cb9032 100644
--- a/icu4c/source/data/cldr-icu-readme.txt
+++ b/icu4c/source/data/cldr-icu-readme.txt
@@ -226,7 +226,7 @@
 # Repeat steps 4-7 until there are no errors.
 
 # 9. You can also run the make check tests in exhaustive mode (these will also
-# be run automatically on the master branch after the merge resulting from this
+# be run automatically on the primarys branch after the merge resulting from this
 # integration):
 
 cd $ICU4C_DIR/source
diff --git "a/icu4c/source/i18n/\043nfrs.h\043" "b/icu4c/source/i18n/\043nfrs.h\043"
new file mode 100644
index 0000000..db03c90
--- /dev/null
+++ "b/icu4c/source/i18n/\043nfrs.h\043"
@@ -0,0 +1,111 @@
+// © 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:  nfrs.h
+*   encoding:   UTF-8
+*   tab size:   8 (not used)
+*   indentation:4
+*
+* Modification history
+* Date        Name      Comments
+* 10/11/2001  Doug      Ported from ICU4J
+*/
+
+#ifndef NFRS_H
+#define NFRS_H
+
+#include "unicode/uobject.h"
+#include "unicode/rbnf.h"
+
+#if U_HAVE_RBNF
+
+#include "unicode/utypes.h"
+#include "unicode/umisc.h"
+
+#include "nfrlist.h"
+
+U_NAMESPACE_BEGIN
+
+class NFRuleSet : public UMemory {
+public:
+    NFRuleSet(RuleBasedNumberFormat *owner, UnicodeString* descriptions, int32_t index, UErrorCode& status);
+    void parseRules(UnicodeString& rules, UErrorCode& status);
+    void setNonNumericalRule(NFRule *rule);
+    void setBestFractionRule(int32_t originalIndex, NFRule *newRule, UBool rememberRule);
+    void makeIntoFractionRuleSet() { fIsFractionRuleSet = TRUE; }
+
+    ~NFRuleSet();
+
+    UBool operator==(const NFRuleSet& rhs) const;
+    UBool operator!=(const NFRuleSet& rhs) const { return !operator==(rhs); }
+
+    UBool isPublic() const { return fIsPublic; }
+
+    UBool isParseable() const { return fIsParseable; }
+
+    UBool isFractionRuleSet() const { return fIsFractionRuleSet; }
+
+    void  getName(UnicodeString& result) const { result.setTo(name); }
+    UBool isNamed(const UnicodeString& _name) const { return this->name == _name; }
+
+    void  format(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
+    void  format(double number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const;
+
+    UBool parse(const UnicodeString& text, ParsePosition& pos, double upperBound, uint32_t nonNumericalExecutedRuleMask, Formattable& result) const;
+
+    void appendRules(UnicodeString& result) const; // toString
+
+    void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status);
+
+    const RuleBasedNumberFormat *getOwner() const { return owner; }
+private:
+    const NFRule * findNormalRule(int64_t number) const;
+    const NFRule * findDoubleRule(double number) const;
+    const NFRule * findFractionRuleSetRule(double number) const;
+    
+    friend class NFSubstitution;
+
+private:
+    UnicodeString name;
+    NFRuleList rules;
+    NFRule *nonNumericalRules[6];
+    RuleBasedNumberFormat *owner;
+    NFRuleList fractionRules;
+    UBool fIsFractionRuleSet;
+    UBool fIsPublic;
+    UBool fIsParseable;
+
+    NFRuleSet(const NFRuleSet &other); // forbid copying of this class
+    NFRuleSet &operator=(const NFRuleSet &other); // forbid copying of this class
+};
+
+// utilities from old llong.h
+// convert mantissa portion of double to int64
+int64_t util64_fromDouble(double d);
+
+// raise radix to the power exponent, only non-negative exponents
+// Arithmetic is performed in unsigned space since overflow in
+// signed space is undefined behavior.
+uint64_t util64_pow(uint32_t radix, uint16_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);
+
+#ifdef RBNF_DEBUG
+int64_t util64_utoi(const UChar* str, uint32_t radix = 10);
+uint32_t util64_toa(int64_t n, char* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
+int64_t util64_atoi(const char* str, uint32_t radix);
+#endif
+
+
+U_NAMESPACE_END
+
+/* U_HAVE_RBNF */
+#endif
+
+// NFRS_H
+#endif
diff --git a/icu4c/source/i18n/dtitvfmt.cpp b/icu4c/source/i18n/dtitvfmt.cpp
index b71a571..9b9e11d 100644
--- a/icu4c/source/i18n/dtitvfmt.cpp
+++ b/icu4c/source/i18n/dtitvfmt.cpp
@@ -239,7 +239,7 @@
         if (fDateFormat && fmt->fDateFormat && (*fDateFormat != *fmt->fDateFormat)) {return FALSE;}
     }
     // note: fFromCalendar and fToCalendar hold no persistent state, and therefore do not participate in operator ==.
-    //       fDateFormat has the master calendar for the DateIntervalFormat.
+    //       fDateFormat has the primary calendar for the DateIntervalFormat.
     if (fSkeleton != fmt->fSkeleton) {return FALSE;}
     if (fDatePattern != fmt->fDatePattern && (fDatePattern == nullptr || fmt->fDatePattern == nullptr)) {return FALSE;}
     if (fDatePattern && fmt->fDatePattern && (*fDatePattern != *fmt->fDatePattern)) {return FALSE;}
@@ -583,7 +583,7 @@
     if (fDateFormat != nullptr) {
         fDateFormat->adoptTimeZone(zone);
     }
-    // The fDateFormat has the master calendar for the DateIntervalFormat and has
+    // The fDateFormat has the primary calendar for the DateIntervalFormat and has
     // ownership of any adopted TimeZone; fFromCalendar and fToCalendar are internal
     // work clones of that calendar (and should not also be given ownership of the
     // adopted TimeZone).
@@ -601,7 +601,7 @@
     if (fDateFormat != nullptr) {
         fDateFormat->setTimeZone(zone);
     }
-    // The fDateFormat has the master calendar for the DateIntervalFormat;
+    // The fDateFormat has the primary calendar for the DateIntervalFormat;
     // fFromCalendar and fToCalendar are internal work clones of that calendar.
     if (fFromCalendar) {
         fFromCalendar->setTimeZone(zone);
diff --git a/icu4c/source/i18n/nfrs.cpp b/icu4c/source/i18n/nfrs.cpp
index e7b17b4..efa7a36 100644
--- a/icu4c/source/i18n/nfrs.cpp
+++ b/icu4c/source/i18n/nfrs.cpp
@@ -37,7 +37,7 @@
     /** 0.x */
     PROPER_FRACTION_RULE_INDEX = 2,
     /** x.0 */
-    MASTER_RULE_INDEX = 3,
+    PRIMARY_RULE_INDEX = 3,
     /** Inf */
     INFINITY_RULE_INDEX = 4,
     /** NaN */
@@ -278,8 +278,8 @@
     else if (baseValue == NFRule::kProperFractionRule) {
         setBestFractionRule(PROPER_FRACTION_RULE_INDEX, rule, TRUE);
     }
-    else if (baseValue == NFRule::kMasterRule) {
-        setBestFractionRule(MASTER_RULE_INDEX, rule, TRUE);
+    else if (baseValue == NFRule::kPrimaryRule) {
+        setBestFractionRule(PRIMARY_RULE_INDEX, rule, TRUE);
     }
     else if (baseValue == NFRule::kInfinityRule) {
         delete nonNumericalRules[INFINITY_RULE_INDEX];
@@ -323,7 +323,7 @@
     for (int i = 0; i < NON_NUMERICAL_RULE_LENGTH; i++) {
         if (i != IMPROPER_FRACTION_RULE_INDEX
             && i != PROPER_FRACTION_RULE_INDEX
-            && i != MASTER_RULE_INDEX)
+            && i != PRIMARY_RULE_INDEX)
         {
             delete nonNumericalRules[i];
         }
@@ -375,7 +375,7 @@
         rules[i]->setDecimalFormatSymbols(newSymbols, status);
     }
     // Switch the fraction rules to mirror the DecimalFormatSymbols.
-    for (int32_t nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= MASTER_RULE_INDEX; nonNumericalIdx++) {
+    for (int32_t nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= PRIMARY_RULE_INDEX; nonNumericalIdx++) {
         if (nonNumericalRules[nonNumericalIdx]) {
             for (uint32_t fIdx = 0; fIdx < fractionRules.size(); fIdx++) {
                 NFRule *fractionRule = fractionRules[fIdx];
@@ -472,9 +472,9 @@
         }
     }
 
-    // if there's a master rule, use it to format the number
-    if (nonNumericalRules[MASTER_RULE_INDEX]) {
-        return nonNumericalRules[MASTER_RULE_INDEX];
+    // if there's a primary rule, use it to format the number
+    if (nonNumericalRules[PRIMARY_RULE_INDEX]) {
+        return nonNumericalRules[PRIMARY_RULE_INDEX];
     }
 
     // and if we haven't yet returned a rule, use findNormalRule()
@@ -507,13 +507,13 @@
     // do them in findRule(), because the version of format() that
     // takes a long bypasses findRule() and goes straight to this
     // function.  This function does skip the fraction rules since
-    // we know the value is an integer (it also skips the master
+    // we know the value is an integer (it also skips the primary
     // rule, since it's considered a fraction rule.  Skipping the
-    // master rule in this function is also how we avoid infinite
+    // primary rule in this function is also how we avoid infinite
     // recursion)
 
     // {dlf} unfortunately this fails if there are no rules except
-    // special rules.  If there are no rules, use the master rule.
+    // special rules.  If there are no rules, use the primary rule.
 
     // binary-search the rule list for the applicable rule
     // (a rule is used for all values from its base value to
@@ -553,8 +553,8 @@
         }
         return result;
     }
-    // else use the master rule
-    return nonNumericalRules[MASTER_RULE_INDEX];
+    // else use the primary rule
+    return nonNumericalRules[PRIMARY_RULE_INDEX];
 }
 
 /**
@@ -792,7 +792,7 @@
         if (nonNumericalRules[i]) {
             if (rule->getBaseValue() == NFRule::kImproperFractionRule
                 || rule->getBaseValue() == NFRule::kProperFractionRule
-                || rule->getBaseValue() == NFRule::kMasterRule)
+                || rule->getBaseValue() == NFRule::kPrimaryRule)
             {
                 for (uint32_t fIdx = 0; fIdx < fractionRules.size(); fIdx++) {
                     NFRule *fractionRule = fractionRules[fIdx];
diff --git a/icu4c/source/i18n/nfrule.cpp b/icu4c/source/i18n/nfrule.cpp
index 4f809f9..160924c 100644
--- a/icu4c/source/i18n/nfrule.cpp
+++ b/icu4c/source/i18n/nfrule.cpp
@@ -153,7 +153,7 @@
         if ((rule1->baseValue > 0
             && (rule1->baseValue % util64_pow(rule1->radix, rule1->exponent)) == 0)
             || rule1->getType() == kImproperFractionRule
-            || rule1->getType() == kMasterRule) {
+            || rule1->getType() == kPrimaryRule) {
 
             // if it passes that test, new up the second rule.  If the
             // rule set both rules will belong to is a fraction rule
@@ -181,9 +181,9 @@
             }
 
             // if the description began with "x.0" and contains bracketed
-            // text, it describes both the master rule and the
+            // text, it describes both the primary rule and the
             // improper fraction rule
-            else if (rule1->getType() == kMasterRule) {
+            else if (rule1->getType() == kPrimaryRule) {
                 rule2->baseValue = rule1->baseValue;
                 rule1->setType(kImproperFractionRule);
             }
@@ -376,7 +376,7 @@
                 decimalPoint = descriptor.charAt(1);
             }
             else if (firstChar == gX && lastChar == gZero) {
-                setBaseValue(kMasterRule, status);
+                setBaseValue(kPrimaryRule, status);
                 decimalPoint = descriptor.charAt(1);
             }
             else if (descriptor.compare(gNaN, 3) == 0) {
@@ -663,7 +663,7 @@
     case kNegativeNumberRule: result.append(gMinusX, 2); break;
     case kImproperFractionRule: result.append(gX).append(decimalPoint == 0 ? gDot : decimalPoint).append(gX); break;
     case kProperFractionRule: result.append(gZero).append(decimalPoint == 0 ? gDot : decimalPoint).append(gX); break;
-    case kMasterRule: result.append(gX).append(decimalPoint == 0 ? gDot : decimalPoint).append(gZero); break;
+    case kPrimaryRule: result.append(gX).append(decimalPoint == 0 ? gDot : decimalPoint).append(gZero); break;
     case kInfinityRule: result.append(gInf, 3); break;
     case kNaNRule: result.append(gNaN, 3); break;
     default:
diff --git a/icu4c/source/i18n/nfrule.h b/icu4c/source/i18n/nfrule.h
index ed33eaa..084a984 100644
--- a/icu4c/source/i18n/nfrule.h
+++ b/icu4c/source/i18n/nfrule.h
@@ -38,7 +38,7 @@
         kNegativeNumberRule = -1,
         kImproperFractionRule = -2,
         kProperFractionRule = -3,
-        kMasterRule = -4,
+        kPrimaryRule = -4,
         kInfinityRule = -5,
         kNaNRule = -6,
         kOtherRule = -7
diff --git a/icu4c/source/i18n/nfsubs.cpp b/icu4c/source/i18n/nfsubs.cpp
index 208543d..1934fa7 100644
--- a/icu4c/source/i18n/nfsubs.cpp
+++ b/icu4c/source/i18n/nfsubs.cpp
@@ -342,7 +342,7 @@
         // IntegralPartSubstitution
         else if (rule->getBaseValue() == NFRule::kImproperFractionRule
             || rule->getBaseValue() == NFRule::kProperFractionRule
-            || rule->getBaseValue() == NFRule::kMasterRule) {
+            || rule->getBaseValue() == NFRule::kPrimaryRule) {
             return new IntegralPartSubstitution(pos, ruleSet, description, status);
         }
 
@@ -371,7 +371,7 @@
         // FractionalPartSubstitution
         else if (rule->getBaseValue() == NFRule::kImproperFractionRule
             || rule->getBaseValue() == NFRule::kProperFractionRule
-            || rule->getBaseValue() == NFRule::kMasterRule) {
+            || rule->getBaseValue() == NFRule::kPrimaryRule) {
             return new FractionalPartSubstitution(pos, ruleSet, description, status);
         }
 
diff --git a/icu4c/source/i18n/rbt_pars.cpp b/icu4c/source/i18n/rbt_pars.cpp
index 1ae5b81..89d4268 100644
--- a/icu4c/source/i18n/rbt_pars.cpp
+++ b/icu4c/source/i18n/rbt_pars.cpp
@@ -1557,7 +1557,7 @@
             return 0;
         }
         c = variableNext++;
-        // Set a placeholder in the master variables vector that will be
+        // Set a placeholder in the primary variables vector that will be
         // filled in later by setSegmentObject().  We know that we will get
         // called first because setSegmentObject() will call us.
         variablesVector.addElement((void*) NULL, status);
diff --git a/icu4c/source/i18n/region.cpp b/icu4c/source/i18n/region.cpp
index 76445ae..d8a5ffd 100644
--- a/icu4c/source/i18n/region.cpp
+++ b/icu4c/source/i18n/region.cpp
@@ -217,7 +217,7 @@
         if ( aliasToRegion != NULL && aliasFromRegion == NULL ) { // This is just an alias from some string to a region
             uhash_put(newRegionAliases.getAlias(),(void *)aliasFromStr.orphan(), (void *)aliasToRegion,&status);
         } else {
-            if ( aliasFromRegion == NULL ) { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.
+            if ( aliasFromRegion == NULL ) { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
                 LocalPointer<Region> newRgn(new Region, status); 
                 if ( U_SUCCESS(status) ) {
                     aliasFromRegion = newRgn.orphan();
diff --git a/icu4c/source/i18n/unicode/rbnf.h b/icu4c/source/i18n/unicode/rbnf.h
index 62b0232..283e969 100644
--- a/icu4c/source/i18n/unicode/rbnf.h
+++ b/icu4c/source/i18n/unicode/rbnf.h
@@ -297,7 +297,7 @@
  *   </tr>
  *   <tr>
  *     <td>x.0:</td>
- *     <td>The rule is a <em>master rule</em>. If the full stop in
+ *     <td>The rule is a <em>default rule</em>. If the full stop in
  *     the middle of the rule name is replaced with the decimal point
  *     that is used in the language or DecimalFormatSymbols, then that rule will
  *     have precedence when formatting and parsing this rule. For example, some
@@ -332,9 +332,9 @@
  * algorithms: If the rule set is a regular rule set, do the following:
  *
  * <ul>
- *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
- *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
- *     the master rule is ignored.)</li>
+ *   <li>If the rule set includes a default rule (and the number was passed in as a <tt>double</tt>),
+ *     use the default rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the default rule is ignored.)</li>
  *   <li>If the number is negative, use the negative-number rule.</li>
  *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
  *     rule.</li>
@@ -393,7 +393,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in fraction or master rule</td>
+ *     <td>in fraction or default rule</td>
  *     <td>Isolate the number's fractional part and format it.</td>
  *   </tr>
  *   <tr>
@@ -425,7 +425,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in fraction or master rule</td>
+ *     <td>in fraction or default rule</td>
  *     <td>Isolate the number's integral part and format it.</td>
  *   </tr>
  *   <tr>
@@ -456,7 +456,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in master rule</td>
+ *     <td>in default rule</td>
  *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
  *     rule and an x.0 rule)</td>
  *   </tr>
diff --git a/icu4c/source/test/testdata/rbbitst.txt b/icu4c/source/test/testdata/rbbitst.txt
index 98cf688..b9a0611 100644
--- a/icu4c/source/test/testdata/rbbitst.txt
+++ b/icu4c/source/test/testdata/rbbitst.txt
@@ -32,7 +32,7 @@
 #   [ICU4C]   source/test/testdata/rbbitst.txt
 #   [ICU4J]   main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
 #
-# ICU4C's copy is the master.  If any changes are made to ICU4J's copy, make sure they
+# ICU4C's copy is the primary.  If any changes are made to ICU4J's copy, make sure they
 #  are merged back into ICU4C's copy of the file, lest they get overwritten later.
 # TODO:  figure out how to have a single copy of the file for use by both C and Java.
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
index 62bccc4..3ba5517 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
@@ -1234,7 +1234,7 @@
         if (fDateFormat != null) {
             fDateFormat.setTimeZone(zoneToSet);
         }
-        // fDateFormat has the master calendar for the DateIntervalFormat;
+        // fDateFormat has the primary calendar for the DateIntervalFormat;
         // fFromCalendar and fToCalendar are internal work clones of that calendar.
         if (fFromCalendar != null) {
             fFromCalendar.setTimeZone(zoneToSet);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java
index 4a0c4a8..ed483e9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java
@@ -41,9 +41,9 @@
     static final int PROPER_FRACTION_RULE = -3;
 
     /**
-     * Special base value used to identify a master rule
+     * Special base value used to identify a primary rule
      */
-    static final int MASTER_RULE = -4;
+    static final int PRIMARY_RULE = -4;
 
     /**
      * Special base value used to identify an infinity rule
@@ -169,7 +169,7 @@
             if ((rule1.baseValue > 0
                  && rule1.baseValue % (power(rule1.radix, rule1.exponent)) == 0)
                 || rule1.baseValue == IMPROPER_FRACTION_RULE
-                || rule1.baseValue == MASTER_RULE)
+                || rule1.baseValue == PRIMARY_RULE)
             {
 
                 // if it passes that test, new up the second rule.  If the
@@ -190,9 +190,9 @@
                     // the proper fraction rule
                     rule2.baseValue = PROPER_FRACTION_RULE;
                 }
-                else if (rule1.baseValue == MASTER_RULE) {
+                else if (rule1.baseValue == PRIMARY_RULE) {
                     // if the description began with "x.0" and contains bracketed
-                    // text, it describes both the master rule and the
+                    // text, it describes both the primary rule and the
                     // improper fraction rule
                     rule2.baseValue = rule1.baseValue;
                     rule1.baseValue = IMPROPER_FRACTION_RULE;
@@ -378,7 +378,7 @@
                     decimalPoint = descriptor.charAt(1);
                 }
                 else if (firstChar == 'x' && lastChar == '0') {
-                    setBaseValue(MASTER_RULE);
+                    setBaseValue(PRIMARY_RULE);
                     decimalPoint = descriptor.charAt(1);
                 }
                 else if (descriptor.equals("NaN")) {
@@ -651,7 +651,7 @@
         else if (baseValue == PROPER_FRACTION_RULE) {
             result.append('0').append(decimalPoint == 0 ? '.' : decimalPoint).append("x: ");
         }
-        else if (baseValue == MASTER_RULE) {
+        else if (baseValue == PRIMARY_RULE) {
             result.append('x').append(decimalPoint == 0 ? '.' : decimalPoint).append("0: ");
         }
         else if (baseValue == INFINITY_RULE) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
index 2a70ec5..992a3c1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
@@ -57,7 +57,7 @@
     /** 0.x */
     static final int PROPER_FRACTION_RULE_INDEX = 2;
     /** x.0 */
-    static final int MASTER_RULE_INDEX = 3;
+    static final int PRIMARY_RULE_INDEX = 3;
     /** Inf */
     static final int INFINITY_RULE_INDEX = 4;
     /** NaN */
@@ -243,8 +243,8 @@
         else if (baseValue == NFRule.PROPER_FRACTION_RULE) {
             setBestFractionRule(NFRuleSet.PROPER_FRACTION_RULE_INDEX, rule, true);
         }
-        else if (baseValue == NFRule.MASTER_RULE) {
-            setBestFractionRule(NFRuleSet.MASTER_RULE_INDEX, rule, true);
+        else if (baseValue == NFRule.PRIMARY_RULE) {
+            setBestFractionRule(NFRuleSet.PRIMARY_RULE_INDEX, rule, true);
         }
         else if (baseValue == NFRule.INFINITY_RULE) {
             nonNumericalRules[NFRuleSet.INFINITY_RULE_INDEX] = rule;
@@ -368,7 +368,7 @@
             if (rule != null) {
                 if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                    || rule.getBaseValue() == NFRule.MASTER_RULE)
+                    || rule.getBaseValue() == NFRule.PRIMARY_RULE)
                 {
                     for (NFRule fractionRule : fractionRules) {
                         if (fractionRule.getBaseValue() == rule.getBaseValue()) {
@@ -508,9 +508,9 @@
             }
         }
 
-        // if there's a master rule, use it to format the number
-        if (nonNumericalRules[MASTER_RULE_INDEX] != null) {
-            return nonNumericalRules[MASTER_RULE_INDEX];
+        // if there's a primary rule, use it to format the number
+        if (nonNumericalRules[PRIMARY_RULE_INDEX] != null) {
+            return nonNumericalRules[PRIMARY_RULE_INDEX];
         }
         else {
             // and if we haven't yet returned a rule, use findNormalRule()
@@ -557,9 +557,9 @@
         // do them in findRule(), because the version of format() that
         // takes a long bypasses findRule() and goes straight to this
         // function.  This function does skip the fraction rules since
-        // we know the value is an integer (it also skips the master
+        // we know the value is an integer (it also skips the primary
         // rule, since it's considered a fraction rule.  Skipping the
-        // master rule in this function is also how we avoid infinite
+        // primary rule in this function is also how we avoid infinite
         // recursion)
 
         // binary-search the rule list for the applicable rule
@@ -600,8 +600,8 @@
             }
             return result;
         }
-        // else use the master rule
-        return nonNumericalRules[MASTER_RULE_INDEX];
+        // else use the primary rule
+        return nonNumericalRules[PRIMARY_RULE_INDEX];
     }
 
     /**
@@ -829,7 +829,8 @@
         }
         // Switch the fraction rules to mirror the DecimalFormatSymbols.
         if (fractionRules != null) {
-            for (int nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= MASTER_RULE_INDEX; nonNumericalIdx++) {
+            for (int nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX;
+                 nonNumericalIdx <= PRIMARY_RULE_INDEX; nonNumericalIdx++) {
                 if (nonNumericalRules[nonNumericalIdx] != null) {
                     for (NFRule rule : fractionRules) {
                         if (nonNumericalRules[nonNumericalIdx].getBaseValue() == rule.getBaseValue()) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
index e2a992b..fc07ef5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
@@ -90,7 +90,7 @@
             }
             else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                      || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                     || rule.getBaseValue() == NFRule.MASTER_RULE)
+                     || rule.getBaseValue() == NFRule.PRIMARY_RULE)
             {
                 // if the rule is a fraction rule, return an IntegralPartSubstitution
                 return new IntegralPartSubstitution(pos, ruleSet, description);
@@ -115,7 +115,7 @@
             }
             else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                      || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                     || rule.getBaseValue() == NFRule.MASTER_RULE)
+                     || rule.getBaseValue() == NFRule.PRIMARY_RULE)
             {
                 // if the rule is a fraction rule, return a
                 // FractionalPartSubstitution
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
index dbab314..e49595c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -275,7 +275,7 @@
  *   <tr>
  *     <td style="width: 5%; vertical-align: top;"></td>
  *     <td style="width: 8%; vertical-align: top;">x.0:</td>
- *     <td valign="top">The rule is a <em>master rule</em>. If the full stop in
+ *     <td valign="top">The rule is a <em>primary rule</em>. If the full stop in
  *     the middle of the rule name is replaced with the decimal point
  *     that is used in the language or DecimalFormatSymbols, then that rule will
  *     have precedence when formatting and parsing this rule. For example, some
@@ -313,9 +313,9 @@
  * algorithms: If the rule set is a regular rule set, do the following:
  *
  * <ul>
- *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
- *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
- *     the master rule is ignored.)</li>
+ *   <li>If the rule set includes a primary rule (and the number was passed in as a <tt>double</tt>),
+ *     use the primary rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the primary rule is ignored.)</li>
  *   <li>If the number is negative, use the negative-number rule.</li>
  *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
  *     rule.</li>
@@ -377,7 +377,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in fraction or master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in fraction or primary rule</td>
  *     <td>Isolate the number's fractional part and format it.</td>
  *   </tr>
  *   <tr>
@@ -415,7 +415,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in fraction or master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in fraction or primary rule</td>
  *     <td>Isolate the number's integral part and format it.</td>
  *   </tr>
  *   <tr>
@@ -452,7 +452,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in primary rule</td>
  *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
  *     rule and an x.0 rule)</td>
  *   </tr>
@@ -1153,7 +1153,7 @@
 
     /**
      * Formats the specified number according to the specified rule set.
-     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * (If the specified rule set specifies a primary ["x.0"] rule, this function
      * ignores it.  Convert the number to a double first if you ned it.)  This
      * function preserves all the precision in the long-- it doesn't convert it
      * to a double.
@@ -1199,7 +1199,7 @@
     /**
      * Formats the specified number using the formatter's default rule set.
      * (The default rule set is the last public rule set defined in the description.)
-     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * (If the specified rule set specifies a primary ["x.0"] rule, this function
      * ignores it.  Convert the number to a double first if you ned it.)  This
      * function preserves all the precision in the long-- it doesn't convert it
      * to a double.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java
index 2fabbb0..b158af3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java
@@ -215,7 +215,7 @@
 
         regions = new ArrayList<Region>(regionCodes.size());
 
-        // First process the region codes and create the master array of regions.
+        // First process the region codes and create the primary array of regions.
         for ( String id : regionCodes) {
             Region r = new Region();
             r.id = id;
@@ -244,7 +244,7 @@
                 Region r;
                 if ( regionIDMap.containsKey(aliasFrom) ) {  // This is a deprecated region
                     r = regionIDMap.get(aliasFrom);
-                } else { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.
+                } else { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
                     r = new Region();
                     r.id = aliasFrom;
                     regionIDMap.put(aliasFrom, r);
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
index 5398021..d578e2f 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
@@ -1493,7 +1493,7 @@
                 throw new RuntimeException("Variable range exhausted");
             }
             c = variableNext++;
-            // Set a placeholder in the master variables vector that will be
+            // Set a placeholder in the primary variables vector that will be
             // filled in later by setSegmentObject().  We know that we will get
             // called first because setSegmentObject() will call us.
             variablesVector.add(null);
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
index 01e7c39..a6081db 100755
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
@@ -253,7 +253,7 @@
     print C_INDEX <<END;
 //--------------------------------------------------------------------
 // N.B.: This file has been generated mechanically from the
-// corresponding ICU4J file, which is the master file that receives
+// corresponding ICU4J file, which is the primary file that receives
 // primary updates.  The colon-delimited fields have been split into
 // separate strings.  For 'file' and 'internal' lines, the encoding
 // field has been deleted, since the encoding is processed at build