<?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>33163</bug_id>
          
          <creation_ts>2010-01-04 11:32:15 -0800</creation_ts>
          <short_desc>Unify JSC::UStringImpl&apos;s &amp; WebCore::StringImpl&apos;s string hashing methods.</short_desc>
          <delta_ts>2010-01-04 17:34:41 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176773</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 11:32:15 -0800</bug_when>
    <thetext>Copy &amp; paste is great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176775</commentid>
    <comment_count>1</comment_count>
      <attachid>45810</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 11:36:03 -0800</bug_when>
    <thetext>Created attachment 45810
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176776</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 11:40:47 -0800</bug_when>
    <thetext>Attachment 45810 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/runtime/UStringImpl.h:163:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/runtime/UStringImpl.h:164:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/HashFunctions.h:217:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/wtf/HashFunctions.h:255:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/wtf/HashFunctions.h:294:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176777</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 11:41:02 -0800</bug_when>
    <thetext>Attachment 45810 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/161642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176778</commentid>
    <comment_count>4</comment_count>
      <attachid>45810</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-01-04 11:42:13 -0800</bug_when>
    <thetext>Comment on attachment 45810
The patch

YES.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176845</commentid>
    <comment_count>5</comment_count>
      <attachid>45826</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 13:29:02 -0800</bug_when>
    <thetext>Created attachment 45826
make inclusion of the wtf/unicode/Unicode.h explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176854</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 13:31:13 -0800</bug_when>
    <thetext>Attachment 45826 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/runtime/UStringImpl.h:163:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/runtime/UStringImpl.h:164:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/HashFunctions.h:25:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
JavaScriptCore/wtf/HashFunctions.h:217:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/wtf/HashFunctions.h:255:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/wtf/HashFunctions.h:294:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176860</commentid>
    <comment_count>7</comment_count>
      <attachid>45826</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 13:48:05 -0800</bug_when>
    <thetext>Comment on attachment 45826
make inclusion of the wtf/unicode/Unicode.h explicit.

Clearing review flag, landing based on Sam&apos;s original r+

- only set review on this to get the chromium buildbot to take a sniff at it. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176871</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 14:18:45 -0800</bug_when>
    <thetext>Committed revision 52758.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176937</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-04 16:29:30 -0800</bug_when>
    <thetext>I do not understand why, but this change seems to have broken all of the bots:

http://trac.webkit.org/changeset/52758
http://build.webkit.org/builders/Leopard%20Intel%20Release%20%28Tests%29/builds/8930
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/3854
http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/8585

Compiles are failing.  Either of DumpRenderTree support library or for windows:
   Creating library C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\lib\JavaScriptCore.lib and object C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\lib\JavaScriptCore.exp
JavaScriptCore.exp : error LNK2001: unresolved external symbol &quot;public: static unsigned int __cdecl JSC::UStringImpl::computeHash(char const *,int)&quot; (?computeHash@UStringImpl@JSC@@SAIPBDH@Z)
C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\bin\JavaScriptCore.dll : fatal error LNK1120: 1 unresolved externals

I recommend we roll this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176938</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-04 16:35:16 -0800</bug_when>
    <thetext>Mark rolled it out in http://trac.webkit.org/changeset/52768.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176964</commentid>
    <comment_count>11</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-04 17:34:41 -0800</bug_when>
    <thetext>Fixed, with thanks to bdash, relanding.
Committed revision 52776.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45810</attachid>
            <date>2010-01-04 11:36:03 -0800</date>
            <delta_ts>2010-01-04 13:29:02 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.stringHash.txt</filename>
            <type>text/plain</type>
            <size>14105</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzUwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDEtMDQgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzE2MworICAgICAgICBBZGQgc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb25zIHRv
