diff --git a/mozilla/string/doc/string-guide.css b/mozilla/string/doc/string-guide.css
new file mode 100644
index 00000000000..c9308dc9751
--- /dev/null
+++ b/mozilla/string/doc/string-guide.css
@@ -0,0 +1,118 @@
+/* string-guide.css */
+
+body { font-family: serif; background-color: white; }
+strong { font-style: italic; }
+
+h1, h2, h3, h4, h5, h6 { font-family: sans-serif; }
+h4, h5, h6 { margin-left: 2em; }
+h3 { color: gray; }
+
+a:hover { background-color: yellow; }
+
+li { list-style: square; }
+
+.code { font-family: monospace; }
+.source-code { font-family: monospace; }
+
+.warning { color: red; }
+.notice { color: blue; }
+.exact-uri { font-family: monospace; /* font-size: 80%; */ }
+
+div.abstract
+ {
+ margin-left: 5em;
+ margin-right: 5em;
+ font-size: 90%;
+ }
+
+.abstract h1
+ {
+ display: inline;
+ font-size: 100%;
+ margin-bottom: 0.0em;
+ }
+
+.abstract p
+ {
+ margin-top: 0.25em;
+ }
+
+div.author-note
+ {
+ font-family: sans-serif;
+ font-size: 80%;
+ text-align: right;
+ margin-top: 0.5em;
+ margin-left: 15em;
+ }
+
+div.document-mod-date
+ {
+ font-family: sans-serif;
+ font-size: 0.8em;
+ text-align: right;
+ float: right;
+ margin-top: 1.75em;
+ margin-bottom: 0em;
+ }
+
+quote
+ {
+ font-family: sans-serif;
+ font-style: italic;
+ font-size: 90%;
+ }
+
+table caption
+ {
+ vertical-align: bottom;
+ font-family: sans-serif;
+ font-size: 80%;
+ }
+
+table.legend
+ {
+ font-size: 80%;
+ float: right;
+ clear: left;
+ }
+
+.warning .comment { color: red; }
+.notice .comment { color: blue; }
+.comment { color: green; }
+
+.source-code strong
+ {
+ font-family: Courier;
+ font-style: bold;
+ }
+
+div.source-code
+ {
+ padding: 1em;
+ border: solid thin;
+ margin: 0;
+ background: #eee;
+ }
+
+pre.source-code
+ {
+ margin-left: 0;
+ }
+
+div.bibliography-entry
+ {
+ margin-left: 1em;
+ font-size: 90%;
+ }
+
+.bibliography-entry h1
+ {
+ font-size: 100%;
+ margin-bottom: 0.0em;
+ }
+
+.bibliography-entry p
+ {
+ margin-top: 0.25em;
+ }
diff --git a/mozilla/string/doc/string-guide.html b/mozilla/string/doc/string-guide.html
new file mode 100644
index 00000000000..02c5c26dd50
--- /dev/null
+++ b/mozilla/string/doc/string-guide.html
@@ -0,0 +1,149 @@
+
+
+
+ the complete guide to mozilla/string
+
+
+
+
+
+
+
+
+
+
+
+
Abstract
+ This document
provides
+ an introduction to the design and use of the string classes in mozilla,
+ detailed information on their implementation and how one may extend them,
+ and answers to frequently asked questions about strings .
+
+
+
+
+
+
+
+
+
+
+
+ A note to potential editors:
+ don't even consider modifying this document with an HTML editor.
+ That would destroy the internal formatting,
+ and make patches unmanagable.
+
+
+
+
+
+
+
+
+
+
+
+
+ Strings in mozilla are a world apart from char* s.
+ If you don't know why they are different,
+ this section is the place for you to start.
+ If you're already familiar with the hierarchy of string classes in mozilla,
+ then you might want to skip ahead to the implementor's guide
+ or the FAQ .
+
+
+
+
+
+
+ what is a string?
+ readable and writable
+ promises
+ flat strings
+ encoding
+ sharing
+
+
+ basic string operations
+ comparison
+ concatenation
+ substrings
+ find and replace
+ conversions
+ calling a function that expects a different kind of string
+ converting between string classes
+ converting between encodings
+ selecting the right string class
+ user string classes
+ selecting the right string class for a parameter
+ selecting the right string class for a local variable
+ selecting the right string class for a member variable
+ selecting the right string class for a return value
+ selecting the right string class in IDL
+ dont's
+
+
+ what is an iterator?
+ reading iterators and writing iterators
+ `chunky' iterating for efficiency
+ copy_string , character sources and sinks
+ encoding conversion iterators
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mozilla/xpcom/string/doc/string-guide.css b/mozilla/xpcom/string/doc/string-guide.css
new file mode 100644
index 00000000000..c9308dc9751
--- /dev/null
+++ b/mozilla/xpcom/string/doc/string-guide.css
@@ -0,0 +1,118 @@
+/* string-guide.css */
+
+body { font-family: serif; background-color: white; }
+strong { font-style: italic; }
+
+h1, h2, h3, h4, h5, h6 { font-family: sans-serif; }
+h4, h5, h6 { margin-left: 2em; }
+h3 { color: gray; }
+
+a:hover { background-color: yellow; }
+
+li { list-style: square; }
+
+.code { font-family: monospace; }
+.source-code { font-family: monospace; }
+
+.warning { color: red; }
+.notice { color: blue; }
+.exact-uri { font-family: monospace; /* font-size: 80%; */ }
+
+div.abstract
+ {
+ margin-left: 5em;
+ margin-right: 5em;
+ font-size: 90%;
+ }
+
+.abstract h1
+ {
+ display: inline;
+ font-size: 100%;
+ margin-bottom: 0.0em;
+ }
+
+.abstract p
+ {
+ margin-top: 0.25em;
+ }
+
+div.author-note
+ {
+ font-family: sans-serif;
+ font-size: 80%;
+ text-align: right;
+ margin-top: 0.5em;
+ margin-left: 15em;
+ }
+
+div.document-mod-date
+ {
+ font-family: sans-serif;
+ font-size: 0.8em;
+ text-align: right;
+ float: right;
+ margin-top: 1.75em;
+ margin-bottom: 0em;
+ }
+
+quote
+ {
+ font-family: sans-serif;
+ font-style: italic;
+ font-size: 90%;
+ }
+
+table caption
+ {
+ vertical-align: bottom;
+ font-family: sans-serif;
+ font-size: 80%;
+ }
+
+table.legend
+ {
+ font-size: 80%;
+ float: right;
+ clear: left;
+ }
+
+.warning .comment { color: red; }
+.notice .comment { color: blue; }
+.comment { color: green; }
+
+.source-code strong
+ {
+ font-family: Courier;
+ font-style: bold;
+ }
+
+div.source-code
+ {
+ padding: 1em;
+ border: solid thin;
+ margin: 0;
+ background: #eee;
+ }
+
+pre.source-code
+ {
+ margin-left: 0;
+ }
+
+div.bibliography-entry
+ {
+ margin-left: 1em;
+ font-size: 90%;
+ }
+
+.bibliography-entry h1
+ {
+ font-size: 100%;
+ margin-bottom: 0.0em;
+ }
+
+.bibliography-entry p
+ {
+ margin-top: 0.25em;
+ }
diff --git a/mozilla/xpcom/string/doc/string-guide.html b/mozilla/xpcom/string/doc/string-guide.html
new file mode 100644
index 00000000000..02c5c26dd50
--- /dev/null
+++ b/mozilla/xpcom/string/doc/string-guide.html
@@ -0,0 +1,149 @@
+
+
+
+ the complete guide to mozilla/string
+
+
+
+
+
+
+
+
+
+
+
+
Abstract
+ This document
provides
+ an introduction to the design and use of the string classes in mozilla,
+ detailed information on their implementation and how one may extend them,
+ and answers to frequently asked questions about strings .
+
+
+
+
+
+
+
+
+
+
+
+ A note to potential editors:
+ don't even consider modifying this document with an HTML editor.
+ That would destroy the internal formatting,
+ and make patches unmanagable.
+
+
+
+
+
+
+
+
+
+
+
+
+ Strings in mozilla are a world apart from char* s.
+ If you don't know why they are different,
+ this section is the place for you to start.
+ If you're already familiar with the hierarchy of string classes in mozilla,
+ then you might want to skip ahead to the implementor's guide
+ or the FAQ .
+
+
+
+
+
+
+ what is a string?
+ readable and writable
+ promises
+ flat strings
+ encoding
+ sharing
+
+
+ basic string operations
+ comparison
+ concatenation
+ substrings
+ find and replace
+ conversions
+ calling a function that expects a different kind of string
+ converting between string classes
+ converting between encodings
+ selecting the right string class
+ user string classes
+ selecting the right string class for a parameter
+ selecting the right string class for a local variable
+ selecting the right string class for a member variable
+ selecting the right string class for a return value
+ selecting the right string class in IDL
+ dont's
+
+
+ what is an iterator?
+ reading iterators and writing iterators
+ `chunky' iterating for efficiency
+ copy_string , character sources and sinks
+ encoding conversion iterators
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+