<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>6228</bug_id>
          
          <creation_ts>2005-12-24 06:03:37 -0800</creation_ts>
          <short_desc>DOMString/DOMStringImpl/AtomicString need enhancements before replacing QString</short_desc>
          <delta_ts>2005-12-29 19:27:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6294</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>26472</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-24 06:03:37 -0800</bug_when>
    <thetext>DOMString/DOMStringImpl/AtomicString need enhancements before replacing QString

The attached patch adds find(), contains(), startsWith() and endsWith() functionality to the string classes.  I 
have another patch which uses these throughout CSSStyleSelector and other locations in WebKit which I&apos;ll 
attach separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26473</commentid>
    <comment_count>1</comment_count>
      <attachid>5266</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-24 06:05:04 -0800</bug_when>
    <thetext>Created attachment 5266
Adds find(), contains(), startsWith(), endsWith() to the DOM string classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26474</commentid>
    <comment_count>2</comment_count>
      <attachid>5267</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-24 06:16:08 -0800</bug_when>
    <thetext>Created attachment 5267
Use new string methods in khtml/css

I separated out khtml/css since that&apos;s where the bulk of my changes went.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26475</commentid>
    <comment_count>3</comment_count>
      <attachid>5268</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-24 06:16:48 -0800</bug_when>
    <thetext>Created attachment 5268
Other string uses (including some unrelated cleanup)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26476</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-24 06:48:44 -0800</bug_when>
    <thetext>Woohoo!  Autovicki says these patches yeild another .3ms improvement (out of 133.0)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26538</commentid>
    <comment_count>5</comment_count>
      <attachid>5267</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-25 01:15:35 -0800</bug_when>
    <thetext>Comment on attachment 5267
Use new string methods in khtml/css

+    bool important = priority.find(&quot;important&quot;, 0, false) != -1;

Replace this with startsWith for clarity maybe?