IFdURi4KKyAgICAgICAgVXNlIFdURidzIHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9ucyBmcm9tIFVT
dHJpbmdJbXBsLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIHJ1
bnRpbWUvVVN0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZ0ltcGwuaDoK
KyAgICAgICAgKEpTQzo6VVN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKiB3dGYv
SGFzaEZ1bmN0aW9ucy5oOgorICAgICAgICAoV1RGOjpzdHJpbmdIYXNoKToKKwogMjAxMC0wMS0w
NCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYSBDaGFuIGFuZCBNYXJrIFJvd2UuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CShyZXZpc2lvbiA1MjQ5NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw2IEBAIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBO
U185RXhlY1N0YXRlRU5TXzkKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTE1Y3JlYXRlU3RydWN0dXJl
RU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5QzFFUE5TXzlFeGVjU3RhdGVFTjNX
VEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVQTlMzXzlCeXRlQXJyYXlFUEtO
U185Q2xhc3NJbmZvRQogX19aTjNKU0MxMVBhcnNlckFyZW5hNXJlc2V0RXYKLV9fWk4zSlNDMTFV
U3RyaW5nSW1wbDExY29tcHV0ZUhhc2hFUEtjaQotX19aTjNKU0MxMVVTdHJpbmdJbXBsMTFjb21w
dXRlSGFzaEVQS3RpCiBfX1pOM0pTQzExVVN0cmluZ0ltcGwxMnNoYXJlZEJ1ZmZlckV2CiBfX1pO
M0pTQzExVVN0cmluZ0ltcGw2c19udWxsRQogX19aTjNKU0MxMVVTdHJpbmdJbXBsN2Rlc3Ryb3lF
dgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nSW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nSW1wbC5jcHAJKHJldmlzaW9uIDUy
NDk1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDk3ICs4MSw0IEBAIHZvaWQgVVN0cmluZ0ltcGw6OmRlc3Ryb3koKQogICAg
IGRlbGV0ZSB0aGlzOwogfQogCi0vLyBHb2xkZW4gcmF0aW8gLSBhcmJpdHJhcnkgc3RhcnQgdmFs
dWUgdG8gYXZvaWQgbWFwcGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MKLS8vIG9yIGFueXRoaW5nIGxp
a2UgdGhhdC4KLWNvbnN0IHVuc2lnbmVkIFBISSA9IDB4OWUzNzc5YjlVOwotCi0vLyBQYXVsIEhz
aWVoJ3MgU3VwZXJGYXN0SGFzaAotLy8gaHR0cDovL3d3dy5hemlsbGlvbm1vbmtleXMuY29tL3Fl
ZC9oYXNoLmh0bWwKLXVuc2lnbmVkIFVTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChjb25zdCBVQ2hh
ciogcywgaW50IGxlbikKLXsKLSAgICB1bnNpZ25lZCBsID0gbGVuOwotICAgIHVpbnQzMl90IGhh
c2ggPSBQSEk7Ci0gICAgdWludDMyX3QgdG1wOwotCi0gICAgaW50IHJlbSA9IGwgJiAxOwotICAg
IGwgPj49IDE7Ci0KLSAgICAvLyBNYWluIGxvb3AKLSAgICBmb3IgKDsgbCA+IDA7IGwtLSkgewot
ICAgICAgICBoYXNoICs9IHNbMF07Ci0gICAgICAgIHRtcCA9IChzWzFdIDw8IDExKSBeIGhhc2g7
Ci0gICAgICAgIGhhc2ggPSAoaGFzaCA8PCAxNikgXiB0bXA7Ci0gICAgICAgIHMgKz0gMjsKLSAg
ICAgICAgaGFzaCArPSBoYXNoID4+IDExOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBlbmQgY2Fz
ZQotICAgIGlmIChyZW0pIHsKLSAgICAgICAgaGFzaCArPSBzWzBdOwotICAgICAgICBoYXNoIF49
IGhhc2ggPDwgMTE7Ci0gICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKLSAgICB9Ci0KLSAgICAv
LyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzCi0gICAgaGFzaCBePSBoYXNo
IDw8IDM7Ci0gICAgaGFzaCArPSBoYXNoID4+IDU7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDI7Ci0g
ICAgaGFzaCArPSBoYXNoID4+IDE1OwotICAgIGhhc2ggXj0gaGFzaCA8PCAxMDsKLQotICAgIC8v
IHRoaXMgYXZvaWRzIGV2ZXIgcmV0dXJuaW5nIGEgaGFzaCBjb2RlIG9mIDAsIHNpbmNlIHRoYXQg
aXMgdXNlZCB0bwotICAgIC8vIHNpZ25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0IiwgdXNpbmcg
YSB2YWx1ZSB0aGF0IGlzIGxpa2VseSB0byBiZQotICAgIC8vIGVmZmVjdGl2ZWx5IHRoZSBzYW1l
IGFzIDAgd2hlbiB0aGUgbG93IGJpdHMgYXJlIG1hc2tlZAotICAgIGlmIChoYXNoID09IDApCi0g
ICAgICAgIGhhc2ggPSAweDgwMDAwMDAwOwotCi0gICAgcmV0dXJuIGhhc2g7Ci19Ci0KLS8vIFBh
dWwgSHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBodHRwOi8vd3d3LmF6aWxsaW9ubW9ua2V5cy5j
b20vcWVkL2hhc2guaHRtbAotdW5zaWduZWQgVVN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKGNvbnN0
IGNoYXIqIHMsIGludCBsKQotewotICAgIC8vIFRoaXMgaGFzaCBpcyBkZXNpZ25lZCB0byB3b3Jr
IG9uIDE2LWJpdCBjaHVua3MgYXQgYSB0aW1lLiBCdXQgc2luY2UgdGhlIG5vcm1hbCBjYXNlCi0g
ICAgLy8gKGFib3ZlKSBpcyB0byBoYXNoIFVURi0xNiBjaGFyYWN0ZXJzLCB3ZSBqdXN0IHRyZWF0
IHRoZSA4LWJpdCBjaGFycyBhcyBpZiB0aGV5Ci0gICAgLy8gd2VyZSAxNi1iaXQgY2h1bmtzLCB3
aGljaCBzaG91bGQgZ2l2ZSBtYXRjaGluZyByZXN1bHRzCi0KLSAgICB1aW50MzJfdCBoYXNoID0g
UEhJOwotICAgIHVpbnQzMl90IHRtcDsKLQotICAgIHNpemVfdCByZW0gPSBsICYgMTsKLSAgICBs
ID4+PSAxOwotCi0gICAgLy8gTWFpbiBsb29wCi0gICAgZm9yICg7IGwgPiAwOyBsLS0pIHsKLSAg
ICAgICAgaGFzaCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzWzBdKTsKLSAgICAgICAg
dG1wID0gKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNbMV0pIDw8IDExKSBeIGhhc2g7Ci0g
ICAgICAgIGhhc2ggPSAoaGFzaCA8PCAxNikgXiB0bXA7Ci0gICAgICAgIHMgKz0gMjsKLSAgICAg
ICAgaGFzaCArPSBoYXNoID4+IDExOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBlbmQgY2FzZQot
ICAgIGlmIChyZW0pIHsKLSAgICAgICAgaGFzaCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihzWzBdKTsKLSAgICAgICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAgICAgICBoYXNoICs9IGhh
c2ggPj4gMTc7Ci0gICAgfQotCi0gICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAx
MjcgYml0cwotICAgIGhhc2ggXj0gaGFzaCA8PCAzOwotICAgIGhhc2ggKz0gaGFzaCA+PiA1Owot
ICAgIGhhc2ggXj0gaGFzaCA8PCAyOwotICAgIGhhc2ggKz0gaGFzaCA+PiAxNTsKLSAgICBoYXNo
IF49IGhhc2ggPDwgMTA7Ci0KLSAgICAvLyB0aGlzIGF2b2lkcyBldmVyIHJldHVybmluZyBhIGhh
c2ggY29kZSBvZiAwLCBzaW5jZSB0aGF0IGlzIHVzZWQgdG8KLSAgICAvLyBzaWduYWwgImhhc2gg
bm90IGNvbXB1dGVkIHlldCIsIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyBsaWtlbHkgdG8gYmUKLSAg
ICAvLyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyAwIHdoZW4gdGhlIGxvdyBiaXRzIGFyZSBtYXNr
ZWQKLSAgICBpZiAoaGFzaCA9PSAwKQotICAgICAgICBoYXNoID0gMHg4MDAwMDAwMDsKLQotICAg
IHJldHVybiBoYXNoOwotfQotCiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nSW1w
bC5oCShyZXZpc2lvbiA1MjQ5NSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0lt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBVU3RyaW5nSW1w
bF9oCiAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvT3duRmFzdE1hbGxvY1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb3NzaWJseU51bGwuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmlj
b2RlLmg+CkBAIC0xNTMsOSArMTU0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgbWVtY3B5KGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG51bUNoYXJhY3RlcnMgKiBzaXplb2YoVUNoYXIpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVUNoYXIqLCBpbnQgbGVu
Z3RoKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgY2hhciosIGludCBs
ZW5ndGgpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBjaGFyKiBzKSB7
IHJldHVybiBjb21wdXRlSGFzaChzLCBzdHJsZW4ocykpOyB9CisgICAgc3RhdGljIHVuc2lnbmVk
IGNvbXB1dGVIYXNoKGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IEFTU0VSVChsZW5ndGgg
Pj0gMCk7IHJldHVybiBXVEY6OnN0cmluZ0hhc2gocywgbGVuZ3RoKTsgfQorICAgIHN0YXRpYyB1
bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBjaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IEFTU0VSVChs
ZW5ndGggPj0gMCk7IHJldHVybiBXVEY6OnN0cmluZ0hhc2gocywgbGVuZ3RoKTsgfQorICAgIHN0
YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBXVEY6OnN0
cmluZ0hhc2gocyk7IH0KIAogICAgIHN0YXRpYyBVU3RyaW5nSW1wbCYgbnVsbCgpIHsgcmV0dXJu
ICpzX251bGw7IH0KICAgICBzdGF0aWMgVVN0cmluZ0ltcGwmIGVtcHR5KCkgeyByZXR1cm4gKnNf
ZW1wdHk7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoRnVuY3Rpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gNTI0
OTUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvSGFzaEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFdURl9IYXNoRnVuY3Rpb25zX2gKIAogI2luY2x1
ZGUgIlJlZlB0ci5oIgorI2luY2x1ZGUgIlVuaWNvZGUuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4K
IAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzcsNiArMTc4LDEyNSBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAvLyBHb2xkZW4gcmF0aW8gLSBhcmJpdHJhcnkgc3RhcnQgdmFsdWUgdG8gYXZvaWQgbWFw
cGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RyaW5n
SGFzaGluZ1N0YXJ0VmFsdWUgPSAweDllMzc3OWI5VTsKIAorICAgIC8vIHN0cmluZ0hhc2ggbWV0
aG9kcyBiYXNlZCBvbiBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaC4KKyAgICAvLyBodHRwOi8v
d3d3LmF6aWxsaW9ubW9ua2V5cy5jb20vcWVkL2hhc2guaHRtbAorICAgIC8vIGNoYXIqIGRhdGEg
aXMgaW50ZXJwcmV0ZWQgYXMgbGF0aW4tZW5jb2RlZCAoemVybyBleHRlbmRlZCB0byAxNiBiaXRz
KS4KKworICAgIGlubGluZSB1bnNpZ25lZCBzdHJpbmdIYXNoKGNvbnN0IFVDaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBoYXNoID0gV1RGOjpzdHJp
bmdIYXNoaW5nU3RhcnRWYWx1ZTsKKyAgICAgICAgdW5zaWduZWQgcmVtID0gbGVuZ3RoICYgMTsK
KyAgICAgICAgbGVuZ3RoID4+PSAxOworCisgICAgICAgIC8vIE1haW4gbG9vcAorICAgICAgICBm
b3IgKDsgbGVuZ3RoID4gMDsgbGVuZ3RoLS0pIHsKKyAgICAgICAgICAgIGhhc2ggKz0gZGF0YVsw
XTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRtcCA9IChkYXRhWzFdIDw8IDExKSBeIGhhc2g7Cisg
ICAgICAgICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOworICAgICAgICAgICAgZGF0YSAr
PSAyOworICAgICAgICAgICAgaGFzaCArPSBoYXNoID4+IDExOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSGFuZGxlIGVuZCBjYXNlCisgICAgICAgIGlmIChyZW0pIHsKKyAgICAgICAgICAgIGhh
c2ggKz0gZGF0YVswXTsKKyAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKKyAgICAgICAg
ICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvcmNlICJh
dmFsYW5jaGluZyIgb2YgZmluYWwgMTI3IGJpdHMKKyAgICAgICAgaGFzaCBePSBoYXNoIDw8IDM7
CisgICAgICAgIGhhc2ggKz0gaGFzaCA+PiA1OworICAgICAgICBoYXNoIF49IGhhc2ggPDwgMjsK
KyAgICAgICAgaGFzaCArPSBoYXNoID4+IDE1OworICAgICAgICBoYXNoIF49IGhhc2ggPDwgMTA7
CisKKyAgICAgICAgLy8gdGhpcyBhdm9pZHMgZXZlciByZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2Yg
MCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCisgICAgICAgIC8vIHNpZ25hbCAiaGFzaCBub3QgY29t
cHV0ZWQgeWV0IiwgdXNpbmcgYSB2YWx1ZSB0aGF0IGlzIGxpa2VseSB0byBiZQorICAgICAgICAv
LyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyAwIHdoZW4gdGhlIGxvdyBiaXRzIGFyZSBtYXNrZWQK
KyAgICAgICAgaWYgKGhhc2ggPT0gMCkKKyAgICAgICAgICAgIGhhc2ggPSAweDgwMDAwMDAwOwor
CisgICAgICAgIHJldHVybiBoYXNoOworICAgIH0KKworICAgIGlubGluZSB1bnNpZ25lZCBzdHJp
bmdIYXNoKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIGhhc2ggPSBXVEY6OnN0cmluZ0hhc2hpbmdTdGFydFZhbHVlOworICAgICAgICB1
bnNpZ25lZCByZW0gPSBsZW5ndGggJiAxOworICAgICAgICBsZW5ndGggPj49IDE7CisKKyAgICAg
ICAgLy8gTWFpbiBsb29wCisgICAgICAgIGZvciAoOyBsZW5ndGggPiAwOyBsZW5ndGgtLSkgewor
ICAgICAgICAgICAgaGFzaCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihkYXRhWzBdKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIHRtcCA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihk
YXRhWzFdKSA8PCAxMSkgXiBoYXNoOworICAgICAgICAgICAgaGFzaCA9IChoYXNoIDw8IDE2KSBe
IHRtcDsKKyAgICAgICAgICAgIGRhdGEgKz0gMjsKKyAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+
PiAxMTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSBlbmQgY2FzZQorICAgICAgICBp
ZiAocmVtKSB7CisgICAgICAgICAgICBoYXNoICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGRhdGFbMF0pOworICAgICAgICAgICAgaGFzaCBePSBoYXNoIDw8IDExOworICAgICAgICAgICAg
aGFzaCArPSBoYXNoID4+IDE3OworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yY2UgImF2YWxh
bmNoaW5nIiBvZiBmaW5hbCAxMjcgYml0cworICAgICAgICBoYXNoIF49IGhhc2ggPDwgMzsKKyAg
ICAgICAgaGFzaCArPSBoYXNoID4+IDU7CisgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAyOworICAg
ICAgICBoYXNoICs9IGhhc2ggPj4gMTU7CisgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMDsKKwor
ICAgICAgICAvLyB0aGlzIGF2b2lkcyBldmVyIHJldHVybmluZyBhIGhhc2ggY29kZSBvZiAwLCBz
aW5jZSB0aGF0IGlzIHVzZWQgdG8KKyAgICAgICAgLy8gc2lnbmFsICJoYXNoIG5vdCBjb21wdXRl
ZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlrZWx5IHRvIGJlCisgICAgICAgIC8vIGVm
ZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIDAgd2hlbiB0aGUgbG93IGJpdHMgYXJlIG1hc2tlZAorICAg
ICAgICBpZiAoaGFzaCA9PSAwKQorICAgICAgICAgICAgaGFzaCA9IDB4ODAwMDAwMDA7CisKKyAg
ICAgICAgcmV0dXJuIGhhc2g7CisgICAgfQorCisgICAgaW5saW5lIHVuc2lnbmVkIHN0cmluZ0hh
c2goY29uc3QgY2hhciogZGF0YSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBXVEY6
OnN0cmluZ0hhc2hpbmdTdGFydFZhbHVlOworICAgICAgICAKKyAgICAgICAgLy8gTWFpbiBsb29w
CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYjAgPSBkYXRh
WzBdOworICAgICAgICAgICAgaWYgKCFiMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYjEgPSBkYXRhWzFdOworICAgICAgICAgICAgaWYgKCFiMSkg
eworICAgICAgICAgICAgICAgIGhhc2ggKz0gYjA7CisgICAgICAgICAgICAgICAgaGFzaCBePSBo
YXNoIDw8IDExOworICAgICAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhhc2ggKz0gYjA7Cisg
ICAgICAgICAgICB1bnNpZ25lZCB0bXAgPSAoYjEgPDwgMTEpIF4gaGFzaDsKKyAgICAgICAgICAg
IGhhc2ggPSAoaGFzaCA8PCAxNikgXiB0bXA7CisgICAgICAgICAgICBkYXRhICs9IDI7CisgICAg
ICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmluYWwgMTI3IGJpdHMuCisgICAgICAgIGhhc2gg
Xj0gaGFzaCA8PCAzOworICAgICAgICBoYXNoICs9IGhhc2ggPj4gNTsKKyAgICAgICAgaGFzaCBe
PSBoYXNoIDw8IDI7CisgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNTsKKyAgICAgICAgaGFzaCBe
PSBoYXNoIDw8IDEwOworCisgICAgICAgIC8vIFRoaXMgYXZvaWRzIGV2ZXIgcmV0dXJuaW5nIGEg
aGFzaCBjb2RlIG9mIDAsIHNpbmNlIHRoYXQgaXMgdXNlZCB0bworICAgICAgICAvLyBzaWduYWwg
Imhhc2ggbm90IGNvbXB1dGVkIHlldCIsIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyBsaWtlbHkgdG8g
YmUKKyAgICAgICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgMCB3aGVuIHRoZSBsb3cgYml0
cyBhcmUgbWFza2VkLgorICAgICAgICBpZiAoaGFzaCA9PSAwKQorICAgICAgICAgICAgaGFzaCA9
IDB4ODAwMDAwMDA7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaGFzaDsKKyAgICB9CisKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkRlZmF1bHRIYXNoOwpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUy
NzUwKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMC0wMS0wNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTYzCisgICAgICAgIFVzZSBXVEYn
cyBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbnMgZnJvbSBTdHJpbmdJbXBsLgorCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBs
Ojpjb21wdXRlSGFzaCk6CisKIDIwMTAtMDEtMDQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCByZXZlcnQgcjUyNzQ1IGFuZCByNTI3
NDYgb24gYmVoYWxmIG9mIE5pa29sYXMgWmltbWVybWFubiwgYXMgZGlzY3Vzc2VkIG9uIElSQy4K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gNTI0OTUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvT3duRmFzdE1hbGxvY1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QdHJBbmRGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC0xMDIsOCArMTAzLDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIHsgaWYgKG1f
aGFzaCA9PSAwKSBtX2hhc2ggPSBjb21wdXRlSGFzaChtX2RhdGEsIG1fbGVuZ3RoKTsgcmV0dXJu
IG1faGFzaDsgfQogICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0IHsgQVNTRVJUKG1f
aGFzaCk7IHJldHVybiBtX2hhc2g7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2go
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW4pOwotICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRl
SGFzaChjb25zdCBjaGFyKik7CisgICAgaW5saW5lIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFz
aChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBXVEY6OnN0cmlu
Z0hhc2goZGF0YSwgbGVuZ3RoKTsgfQorICAgIGlubGluZSBzdGF0aWMgdW5zaWduZWQgY29tcHV0
ZUhhc2goY29uc3QgY2hhciogZGF0YSkgeyByZXR1cm4gV1RGOjpzdHJpbmdIYXNoKGRhdGEpOyB9
CiAgICAgCiAgICAgLy8gUmV0dXJucyBhIFN0cmluZ0ltcGwgc3VpdGFibGUgZm9yIHVzZSBvbiBh
bm90aGVyIHRocmVhZC4KICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyb3NzVGhyZWFkU3Ry
aW5nKCk7CkBAIC0yMTMsOTEgKzIxNCw2IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIKIAogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3Ry
aW5nSW1wbCopOwogCi0vLyBHb2xkZW4gcmF0aW8gLSBhcmJpdHJhcnkgc3RhcnQgdmFsdWUgdG8g
YXZvaWQgbWFwcGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MKLS8vIG9yIGFueXRoaW5nIGxpa2UgdGhh
dC4KLWNvbnN0IHVuc2lnbmVkIHBoaSA9IDB4OWUzNzc5YjlVOwotCi0vLyBQYXVsIEhzaWVoJ3Mg
U3VwZXJGYXN0SGFzaAotLy8gaHR0cDovL3d3dy5hemlsbGlvbm1vbmtleXMuY29tL3FlZC9oYXNo
Lmh0bWwKLWlubGluZSB1bnNpZ25lZCBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChjb25zdCBVQ2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHVuc2lnbmVkIGhhc2ggPSBwaGk7Ci0g
ICAgCi0gICAgLy8gTWFpbiBsb29wLgotICAgIGZvciAodW5zaWduZWQgcGFpckNvdW50ID0gbGVu
Z3RoID4+IDE7IHBhaXJDb3VudDsgcGFpckNvdW50LS0pIHsKLSAgICAgICAgaGFzaCArPSBkYXRh
WzBdOwotICAgICAgICB1bnNpZ25lZCB0bXAgPSAoZGF0YVsxXSA8PCAxMSkgXiBoYXNoOwotICAg
ICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOwotICAgICAgICBkYXRhICs9IDI7Ci0gICAg
ICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKLSAgICB9Ci0gICAgCi0gICAgLy8gSGFuZGxlIGVuZCBj
YXNlLgotICAgIGlmIChsZW5ndGggJiAxKSB7Ci0gICAgICAgIGhhc2ggKz0gZGF0YVswXTsKLSAg
ICAgICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTc7Ci0g
ICAgfQotCi0gICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAxMjcgYml0cy4KLSAg
ICBoYXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhhc2ggPj4gNTsKLSAgICBoYXNoIF49
IGhhc2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7Ci0gICAgaGFzaCBePSBoYXNoIDw8
IDEwOwotCi0gICAgLy8gVGhpcyBhdm9pZHMgZXZlciByZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2Yg
MCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAgLy8gc2lnbmFsICJoYXNoIG5vdCBjb21wdXRl
ZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlrZWx5IHRvIGJlCi0gICAgLy8gZWZmZWN0
aXZlbHkgdGhlIHNhbWUgYXMgMCB3aGVuIHRoZSBsb3cgYml0cyBhcmUgbWFza2VkLgotICAgIGhh
c2ggfD0gIWhhc2ggPDwgMzE7Ci0gICAgCi0gICAgcmV0dXJuIGhhc2g7Ci19Ci0KLS8vIFBhdWwg
SHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBodHRwOi8vd3d3LmF6aWxsaW9ubW9ua2V5cy5jb20v
cWVkL2hhc2guaHRtbAotaW5saW5lIHVuc2lnbmVkIFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKGNv
bnN0IGNoYXIqIGRhdGEpCi17Ci0gICAgLy8gVGhpcyBoYXNoIGlzIGRlc2lnbmVkIHRvIHdvcmsg
b24gMTYtYml0IGNodW5rcyBhdCBhIHRpbWUuIEJ1dCBzaW5jZSB0aGUgbm9ybWFsIGNhc2UKLSAg
ICAvLyAoYWJvdmUpIGlzIHRvIGhhc2ggVVRGLTE2IGNoYXJhY3RlcnMsIHdlIGp1c3QgdHJlYXQg
dGhlIDgtYml0IGNoYXJzIGFzIGlmIHRoZXkKLSAgICAvLyB3ZXJlIDE2LWJpdCBjaHVua3MsIHdo
aWNoIHNob3VsZCBnaXZlIG1hdGNoaW5nIHJlc3VsdHMKLQotICAgIHVuc2lnbmVkIGhhc2ggPSBw
aGk7Ci0gICAgCi0gICAgLy8gTWFpbiBsb29wCi0gICAgZm9yICg7OykgewotICAgICAgICB1bnNp
Z25lZCBjaGFyIGIwID0gZGF0YVswXTsKLSAgICAgICAgaWYgKCFiMCkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGIxID0gZGF0YVsxXTsKLSAgICAgICAgaWYgKCFi
MSkgewotICAgICAgICAgICAgaGFzaCArPSBiMDsKLSAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8
PCAxMTsKLSAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGhhc2ggKz0gYjA7Ci0gICAgICAgIHVuc2lnbmVkIHRtcCA9
IChiMSA8PCAxMSkgXiBoYXNoOwotICAgICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOwot
ICAgICAgICBkYXRhICs9IDI7Ci0gICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAxMjcgYml0cy4KLSAgICBo
YXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhhc2ggPj4gNTsKLSAgICBoYXNoIF49IGhh
c2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDEw
OwotCi0gICAgLy8gVGhpcyBhdm9pZHMgZXZlciByZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwg
c2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAgLy8gc2lnbmFsICJoYXNoIG5vdCBjb21wdXRlZCB5
ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlrZWx5IHRvIGJlCi0gICAgLy8gZWZmZWN0aXZl
bHkgdGhlIHNhbWUgYXMgMCB3aGVuIHRoZSBsb3cgYml0cyBhcmUgbWFza2VkLgotICAgIGhhc2gg
fD0gIWhhc2ggPDwgMzE7Ci0gICAgCi0gICAgcmV0dXJuIGhhc2g7Ci19Ci0KIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyIGMpCiB7CiAgICAgLy8gVXNlIGlzQVNDSUlT
cGFjZSgpIGZvciBiYXNpYyBMYXRpbi0xLgo=
</data>
<flag name="review"
          id="27947"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45826</attachid>
            <date>2010-01-04 13:29:02 -0800</date>
            <delta_ts>2010-01-04 13:48:05 -0800</delta_ts>
            <desc>make inclusion of the wtf/unicode/Unicode.h explicit.</desc>
            <filename>patch.stringHash.2.txt</filename>
            <type>text/plain</type>
            <size>14126</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzUxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDEtMDQgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzMTYzCisgICAgICAgIEFkZCBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbnMgdG8gV1RG
LgorICAgICAgICBVc2UgV1RGJ3Mgc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb25zIGZyb20gVVN0cmlu
Z0ltcGwuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogcnVudGlt
ZS9VU3RyaW5nSW1wbC5jcHA6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nSW1wbC5oOgorICAg
ICAgICAoSlNDOjpVU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIHd0Zi9IYXNo
RnVuY3Rpb25zLmg6CisgICAgICAgIChXVEY6OnN0cmluZ0hhc2gpOgorCiAyMDEwLTAxLTA0ICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gIlNoaW1tZXkgU2hpbW1leSIgV2VpbmlnLgpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNTI3NTEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw4ICsxMDMsNiBAQCBfX1pOM0pTQzEw
dGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU185CiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxNWNy
ZWF0ZVN0cnVjdHVyZUVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185
RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUE5TM185
Qnl0ZUFycmF5RVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2
Ci1fX1pOM0pTQzExVVN0cmluZ0ltcGwxMWNvbXB1dGVIYXNoRVBLY2kKLV9fWk4zSlNDMTFVU3Ry
aW5nSW1wbDExY29tcHV0ZUhhc2hFUEt0aQogX19aTjNKU0MxMVVTdHJpbmdJbXBsMTJzaGFyZWRC
dWZmZXJFdgogX19aTjNKU0MxMVVTdHJpbmdJbXBsNnNfbnVsbEUKIF9fWk4zSlNDMTFVU3RyaW5n
SW1wbDdkZXN0cm95RXYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0ltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0ltcGwuY3Bw
CShyZXZpc2lvbiA1Mjc1MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0ltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw5NyArODEsNCBAQCB2b2lkIFVTdHJpbmdJbXBsOjpk
ZXN0cm95KCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotLy8gR29sZGVuIHJhdGlvIC0gYXJiaXRy
YXJ5IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0byBhbGwgMCdzCi0vLyBv
ciBhbnl0aGluZyBsaWtlIHRoYXQuCi1jb25zdCB1bnNpZ25lZCBQSEkgPSAweDllMzc3OWI5VTsK
LQotLy8gUGF1bCBIc2llaCdzIFN1cGVyRmFzdEhhc2gKLS8vIGh0dHA6Ly93d3cuYXppbGxpb25t
b25rZXlzLmNvbS9xZWQvaGFzaC5odG1sCi11bnNpZ25lZCBVU3RyaW5nSW1wbDo6Y29tcHV0ZUhh
c2goY29uc3QgVUNoYXIqIHMsIGludCBsZW4pCi17Ci0gICAgdW5zaWduZWQgbCA9IGxlbjsKLSAg
ICB1aW50MzJfdCBoYXNoID0gUEhJOwotICAgIHVpbnQzMl90IHRtcDsKLQotICAgIGludCByZW0g
PSBsICYgMTsKLSAgICBsID4+PSAxOwotCi0gICAgLy8gTWFpbiBsb29wCi0gICAgZm9yICg7IGwg
PiAwOyBsLS0pIHsKLSAgICAgICAgaGFzaCArPSBzWzBdOwotICAgICAgICB0bXAgPSAoc1sxXSA8
PCAxMSkgXiBoYXNoOwotICAgICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOwotICAgICAg
ICBzICs9IDI7Ci0gICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKLSAgICB9Ci0KLSAgICAvLyBI
YW5kbGUgZW5kIGNhc2UKLSAgICBpZiAocmVtKSB7Ci0gICAgICAgIGhhc2ggKz0gc1swXTsKLSAg
ICAgICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTc7Ci0g
ICAgfQotCi0gICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAxMjcgYml0cwotICAg
IGhhc2ggXj0gaGFzaCA8PCAzOwotICAgIGhhc2ggKz0gaGFzaCA+PiA1OwotICAgIGhhc2ggXj0g
aGFzaCA8PCAyOwotICAgIGhhc2ggKz0gaGFzaCA+PiAxNTsKLSAgICBoYXNoIF49IGhhc2ggPDwg
MTA7Ci0KLSAgICAvLyB0aGlzIGF2b2lkcyBldmVyIHJldHVybmluZyBhIGhhc2ggY29kZSBvZiAw
LCBzaW5jZSB0aGF0IGlzIHVzZWQgdG8KLSAgICAvLyBzaWduYWwgImhhc2ggbm90IGNvbXB1dGVk
IHlldCIsIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyBsaWtlbHkgdG8gYmUKLSAgICAvLyBlZmZlY3Rp
dmVseSB0aGUgc2FtZSBhcyAwIHdoZW4gdGhlIGxvdyBiaXRzIGFyZSBtYXNrZWQKLSAgICBpZiAo
aGFzaCA9PSAwKQotICAgICAgICBoYXNoID0gMHg4MDAwMDAwMDsKLQotICAgIHJldHVybiBoYXNo
OwotfQotCi0vLyBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaAotLy8gaHR0cDovL3d3dy5hemls
bGlvbm1vbmtleXMuY29tL3FlZC9oYXNoLmh0bWwKLXVuc2lnbmVkIFVTdHJpbmdJbXBsOjpjb21w
dXRlSGFzaChjb25zdCBjaGFyKiBzLCBpbnQgbCkKLXsKLSAgICAvLyBUaGlzIGhhc2ggaXMgZGVz
aWduZWQgdG8gd29yayBvbiAxNi1iaXQgY2h1bmtzIGF0IGEgdGltZS4gQnV0IHNpbmNlIHRoZSBu
b3JtYWwgY2FzZQotICAgIC8vIChhYm92ZSkgaXMgdG8gaGFzaCBVVEYtMTYgY2hhcmFjdGVycywg
d2UganVzdCB0cmVhdCB0aGUgOC1iaXQgY2hhcnMgYXMgaWYgdGhleQotICAgIC8vIHdlcmUgMTYt
Yml0IGNodW5rcywgd2hpY2ggc2hvdWxkIGdpdmUgbWF0Y2hpbmcgcmVzdWx0cwotCi0gICAgdWlu
dDMyX3QgaGFzaCA9IFBISTsKLSAgICB1aW50MzJfdCB0bXA7Ci0KLSAgICBzaXplX3QgcmVtID0g
bCAmIDE7Ci0gICAgbCA+Pj0gMTsKLQotICAgIC8vIE1haW4gbG9vcAotICAgIGZvciAoOyBsID4g
MDsgbC0tKSB7Ci0gICAgICAgIGhhc2ggKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc1sw
XSk7Ci0gICAgICAgIHRtcCA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzWzFdKSA8PCAx
MSkgXiBoYXNoOwotICAgICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOwotICAgICAgICBz
ICs9IDI7Ci0gICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKLSAgICB9Ci0KLSAgICAvLyBIYW5k
bGUgZW5kIGNhc2UKLSAgICBpZiAocmVtKSB7Ci0gICAgICAgIGhhc2ggKz0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc1swXSk7Ci0gICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKLSAgICAg
ICAgaGFzaCArPSBoYXNoID4+IDE3OwotICAgIH0KLQotICAgIC8vIEZvcmNlICJhdmFsYW5jaGlu
ZyIgb2YgZmluYWwgMTI3IGJpdHMKLSAgICBoYXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9
IGhhc2ggPj4gNTsKLSAgICBoYXNoIF49IGhhc2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4g
MTU7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDEwOwotCi0gICAgLy8gdGhpcyBhdm9pZHMgZXZlciBy
ZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAgLy8g
c2lnbmFsICJoYXNoIG5vdCBjb21wdXRlZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlr
ZWx5IHRvIGJlCi0gICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgMCB3aGVuIHRoZSBsb3cg
Yml0cyBhcmUgbWFza2VkCi0gICAgaWYgKGhhc2ggPT0gMCkKLSAgICAgICAgaGFzaCA9IDB4ODAw
MDAwMDA7Ci0KLSAgICByZXR1cm4gaGFzaDsKLX0KLQogfQpJbmRleDogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZ0ltcGwuaAkocmV2aXNpb24gNTI3NTEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgVVN0cmluZ0ltcGxfaAogCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL093bkZhc3RN
YWxsb2NQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9zc2libHlOdWxsLmg+CiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvVW5pY29kZS5oPgpAQCAtMTU5LDkgKzE2MCw5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBudW1DaGFyYWN0ZXJzICogc2l6ZW9mKFVD
aGFyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IFVD
aGFyKiwgaW50IGxlbmd0aCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0
IGNoYXIqLCBpbnQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29u
c3QgY2hhciogcykgeyByZXR1cm4gY29tcHV0ZUhhc2gocywgc3RybGVuKHMpKTsgfQorICAgIHN0
YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkgeyBB
U1NFUlQobGVuZ3RoID49IDApOyByZXR1cm4gV1RGOjpzdHJpbmdIYXNoKHMsIGxlbmd0aCk7IH0K
KyAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgY2hhciogcywgaW50IGxlbmd0
aCkgeyBBU1NFUlQobGVuZ3RoID49IDApOyByZXR1cm4gV1RGOjpzdHJpbmdIYXNoKHMsIGxlbmd0
aCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgY2hhciogcykgeyBy
ZXR1cm4gV1RGOjpzdHJpbmdIYXNoKHMpOyB9CiAKICAgICBzdGF0aWMgVVN0cmluZ0ltcGwmIG51
bGwoKSB7IHJldHVybiAqc19udWxsOyB9CiAgICAgc3RhdGljIFVTdHJpbmdJbXBsJiBlbXB0eSgp
IHsgcmV0dXJuICpzX2VtcHR5OyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvSGFzaEZ1bmN0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoRnVuY3Rpb25zLmgJ
KHJldmlzaW9uIDUyNzUxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hGdW5jdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBXVEZfSGFzaEZ1bmN0aW9u
c19oCiAKICNpbmNsdWRlICJSZWZQdHIuaCIKKyNpbmNsdWRlICJ3dGYvdW5pY29kZS9Vbmljb2Rl
LmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTc3LDYgKzE3
OCwxMjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgLy8gR29sZGVuIHJhdGlvIC0gYXJiaXRyYXJ5
IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0byBhbGwgMCdzCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlID0gMHg5ZTM3NzliOVU7
CiAKKyAgICAvLyBzdHJpbmdIYXNoIG1ldGhvZHMgYmFzZWQgb24gUGF1bCBIc2llaCdzIFN1cGVy
RmFzdEhhc2guCisgICAgLy8gaHR0cDovL3d3dy5hemlsbGlvbm1vbmtleXMuY29tL3FlZC9oYXNo
Lmh0bWwKKyAgICAvLyBjaGFyKiBkYXRhIGlzIGludGVycHJldGVkIGFzIGxhdGluLWVuY29kZWQg
KHplcm8gZXh0ZW5kZWQgdG8gMTYgYml0cykuCisKKyAgICBpbmxpbmUgdW5zaWduZWQgc3RyaW5n
SGFzaChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgaGFzaCA9IFdURjo6c3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWU7CisgICAgICAgIHVu
c2lnbmVkIHJlbSA9IGxlbmd0aCAmIDE7CisgICAgICAgIGxlbmd0aCA+Pj0gMTsKKworICAgICAg
ICAvLyBNYWluIGxvb3AKKyAgICAgICAgZm9yICg7IGxlbmd0aCA+IDA7IGxlbmd0aC0tKSB7Cisg
ICAgICAgICAgICBoYXNoICs9IGRhdGFbMF07CisgICAgICAgICAgICB1bnNpZ25lZCB0bXAgPSAo
ZGF0YVsxXSA8PCAxMSkgXiBoYXNoOworICAgICAgICAgICAgaGFzaCA9IChoYXNoIDw8IDE2KSBe
IHRtcDsKKyAgICAgICAgICAgIGRhdGEgKz0gMjsKKyAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+
PiAxMTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSBlbmQgY2FzZQorICAgICAgICBp
ZiAocmVtKSB7CisgICAgICAgICAgICBoYXNoICs9IGRhdGFbMF07CisgICAgICAgICAgICBoYXNo
IF49IGhhc2ggPDwgMTE7CisgICAgICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTc7CisgICAgICAg
IH0KKworICAgICAgICAvLyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzCisg
ICAgICAgIGhhc2ggXj0gaGFzaCA8PCAzOworICAgICAgICBoYXNoICs9IGhhc2ggPj4gNTsKKyAg
ICAgICAgaGFzaCBePSBoYXNoIDw8IDI7CisgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNTsKKyAg
ICAgICAgaGFzaCBePSBoYXNoIDw8IDEwOworCisgICAgICAgIC8vIHRoaXMgYXZvaWRzIGV2ZXIg
cmV0dXJuaW5nIGEgaGFzaCBjb2RlIG9mIDAsIHNpbmNlIHRoYXQgaXMgdXNlZCB0bworICAgICAg
ICAvLyBzaWduYWwgImhhc2ggbm90IGNvbXB1dGVkIHlldCIsIHVzaW5nIGEgdmFsdWUgdGhhdCBp
cyBsaWtlbHkgdG8gYmUKKyAgICAgICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgMCB3aGVu
IHRoZSBsb3cgYml0cyBhcmUgbWFza2VkCisgICAgICAgIGlmIChoYXNoID09IDApCisgICAgICAg
ICAgICBoYXNoID0gMHg4MDAwMDAwMDsKKworICAgICAgICByZXR1cm4gaGFzaDsKKyAgICB9CisK
KyAgICBpbmxpbmUgdW5zaWduZWQgc3RyaW5nSGFzaChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBoYXNoID0gV1RGOjpzdHJpbmdIYXNo
aW5nU3RhcnRWYWx1ZTsKKyAgICAgICAgdW5zaWduZWQgcmVtID0gbGVuZ3RoICYgMTsKKyAgICAg
ICAgbGVuZ3RoID4+PSAxOworCisgICAgICAgIC8vIE1haW4gbG9vcAorICAgICAgICBmb3IgKDsg
bGVuZ3RoID4gMDsgbGVuZ3RoLS0pIHsKKyAgICAgICAgICAgIGhhc2ggKz0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oZGF0YVswXSk7CisgICAgICAgICAgICB1bnNpZ25lZCB0bXAgPSAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZGF0YVsxXSkgPDwgMTEpIF4gaGFzaDsKKyAgICAgICAg
ICAgIGhhc2ggPSAoaGFzaCA8PCAxNikgXiB0bXA7CisgICAgICAgICAgICBkYXRhICs9IDI7Cisg
ICAgICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTE7CisgICAgICAgIH0KKworICAgICAgICAvLyBI
YW5kbGUgZW5kIGNhc2UKKyAgICAgICAgaWYgKHJlbSkgeworICAgICAgICAgICAgaGFzaCArPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihkYXRhWzBdKTsKKyAgICAgICAgICAgIGhhc2ggXj0g
aGFzaCA8PCAxMTsKKyAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmluYWwgMTI3IGJpdHMKKyAgICAg
ICAgaGFzaCBePSBoYXNoIDw8IDM7CisgICAgICAgIGhhc2ggKz0gaGFzaCA+PiA1OworICAgICAg
ICBoYXNoIF49IGhhc2ggPDwgMjsKKyAgICAgICAgaGFzaCArPSBoYXNoID4+IDE1OworICAgICAg
ICBoYXNoIF49IGhhc2ggPDwgMTA7CisKKyAgICAgICAgLy8gdGhpcyBhdm9pZHMgZXZlciByZXR1
cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCisgICAgICAgIC8v
IHNpZ25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0IiwgdXNpbmcgYSB2YWx1ZSB0aGF0IGlzIGxp
a2VseSB0byBiZQorICAgICAgICAvLyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyAwIHdoZW4gdGhl
IGxvdyBiaXRzIGFyZSBtYXNrZWQKKyAgICAgICAgaWYgKGhhc2ggPT0gMCkKKyAgICAgICAgICAg
IGhhc2ggPSAweDgwMDAwMDAwOworCisgICAgICAgIHJldHVybiBoYXNoOworICAgIH0KKworICAg
IGlubGluZSB1bnNpZ25lZCBzdHJpbmdIYXNoKGNvbnN0IGNoYXIqIGRhdGEpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBoYXNoID0gV1RGOjpzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZTsKKyAgICAg
ICAgCisgICAgICAgIC8vIE1haW4gbG9vcAorICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGIwID0gZGF0YVswXTsKKyAgICAgICAgICAgIGlmICghYjApCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGIxID0gZGF0YVsx
XTsKKyAgICAgICAgICAgIGlmICghYjEpIHsKKyAgICAgICAgICAgICAgICBoYXNoICs9IGIwOwor
ICAgICAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKKyAgICAgICAgICAgICAgICBoYXNo
ICs9IGhhc2ggPj4gMTc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBoYXNoICs9IGIwOworICAgICAgICAgICAgdW5zaWduZWQgdG1wID0gKGIxIDw8
IDExKSBeIGhhc2g7CisgICAgICAgICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOworICAg
ICAgICAgICAgZGF0YSArPSAyOworICAgICAgICAgICAgaGFzaCArPSBoYXNoID4+IDExOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFs
IDEyNyBiaXRzLgorICAgICAgICBoYXNoIF49IGhhc2ggPDwgMzsKKyAgICAgICAgaGFzaCArPSBo
YXNoID4+IDU7CisgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAyOworICAgICAgICBoYXNoICs9IGhh
c2ggPj4gMTU7CisgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMDsKKworICAgICAgICAvLyBUaGlz
IGF2b2lkcyBldmVyIHJldHVybmluZyBhIGhhc2ggY29kZSBvZiAwLCBzaW5jZSB0aGF0IGlzIHVz
ZWQgdG8KKyAgICAgICAgLy8gc2lnbmFsICJoYXNoIG5vdCBjb21wdXRlZCB5ZXQiLCB1c2luZyBh
IHZhbHVlIHRoYXQgaXMgbGlrZWx5IHRvIGJlCisgICAgICAgIC8vIGVmZmVjdGl2ZWx5IHRoZSBz
YW1lIGFzIDAgd2hlbiB0aGUgbG93IGJpdHMgYXJlIG1hc2tlZC4KKyAgICAgICAgaWYgKGhhc2gg
PT0gMCkKKyAgICAgICAgICAgIGhhc2ggPSAweDgwMDAwMDAwOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGhhc2g7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpE
ZWZhdWx0SGFzaDsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Mjc1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEtMDQgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
MTYzCisgICAgICAgIFVzZSBXVEYncyBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbnMgZnJvbSBTdHJp
bmdJbXBsLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmdJbXBsOjpjb21wdXRlSGFzaCk6CisKIDIwMTAtMDEtMDQgIERtaXRy
eSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBy
ZXZlcnQgcjUyNzQ1IGFuZCByNTI3NDYgb24gYmVoYWxmIG9mIE5pa29sYXMgWmltbWVybWFubiwg
YXMgZGlzY3Vzc2VkIG9uIElSQy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaAko
cmV2aXNpb24gNTI3NTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRSZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvT3du
RmFzdE1hbGxvY1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9QdHJBbmRGbGFncy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMDIsOCArMTAzLDggQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgaGFzaCgpIHsgaWYgKG1faGFzaCA9PSAwKSBtX2hhc2ggPSBjb21wdXRlSGFzaChtX2Rh
dGEsIG1fbGVuZ3RoKTsgcmV0dXJuIG1faGFzaDsgfQogICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFz
aCgpIGNvbnN0IHsgQVNTRVJUKG1faGFzaCk7IHJldHVybiBtX2hhc2g7IH0KLSAgICBzdGF0aWMg
dW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW4pOwotICAgIHN0
YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBjaGFyKik7CisgICAgaW5saW5lIHN0YXRp
YyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBXVEY6OnN0cmluZ0hhc2goZGF0YSwgbGVuZ3RoKTsgfQorICAgIGlubGluZSBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgY2hhciogZGF0YSkgeyByZXR1cm4gV1RG
OjpzdHJpbmdIYXNoKGRhdGEpOyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyBhIFN0cmluZ0ltcGwg
c3VpdGFibGUgZm9yIHVzZSBvbiBhbm90aGVyIHRocmVhZC4KICAgICBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGNyb3NzVGhyZWFkU3RyaW5nKCk7CkBAIC0yMTMsOTEgKzIxNCw2IEBAIGlubGluZSBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIKIAogYm9vbCBlcXVhbElnbm9yaW5nTnVs
bGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwogCi0vLyBHb2xkZW4gcmF0aW8gLSBhcmJp
dHJhcnkgc3RhcnQgdmFsdWUgdG8gYXZvaWQgbWFwcGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MKLS8v
IG9yIGFueXRoaW5nIGxpa2UgdGhhdC4KLWNvbnN0IHVuc2lnbmVkIHBoaSA9IDB4OWUzNzc5YjlV
OwotCi0vLyBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaAotLy8gaHR0cDovL3d3dy5hemlsbGlv
bm1vbmtleXMuY29tL3FlZC9oYXNoLmh0bWwKLWlubGluZSB1bnNpZ25lZCBTdHJpbmdJbXBsOjpj
b21wdXRlSGFzaChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHVu
c2lnbmVkIGhhc2ggPSBwaGk7Ci0gICAgCi0gICAgLy8gTWFpbiBsb29wLgotICAgIGZvciAodW5z
aWduZWQgcGFpckNvdW50ID0gbGVuZ3RoID4+IDE7IHBhaXJDb3VudDsgcGFpckNvdW50LS0pIHsK
LSAgICAgICAgaGFzaCArPSBkYXRhWzBdOwotICAgICAgICB1bnNpZ25lZCB0bXAgPSAoZGF0YVsx
XSA8PCAxMSkgXiBoYXNoOwotICAgICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOwotICAg
ICAgICBkYXRhICs9IDI7Ci0gICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKLSAgICB9Ci0gICAg
Ci0gICAgLy8gSGFuZGxlIGVuZCBjYXNlLgotICAgIGlmIChsZW5ndGggJiAxKSB7Ci0gICAgICAg
IGhhc2ggKz0gZGF0YVswXTsKLSAgICAgICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAgICAgICBo
YXNoICs9IGhhc2ggPj4gMTc7Ci0gICAgfQotCi0gICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBv
ZiBmaW5hbCAxMjcgYml0cy4KLSAgICBoYXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhh
c2ggPj4gNTsKLSAgICBoYXNoIF49IGhhc2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7
Ci0gICAgaGFzaCBePSBoYXNoIDw8IDEwOwotCi0gICAgLy8gVGhpcyBhdm9pZHMgZXZlciByZXR1
cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAgLy8gc2ln
bmFsICJoYXNoIG5vdCBjb21wdXRlZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlrZWx5
IHRvIGJlCi0gICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgMCB3aGVuIHRoZSBsb3cgYml0
cyBhcmUgbWFza2VkLgotICAgIGhhc2ggfD0gIWhhc2ggPDwgMzE7Ci0gICAgCi0gICAgcmV0dXJu
IGhhc2g7Ci19Ci0KLS8vIFBhdWwgSHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBodHRwOi8vd3d3
LmF6aWxsaW9ubW9ua2V5cy5jb20vcWVkL2hhc2guaHRtbAotaW5saW5lIHVuc2lnbmVkIFN0cmlu
Z0ltcGw6OmNvbXB1dGVIYXNoKGNvbnN0IGNoYXIqIGRhdGEpCi17Ci0gICAgLy8gVGhpcyBoYXNo
IGlzIGRlc2lnbmVkIHRvIHdvcmsgb24gMTYtYml0IGNodW5rcyBhdCBhIHRpbWUuIEJ1dCBzaW5j
ZSB0aGUgbm9ybWFsIGNhc2UKLSAgICAvLyAoYWJvdmUpIGlzIHRvIGhhc2ggVVRGLTE2IGNoYXJh
Y3RlcnMsIHdlIGp1c3QgdHJlYXQgdGhlIDgtYml0IGNoYXJzIGFzIGlmIHRoZXkKLSAgICAvLyB3
ZXJlIDE2LWJpdCBjaHVua3MsIHdoaWNoIHNob3VsZCBnaXZlIG1hdGNoaW5nIHJlc3VsdHMKLQot
ICAgIHVuc2lnbmVkIGhhc2ggPSBwaGk7Ci0gICAgCi0gICAgLy8gTWFpbiBsb29wCi0gICAgZm9y
ICg7OykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGIwID0gZGF0YVswXTsKLSAgICAgICAgaWYg
KCFiMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGIxID0gZGF0
YVsxXTsKLSAgICAgICAgaWYgKCFiMSkgewotICAgICAgICAgICAgaGFzaCArPSBiMDsKLSAgICAg
ICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKLSAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAx
NzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGhhc2ggKz0gYjA7Ci0g
ICAgICAgIHVuc2lnbmVkIHRtcCA9IChiMSA8PCAxMSkgXiBoYXNoOwotICAgICAgICBoYXNoID0g
KGhhc2ggPDwgMTYpIF4gdG1wOwotICAgICAgICBkYXRhICs9IDI7Ci0gICAgICAgIGhhc2ggKz0g
aGFzaCA+PiAxMTsKLSAgICB9Ci0gICAgCi0gICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBm
aW5hbCAxMjcgYml0cy4KLSAgICBoYXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhhc2gg
Pj4gNTsKLSAgICBoYXNoIF49IGhhc2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7Ci0g
ICAgaGFzaCBePSBoYXNoIDw8IDEwOwotCi0gICAgLy8gVGhpcyBhdm9pZHMgZXZlciByZXR1cm5p
bmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAgLy8gc2lnbmFs
ICJoYXNoIG5vdCBjb21wdXRlZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlrZWx5IHRv
IGJlCi0gICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgMCB3aGVuIHRoZSBsb3cgYml0cyBh
cmUgbWFza2VkLgotICAgIGhhc2ggfD0gIWhhc2ggPDwgMzE7Ci0gICAgCi0gICAgcmV0dXJuIGhh
c2g7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyIGMpCiB7
CiAgICAgLy8gVXNlIGlzQVNDSUlTcGFjZSgpIGZvciBiYXNpYyBMYXRpbi0xLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>