-	     refPos = path.find(&quot;#&quot;, 0);
+	     refPos = path.find(&quot;#&quot;);

r- because of this apparent bug (or possible undocumented fix) otherwise looks
fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26540</commentid>
    <comment_count>6</comment_count>
      <attachid>5268</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-25 02:13:00 -0800</bug_when>
    <thetext>Comment on attachment 5268
Other string uses (including some unrelated cleanup)

+	     if (str.find(&quot;url&quot;, 0,  false ) == 0)

replace with startsWith?

otherwise r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26619</commentid>
    <comment_count>7</comment_count>
      <attachid>5266</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-25 08:12:12 -0800</bug_when>
    <thetext>Comment on attachment 5266
Adds find(), contains(), startsWith(), endsWith() to the DOM string classes

In the future, the startsWith algorithm should not use find, because it only
needs to compare once at the start of the string and find will go on to search
the rest of the string. The things that find does to optimize that search are
not helpful for startsWith.

The patch has a number of tab characters in it. They should be converted to
spaces before it&apos;s landed.

I think that dom_string.h&apos;s version of contains and startsWith should call
contains and startsWith in the underlying DOMStringImpl and we should have a
contains function in DOMStringImpl. In general, all the functions should be
present in DOMStringImpl and then reflected in DOMString as needed.

DOMStringImpl::find has a comment still mentions QString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26620</commentid>
    <comment_count>8</comment_count>
      <attachid>5268</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-25 08:14:29 -0800</bug_when>
    <thetext>Comment on attachment 5268
Other string uses (including some unrelated cleanup)

Looking at these searches, it occurs to me that &quot;, false&quot; is a pretty poor way
to indicate a case insensitive search. We should consider alternate API for
that.

+	     if (str.find(&quot;url&quot;, 0,  false ) == 0)

The above is a case of &quot;startsWith&quot; and would be clearer if we called it that
way.

+	     if (str.length() &amp;&amp; str[0] == &apos;=&apos;)

And this is startsWith too (although a character, not a string).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26621</commentid>
    <comment_count>9</comment_count>
      <attachid>5267</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-25 08:19:46 -0800</bug_when>
    <thetext>Comment on attachment 5267
Use new string methods in khtml/css

In parseUASheet, we can make the DOMString from the char* without decoding
because we know it has all ASCII characters in it. Unlike QString, that
function does not work for non-ASCII Latin-1 characters. So I think it&apos;s worth
a comment and adding an assertion to DOMStringImpl::DOMStringImpl(const char *)
to check for non-ASCII characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27200</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-29 19:27:51 -0800</bug_when>
    <thetext>Landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5266</attachid>
            <date>2005-12-24 06:05:04 -0800</date>
            <delta_ts>2005-12-25 00:33:16 -0800</delta_ts>
            <desc>Adds find(), contains(), startsWith(), endsWith() to the DOM string classes</desc>
            <filename>string_enhancements.patch</filename>
            <type>text/plain</type>
            <size>10362</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGRvbS9kb21fc3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9raHRtbC9kb20vZG9tX3N0cmluZy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MjQKZGlmZiAtcCAtdSAtcjEuMjQgZG9tL2RvbV9zdHJpbmcuY3BwCi0tLSBkb20vZG9tX3N0cmlu
Zy5jcHAJMTYgRGVjIDIwMDUgMjI6MjY6MTIgLTAwMDAJMS4yNAorKysgZG9tL2RvbV9zdHJpbmcu
Y3BwCTI0IERlYyAyMDA1IDE0OjAzOjA2IC0wMDAwCkBAIC0xMDUsMTkgKzEwNSw2IEBAIGNvbnN0
IFFDaGFyICZET01TdHJpbmc6Om9wZXJhdG9yIFtdKHVuc2kKICAgICByZXR1cm4gKihtX2ltcGwt
PnMraSk7CiB9CiAKLWludCBET01TdHJpbmc6OmZpbmQoY29uc3QgUUNoYXIgYywgaW50IHN0YXJ0
KSBjb25zdAotewotICAgIHVuc2lnbmVkIGludCBsID0gc3RhcnQ7Ci0gICAgaWYgKCFtX2ltcGwg
fHwgbCA+PSBtX2ltcGwtPmwgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgd2hpbGUobCA8IG1f
aW1wbC0+bCkgewotCWlmICgqKG1faW1wbC0+cytsKSA9PSBjKQotICAgICAgICAgICAgcmV0dXJu
IGw7Ci0JbCsrOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIHVpbnQgRE9NU3RyaW5nOjps
ZW5ndGgoKSBjb25zdAogewogICAgIGlmICghbV9pbXBsKQpJbmRleDogZG9tL2RvbV9zdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9kb20vZG9tX3N0
cmluZy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE3CmRpZmYgLXAgLXUgLXIxLjE3IGRvbS9k
b21fc3RyaW5nLmgKLS0tIGRvbS9kb21fc3RyaW5nLmgJMjMgRGVjIDIwMDUgMTg6NDQ6MDggLTAw
MDAJMS4xNworKysgZG9tL2RvbV9zdHJpbmcuaAkyNCBEZWMgMjAwNSAxNDowMzowNiAtMDAwMApA
QCAtNzEsOCArNzEsMjIgQEAgcHVibGljOgogICAgICAqIGNoYXJhY3RlciByZXR1cm5lZCB3aWxs
IGJlIDAuCiAgICAgICovCiAgICAgY29uc3QgUUNoYXIgJm9wZXJhdG9yIFtdKHVuc2lnbmVkIGlu
dCBpKSBjb25zdDsKLQotICAgIGludCBmaW5kKGNvbnN0IFFDaGFyIGMsIGludCBzdGFydCA9IDAp
IGNvbnN0OworICAgIAorICAgIC8vIE5PVEU6IGNvbnRhaW5zIHJldHVybnMgYm9vbCwgZXZlbnR1
YWxseSB3ZSdsbCBhZGQgY291bnQoKSB3aGljaCByZXR1cm5zIGFuIGludC4KKyAgICBib29sIGNv
bnRhaW5zKFFDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIChmaW5kKGMpICE9IC0xKTsgfQorICAgIGJv
b2wgY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBj
b25zdCB7IHJldHVybiAoZmluZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9IC0xKTsgfQorCisg
ICAgaW50IGZpbmQoY29uc3QgUUNoYXIgYywgaW50IHN0YXJ0ID0gMCkgY29uc3QKKyAgICAgICAg
eyBpZiAobV9pbXBsKSByZXR1cm4gbV9pbXBsLT5maW5kKGMsIHN0YXJ0KTsgcmV0dXJuIC0xOyB9
CisgICAgaW50IGZpbmQoY29uc3QgY2hhciAqc3RyLCBpbnQgc3RhcnQgPSAwLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSBjb25zdAorICAgICAgICB7IGlmIChtX2ltcGwpIHJldHVybiBtX2lt
cGwtPmZpbmQoc3RyLCBzdGFydCwgY2FzZVNlbnNpdGl2ZSk7IHJldHVybiAtMTsgfQorICAgIGlu
dCBmaW5kKGNvbnN0IERPTVN0cmluZyYgc3RyLCBpbnQgc3RhcnQgPSAwLCBib29sIGNhc2VTZW5z
aXRpdmUgPSB0cnVlKSBjb25zdAorICAgICAgICB7IGlmIChtX2ltcGwpIHJldHVybiBtX2ltcGwt
PmZpbmQoc3RyLmltcGwoKSwgc3RhcnQsIGNhc2VTZW5zaXRpdmUpOyByZXR1cm4gLTE7IH0KKyAg
ICAKKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgRE9NU3RyaW5nICZzLCBib29sIGNhc2VTZW5z
aXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiAoZmluZChzLCAwLCBjYXNlU2Vuc2l0aXZlKSA9
PSAwKTsgfQorICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgRE9NU3RyaW5nICZzLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSBjb25zdAorICAgICAgICB7IGlmIChtX2ltcGwpIHJldHVybiBtX2lt
cGwtPmVuZHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKTsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgCiAgICAgRE9NU3RyaW5nICZyZXBsYWNlKFFDaGFyIGEsIFFDaGFyIGIpIHsgbV9pbXBsID0g
bV9pbXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KIAogICAgIHVpbnQgbGVuZ3Ro
KCkgY29uc3Q7CkBAIC04NywxMiArMTAxLDkgQEAgcHVibGljOgogICAgIERPTVN0cmluZyBzcGxp
dCh1bnNpZ25lZCBpbnQgcG9zKTsKIAogICAgIC8qKgotICAgICAqIFJldHVybnMgYSBsb3dlcmNh
c2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCisgICAgICogUmV0dXJucyBhIGxvd2VyY2FzZS91cHBl
cmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCiAgICAgICovCiAgICAgRE9NU3RyaW5nIGxvd2Vy
KCkgY29uc3Q7Ci0gICAgLyoqCi0gICAgICogUmV0dXJucyBhbiB1cHBlcmNhc2UgdmVyc2lvbiBv
ZiB0aGUgc3RyaW5nCi0gICAgICovCiAgICAgRE9NU3RyaW5nIHVwcGVyKCkgY29uc3Q7CiAKICAg
ICBRQ2hhciAqdW5pY29kZSgpIGNvbnN0OwpAQCAtMTA4LDEwICsxMTksNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc051bGwoKSAgY29uc3QgeyByZXR1cm4gKG1faW1wbCA9PSAwKTsgfQogICAgIGJv
b2wgaXNFbXB0eSgpICBjb25zdDsKIAotICAgIC8qKgotICAgICAqIEBpbnRlcm5hbCBnZXQgYSBo
YW5kbGUgdG8gdGhlIGltbGVtZW50YXRpb24gb2YgdGhlIERPTVN0cmluZwotICAgICAqIFVzZSBh
dCBvd24gcmlzayEhIQotICAgICAqLwogICAgIERPTVN0cmluZ0ltcGwgKmltcGwoKSBjb25zdCB7
IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KIAogI2lmZGVmIF9fT0JKQ19fCkluZGV4OiB4bWwvZG9t
X2F0b21pY3N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2to
dG1sL3htbC9kb21fYXRvbWljc3RyaW5nLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOQpkaWZm
IC1wIC11IC1yMS45IHhtbC9kb21fYXRvbWljc3RyaW5nLmgKLS0tIHhtbC9kb21fYXRvbWljc3Ry
aW5nLmgJMzEgQXVnIDIwMDUgMDQ6Mzg6NDEgLTAwMDAJMS45CisrKyB4bWwvZG9tX2F0b21pY3N0
cmluZy5oCTI0IERlYyAyMDA1IDE0OjAzOjEwIC0wMDAwCkBAIC00NSw5ICs0NSwyMCBAQCBwdWJs
aWM6CiAgICAgRE9NU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlt
cGwoKTsgfQogICAgIAogICAgIGNvbnN0IFFDaGFyICp1bmljb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcudW5pY29kZSgpOyB9Ci0gICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmxlbmd0aCgpOyB9CisgICAgdWludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5sZW5ndGgoKTsgfQogICAgIAorICAgIGNvbnN0IFFDaGFyICZvcGVyYXRvciBbXSh1bnNp
Z25lZCBpbnQgaSkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdbaV07IH0KKyAgICAKKyAgICBib29s
IGNvbnRhaW5zKGNvbnN0IFFDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5z
KGMpOyB9CisgICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcgJnMsIGJvb2wgY2Fz
ZVNlbnRpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIChmaW5kKHMsIDAsIGNhc2VTZW50aXRp
dmUpICE9IC0xKTsgfQorCiAgICAgaW50IGZpbmQoY29uc3QgUUNoYXIgYywgaW50IHN0YXJ0ID0g
MCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChjLCBzdGFydCk7IH0KKyAgICBpbnQgZmlu
ZChjb25zdCBBdG9taWNTdHJpbmcgJnMsIGludCBzdGFydCA9IDAsIGJvb2wgY2FzZVNlbnRpdGl2
ZSA9IHRydWUpIGNvbnN0CisgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQocy5kb21TdHJp
bmcoKSwgc3RhcnQsIGNhc2VTZW50aXRpdmUpOyB9CisgICAgCisgICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IEF0b21pY1N0cmluZyAmcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3Qg
eyByZXR1cm4gKGZpbmQocywgMCwgY2FzZVNlbnNpdGl2ZSkgPT0gMCk7IH0KKyAgICBib29sIGVu
ZHNXaXRoKGNvbnN0IEF0b21pY1N0cmluZyAmcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkg
Y29uc3QKKyAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgocy5kb21TdHJpbmcoKSwg
Y2FzZVNlbnNpdGl2ZSk7IH0KICAgICAKICAgICBpbnQgdG9JbnQoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy50b0ludCgpOyB9CiAgICAgYm9vbCBwZXJjZW50YWdlKGludCAmX3BlcmNlbnRhZ2Up
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnBlcmNlbnRhZ2UoX3BlcmNlbnRhZ2UpOyB9CkluZGV4
OiB4bWwvZG9tX3N0cmluZ2ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJDb3JlL2todG1sL3htbC9kb21fc3RyaW5naW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMzUKZGlmZiAtcCAtdSAtcjEuMzUgeG1sL2RvbV9zdHJpbmdpbXBsLmNwcAotLS0geG1sL2Rv
bV9zdHJpbmdpbXBsLmNwcAkyMyBEZWMgMjAwNSAxODo0NDoyOSAtMDAwMAkxLjM1CisrKyB4bWwv
ZG9tX3N0cmluZ2ltcGwuY3BwCTI0IERlYyAyMDA1IDE0OjAzOjEzIC0wMDAwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlICJkb21fYXRvbWljc3RyaW5n
LmgiCisjaW5jbHVkZSA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
a2h0bWw7CiAKQEAgLTQ0OCw2ICs0NDksMTYzIEBAIGludCBET01TdHJpbmdJbXBsOjp0b0ludChi
b29sICpvaykgY29uc3QKICAgICByZXR1cm4gUUNvbnN0U3RyaW5nKHMsIGkpLnN0cmluZygpLnRv
SW50KG9rKTsKIH0KIAorc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUUNoYXIgKmEsIGNvbnN0IGNo
YXIgKmIsIGludCBsKQoreworICAgIEFTU0VSVChsID49IDApOworICAgIHdoaWxlIChsLS0pIHsK
KyAgICAgICAgaWYgKCphICE9ICpiKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCWErKzsg
YisrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZXF1YWxDYXNl
SW5zZW5zaXRpdmUoY29uc3QgUUNoYXIgKmEsIGNvbnN0IGNoYXIgKmIsIGludCBsKQoreworICAg
IEFTU0VSVChsID49IDApOworICAgIHdoaWxlIChsLS0pIHsKKyAgICAgICAgaWYgKHRvbG93ZXIo
YS0+dW5pY29kZSgpKSAhPSB0b2xvd2VyKCpiKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KwlhKys7IGIrKzsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGVx
dWFsQ2FzZUluc2Vuc2l0aXZlKGNvbnN0IFFDaGFyICphLCBjb25zdCBRQ2hhciAqYiwgaW50IGwp
Cit7CisgICAgQVNTRVJUKGwgPj0gMCk7CisgICAgd2hpbGUgKGwtLSkgeworICAgICAgICBpZiAo
dG9sb3dlcihhLT51bmljb2RlKCkpICE9IHRvbG93ZXIoYi0+dW5pY29kZSgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKwlhKys7IGIrKzsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGFzIGZhc3QgYXMgcG9zc2libGUsIGV2ZXJ5
IGxpdHRsZSBiaXQgaGVscHMuCisvLyBPdXIgdXNhZ2UgcGF0dGVybnMgYXJlIHR5cGljYWxseSBz
bWFsbCBzdHJpbmdzLiAgSW4gdGltZSB0cmlhbHMKKy8vIHRoaXMgc2ltcGxpc3RpYyBhbGdvcml0
aG0gaXMgbXVjaCBmYXN0ZXIgdGhhbiBCb3llci1Nb29yZSBvciBoYXNoCisvLyBiYXNlZCBhbGdv
cml0aG1zLgorLy8gTk9URTogVGhvc2UgdGltZSB0cmlhbHMgd2VyZSBkb25lIHdoZW4gdGhpcyBm
dW5jdGlvbiB3YXMgcGFydCBvZiBRU3RyaW5nCisvLyBJdCB3YXMgY29waWVkIGhlcmUgYW5kIGNo
YW5nZWQgc2xpZ2h0bHkgc2luY2UuCitpbnQgRE9NU3RyaW5nSW1wbDo6ZmluZChjb25zdCBjaGFy
ICpjaHMsIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAoreworICAgIGlmICgh
Y2hzIHx8IGluZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaW50IGNoc0xlbmd0
aCA9IHN0cmxlbihjaHMpOworICAgIGludCBuID0gbCAtIGluZGV4OworICAgIGlmIChuIDwgMCkK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIG4gLT0gY2hzTGVuZ3RoIC0gMTsKKyAgICBpZiAobiA8
PSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBjb25zdCBjaGFyICpjaHNQbHVzT25lID0g
Y2hzICsgMTsKKyAgICBpbnQgY2hzTGVuZ3RoTWludXNPbmUgPSBjaHNMZW5ndGggLSAxOworICAg
IAorICAgIGNvbnN0IFFDaGFyICpwdHIgPSBzICsgaW5kZXggLSAxOworICAgIGlmIChjYXNlU2Vu
c2l0aXZlKSB7CisgICAgICAgIFFDaGFyIGMgPSAqY2hzOworICAgICAgICBkbyB7CisgICAgICAg
ICAgICBpZiAoKisrcHRyID09IGMgJiYgZXF1YWwocHRyICsgMSwgY2hzUGx1c09uZSwgY2hzTGVu
Z3RoTWludXNPbmUpKQorICAgICAgICAgICAgICAgIHJldHVybiBsIC0gY2hzTGVuZ3RoIC0gbiAr
IDE7CisgICAgICAgIH0gd2hpbGUgKC0tbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGxj
ID0gdG9sb3dlcigodW5zaWduZWQgY2hhcikqY2hzKTsKKyAgICAgICAgZG8geworICAgICAgICAg
ICAgaWYgKHRvbG93ZXIoKCsrcHRyKS0+dW5pY29kZSgpKSA9PSBsYyAmJiBlcXVhbENhc2VJbnNl
bnNpdGl2ZShwdHIgKyAxLCBjaHNQbHVzT25lLCBjaHNMZW5ndGhNaW51c09uZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGwgLSBjaHNMZW5ndGggLSBuICsgMTsKKyAgICAgICAgfSB3aGlsZSAo
LS1uKTsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBET01TdHJpbmdJbXBsOjpm
aW5kKGNvbnN0IFFDaGFyIGMsIGludCBzdGFydCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBpbnQg
aW5kZXggPSBzdGFydDsKKyAgICBpZiAoaW5kZXggPj0gbCApCisgICAgICAgIHJldHVybiAtMTsK
KyAgICB3aGlsZShpbmRleCA8IGwpIHsKKwlpZiAoc1tpbmRleF0gPT0gYykKKyAgICAgICAgICAg
IHJldHVybiBpbmRleDsKKwlpbmRleCsrOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKKy8v
IFRoaXMgd2FzIGNvcGllZCBmcm9tIFFTdHJpbmcgYW5kIG1hZGUgdG8gd29yayBoZXJlIHcvIHNt
YWxsIG1vZGlmaWNhdGlvbnMuCisvLyBGSVhNRSBjb21tZW50cyB3ZXJlIGZyb20gdGhlIFFTdHJp
bmcgdmVyc2lvbi4KK2ludCBET01TdHJpbmdJbXBsOjpmaW5kKGNvbnN0IERPTVN0cmluZ0ltcGwg
KnN0ciwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Cit7CisgICAgLy8gRklY
TUUsIHVzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGFsZ29yaXRobQorICAgIC8qCisgICAgICBXZSB1
c2Ugc29tZSB3ZWlyZCBoYXNoaW5nIGZvciBlZmZpY2llbmN5J3Mgc2FrZS4gIEluc3RlYWQgb2YK
KyAgICAgIGNvbXBhcmluZyBzdHJpbmdzLCB3ZSBjb21wYXJlIHRoZSBzdW0gb2Ygc3RyIHdpdGgg
dGhhdCBvZgorICAgICAgYSBwYXJ0IG9mIHRoaXMgUVN0cmluZy4gIE9ubHkgaWYgdGhhdCBtYXRj
aGVzLCB3ZSBjYWxsIG1lbWNtcAorICAgICAgb3IgdWNzdHJuaWNtcC4KKworICAgICAgVGhlIGhh
c2ggdmFsdWUgb2YgYSBzdHJpbmcgaXMgdGhlIHN1bSBvZiB0aGUgY2VsbHMgb2YgaXRzCisgICAg
ICBRQ2hhcnMuCisgICAgKi8KKyAgICBBU1NFUlQoc3RyKTsKKyAgICBpZiAoaW5kZXggPCAwKQor
CWluZGV4ICs9IGw7CisgICAgaW50IGxzdHIgPSBzdHItPmw7CisgICAgaW50IGx0aGlzID0gbCAt
IGluZGV4OworICAgIGlmICgodWludClsdGhpcyA+IGwpCisJcmV0dXJuIC0xOworICAgIGludCBk
ZWx0YSA9IGx0aGlzIC0gbHN0cjsKKyAgICBpZiAoZGVsdGEgPCAwKQorCXJldHVybiAtMTsKKwor
ICAgIGNvbnN0IFFDaGFyICp1dGhpcyA9IHMgKyBpbmRleDsKKyAgICBjb25zdCBRQ2hhciAqdXN0
ciA9IHN0ci0+czsKKyAgICB1aW50IGh0aGlzID0gMDsKKyAgICB1aW50IGhzdHIgPSAwOworICAg
IGlmIChjYXNlU2Vuc2l0aXZlKSB7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBsc3RyOyBpKyspIHsK
KwkgICAgaHRoaXMgKz0gdXRoaXNbaV0udW5pY29kZSgpOworCSAgICBoc3RyICs9IHVzdHJbaV0u
dW5pY29kZSgpOworCX0KKwlpbnQgaSA9IDA7CisJd2hpbGUgKDEpIHsKKwkgICAgaWYgKGh0aGlz
ID09IGhzdHIgJiYgbWVtY21wKHV0aGlzICsgaSwgdXN0ciwgbHN0ciAqIHNpemVvZihRQ2hhcikp
ID09IDApCisJCXJldHVybiBpbmRleCArIGk7CisJICAgIGlmIChpID09IGRlbHRhKQorCQlyZXR1
cm4gLTE7CisJICAgIGh0aGlzICs9IHV0aGlzW2kgKyBsc3RyXS51bmljb2RlKCk7CisJICAgIGh0
aGlzIC09IHV0aGlzW2ldLnVuaWNvZGUoKTsKKwkgICAgaSsrOworCX0KKyAgICB9IGVsc2Ugewor
CWZvciAoaW50IGkgPSAwOyBpIDwgbHN0cjsgaSsrICkgeworCSAgICBodGhpcyArPSB0b2xvd2Vy
KHV0aGlzW2ldLnVuaWNvZGUoKSk7CisJICAgIGhzdHIgKz0gdG9sb3dlcih1c3RyW2ldLnVuaWNv
ZGUoKSk7CisJfQorCWludCBpID0gMDsKKwl3aGlsZSAoMSkgeworCSAgICBpZiAoaHRoaXMgPT0g
aHN0ciAmJiBlcXVhbENhc2VJbnNlbnNpdGl2ZSh1dGhpcyArIGksIHVzdHIsIGxzdHIpKQorCQly
ZXR1cm4gaW5kZXggKyBpOworCSAgICBpZiAoaSA9PSBkZWx0YSkKKwkJcmV0dXJuIC0xOworCSAg
ICBodGhpcyArPSB0b2xvd2VyKHV0aGlzW2kgKyBsc3RyXS51bmljb2RlKCkpOworCSAgICBodGhp
cyAtPSB0b2xvd2VyKHV0aGlzW2ldLnVuaWNvZGUoKSk7CisJICAgIGkrKzsKKwl9CisgICAgfQor
fQorCitib29sIERPTVN0cmluZ0ltcGw6OmVuZHNXaXRoKGNvbnN0IERPTVN0cmluZ0ltcGwgKnMs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQocyk7CisgICAgaW50IHN0
YXJ0ID0gbCAtIHMtPmw7CisgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgIHJldHVybiAoZmlu
ZChzLCBzdGFydCwgY2FzZVNlbnNpdGl2ZSkgPT0gc3RhcnQpOworICAgIHJldHVybiAtMTsKK30K
KwogRE9NU3RyaW5nSW1wbCAqRE9NU3RyaW5nSW1wbDo6cmVwbGFjZShRQ2hhciBvbGRDLCBRQ2hh
ciBuZXdDKQogewogICAgIGlmIChvbGRDID09IG5ld0MpCkluZGV4OiB4bWwvZG9tX3N0cmluZ2lt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC94bWwvZG9t
X3N0cmluZ2ltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOQpkaWZmIC1wIC11IC1yMS4x
OSB4bWwvZG9tX3N0cmluZ2ltcGwuaAotLS0geG1sL2RvbV9zdHJpbmdpbXBsLmgJMjMgRGVjIDIw
MDUgMDM6NTc6MjUgLTAwMDAJMS4xOQorKysgeG1sL2RvbV9zdHJpbmdpbXBsLmgJMjQgRGVjIDIw
MDUgMTQ6MDM6MTMgLTAwMDAKQEAgLTgyLDYgKzgyLDEzIEBAIHB1YmxpYzoKICAgICBET01TdHJp
bmdJbXBsICp1cHBlcigpIGNvbnN0OwogICAgIERPTVN0cmluZ0ltcGwgKmNhcGl0YWxpemUoKSBj
b25zdDsKIAorICAgIGludCBmaW5kKGNvbnN0IGNoYXIgKmNocywgaW50IGluZGV4ID0gMCwgYm9v
bCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3Q7CisgICAgaW50IGZpbmQoUUNoYXIgYywgaW50
IGluZGV4ID0gMCkgY29uc3Q7CisgICAgaW50IGZpbmQoY29uc3QgRE9NU3RyaW5nSW1wbCAqc3Ry
LCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3Q7CisKKyAgICBib29sIHN0YXJ0
c1dpdGgoY29uc3QgRE9NU3RyaW5nSW1wbCAqcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkg
Y29uc3QgeyByZXR1cm4gKGZpbmQocywgMCwgY2FzZVNlbnNpdGl2ZSkgPT0gMCk7IH0KKyAgICBi
b29sIGVuZHNXaXRoKGNvbnN0IERPTVN0cmluZ0ltcGwgKnMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpIGNvbnN0OworCiAgICAgLy8gVGhpcyBtb2RpZmllcyB0aGUgc3RyaW5nIGluIHBsYWNl
IGlmIHRoZXJlIGlzIG9ubHkgb25lIHJlZiwgbWFrZXMgYSBuZXcgc3RyaW5nIG90aGVyd2lzZS4K
ICAgICBET01TdHJpbmdJbXBsICpyZXBsYWNlKFFDaGFyLCBRQ2hhcik7CiAK
</data>
<flag name="review"
          id="1083"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5267</attachid>
            <date>2005-12-24 06:16:08 -0800</date>
            <delta_ts>2005-12-25 01:15:35 -0800</delta_ts>
            <desc>Use new string methods in khtml/css</desc>
            <filename>css_string_changes.patch</filename>
            <type>text/plain</type>
            <size>18588</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2Nzcy9jc3NfYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19iYXNlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4yNQpkaWZmIC1wIC11IC1yMS4yNSBraHRtbC9jc3MvY3NzX2Jhc2UuY3BwCi0tLSBraHRtbC9j
c3MvY3NzX2Jhc2UuY3BwCTIzIERlYyAyMDA1IDE4OjQ0OjA1IC0wMDAwCTEuMjUKKysrIGtodG1s
L2Nzcy9jc3NfYmFzZS5jcHAJMjQgRGVjIDIwMDUgMTQ6MDg6NTUgLTAwMDAKQEAgLTk1LDEyICs5
NSw4IEBAIFN0eWxlTGlzdEltcGw6On5TdHlsZUxpc3RJbXBsKCkKIAogdm9pZCBDU1NTZWxlY3Rv
cjo6cHJpbnQodm9pZCkKIHsKLSAgICBrZERlYnVnKCA2MDgwICkgPDwgIltTZWxlY3RvcjogdGFn
ID0gIiA8PCAgICAgICB0YWcubG9jYWxOYW1lKCkucXN0cmluZygpIDw8ICIsIGF0dHIgPSBcIiIg
PDwgYXR0ci5sb2NhbE5hbWUoKS5xc3RyaW5nKCkgPDwgIlwiLCBtYXRjaCA9IFwiIiA8PCBtYXRj
aAotCQkgICAgPDwgIlwiIHZhbHVlID0gXCIiIDw8IHZhbHVlLnFzdHJpbmcoKS5sYXRpbjEoKSA8
PCAiXCIgcmVsYXRpb24gPSAiIDw8IChpbnQpcmVsYXRpb24KLQkJICAgIDw8ICJdIiA8PCBlbmRs
OwotICAgIGlmICggdGFnSGlzdG9yeSApCisgICAgaWYgKHRhZ0hpc3RvcnkpCiAgICAgICAgIHRh
Z0hpc3RvcnktPnByaW50KCk7Ci0gICAga2REZWJ1ZyggNjA4MCApIDw8ICIgICAgc3BlY2lmaWNp
dHkgPSAiIDw8IHNwZWNpZmljaXR5KCkgPDwgZW5kbDsKIH0KIAogdW5zaWduZWQgaW50IENTU1Nl
bGVjdG9yOjpzcGVjaWZpY2l0eSgpCkluZGV4OiBraHRtbC9jc3MvY3NzX3J1bGVpbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3NzX3J1bGVp
bXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yOApkaWZmIC1wIC11IC1yMS4yOCBraHRt
bC9jc3MvY3NzX3J1bGVpbXBsLmNwcAotLS0ga2h0bWwvY3NzL2Nzc19ydWxlaW1wbC5jcHAJMTUg
RGVjIDIwMDUgMjE6Mzk6NTYgLTAwMDAJMS4yOAorKysga2h0bWwvY3NzL2Nzc19ydWxlaW1wbC5j
cHAJMjQgRGVjIDIwMDUgMTQ6MDg6NTUgLTAwMDAKQEAgLTE0NiwxMyArMTQ2LDYgQEAgdm9pZCBD
U1NJbXBvcnRSdWxlSW1wbDo6aW5pdCgpCiAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdz
IFVSTCBhcyB0aGUgYmFzZSBVUkwKICAgICAgIGFic0hyZWYgPSBLVVJMKHBhcmVudFNoZWV0LT5o
cmVmKCkucXN0cmluZygpLG1fc3RySHJlZi5xc3RyaW5nKCkpLnVybCgpOwogICAgIH0KLS8qCi0g
ICAgZWxzZSB7Ci0gICAgICAvLyB1c2UgZG9jdW1lbnRzJ3MgVVJMIGFzIHRoZSBiYXNlIFVSTAot
ICAgICAgRG9jdW1lbnRJbXBsICpkb2MgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0SW1wbCo+
KHJvb3QpLT5kb2MoKTsKLSAgICAgIGFic0hyZWYgPSBLVVJMKGRvYy0+VVJMKCksbV9zdHJIcmVm
LnFzdHJpbmcoKSkudXJsKCk7Ci0gICAgfQotKi8KIAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xl
IGluIG91ciBpbXBvcnQgY2hhaW4uICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAg
Ly8gaW4gb3VyIHBhcmVudCBjaGFpbiB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwu
CkluZGV4OiBraHRtbC9jc3MvY3NzX3ZhbHVlaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc192YWx1ZWltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjg1CmRpZmYgLXAgLXUgLXIxLjg1IGtodG1sL2Nzcy9jc3NfdmFsdWVpbXBs
LmNwcAotLS0ga2h0bWwvY3NzL2Nzc192YWx1ZWltcGwuY3BwCTE1IERlYyAyMDA1IDIxOjM5OjU2
IC0wMDAwCTEuODUKKysrIGtodG1sL2Nzcy9jc3NfdmFsdWVpbXBsLmNwcAkyNCBEZWMgMjAwNSAx
NDowODo1NiAtMDAwMApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgQ1NTU3R5bGVEZWNsYXJhdGlv
bkltcGw6OnNldFByb3BlcnQKICAgICBpbnQgcHJvcElEID0gcHJvcGVydHlJRChwcm9wZXJ0eU5h
bWUpOwogICAgIGlmICghcHJvcElEKSAvLyBzZXQgZXhjZXB0aW9uPwogICAgICAgICByZXR1cm47
Ci0gICAgYm9vbCBpbXBvcnRhbnQgPSBwcmlvcml0eS5xc3RyaW5nKCkuZmluZCgiaW1wb3J0YW50
IiwgMCwgZmFsc2UpICE9IC0xOworICAgIGJvb2wgaW1wb3J0YW50ID0gcHJpb3JpdHkuZmluZCgi
aW1wb3J0YW50IiwgMCwgZmFsc2UpICE9IC0xOwogICAgIHNldFByb3BlcnR5KHByb3BJRCwgdmFs
dWUsIGltcG9ydGFudCwgZXhjZXB0aW9uKTsKIH0KIApJbmRleDoga2h0bWwvY3NzL2Nzc3BhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nz
c3BhcnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTE3CmRpZmYgLXAgLXUgLXIxLjEx
NyBraHRtbC9jc3MvY3NzcGFyc2VyLmNwcAotLS0ga2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAJMTUg
RGVjIDIwMDUgMjE6Mzk6NTcgLTAwMDAJMS4xMTcKKysrIGtodG1sL2Nzcy9jc3NwYXJzZXIuY3Bw
CTI0IERlYyAyMDA1IDE0OjA4OjU5IC0wMDAwCkBAIC0yMDQsMTEgKzIwNCw2IEBAIENTU1J1bGVJ
bXBsICpDU1NQYXJzZXI6OnBhcnNlUnVsZShDU1NTdHkKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKmRlY2xhcmF0aW9uLCBpbnQgX2lk
LCBjb25zdCBET01TdHJpbmcgJnN0cmluZywKIAkJCSAgICBib29sIF9pbXBvcnRhbnQpCiB7Ci0j
aWZkZWYgQ1NTX0RFQlVHCi0gICAga2REZWJ1ZyggNjA4MCApIDw8ICJDU1NQYXJzZXI6OnBhcnNl
VmFsdWU6IGlkPSIgPDwgX2lkIDw8ICIgaW1wb3J0YW50PSIgPDwgX2ltcG9ydGFudAotCQkgICAg
PDwgIiB2YWx1ZT0nIiA8PCBzdHJpbmcucXN0cmluZygpIDw8ICInIiA8PCBlbmRsOwotI2VuZGlm
Ci0KICAgICBzdHlsZUVsZW1lbnQgPSBkZWNsYXJhdGlvbi0+c3R5bGVzaGVldCgpOwogCiAgICAg
c2V0dXBQYXJzZXIgKCJALWtodG1sLXZhbHVleyIsIHN0cmluZywgIn0gIik7CkBAIC0yODEsMTAg
KzI3Niw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKCBDU1NNdXRhYmxlU3QKIAogYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
SW1wbCAqZGVjbGFyYXRpb24sIGNvbnN0IERPTVN0cmluZyAmc3RyaW5nICkKIHsKLSNpZmRlZiBD
U1NfREVCVUcKLSAgICBrZERlYnVnKCA2MDgwICkgPDwgIkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJh
dGlvbjp2YWx1ZT0nIiA8PCBzdHJpbmcucXN0cmluZygpIDw8ICInIiA8PCBlbmRsOwotI2VuZGlm
Ci0KICAgICBzdHlsZUVsZW1lbnQgPSBkZWNsYXJhdGlvbi0+c3R5bGVzaGVldCgpOwogCiAgICAg
c2V0dXBQYXJzZXIgKCAiQC1raHRtbC1kZWNsc3siLCBzdHJpbmcsICJ9ICIpOwpAQCAtMTUwNyw5
ICsxNDk4LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29udGVudCggaW50IHByb3BJZAogCSAg
ICBET01TdHJpbmcgdmFsdWUgPSBwYXJzZVVSTChkb21TdHJpbmcodmFsLT5zdHJpbmcpKTsKICAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gbmV3IENTU0ltYWdlVmFsdWVJbXBsKAogCQlET01TdHJp
bmcoS1VSTCggc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkucXN0cmluZygpLCB2YWx1ZS5xc3RyaW5n
KCkpLnVybCgpICksIHN0eWxlRWxlbWVudCApOwotI2lmZGVmIENTU19ERUJVRwotCSAgICBrZERl
YnVnKCA2MDgwICkgPDwgImNvbnRlbnQsIHVybD0iIDw8IHZhbHVlLnFzdHJpbmcoKSA8PCAiIGJh
c2U9IiA8PCBzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5xc3RyaW5nKCkgPDwgZW5kbDsKLSNlbmRp
ZgogICAgICAgICB9IGVsc2UgaWYgKCB2YWwtPnVuaXQgPT0gVmFsdWU6OkZ1bmN0aW9uICkgewog
CSAgICAvLyBhdHRyKCBYICkKICAgICAgICAgICAgIFZhbHVlTGlzdCAqYXJncyA9IHZhbC0+ZnVu
Y3Rpb24tPmFyZ3M7CkluZGV4OiBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0
b3IuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIzMgpkaWZmIC1wIC11IC1yMS4yMzIga2h0
bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCi0tLSBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rv
ci5jcHAJMjMgRGVjIDIwMDUgMTg6NDQ6MDYgLTAwMDAJMS4yMzIKKysrIGtodG1sL2Nzcy9jc3Nz
dHlsZXNlbGVjdG9yLmNwcAkyNCBEZWMgMjAwNSAxNDowOTowMyAtMDAwMApAQCAtMjQ4LDkgKzI0
OCw2IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoIERvY3UKIAogICAgIG1f
cnVsZUxpc3QgPSAwOwogICAgIG1fY29sbGVjdFJ1bGVzT25seSA9IGZhbHNlOwotCi0gICAgLy9r
ZERlYnVnKCA2MDgwICkgPDwgIm51bWJlciBvZiBzdHlsZSBzaGVldHMgaW4gZG9jdW1lbnQgIiA8
PCBhdXRob3JTdHlsZVNoZWV0cy5jb3VudCgpIDw8IGVuZGw7Ci0gICAgLy9rZERlYnVnKCA2MDgw
ICkgPDwgIkNTU1N0eWxlU2VsZWN0b3I6IGF1dGhvciBzdHlsZSBoYXMgIiA8PCBhdXRob3JTdHls
ZS0+Y291bnQoKSA8PCAiIGVsZW1lbnRzIjw8IGVuZGw7CiB9CiAKIENTU1N0eWxlU2VsZWN0b3I6
OkNTU1N0eWxlU2VsZWN0b3IoIENTU1N0eWxlU2hlZXRJbXBsICpzaGVldCApCkBAIC0yODgsOCAr
Mjg1LDYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVkVVJMKGNvbgogICAgIH0K
ICAgICB1LnNldFBhdGgoIFFTdHJpbmc6Om51bGwgKTsKICAgICBlbmNvZGVkdXJsLmhvc3QgPSB1
LnVybCgpOwotCi0gICAgLy9rZERlYnVnKCkgPDwgIkNTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxl
U2VsZWN0b3IgZW5jb2RlZCB1cmwgIiA8PCBlbmNvZGVkdXJsLnBhdGggPDwgZW5kbDsKIH0KIAog
Q1NTU3R5bGVTZWxlY3Rvcjo6fkNTU1N0eWxlU2VsZWN0b3IoKQpAQCAtMzEwLDExICszMDUsOCBA
QCBzdGF0aWMgQ1NTU3R5bGVTaGVldEltcGwqIHBhcnNlVUFTaGVldChjCiAgICAgaWYgKHJlYWRi
eXRlcyA+PSAwKQogICAgICAgICBmaWxlW3JlYWRieXRlc10gPSAnXDAnOwogCi0gICAgUVN0cmlu
ZyBzdHlsZSA9IFFTdHJpbmc6OmZyb21MYXRpbjEoZmlsZS5kYXRhKCkpOwotICAgIERPTVN0cmlu
ZyBzdHIoc3R5bGUpOwotCiAgICAgQ1NTU3R5bGVTaGVldEltcGwqIHNoZWV0ID0gbmV3IENTU1N0
eWxlU2hlZXRJbXBsKChDU1NTdHlsZVNoZWV0SW1wbCopMCk7Ci0gICAgc2hlZXQtPnBhcnNlU3Ry
aW5nKHN0cik7CisgICAgc2hlZXQtPnBhcnNlU3RyaW5nKERPTVN0cmluZyhmaWxlLmRhdGEoKSkp
OwogICAgIHJldHVybiBzaGVldDsKIH0KIApAQCAtNTU5LDcgKzU1MSw3IEBAIHN0YXRpYyB2b2lk
IGNsZWFucGF0aChRU3RyaW5nICZwYXRoKQogICAgIGludCByZWZQb3MgPSAtMjsKICAgICB3aGls
ZSAoIChwb3MgPSBwYXRoLmZpbmQoICIvLyIsIHBvcyApKSAhPSAtMSkgewogICAgICAgICBpZiAo
cmVmUG9zID09IC0yKQotICAgICAgICAgICAgcmVmUG9zID0gcGF0aC5maW5kKCIjIiwgMCk7Cisg
ICAgICAgICAgICByZWZQb3MgPSBwYXRoLmZpbmQoIiMiKTsKICAgICAgICAgaWYgKHJlZlBvcyA+
IDAgJiYgcG9zID49IHJlZlBvcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTU3
MCw3ICs1NjIsNiBAQCBzdGF0aWMgdm9pZCBjbGVhbnBhdGgoUVN0cmluZyAmcGF0aCkKICAgICB9
CiAgICAgd2hpbGUgKCAocG9zID0gcGF0aC5maW5kKCAiLy4vIiApKSAhPSAtMSkKICAgICAgICAg
cGF0aC5yZW1vdmUoIHBvcywgMiApOwotICAgIC8va2REZWJ1ZygpIDw8ICJjaGVja1BzZXVkb1N0
YXRlICIgPDwgcGF0aCA8PCBlbmRsOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja1BzZXVkb1N0YXRl
KCBFbGVtZW50SW1wbCAqZSwgYm9vbCBjaGVja1Zpc2l0ZWQgPSB0cnVlICkKQEAgLTExMTEsMTMg
KzExMDIsMTQgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTUwogICAg
IGJvb2wgaGF2ZVBzZXVkbyA9IHBzZXVkb1N0eWxlICE9IFJlbmRlclN0eWxlOjpOT1BTRVVETzsK
ICAgICAKICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNr
T25lU2VsZWN0b3Ioc2VsLCBlKSkgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tPbmVTZWxl
Y3RvcihzZWwsIGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBjaGVjayB0aGUg
c3Vic2VsZWN0b3JzCiAgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uID0gc2VsLT5y
ZWxhdGlvbjsKLSAgICB3aGlsZSgoc2VsID0gc2VsLT50YWdIaXN0b3J5KSkKLSAgICB7Ci0gICAg
ICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKSByZXR1cm4gZmFsc2U7CisgICAgd2hpbGUoKHNl
bCA9IHNlbC0+dGFnSGlzdG9yeSkpIHsKKyAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChyZWxhdGlvbiAhPSBDU1NT
ZWxlY3Rvcjo6U3ViU2VsZWN0b3IpIHsKICAgICAgICAgICAgIHN1YmplY3QgPSBmYWxzZTsKICAg
ICAgICAgICAgIGlmIChoYXZlUHNldWRvICYmIGR5bmFtaWNQc2V1ZG8gIT0gcHNldWRvU3R5bGUp
CkBAIC0xMTI3LDI2ICsxMTE5LDIzIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxl
Y3RvcihDU1MKICAgICAgICAgc3dpdGNoKHJlbGF0aW9uKQogICAgICAgICB7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6Ci0gICAgICAgIHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIG1hdGNoIG5lZWRzIHRvIGtub3cgaG93IHRvIGJhY2t0cmFjayBhbmQgYmUgbm9u
LWRldGVybWluaXN0aWMuCi0gICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAg
ICAgICB3aGlsZSghZm91bmQpCi0gICAgICAgICAgICB7CisgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgICAgICBpZighbiB8
fCAhbi0+aXNFbGVtZW50Tm9kZSgpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgRWxl
bWVudEltcGwgKmVsZW0gPSBzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCAqPihuKTsKLSAgICAgICAg
ICAgICAgICBpZiAoY2hlY2tPbmVTZWxlY3RvcihzZWwsIGVsZW0pKSBmb3VuZCA9IHRydWU7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gd2hp
bGUgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwgKj4obikp
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OkNoaWxkOgogICAgICAgICB7CiAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwog
ICAgICAgICAgICAgaWYgKCFzdHJpY3RQYXJzaW5nKQotICAgICAgICAgICAgICAgIHdoaWxlIChu
ICYmIG4tPmltcGxpY2l0Tm9kZSgpKSBuID0gbi0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAg
aWYoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
RWxlbWVudEltcGwgKmVsZW0gPSBzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCAqPihuKTsKLSAgICAg
ICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGVsZW0pKSByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgbi0+aW1wbGljaXROb2RlKCkpCisgICAgICAgICAg
ICAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBpZiAoIW4gfHwgIW4t
PmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCAq
PihuKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6CkBA
IC0xMTU0LDI2ICsxMTQzLDIyIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rv
cihDU1MKICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAg
IHdoaWxlIChuICYmICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgbiA9IG4t
PnByZXZpb3VzU2libGluZygpOwotICAgICAgICAgICAgaWYgKCFuKSByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBFbGVtZW50SW1wbCAqZWxlbSA9IHN0YXRpY19jYXN0PEVsZW1lbnRJbXBsKj4o
bik7Ci0gICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlbGVtKSkKKyAgICAg
ICAgICAgIGlmICghbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBzdGF0aWNfY2FzdDxFbGVtZW50SW1wbCo+KG4p
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgotICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBtYXRjaCBuZWVkcyB0byBrbm93IGhv
dyB0byBiYWNrdHJhY2sgYW5kIGJlIG5vbi1kZXRlcm1pbmlzdGljLgotICAgICAgICAgICAgRWxl
bWVudEltcGwgKmVsZW0gPSAwOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIG4g
PSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgICAgICB3aGlsZSAobiAmJiAhbi0+
aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJs
aW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZWxlbSA9IHN0YXRpY19jYXN0PEVsZW1lbnRJbXBs
Kj4obik7Ci0gICAgICAgICAgICB9IHdoaWxlICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGVsZW0p
KTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgc3RhdGljX2Nh
c3Q8RWxlbWVudEltcGwqPihuKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjoKICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAob25seUhvdmVyQWN0aXZlKQpAQCAtMTE4MSwxMyArMTE2NiwxMiBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXIg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbC0+cHNldWRvVHlwZSgp
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUpKTsKICAgICAgICAgICAgIAotCSAgICAvL2tk
RGVidWcoKSA8PCAiQ1NTT3JkZXJlZFJ1bGU6OmNoZWNrU2VsZWN0b3IiIDw8IGVuZGw7CiAJICAg
IEVsZW1lbnRJbXBsICplbGVtID0gc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwgKj4obik7CiAJICAg
IC8vIGEgc2VsZWN0b3IgaXMgaW52YWxpZCBpZiBzb21ldGhpbmcgZm9sbG93cyA6Zmlyc3QteHh4
CiAJICAgIGlmIChlbGVtID09IGVsZW1lbnQgJiYgZHluYW1pY1BzZXVkbyAhPSBSZW5kZXJTdHls
ZTo6Tk9QU0VVRE8pCiAJCXJldHVybiBmYWxzZTsKLQkgICAgaWYgKCFjaGVja09uZVNlbGVjdG9y
KHNlbCwgZWxlbSkpIHJldHVybiBmYWxzZTsKLQkgICAgLy9rZERlYnVnKCkgPDwgIkNTU09yZGVy
ZWRSdWxlOjpjaGVja1NlbGVjdG9yOiBwYXNzZWQiIDw8IGVuZGw7CisJICAgIGlmICghY2hlY2tP
bmVTZWxlY3RvcihzZWwsIGVsZW0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAkg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTI0NSw5NCArMTIyOSw1NyBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICBzdHls
ZS0+c2V0QWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycygpOyAvLyBTcGVjaWFsLWNhc2UgdGhl
ICJ0eXBlIiBhdHRyaWJ1dGUgc28gaW5wdXQgZm9ybSBjb250cm9scyBjYW4gc2hhcmUgc3R5bGUu
CiAKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGUtPmdldEF0dHJpYnV0ZShz
ZWwtPmF0dHIpOwotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpIHJldHVybiBmYWxzZTsgLy8g
YXR0cmlidXRlIGlzIG5vdCBzZXQKKyAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRyaWJ1dGUgaXMgbm90IHNldAogCiAgICAgICAgIHN3
aXRjaChzZWwtPm1hdGNoKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotCSAg
ICBpZiAoKGlzWE1MRG9jICYmIHNlbC0+dmFsdWUgIT0gdmFsdWUpIHx8Ci0gICAgICAgICAgICAg
ICAgKCFpc1hNTERvYyAmJiAhZXF1YWxzSWdub3JlQ2FzZShzZWwtPnZhbHVlLCB2YWx1ZSkpKQor
CSAgICBpZiAoKGlzWE1MRG9jICYmIHNlbC0+dmFsdWUgIT0gdmFsdWUpIHx8ICghaXNYTUxEb2Mg
JiYgIWVxdWFsc0lnbm9yZUNhc2Uoc2VsLT52YWx1ZSwgdmFsdWUpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6TGlzdDoKICAgICAgICAgewotICAgICAgICAgICAgaW50IHNwYWNlUG9zID0gdmFsdWUu
ZmluZCgnICcsIDApOwotICAgICAgICAgICAgaWYgKHNwYWNlUG9zID09IC0xKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbGlzdCwganVzdCBhIHNpbmdsZSBpdGVtLiAgV2UgY2Fu
IGF2b2lkCi0gICAgICAgICAgICAgICAgLy8gYWxsb2NpbmcgUVN0cmluZ3MgYW5kIGp1c3QgdHJl
YXQgdGhpcyBhcyBhbiBleGFjdAotICAgICAgICAgICAgICAgIC8vIG1hdGNoIGNoZWNrLgotICAg
ICAgICAgICAgICAgIGlmICgoaXNYTUxEb2MgJiYgc2VsLT52YWx1ZSAhPSB2YWx1ZSkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgKCFpc1hNTERvYyAmJiAhZXF1YWxzSWdub3JlQ2FzZShzZWwtPnZh
bHVlLCB2YWx1ZSkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIC8vIFRoZSBzZWxl
Y3RvcidzIHZhbHVlIGNhbid0IGNvbnRhaW4gYSBzcGFjZSwgb3IgaXQncyB0b3RhbGx5IGJvZ3Vz
LgotICAgICAgICAgICAgc3BhY2VQb3MgPSBzZWwtPnZhbHVlLmZpbmQoJyAnKTsKLSAgICAgICAg
ICAgIGlmIChzcGFjZVBvcyAhPSAtMSkKKyAgICAgICAgICAgIGlmIChzZWwtPnZhbHVlLmNvbnRh
aW5zKCcgJykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBR
U3RyaW5nIHN0ciA9IHZhbHVlLnFzdHJpbmcoKTsKLSAgICAgICAgICAgIFFTdHJpbmcgc2VsU3Ry
ID0gc2VsLT52YWx1ZS5xc3RyaW5nKCk7CiAgICAgICAgICAgICBpbnQgc3RhcnRTZWFyY2hBdCA9
IDA7CiAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGludCBmb3Vu
ZFBvcyA9IHN0ci5maW5kKHNlbFN0ciwgc3RhcnRTZWFyY2hBdCwgaXNYTUxEb2MpOwotICAgICAg
ICAgICAgICAgIGlmIChmb3VuZFBvcyA9PSAtMSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgIGlmIChmb3VuZFBvcyA9PSAwIHx8IHN0cltmb3VuZFBvcy0xXSA9PSAnICcpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdWludCBlbmRTdHIgPSBmb3VuZFBvcyArIHNlbFN0ci5sZW5ndGgoKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGVuZFN0ciA9PSBzdHIubGVuZ3RoKCkgfHwgc3RyW2Vu
ZFN0cl0gPT0gJyAnKQorICAgICAgICAgICAgICAgIGludCBmb3VuZFBvcyA9IHZhbHVlLmZpbmQo
c2VsLT52YWx1ZSwgc3RhcnRTZWFyY2hBdCwgaXNYTUxEb2MpOworICAgICAgICAgICAgICAgIGlm
IChmb3VuZFBvcyA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIGlmIChmb3VuZFBvcyA9PSAwIHx8IHZhbHVlW2ZvdW5kUG9zLTFdID09ICcg
JykgeworICAgICAgICAgICAgICAgICAgICB1aW50IGVuZFN0ciA9IGZvdW5kUG9zICsgc2VsLT52
YWx1ZS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuZFN0ciA9PSB2YWx1ZS5s
ZW5ndGgoKSB8fCB2YWx1ZVtlbmRTdHJdID09ICcgJykKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOyAvLyBXZSBmb3VuZCBhIG1hdGNoLgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBObyBtYXRjaC4gIEtlZXAgbG9va2luZy4KICAg
ICAgICAgICAgICAgICBzdGFydFNlYXJjaEF0ID0gZm91bmRQb3MgKyAxOwogICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpDb250YWluOgotICAgICAgICB7Ci0gICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8
PCAiY2hlY2tpbmcgZm9yIGNvbnRhaW5zIG1hdGNoIiA8PCBlbmRsOwotICAgICAgICAgICAgUVN0
cmluZyBzdHIgPSB2YWx1ZS5xc3RyaW5nKCk7Ci0gICAgICAgICAgICBRU3RyaW5nIHNlbFN0ciA9
IHNlbC0+dmFsdWUucXN0cmluZygpOwotICAgICAgICAgICAgaW50IHBvcyA9IHN0ci5maW5kKHNl
bFN0ciwgMCwgaXNYTUxEb2MpOwotICAgICAgICAgICAgaWYocG9zID09IC0xKSByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmNvbnRhaW5zKHNlbC0+dmFsdWUsIGlzWE1MRG9j
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpCZWdpbjoKLSAgICAgICAgewotICAg
ICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwgImNoZWNraW5nIGZvciBiZWdpbnN3aXRoIG1h
dGNoIiA8PCBlbmRsOwotICAgICAgICAgICAgUVN0cmluZyBzdHIgPSB2YWx1ZS5xc3RyaW5nKCk7
Ci0gICAgICAgICAgICBRU3RyaW5nIHNlbFN0ciA9IHNlbC0+dmFsdWUucXN0cmluZygpOwotICAg
ICAgICAgICAgaW50IHBvcyA9IHN0ci5maW5kKHNlbFN0ciwgMCwgaXNYTUxEb2MpOwotICAgICAg
ICAgICAgaWYocG9zICE9IDApIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdmFsdWUu
c3RhcnRzV2l0aChzZWwtPnZhbHVlLCBpc1hNTERvYykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6RW5kOgotICAgICAgICB7Ci0gICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8
PCAiY2hlY2tpbmcgZm9yIGVuZHN3aXRoIG1hdGNoIiA8PCBlbmRsOwotICAgICAgICAgICAgUVN0
cmluZyBzdHIgPSB2YWx1ZS5xc3RyaW5nKCk7Ci0gICAgICAgICAgICBRU3RyaW5nIHNlbFN0ciA9
IHNlbC0+dmFsdWUucXN0cmluZygpOwotCSAgICBpZiAoaXNYTUxEb2MgJiYgIXN0ci5lbmRzV2l0
aChzZWxTdHIpKSByZXR1cm4gZmFsc2U7Ci0JICAgIGlmICghaXNYTUxEb2MpIHsKLQkgICAgICAg
IGludCBwb3MgPSBzdHIubGVuZ3RoKCkgLSBzZWxTdHIubGVuZ3RoKCk7Ci0JCWlmIChwb3MgPCAw
IHx8IHBvcyAhPSBzdHIuZmluZChzZWxTdHIsIHBvcywgZmFsc2UpICkKLQkJICAgIHJldHVybiBm
YWxzZTsKLQkgICAgfQorCSAgICBpZiAoIXZhbHVlLmVuZHNXaXRoKHNlbC0+dmFsdWUsIGlzWE1M
RG9jKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpIeXBoZW46Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIC8va2REZWJ1ZyggNjA4MCApIDw8ICJjaGVja2luZyBmb3IgaHlwaGVuIG1h
dGNoIiA8PCBlbmRsOwotICAgICAgICAgICAgUVN0cmluZyBzdHIgPSB2YWx1ZS5xc3RyaW5nKCk7
Ci0gICAgICAgICAgICBRU3RyaW5nIHNlbFN0ciA9IHNlbC0+dmFsdWUucXN0cmluZygpOwotICAg
ICAgICAgICAgaWYoc3RyLmxlbmd0aCgpIDwgc2VsU3RyLmxlbmd0aCgpKSByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiBzdHIgYmVnaW5zIHdpdGggc2VsU3RyOgotICAgICAg
ICAgICAgaWYoc3RyLmZpbmQoc2VsU3RyLCAwLCBpc1hNTERvYykgIT0gMCkgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgLy8gSXQgZG9lcy4gQ2hlY2sgZm9yIGV4YWN0IG1hdGNoIG9yIGZvbGxv
d2luZyAnLSc6Ci0gICAgICAgICAgICBpZihzdHIubGVuZ3RoKCkgIT0gc2VsU3RyLmxlbmd0aCgp
Ci0gICAgICAgICAgICAgICAgJiYgc3RyW3NlbFN0ci5sZW5ndGgoKV0gIT0gJy0nKSByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPCBzZWwtPnZhbHVlLmxlbmd0
aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdmFs
dWUuc3RhcnRzV2l0aChzZWwtPnZhbHVlLCBpc1hNTERvYykpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgLy8gSXQgdGhleSBzdGFydCB0aGUgc2FtZSwgY2hlY2sg
Zm9yIGV4YWN0IG1hdGNoIG9yIGZvbGxvd2luZyAnLSc6CisgICAgICAgICAgICBpZiAodmFsdWUu
bGVuZ3RoKCkgIT0gc2VsLT52YWx1ZS5sZW5ndGgoKSAmJiB2YWx1ZVtzZWwtPnZhbHVlLmxlbmd0
aCgpXSAhPSAnLScpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M6
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQ6CiAgICAgICAgIGRlZmF1
bHQ6CkBAIC0xMzQzLDcgKzEyOTAsNiBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25l
U2VsZWN0b3IoCiAgICAgewogICAgICAgICAvLyBQc2V1ZG8gZWxlbWVudHMuIFdlIG5lZWQgdG8g
Y2hlY2sgZmlyc3QgY2hpbGQgaGVyZS4gTm8gZHluYW1pYyBwc2V1ZG8KICAgICAgICAgLy8gZWxl
bWVudHMgZm9yIHRoZSBtb21lbnQKLS8vICAgICAgICBrZERlYnVnKCkgPDwgIkNTU09yZGVyZWRS
dWxlOjpwc2V1ZG8gIiA8PCB2YWx1ZSA8PCBlbmRsOwogICAgICAgICAgICAgc3dpdGNoIChzZWwt
PnBzZXVkb1R5cGUoKSkgewogICAgICAgICAgICAgICAgIC8vIFBzZXVkbyBjbGFzc2VzOgogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW1wdHk6CkBAIC0xNjM2LDcgKzE1ODIs
OCBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlSW1wCiAKIHZvaWQgQ1NT
UnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldEltcGwgKnNoZWV0LCBjb25z
dCBET01TdHJpbmcgJm1lZGl1bSkKIHsKLSAgICBpZiAoIXNoZWV0IHx8ICFzaGVldC0+aXNDU1NT
dHlsZVNoZWV0KCkpIHJldHVybjsKKyAgICBpZiAoIXNoZWV0IHx8ICFzaGVldC0+aXNDU1NTdHls
ZVNoZWV0KCkpCisgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vIG1lZGlhIGltcGxpZXMgImFs
bCIsIGJ1dCBpZiBhIG1lZGlhIGxpc3QgZXhpc3RzIGl0IG11c3QKICAgICAvLyBjb250YWluIG91
ciBjdXJyZW50IG1lZGl1bQpAQCAtMTY1NCwxMCArMTYwMSw2IEBAIHZvaWQgQ1NTUnVsZVNldDo6
YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3QKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0t
PmlzSW1wb3J0UnVsZSgpKSB7CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlSW1wbCAqaW1wb3J0
ID0gc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZUltcGwgKj4oaXRlbSk7Ci0KLSAgICAgICAgICAg
IC8va2REZWJ1ZyggNjA4MCApIDw8ICJAaW1wb3J0OiBNZWRpYTogIgotICAgICAgICAgICAgLy8g
ICAgICAgICAgICAgICAgPDwgaW1wb3J0LT5tZWRpYSgpLT5tZWRpYVRleHQoKS5xc3RyaW5nKCkg
PDwgZW5kbDsKLQogICAgICAgICAgICAgaWYgKCFpbXBvcnQtPm1lZGlhKCkgfHwgaW1wb3J0LT5t
ZWRpYSgpLT5jb250YWlucyhtZWRpdW0pKQogICAgICAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNo
ZWV0KGltcG9ydC0+c3R5bGVTaGVldCgpLCBtZWRpdW0pOwogICAgICAgICB9CkBAIC0xNjY1LDE1
ICsxNjA4LDkgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdAogICAg
ICAgICAgICAgQ1NTTWVkaWFSdWxlSW1wbCAqciA9IHN0YXRpY19jYXN0PENTU01lZGlhUnVsZUlt
cGwqPihpdGVtKTsKICAgICAgICAgICAgIENTU1J1bGVMaXN0SW1wbCAqcnVsZXMgPSByLT5jc3NS
dWxlcygpOwogCi0gICAgICAgICAgICAvL0RPTVN0cmluZyBtZWRpYVRleHQgPSBtZWRpYS0+bWVk
aWFUZXh0KCk7Ci0gICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8PCAiQG1lZGlhOiBNZWRp
YTogIgotICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgPDwgci0+bWVkaWEoKS0+bWVkaWFU
ZXh0KCkucXN0cmluZygpIDw8IGVuZGw7Ci0KICAgICAgICAgICAgIGlmICgoIXItPm1lZGlhKCkg
fHwgci0+bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkgJiYgcnVsZXMpIHsKICAgICAgICAgICAg
ICAgICAvLyBUcmF2ZXJzZSBjaGlsZCBlbGVtZW50cyBvZiB0aGUgQG1lZGlhIHJ1bGUuCiAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisr
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8va2REZWJ1ZyggNjA4MCApIDw8ICIqKiogUnVsZSAj
IiA8PCBqIDw8IGVuZGw7Ci0KICAgICAgICAgICAgICAgICAgICAgQ1NTUnVsZUltcGwgKmNoaWxk
SXRlbSA9IHJ1bGVzLT5pdGVtKGopOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJdGVt
LT5pc1N0eWxlUnVsZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIFN0
eWxlUnVsZSwgc28gYXBwZW5kIGl0IHRvIG91ciBsaXN0CkBAIC0xNjgyLDIwICsxNjE5LDkgQEAg
dm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFJ1bGUocnVsZSwgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8va2REZWJ1ZyggNjA4MCAp
IDw8ICJJZ25vcmluZyBjaGlsZCBydWxlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
ICAgICJJbXBvcnRSdWxlOiBydWxlIGlzIG5vdCBhIFN0eWxlUnVsZSEiIDw8IGVuZGw7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9ICAgLy8gZm9yIHJ1bGVzCiAgICAg
ICAgICAgICB9ICAgLy8gaWYgcnVsZXMKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8PCAiQ1NTTWVkaWFSdWxlIG5vdCBy
ZW5kZXJlZDogIgotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIDw8ICJydWxlIGVt
cHR5IG9yIHdyb25nIG1lZGl1bSEiIDw8IGVuZGw7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgLy8gIyMjIGluY2x1ZGUgb3RoZXIgcnVsZXMKICAgICB9CiB9CiAKQEAgLTE4MzUs
OCArMTc2MSw2IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMKIAog
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KCBpbnQgaWQsIENTU1ZhbHVlSW1w
bCAqdmFsdWUgKQogewotICAgIC8va2REZWJ1ZyggNjA4MCApIDw8ICJhcHBseWluZyBwcm9wZXJ0
eSAiIDw8IHByb3AtPm1faWQgPDwgZW5kbDsKLQogICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAq
cHJpbWl0aXZlVmFsdWUgPSAwOwogICAgIGlmKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsICo+KHZhbHVl
KTsKIAoK
</data>
<flag name="review"
          id="1084"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5268</attachid>
            <date>2005-12-24 06:16:48 -0800</date>
            <delta_ts>2005-12-25 02:13:00 -0800</delta_ts>
            <desc>Other string uses (including some unrelated cleanup)</desc>
            <filename>use_string_changes.patch</filename>
            <type>text/plain</type>
            <size>6261</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2todG1sX3BhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2todG1sL2todG1sX3BhcnQuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM3
MwpkaWZmIC1wIC11IC1yMS4zNzMga2h0bWwva2h0bWxfcGFydC5jcHAKLS0tIGtodG1sL2todG1s
X3BhcnQuY3BwCTIzIERlYyAyMDA1IDE4OjQ0OjA0IC0wMDAwCTEuMzczCisrKyBraHRtbC9raHRt
bF9wYXJ0LmNwcAkyNCBEZWMgMjAwNSAxNDowODo1NSAtMDAwMApAQCAtMTcxMSwxMiArMTcxMSw5
IEBAIHZvaWQgS0hUTUxQYXJ0Ojp1cmxTZWxlY3RlZCggY29uc3QgUVN0cmkKIGJvb2wgS0hUTUxQ
YXJ0OjpyZXF1ZXN0RnJhbWUoIGtodG1sOjpSZW5kZXJQYXJ0ICpmcmFtZSwgY29uc3QgUVN0cmlu
ZyAmdXJsLCBjb25zdCBRU3RyaW5nICZmcmFtZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBRU3RyaW5nTGlzdCAmcGFyYW1OYW1lcywgY29uc3QgUVN0cmluZ0xpc3Qg
JnBhcmFtVmFsdWVzLCBib29sIGlzSUZyYW1lICkKIHsKLS8vICBrZERlYnVnKCA2MDUwICkgPDwg
ImNoaWxkUmVxdWVzdCggLi4uLCAiIDw8IHVybCA8PCAiLCAiIDw8IGZyYW1lTmFtZSA8PCAiICki
IDw8IGVuZGw7CiAgIEZyYW1lSXQgaXQgPSBkLT5tX2ZyYW1lcy5maW5kKCBmcmFtZU5hbWUgKTsK
LSAgaWYgKCBpdCA9PSBkLT5tX2ZyYW1lcy5lbmQoKSApCi0gIHsKKyAgaWYgKGl0ID09IGQtPm1f
ZnJhbWVzLmVuZCgpKSB7CiAgICAga2h0bWw6OkNoaWxkRnJhbWUgY2hpbGQ7Ci0vLyAgICBrZERl
YnVnKCA2MDUwICkgPDwgImluc2VydGluZyBuZXcgZnJhbWUgaW50byBmcmFtZSBtYXAgIiA8PCBm
cmFtZU5hbWUgPDwgZW5kbDsKICAgICBjaGlsZC5tX25hbWUgPSBmcmFtZU5hbWU7CiAgICAgaXQg
PSBkLT5tX2ZyYW1lcy5hcHBlbmQoIGNoaWxkICk7CiAgIH0KQEAgLTE3MjcsOCArMTcyNCw3IEBA
IGJvb2wgS0hUTUxQYXJ0OjpyZXF1ZXN0RnJhbWUoIGtodG1sOjpSZW4KICAgKCppdCkubV9wYXJh
bU5hbWVzID0gcGFyYW1WYWx1ZXM7CiAKICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2
YXNjcmlwdDpzdHJpbmciPgotICBpZiAoIHVybC5maW5kKCBRU3RyaW5nOjpmcm9tTGF0aW4xKCAi
amF2YXNjcmlwdDoiICksIDAsIGZhbHNlICkgPT0gMCApCi0gIHsKKyAgaWYgKHVybC5zdGFydHNX
aXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNlKSkgewogICAgIGlmICghcHJvY2Vzc09iamVjdFJlcXVl
c3QoJigqaXQpLCAiYWJvdXQ6YmxhbmsiLCAidGV4dC9odG1sIiApKQogICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0xOTIzLDE2ICsxOTE5LDEyIEBAIHZvaWQgS0hUTUxQYXJ0OjpzdWJtaXRGb3Jt
KCBjb25zdCBjaGFyICoKICAga2REZWJ1Zyg2MDAwKSA8PCB0aGlzIDw8ICI6IEtIVE1MUGFydDo6
c3VibWl0Rm9ybSB0YXJnZXQ9IiA8PCBfdGFyZ2V0IDw8ICIgdXJsPSIgPDwgdXJsIDw8IGVuZGw7
CiAgIEtVUkwgdSA9IGNvbXBsZXRlVVJMKCB1cmwgKTsKIAotICBpZiAoICF1LmlzVmFsaWQoKSAp
Ci0gIHsKKyAgaWYgKCF1LmlzVmFsaWQoKSkKICAgICAvLyAjIyMgRVJST1IgSEFORExJTkchCiAg
ICAgcmV0dXJuOwotICB9Ci0KIAogICBRU3RyaW5nIHVybHN0cmluZyA9IHUudXJsKCk7Ci0KLSAg
aWYgKCB1cmxzdHJpbmcuZmluZCggUVN0cmluZzo6ZnJvbUxhdGluMSggImphdmFzY3JpcHQ6IiAp
LCAwLCBmYWxzZSApID09IDAgKSB7CisgIGlmICh1cmxzdHJpbmcuc3RhcnRzV2l0aCgiamF2YXNj
cmlwdDoiLCBmYWxzZSkpIHsKICAgICB1cmxzdHJpbmcgPSBLVVJMOjpkZWNvZGVfc3RyaW5nKHVy
bHN0cmluZyk7CiAgICAgZC0+bV9leGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7
CiAgICAgZXhlY3V0ZVNjcmlwdCggdXJsc3RyaW5nLnJpZ2h0KCB1cmxzdHJpbmcubGVuZ3RoKCkg
LSAxMSkgKTsKQEAgLTE5NDAsNyArMTkzMiw2IEBAIHZvaWQgS0hUTUxQYXJ0OjpzdWJtaXRGb3Jt
KCBjb25zdCBjaGFyICoKICAgICByZXR1cm47CiAgIH0KIAotCiAgIEtQYXJ0czo6VVJMQXJncyBh
cmdzOwogCiAgIGlmICghZC0+bV9yZWZlcnJlci5pc0VtcHR5KCkpCkluZGV4OiBraHRtbC9odG1s
L2h0bWxfZm9ybWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2todG1sL2h0bWwvaHRtbF9mb3JtaW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjE2
CmRpZmYgLXAgLXUgLXIxLjIxNiBraHRtbC9odG1sL2h0bWxfZm9ybWltcGwuY3BwCi0tLSBraHRt
bC9odG1sL2h0bWxfZm9ybWltcGwuY3BwCTIzIERlYyAyMDA1IDE4OjQ0OjE1IC0wMDAwCTEuMjE2
CisrKyBraHRtbC9odG1sL2h0bWxfZm9ybWltcGwuY3BwCTI0IERlYyAyMDA1IDE0OjA5OjA2IC0w
MDAwCkBAIC00MDcsMjAgKzQwNywxNiBAQCBib29sIEhUTUxGb3JtRWxlbWVudEltcGw6OmZvcm1E
YXRhKEZvcm1ECiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50SW1w
bDo6cGFyc2VFbmN0eXBlKCBjb25zdCBET01TdHJpbmcmIHR5cGUgKQordm9pZCBIVE1MRm9ybUVs
ZW1lbnRJbXBsOjpwYXJzZUVuY3R5cGUoY29uc3QgRE9NU3RyaW5nJiB0eXBlKQogewotICAgIGlm
KHR5cGUucXN0cmluZygpLmZpbmQoIm11bHRpcGFydCIsIDAsIGZhbHNlKSAhPSAtMSB8fCB0eXBl
LnFzdHJpbmcoKS5maW5kKCJmb3JtLWRhdGEiLCAwLCBmYWxzZSkgIT0gLTEpCi0gICAgeworICAg
IGlmKHR5cGUuY29udGFpbnMoIm11bHRpcGFydCIsIGZhbHNlKSB8fCB0eXBlLmNvbnRhaW5zKCJm
b3JtLWRhdGEiLCBmYWxzZSkpIHsKICAgICAgICAgbV9lbmN0eXBlID0gIm11bHRpcGFydC9mb3Jt
LWRhdGEiOwogICAgICAgICBtX211bHRpcGFydCA9IHRydWU7CiAgICAgICAgIG1fcG9zdCA9IHRy
dWU7Ci0gICAgfSBlbHNlIGlmICh0eXBlLnFzdHJpbmcoKS5maW5kKCJ0ZXh0IiwgMCwgZmFsc2Up
ICE9IC0xIHx8IHR5cGUucXN0cmluZygpLmZpbmQoInBsYWluIiwgMCwgZmFsc2UpICE9IC0xKQot
ICAgIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUuY29udGFpbnMoInRleHQiLCBmYWxzZSkgfHwgdHlw
ZS5jb250YWlucygicGxhaW4iLCBmYWxzZSkpIHsKICAgICAgICAgbV9lbmN0eXBlID0gInRleHQv
cGxhaW4iOwogICAgICAgICBtX211bHRpcGFydCA9IGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgeworICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZW5jdHlwZSA9ICJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiOwogICAgICAgICBtX211bHRpcGFydCA9IGZhbHNlOwogICAgIH0K
SW5kZXg6IGtodG1sL21pc2MvZGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwvbWlzYy9kZWNvZGVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS40OQpkaWZmIC1wIC11IC1yMS40OSBraHRtbC9taXNjL2RlY29kZXIuY3BwCi0tLSBraHRtbC9t
aXNjL2RlY29kZXIuY3BwCTIwIERlYyAyMDA1IDA4OjQ5OjQ4IC0wMDAwCTEuNDkKKysrIGtodG1s
L21pc2MvZGVjb2Rlci5jcHAJMjQgRGVjIDIwMDUgMTQ6MDk6MDcgLTAwMDAKQEAgLTUxMSwxNiAr
NTExLDEyIEBAIFFTdHJpbmcgRGVjb2Rlcjo6ZGVjb2RlKGNvbnN0IGNoYXIgKmRhdGEKICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpdGhpblRpdGxlID0gIWVuZDsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICghZW5kICYmIHRhZyA9PSBtZXRhVGFnKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCBhIG1ldGEgdGFnLi4uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvL3B0ciArPSA1OwogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqIGVuZCA9IHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCplbmQgIT0g
Jz4nICYmICplbmQgIT0gJ1wwJykgZW5kKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ICplbmQgPT0gJ1wwJyApIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgUUNTdHJpbmcg
c3RyKCBwdHIsIChlbmQtcHRyKSsxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0
ci5sb3dlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IDA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvL2lmKCAocG9zID0gc3RyLmZpbmQoImh0dHAtZXF1aXYiLCBwb3Mp
KSA9PSAtMSkgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL2lmKCAocG9zID0gc3Ry
LmZpbmQoImNvbnRlbnQtdHlwZSIsIHBvcykpID09IC0xKSBicmVhazsKIAkJCXdoaWxlKCBwb3Mg
PCAoIGludCApIHN0ci5sZW5ndGgoKSApIHsKIAkJCSAgICBpZiggKHBvcyA9IHN0ci5maW5kKCJj
aGFyc2V0IiwgcG9zLCBmYWxzZSkpID09IC0xKSBicmVhazsKIAkJCSAgICBwb3MgKz0gNzsKSW5k
ZXg6IGtodG1sL3htbC9kb21fZG9jaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4yOTMKZGlmZiAtcCAtdSAtcjEuMjkzIGtodG1sL3htbC9kb21fZG9jaW1wbC5jcHAKLS0t
IGtodG1sL3htbC9kb21fZG9jaW1wbC5jcHAJMjMgRGVjIDIwMDUgMTg6NDQ6MjggLTAwMDAJMS4y
OTMKKysrIGtodG1sL3htbC9kb21fZG9jaW1wbC5jcHAJMjQgRGVjIDIwMDUgMTQ6MDk6MTAgLTAw
MDAKQEAgLTE4NjIsMTEgKzE4NjIsMTMgQEAgdm9pZCBEb2N1bWVudEltcGw6OnByb2Nlc3NIdHRw
RXF1aXYoY29ucwogICAgICAgICAgICAgcG9zKys7CiAgICAgICAgICAgICB3aGlsZShwb3MgPCAo
aW50KXN0ci5sZW5ndGgoKSAmJiBzdHJbcG9zXS5pc1NwYWNlKCkpIHBvcysrOwogICAgICAgICAg
ICAgc3RyID0gc3RyLm1pZChwb3MpOwotICAgICAgICAgICAgaWYoc3RyLmZpbmQoInVybCIsIDAs
ICBmYWxzZSApID09IDApICBzdHIgPSBzdHIubWlkKDMpOworICAgICAgICAgICAgaWYgKHN0ci5m
aW5kKCJ1cmwiLCAwLCAgZmFsc2UgKSA9PSAwKQorICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5t
aWQoMyk7CiAgICAgICAgICAgICBzdHIgPSBzdHIuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAg
ICAgICBpZiAoIHN0ci5sZW5ndGgoKSAmJiBzdHJbMF0gPT0gJz0nICkgc3RyID0gc3RyLm1pZCgg
MSApLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgc3RyID0gcGFyc2VVUkwoIERPTVN0
cmluZyhzdHIpICkucXN0cmluZygpOwotICAgICAgICAgICAgaWYgKCBvayAmJiBwYXJ0ICkKKyAg
ICAgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgJiYgc3RyWzBdID09ICc9JykKKyAgICAgICAgICAg
ICAgICBzdHIgPSBzdHIubWlkKDEpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAgICAgc3Ry
ID0gcGFyc2VVUkwoRE9NU3RyaW5nKHN0cikpLnFzdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChv
ayAmJiBwYXJ0KQogICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVt
IGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgPiAxIHNlY29uZAogICAgICAgICAgICAgICAgIHBhcnQt
PnNjaGVkdWxlUmVkaXJlY3Rpb24oZGVsYXksIGNvbXBsZXRlVVJMKCBzdHIgKSwgZGVsYXkgPD0g
MSk7CiAgICAgICAgIH0KQEAgLTE4ODMsOSArMTg4NSw3IEBAIHZvaWQgRG9jdW1lbnRJbXBsOjpw
cm9jZXNzSHR0cEVxdWl2KGNvbnMKICAgICAgICAgUVN0cmluZyBzdHIgPSBjb250ZW50LnFzdHJp
bmcoKS5sb3dlcigpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBLVVJMIHVybCA9IHBhcnQt
PnVybCgpOwogICAgICAgICBpZiAoKHN0ciA9PSAibm8tY2FjaGUiKSAmJiB1cmwucHJvdG9jb2wo
KS5zdGFydHNXaXRoKCJodHRwIikpCi0gICAgICAgIHsKICAgICAgICAgICAgS0lPOjpodHRwX3Vw
ZGF0ZV9jYWNoZSh1cmwsIHRydWUsIDApOwotICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYo
IChzdHJjYXNlY21wKGVxdWl2LCAic2V0LWNvb2tpZSIpID09IDApKQogICAgIHsK
</data>
<flag name="review"
          id="1085"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>