<?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>51853</bug_id>
          
          <creation_ts>2011-01-03 16:25:41 -0800</creation_ts>
          <short_desc>Add code to encode/decode the back/forward tree</short_desc>
          <delta_ts>2011-01-04 09:46:42 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328830</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 16:25:41 -0800</bug_when>
    <thetext>Add code to encode/decode the back/forward tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328831</commentid>
    <comment_count>1</comment_count>
      <attachid>77851</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 16:29:20 -0800</bug_when>
    <thetext>Created attachment 77851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328838</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-03 16:44:13 -0800</bug_when>
    <thetext>Attachment 77851 did not build on chromium:
Build output: http://queues.webkit.org/results/7231354</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328840</commentid>
    <comment_count>3</comment_count>
      <attachid>77851</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-03 16:52:32 -0800</bug_when>
    <thetext>Comment on attachment 77851
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=77851&amp;action=review

&gt; WebCore/history/HistoryItem.cpp:642
&gt; +        encoder-&gt;encodeString(child.m_title);

We probably don&apos;t need the titles for children.

&gt; WebCore/history/HistoryItem.cpp:644
&gt; +        encoder-&gt;encodeString(child.m_urlString);

If we don&apos;t need this for children, it&apos;d simplify the code a lot (or a bit (or not at all))

&gt; WebCore/history/HistoryItem.cpp:710
&gt; +            return 0;

As above, probably don&apos;t need this.

&gt; WebCore/history/HistoryItem.cpp:715
&gt; +        recursionStack.append(DecodeBackForwardTreeRecursionStackElement(node.release(), i));

Need to store size here, too.

&gt; WebCore/history/HistoryItem.cpp:778
&gt; +        recursionStack.removeLast();

Move this down till you&apos;re done using &quot;element&quot;

&gt; WebCore/platform/network/FormData.cpp:338
&gt; +        encoder-&gt;encodeBytes(reinterpret_cast&lt;const uint8_t*&gt;(element.m_data.data()), element.m_data.size());

This cast probably isn&apos;t needed anymore.

&gt; WebCore/platform/network/FormData.cpp:420
&gt; +}

The encoder doesn&apos;t encode everything the decoder decodes....!!!!  Boo-urns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328846</commentid>
    <comment_count>4</comment_count>
      <attachid>77854</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 17:21:07 -0800</bug_when>
    <thetext>Created attachment 77854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328847</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 17:35:30 -0800</bug_when>
    <thetext>Committed r74951: &lt;http://trac.webkit.org/changeset/74951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328848</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-03 17:35:53 -0800</bug_when>
    <thetext>Attachment 77854 did not build on chromium:
Build output: http://queues.webkit.org/results/7343188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328852</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-03 17:43:51 -0800</bug_when>
    <thetext>Attachment 77854 did not build on win:
Build output: http://queues.webkit.org/results/7282335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328853</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-03 17:47:07 -0800</bug_when>
    <thetext>Attachment 77851 did not build on chromium:
Build output: http://queues.webkit.org/results/7220396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328858</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-01-03 17:59:33 -0800</bug_when>
    <thetext>It seems to me that this patch makes a build break in WebKitEFL as below,


[ 99%] Building C object WebCore/CMakeFiles/webcore_efl.dir/platform/network/soup/cache/soup-directory-input-stream.c.o
/home/gyuyoung/webkit/working-source/WebKit-video/WebCore/platform/network/soup/ResourceHandleSoup.cpp: In function ‘bool WebCore::startHttp(WebCore::ResourceHandle*)’:
/home/gyuyoung/webkit/working-source/WebKit-video/WebCore/platform/network/soup/ResourceHandleSoup.cpp:617: error: no matching function for call to ‘WebCore::FormData::flatten(WTF::Vector&lt;char, 0u&gt;&amp;)’
/home/gyuyoung/webkit/working-source/WebKit-video/WebCore/platform/network/FormData.h:114: note: candidates are: void WebCore::FormData::flatten(WTF::Vector&lt;unsigned char, 0u&gt;&amp;) const
[ 99%] [ 99%] Building C object WebCore/CMakeFiles/webcore_efl.dir/platform/network/soup/cache/soup-http-input-stream.c.o
Building C object WebCore/CMakeFiles/webcore_efl.dir/platform/network/soup/cache/soup-request-data.c.o
make[2]: *** [WebCore/CMakeFiles/webcore_efl.dir/platform/network/soup/ResourceHandleSoup.cpp.o] Error 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328860</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-03 18:03:40 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74951 might have broken Leopard Intel Debug (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328888</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-01-03 21:13:30 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; http://trac.webkit.org/changeset/74951 might have broken Leopard Intel Debug (Build)

/Volumes/Big/WebKit-BuildSlave/leopard-intel-release/build/WebCore/history/HistoryItem.cpp:727: warning: implicit conversion shortens 64-bit value into a 32-bit value

A uint64_t variable is passed as a size_t parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329028</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-01-04 09:46:42 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; http://trac.webkit.org/changeset/74951 might have broken Leopard Intel Debug (Build)

World build fix:  r74952  &lt;http://trac.webkit.org/changeset/74952&gt;
Leopard build fix: r74955  &lt;http://trac.webkit.org/changeset/74955&gt;
Chromium build fix: r74956  &lt;http://trac.webkit.org/changeset/74956&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77851</attachid>
            <date>2011-01-03 16:29:20 -0800</date>
            <delta_ts>2011-01-03 17:21:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51853-20110103162919.patch</filename>
            <type>text/plain</type>
            <size>17071</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDk0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMDEtMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBj
b2RlIHRvIGVuY29kZS9kZWNvZGUgdGhlIGJhY2svZm9yd2FyZCB0cmVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTg1MworCisgICAgICAgICogaGlz
dG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6ZW5j
b2RlQmFja0ZvcndhcmRUcmVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRl
bTo6ZW5jb2RlQmFja0ZvcndhcmRUcmVlTm9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeUl0ZW06OmRlY29kZUJhY2tGb3J3YXJkVHJlZSk6IEFkZGVkLgorICAgICAgICAqIGhp
c3RvcnkvSGlzdG9yeUl0ZW0uaDogQWRkZWQgZnVuY3Rpb25zIGFib3ZlLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0
YTo6Y3JlYXRlKTogQ2hhbmdlZCB0eXBlIHRvIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mCisg
ICAgICAgIFZlY3RvcjxjaGFyPi4gVGhpcyB0eXBlIGlzIHVzZWQgaW4gb3VyIG5ld2VyIGNvZGUg
Zm9yIHZlY3RvcnMgb2YgYnl0ZXMuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZmxhdHRl
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZyk6
IERpdHRvLiBIYWQgdG8gYWRkIGEgY2FzdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGE6OmVuY29kZUZvckJhY2tGb3J3YXJkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6ZGVjb2RlRm9yQmFja0ZvcndhcmQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmg6IENoYW5nZWQgdHlwZSB0byBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZgorICAgICAgICBWZWN0b3I8Y2hhcj4uIEFsc28gbWFkZSBzb21lIHNpbmdsZS1hcmd1bWVu
dCBjb25zdHJ1Y3RvcnMgZXhwbGljaXQuCisgICAgICAgIEFsc28gYWRkZWQgdGhlIG5ldyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VDdXJyZW50U3RyZWFtKTogQ2hhbmdlZCB0
byB1c2UgdWludDhfdCB0byBtYXRjaCBhYm92ZS4KKwogMjAxMS0wMS0wMyAgSGVsZGVyIENvcnJl
aWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDc0OTMxKQorKysgV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvRGVjb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9FbmNvZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY29uc3QgdWludDMyX3QgYmFja0ZvcndhcmRUcmVlRW5jb2RpbmdW
ZXJzaW9uID0gMDsKKwogc3RhdGljIGxvbmcgbG9uZyBnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkK
IHsKICAgICAvLyBJbml0aWFsaXplIHRvIHRoZSBjdXJyZW50IHRpbWUgdG8gcmVkdWNlIHRoZSBs
aWtlbGlob29kIG9mIGdlbmVyYXRpbmcKQEAgLTYyMSw2ICs2MjUsMTY2IEBAIHZvaWQgSGlzdG9y
eUl0ZW06OnNldFJlZGlyZWN0VVJMcyhQYXNzT3cKICAgICBtX3JlZGlyZWN0VVJMcyA9IHJlZGly
ZWN0VVJMczsKIH0KIAordm9pZCBIaXN0b3J5SXRlbTo6ZW5jb2RlQmFja0ZvcndhcmRUcmVlKEVu
Y29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGJhY2tG
b3J3YXJkVHJlZUVuY29kaW5nVmVyc2lvbik7CisKKyAgICBlbmNvZGVCYWNrRm9yd2FyZFRyZWVO
b2RlKGVuY29kZXIpOworfQorCit2b2lkIEhpc3RvcnlJdGVtOjplbmNvZGVCYWNrRm9yd2FyZFRy
ZWVOb2RlKEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgc2l6ZV90IHNpemUgPSBtX2No
aWxkcmVuLnNpemUoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQoc2l6ZSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgSGlzdG9yeUl0
ZW0mIGNoaWxkID0gKm1fY2hpbGRyZW5baV07CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlU3Ry
aW5nKGNoaWxkLm1fdGl0bGUpOworCisgICAgICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhjaGls
ZC5tX3VybFN0cmluZyk7CisKKyAgICAgICAgY2hpbGQuZW5jb2RlQmFja0ZvcndhcmRUcmVlTm9k
ZShlbmNvZGVyKTsKKyAgICB9CisKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2NChtX2RvY3VtZW50
U2VxdWVuY2VOdW1iZXIpOworCisgICAgc2l6ZSA9IG1fZG9jdW1lbnRTdGF0ZS5zaXplKCk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlVUludDY0KHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcobV9kb2N1bWVudFN0
YXRlW2ldKTsKKworICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX2Zvcm1Db250ZW50VHlwZSk7
CisKKyAgICBlbmNvZGVyLT5lbmNvZGVCb29sKG1fZm9ybURhdGEpOworICAgIGlmIChtX2Zvcm1E
YXRhKQorICAgICAgICBtX2Zvcm1EYXRhLT5lbmNvZGVGb3JCYWNrRm9yd2FyZChlbmNvZGVyKTsK
KworICAgIGVuY29kZXItPmVuY29kZUludDY0KG1faXRlbVNlcXVlbmNlTnVtYmVyKTsKKworICAg
IGVuY29kZXItPmVuY29kZVN0cmluZyhtX29yaWdpbmFsVVJMU3RyaW5nKTsKKworICAgIGVuY29k
ZXItPmVuY29kZVN0cmluZyhtX3JlZmVycmVyKTsKKworICAgIGVuY29kZXItPmVuY29kZUludDMy
KG1fc2Nyb2xsUG9pbnQueCgpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihtX3Njcm9sbFBv
aW50LnkoKSk7CisKKyAgICBlbmNvZGVyLT5lbmNvZGVCb29sKG1fc3RhdGVPYmplY3QpOworICAg
IGlmIChtX3N0YXRlT2JqZWN0KQorICAgICAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcyhtX3N0YXRl
T2JqZWN0LT5kYXRhKCkuZGF0YSgpLCBtX3N0YXRlT2JqZWN0LT5kYXRhKCkuc2l6ZSgpKTsKKwor
ICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX3RhcmdldCk7Cit9CisKK3N0cnVjdCBEZWNvZGVC
YWNrRm9yd2FyZFRyZWVSZWN1cnNpb25TdGFja0VsZW1lbnQgeworICAgIFJlZlB0cjxIaXN0b3J5
SXRlbT4gbm9kZTsKKyAgICBzaXplX3QgaTsKKyAgICBEZWNvZGVCYWNrRm9yd2FyZFRyZWVSZWN1
cnNpb25TdGFja0VsZW1lbnQoUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gbm9kZSwgc2l6ZV90IGkp
IDogbm9kZShub2RlKSwgaShpKSB7IH0KK307CisKK1Bhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhp
c3RvcnlJdGVtOjpkZWNvZGVCYWNrRm9yd2FyZFRyZWUoY29uc3QgU3RyaW5nJiB0b3BVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9wVGl0bGUsIERlY29kZXIqIGRlY29kZXIpCit7CisgICAgLy8g
U2luY2UgdGhlIGRhdGEgc3RyZWFtIGlzIG5vdCB0cnVzdGVkLCB0aGUgZGVjb2RlIGhhcyB0byBi
ZSBub24tcmVjdXJzaXZlLgorICAgIC8vIFdlIGRvbid0IHdhbnQgYmFkIGRhdGEgdG8gY2F1c2Ug
YSBzdGFjayBvdmVyZmxvdy4KKworICAgIHVpbnQzMl90IHZlcnNpb247CisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVVSW50MzIodmVyc2lvbikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICh2
ZXJzaW9uICE9IGJhY2tGb3J3YXJkVHJlZUVuY29kaW5nVmVyc2lvbikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gdG9wVVJMU3RyaW5nOworICAgIFN0cmluZyB0
aXRsZSA9IHRvcFRpdGxlOworCisgICAgVmVjdG9yPERlY29kZUJhY2tGb3J3YXJkVHJlZVJlY3Vy
c2lvblN0YWNrRWxlbWVudD4gcmVjdXJzaW9uU3RhY2s7CisKK3JlY3Vyc2U6CisgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBub2RlID0gY3JlYXRlKHVybFN0cmluZywgdGl0bGUsIDApOworCisgICAg
dWludDY0X3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQ2NChzaXplKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZV90IGk7CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBj
aGlsZDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlU3RyaW5nKHRpdGxlKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKHVybFN0cmluZykpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKworICAgICAgICByZWN1cnNpb25TdGFjay5hcHBlbmQoRGVjb2RlQmFja0Zvcndh
cmRUcmVlUmVjdXJzaW9uU3RhY2tFbGVtZW50KG5vZGUucmVsZWFzZSgpLCBpKSk7CisgICAgICAg
IGdvdG8gcmVjdXJzZTsKKworcmVzdW1lOgorICAgICAgICBub2RlLT5tX2NoaWxkcmVuLmFwcGVu
ZChjaGlsZC5yZWxlYXNlKCkpOworICAgIH0KKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50
NjQobm9kZS0+bV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQ2NChzaXplKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBTdHJpbmcgc3RhdGU7
CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKHN0YXRlKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICBub2RlLT5tX2RvY3VtZW50U3RhdGUuYXBwZW5kKHN0YXRlKTsK
KyAgICB9CisKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmluZyhub2RlLT5tX2Zvcm1Db250
ZW50VHlwZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBoYXNGb3JtRGF0YTsKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZUJvb2woaGFzRm9ybURhdGEpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoaGFzRm9ybURhdGEpIHsKKyAgICAgICAgbm9kZS0+bV9mb3JtRGF0YSA9IEZv
cm1EYXRhOjpkZWNvZGVGb3JCYWNrRm9yd2FyZChkZWNvZGVyKTsKKyAgICAgICAgaWYgKCFub2Rl
LT5tX2Zvcm1EYXRhKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVJbnQ2NChub2RlLT5tX2l0ZW1TZXF1ZW5jZU51bWJlcikpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcobm9kZS0+bV9vcmln
aW5hbFVSTFN0cmluZykpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVTdHJpbmcobm9kZS0+bV9yZWZlcnJlcikpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aW50MzJfdCB4OworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoeCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIGludDMyX3QgeTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHkp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBub2RlLT5tX3Njcm9sbFBvaW50ID0gSW50UG9pbnQo
eCwgeSk7CisKKyAgICBib29sIGhhc1N0YXRlT2JqZWN0OworICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlQm9vbChoYXNTdGF0ZU9iamVjdCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChoYXNT
dGF0ZU9iamVjdCkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXM7CisgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoYnl0ZXMpKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIG5vZGUtPm1fc3RhdGVPYmplY3QgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KGJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmluZyhub2RlLT5t
X3RhcmdldCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFyZWN1cnNpb25TdGFjay5p
c0VtcHR5KCkpIHsKKyAgICAgICAgRGVjb2RlQmFja0ZvcndhcmRUcmVlUmVjdXJzaW9uU3RhY2tF
bGVtZW50JiBlbGVtZW50ID0gcmVjdXJzaW9uU3RhY2subGFzdCgpOworICAgICAgICByZWN1cnNp
b25TdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGNoaWxkID0gbm9kZS5yZWxlYXNlKCk7Cisg
ICAgICAgIG5vZGUgPSBlbGVtZW50Lm5vZGUucmVsZWFzZSgpOworICAgICAgICBpID0gZWxlbWVu
dC5pOworICAgICAgICBnb3RvIHJlc3VtZTsKKyAgICB9CisKKyAgICByZXR1cm4gbm9kZS5yZWxl
YXNlKCk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiAKIGludCBIaXN0b3J5SXRlbTo6c2hvd1RyZWUo
KSBjb25zdApJbmRleDogV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgJKHJldmlzaW9uIDc0OTMxKQorKysgV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDEy
IEBAIHB1YmxpYzogCiAgICAgfQogICAgIAogICAgIH5IaXN0b3J5SXRlbSgpOwotICAgIAorCiAg
ICAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY29weSgpIGNvbnN0OwotICAgIAorCisgICAgdm9p
ZCBlbmNvZGVCYWNrRm9yd2FyZFRyZWUoRW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhpc3RvcnlJdGVtPiBkZWNvZGVCYWNrRm9yd2FyZFRyZWUoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIERlY29kZXIqKTsKKwogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxVUkxTdHJpbmcoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHVybFN0
cmluZygpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdDsKQEAgLTIyMyw2
ICsyMjYsOSBAQCBwcml2YXRlOgogCiAgICAgSGlzdG9yeUl0ZW0qIGZpbmRUYXJnZXRJdGVtKCk7
CiAKKyAgICB2b2lkIGVuY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoRW5jb2RlciopIGNvbnN0Owor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBkZWNvZGVCYWNrRm9yd2FyZFRyZWVO
b2RlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBEZWNvZGVy
Kik7CisKICAgICAvKiBXaGVuIGFkZGluZyBuZXcgbWVtYmVyIHZhcmlhYmxlcyB0byB0aGlzIGNs
YXNzLCBwbGVhc2Ugbm90aWZ5IHRoZSBRdCB0ZWFtLgogICAgICAqIHF0L0hpc3RvcnlJdGVtUXQu
Y3BwIGNvbnRhaW5zIGNvZGUgdG8gc2VyaWFsaXplIGhpc3RvcnkgaXRlbXMuCiAgICAgICovCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDc0OTMxKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8d3RmL0RlY29k
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvRW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTkwLDcgKzkyLDcgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShj
bwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRh
PiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorUGFzc1JlZlB0
cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIHZlY3Rv
cikKIHsKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwogICAgIHJlc3Vs
dC0+YXBwZW5kRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTI2Nyw3ICsy
NjksNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjCiAgICAgYXBw
ZW5kRGF0YShlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CiB9CiAKLXZv
aWQgRm9ybURhdGE6OmZsYXR0ZW4oVmVjdG9yPGNoYXI+JiBkYXRhKSBjb25zdAordm9pZCBGb3Jt
RGF0YTo6ZmxhdHRlbihWZWN0b3I8dWludDhfdD4mIGRhdGEpIGNvbnN0CiB7CiAgICAgLy8gQ29u
Y2F0ZW5hdGUgYWxsIHRoZSBieXRlIGFycmF5cywgYnV0IG9taXQgYW55IGZpbGVzLgogICAgIGRh
dGEuY2xlYXIoKTsKQEAgLTI4MSw5ICsyODMsOSBAQCB2b2lkIEZvcm1EYXRhOjpmbGF0dGVuKFZl
Y3RvcjxjaGFyPiYgZGF0CiAKIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29u
c3QKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnl0ZXM7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVz
OwogICAgIGZsYXR0ZW4oYnl0ZXMpOwotICAgIHJldHVybiBMYXRpbjFFbmNvZGluZygpLmRlY29k
ZShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CisgICAgcmV0dXJuIExhdGluMUVuY29kaW5n
KCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5
dGVzLnNpemUoKSk7CiB9CiAKIHZvaWQgRm9ybURhdGE6OmdlbmVyYXRlRmlsZXMoRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMzI3LDQgKzMyOSwxMjcgQEAgdm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2Vu
ZXJhdGVkRmlsZXNJZk5lZQogICAgIG1faGFzR2VuZXJhdGVkRmlsZXMgPSBmYWxzZTsKIH0KIAor
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZvcm1EYXRhRWxlbWVu
dCYgZWxlbWVudCkKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoZWxlbWVudC5tX3R5cGUp
OworCisgICAgc3dpdGNoIChlbGVtZW50Lm1fdHlwZSkgeworICAgIGNhc2UgRm9ybURhdGFFbGVt
ZW50OjpkYXRhOgorICAgICAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcyhyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50Lm1fZGF0YS5kYXRhKCkpLCBlbGVtZW50Lm1fZGF0YS5z
aXplKCkpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZW5j
b2RlZEZpbGU6CisgICAgICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhlbGVtZW50Lm1fZmlsZW5h
bWUpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVCb29sKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0
ZUZpbGUpOworI2lmIEVOQUJMRShCTE9CKQorICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2NChl
bGVtZW50Lm1fZmlsZVN0YXJ0KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50NjQoZWxlbWVu
dC5tX2ZpbGVMZW5ndGgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoZWxlbWVudC5t
X2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOworI2Vsc2UKKyAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlSW50NjQoMCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZUludDY0KDApOworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoMCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOworCisj
aWYgRU5BQkxFKEJMT0IpCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOgor
ICAgICAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoZWxlbWVudC5tX2Jsb2JVUkwuc3RyaW5nKCkp
OworICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIqIGRlY29kZXIsIEZvcm1EYXRh
RWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICB1aW50MzJfdCB0eXBlID0gZWxlbWVudC5tX3R5cGU7
CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZGF0YToK
KyAgICAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUJ5dGVzKGVsZW1lbnQubV9kYXRhKTsKKwor
ICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZTogeworICAgICAgICBlbGVtZW50
Lm1fdHlwZSA9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGU7CisgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlU3RyaW5nKGVsZW1lbnQubV9maWxlbmFtZSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlQm9vbChlbGVtZW50Lm1fc2hv
dWxkR2VuZXJhdGVGaWxlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaW50
NjRfdCBmaWxlU3RhcnQ7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50NjQoZmlsZVN0
YXJ0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGZpbGVTdGFydCA8
IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludDY0X3QgZmlsZUxlbmd0
aDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQ2NChmaWxlTGVuZ3RoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGZpbGVMZW5ndGggPCBmaWxlU3RhcnQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSBleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZShleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNp
ZiBFTkFCTEUoQkxPQikKKyAgICAgICAgZWxlbWVudC5tX2ZpbGVTdGFydCA9IGZpbGVTdGFydDsK
KyAgICAgICAgZWxlbWVudC5tX2ZpbGVMZW5ndGggPSBmaWxlTGVuZ3RoOworICAgICAgICBlbGVt
ZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9IGV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWU7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisjaWYgRU5B
QkxFKEJMT0IpCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOgorICAgICAg
ICBlbGVtZW50Lm1fdHlwZSA9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2I7CisgICAgICAg
IFN0cmluZyBibG9iVVJMU3RyaW5nOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmlu
ZyhibG9iVVJMU3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZWxl
bWVudC5tX2Jsb2JVUkwgPSBLVVJMKEtVUkwoKSwgYmxvYlVSTFN0cmluZyk7CisgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEZvcm1EYXRhOjplbmNvZGVGb3JCYWNrRm9yd2FyZChFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAor
eworICAgIHNpemVfdCBzaXplID0gbV9lbGVtZW50cy5zaXplKCk7CisgICAgZW5jb2Rlci0+ZW5j
b2RlVUludDY0KHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICBlbmNvZGUoZW5jb2RlciwgbV9lbGVtZW50c1tpXSk7Cit9CisKK1Bhc3NSZWZQdHI8
Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNvZGVGb3JCYWNrRm9yd2FyZChEZWNvZGVyKiBkZWNvZGVy
KQoreworICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlQm9vbChkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJvdW5kYXJ5OworICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoYm91bmRhcnkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBz
aXplX3Qgc2l6ZSA9IGJvdW5kYXJ5LnNpemUoKTsKKyAgICBkYXRhLT5tX2JvdW5kYXJ5LnJlc2l6
ZShzaXplKTsKKyAgICBtZW1jcHkoZGF0YS0+bV9ib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5LmRh
dGEoKSwgc2l6ZSk7CisKKyAgICB1aW50NjRfdCBlbGVtZW50c1NpemU7CisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVVSW50NjQoZWxlbWVudHNTaXplKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50c1NpemU7ICsraSkgeworICAgICAgICBGb3Jt
RGF0YUVsZW1lbnQgZWxlbWVudDsKKyAgICAgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZWxlbWVu
dCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGF0YS0+bV9lbGVtZW50cy5hcHBl
bmQoZWxlbWVudCk7CisgICAgfQorCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCb29sKGRhdGEt
Pm1faGFzR2VuZXJhdGVkRmlsZXMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlSW50NjQoZGF0YS0+bV9pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiA3NDkzMSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxMSArMzUsMTEgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogY2xhc3MgRm9ybURhdGFFbGVt
ZW50IHsKIHB1YmxpYzoKICAgICBGb3JtRGF0YUVsZW1lbnQoKSA6IG1fdHlwZShkYXRhKSB7IH0K
LSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVmVjdG9yPGNoYXI+JiBhcnJheSkgOiBtX3R5cGUo
ZGF0YSksIG1fZGF0YShhcnJheSkgeyB9CisgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXJyYXkpIDogbV90eXBlKGRhdGEpLCBtX2RhdGEoYXJyYXkp
IHsgfQogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBk
b3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZp
bGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSksIG1fZmlsZVN0
YXJ0KGZpbGVTdGFydCksIG1fZmlsZUxlbmd0aChmaWxlTGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdl
bmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVudChj
b25zdCBLVVJMJiBibG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fYmxvYlVSTChibG9i
VVJMKSB7IH0KKyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxvYlVS
TCkgOiBtX3R5cGUoZW5jb2RlZEJsb2IpLCBtX2Jsb2JVUkwoYmxvYlVSTCkgeyB9CiAjZWxzZQog
ICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdl
bmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwg
bV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgpAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgZW5jb2RlZEJsb2IKICNlbmRpZgogICAg
IH0gbV90eXBlOwotICAgIFZlY3RvcjxjaGFyPiBtX2RhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fZGF0YTsKICAgICBTdHJpbmcgbV9maWxlbmFtZTsKICNpZiBFTkFCTEUoQkxPQikKICAgICBs
b25nIGxvbmcgbV9maWxlU3RhcnQ7CkBAIC05NCwxMyArOTQsMTYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IHZvaWQqLCBzaXplX3QpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYs
IGNvbnN0IFRleHRFbmNvZGluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBj
cmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwg
RG9jdW1lbnQqKTsKICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gZGVlcENvcHkoKSBjb25zdDsKICAgICB+Rm9ybURhdGEoKTsK
IAorICAgIHZvaWQgZW5jb2RlRm9yQmFja0ZvcndhcmQoRW5jb2RlciopIGNvbnN0OworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGVGb3JCYWNrRm9yd2FyZChEZWNvZGVyKik7
CisKICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KTsKICAgICB2
b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBzaG91bGRHZW5lcmF0
ZUZpbGUgPSBmYWxzZSk7CiAjaWYgRU5BQkxFKEJMT0IpCkBAIC0xMDgsNyArMTExLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiBibG9iVVJMKTsKICNlbmRpZgog
Ci0gICAgdm9pZCBmbGF0dGVuKFZlY3RvcjxjaGFyPiYpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcwor
ICAgIHZvaWQgZmxhdHRlbihWZWN0b3I8dWludDhfdD4mKSBjb25zdDsgLy8gb21pdHMgZmlsZXMK
ICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCiAKICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzLmlzRW1wdHkoKTsgfQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLm1tCShyZXZpc2lvbiA3NDkzMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Rm9ybURhdGFTdHJlYW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBz
dHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgbG9uZyBsb25n
IGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aDsKICNlbmRpZgotICAgIGNoYXIqIGN1cnJlbnREYXRh
OworICAgIHVpbnQ4X3QqIGN1cnJlbnREYXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3Ry
ZWFtOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGg7CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudDsKQEAgLTE3MCw4ICsxNzAsOCBAQCBzdGF0aWMgYm9vbCBhZHZh
bmNlQ3VycmVudFN0cmVhbShGb3JtU3RyCiAKICAgICBpZiAobmV4dElucHV0Lm1fdHlwZSA9PSBG
b3JtRGF0YUVsZW1lbnQ6OmRhdGEpIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBuZXh0SW5wdXQu
bV9kYXRhLnNpemUoKTsKLSAgICAgICAgY2hhciogZGF0YSA9IG5leHRJbnB1dC5tX2RhdGEucmVs
ZWFzZUJ1ZmZlcigpOwotICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gQ0ZSZWFkU3RyZWFt
Q3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihk
YXRhKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAgICAgIHVpbnQ4X3QqIGRhdGEgPSBu
ZXh0SW5wdXQubV9kYXRhLnJlbGVhc2VCdWZmZXIoKTsKKyAgICAgICAgZm9ybS0+Y3VycmVudFN0
cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weSgwLCBkYXRhLCBzaXplLCBr
Q0ZBbGxvY2F0b3JOdWxsKTsKICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBkYXRhOwogICAg
IH0gZWxzZSB7CiAjaWYgRU5BQkxFKEJMT0IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77854</attachid>
            <date>2011-01-03 17:21:07 -0800</date>
            <delta_ts>2011-01-03 17:25:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51853-20110103172106.patch</filename>
            <type>text/plain</type>
            <size>18898</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDk0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMDEtMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBj
b2RlIHRvIGVuY29kZS9kZWNvZGUgdGhlIGJhY2svZm9yd2FyZCB0cmVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTg1MworCisgICAgICAgICogaGlz
dG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6ZW5j
b2RlQmFja0ZvcndhcmRUcmVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRl
bTo6ZW5jb2RlQmFja0ZvcndhcmRUcmVlTm9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeUl0ZW06OmRlY29kZUJhY2tGb3J3YXJkVHJlZSk6IEFkZGVkLgorICAgICAgICAqIGhp
c3RvcnkvSGlzdG9yeUl0ZW0uaDogQWRkZWQgZnVuY3Rpb25zIGFib3ZlLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0
YTo6Y3JlYXRlKTogQ2hhbmdlZCB0eXBlIHRvIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mCisg
ICAgICAgIFZlY3RvcjxjaGFyPi4gVGhpcyB0eXBlIGlzIHVzZWQgaW4gb3VyIG5ld2VyIGNvZGUg
Zm9yIHZlY3RvcnMgb2YgYnl0ZXMuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZmxhdHRl
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZyk6
IERpdHRvLiBIYWQgdG8gYWRkIGEgY2FzdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGE6OmVuY29kZUZvckJhY2tGb3J3YXJkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6ZGVjb2RlRm9yQmFja0ZvcndhcmQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmg6IENoYW5nZWQgdHlwZSB0byBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZgorICAgICAgICBWZWN0b3I8Y2hhcj4uIEFsc28gbWFkZSBzb21lIHNpbmdsZS1hcmd1bWVu
dCBjb25zdHJ1Y3RvcnMgZXhwbGljaXQuCisgICAgICAgIEFsc28gYWRkZWQgdGhlIG5ldyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VDdXJyZW50U3RyZWFtKTogQ2hhbmdlZCB0
byB1c2UgdWludDhfdCB0byBtYXRjaCBhYm92ZS4KKwogMjAxMS0wMS0wMyAgSGVsZGVyIENvcnJl
aWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDc0OTQ5KQorKysgV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvRGVjb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9FbmNvZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY29uc3QgdWludDMyX3QgYmFja0ZvcndhcmRUcmVlRW5jb2RpbmdW
ZXJzaW9uID0gMDsKKwogc3RhdGljIGxvbmcgbG9uZyBnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkK
IHsKICAgICAvLyBJbml0aWFsaXplIHRvIHRoZSBjdXJyZW50IHRpbWUgdG8gcmVkdWNlIHRoZSBs
aWtlbGlob29kIG9mIGdlbmVyYXRpbmcKQEAgLTYyMSw2ICs2MjUsMTgwIEBAIHZvaWQgSGlzdG9y
eUl0ZW06OnNldFJlZGlyZWN0VVJMcyhQYXNzT3cKICAgICBtX3JlZGlyZWN0VVJMcyA9IHJlZGly
ZWN0VVJMczsKIH0KIAordm9pZCBIaXN0b3J5SXRlbTo6ZW5jb2RlQmFja0ZvcndhcmRUcmVlKEVu
Y29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGJhY2tG
b3J3YXJkVHJlZUVuY29kaW5nVmVyc2lvbik7CisKKyAgICBlbmNvZGVCYWNrRm9yd2FyZFRyZWVO
b2RlKGVuY29kZXIpOworfQorCit2b2lkIEhpc3RvcnlJdGVtOjplbmNvZGVCYWNrRm9yd2FyZFRy
ZWVOb2RlKEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgc2l6ZV90IHNpemUgPSBtX2No
aWxkcmVuLnNpemUoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQoc2l6ZSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgSGlzdG9yeUl0
ZW0mIGNoaWxkID0gKm1fY2hpbGRyZW5baV07CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlU3Ry
aW5nKGNoaWxkLm1fb3JpZ2luYWxVUkxTdHJpbmcpOworCisgICAgICAgIGVuY29kZXItPmVuY29k
ZVN0cmluZyhjaGlsZC5tX3VybFN0cmluZyk7CisKKyAgICAgICAgY2hpbGQuZW5jb2RlQmFja0Zv
cndhcmRUcmVlTm9kZShlbmNvZGVyKTsKKyAgICB9CisKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2
NChtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIpOworCisgICAgc2l6ZSA9IG1fZG9jdW1lbnRTdGF0
ZS5zaXplKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDY0KHNpemUpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmco
bV9kb2N1bWVudFN0YXRlW2ldKTsKKworICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX2Zvcm1D
b250ZW50VHlwZSk7CisKKyAgICBlbmNvZGVyLT5lbmNvZGVCb29sKG1fZm9ybURhdGEpOworICAg
IGlmIChtX2Zvcm1EYXRhKQorICAgICAgICBtX2Zvcm1EYXRhLT5lbmNvZGVGb3JCYWNrRm9yd2Fy
ZChlbmNvZGVyKTsKKworICAgIGVuY29kZXItPmVuY29kZUludDY0KG1faXRlbVNlcXVlbmNlTnVt
YmVyKTsKKworICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX29yaWdpbmFsVVJMU3RyaW5nKTsK
KworICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX3JlZmVycmVyKTsKKworICAgIGVuY29kZXIt
PmVuY29kZUludDMyKG1fc2Nyb2xsUG9pbnQueCgpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQz
MihtX3Njcm9sbFBvaW50LnkoKSk7CisKKyAgICBlbmNvZGVyLT5lbmNvZGVCb29sKG1fc3RhdGVP
YmplY3QpOworICAgIGlmIChtX3N0YXRlT2JqZWN0KQorICAgICAgICBlbmNvZGVyLT5lbmNvZGVC
eXRlcyhtX3N0YXRlT2JqZWN0LT5kYXRhKCkuZGF0YSgpLCBtX3N0YXRlT2JqZWN0LT5kYXRhKCku
c2l6ZSgpKTsKKworICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX3RhcmdldCk7Cit9CisKK3N0
cnVjdCBEZWNvZGVSZWN1cnNpb25TdGFja0VsZW1lbnQgeworICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gbm9kZTsKKyAgICBzaXplX3QgaTsKKyAgICBzaXplX3Qgc2l6ZTsKKworICAgIERlY29kZVJl
Y3Vyc2lvblN0YWNrRWxlbWVudChQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBub2RlLCBzaXplX3Qg
aSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbm9kZShub2RlKQorICAgICAgICAsIGkoaSkKKyAg
ICAgICAgLCBzaXplKHNpemUpCisgICAgeworICAgIH0KK307CisKK1Bhc3NSZWZQdHI8SGlzdG9y
eUl0ZW0+IEhpc3RvcnlJdGVtOjpkZWNvZGVCYWNrRm9yd2FyZFRyZWUoY29uc3QgU3RyaW5nJiB0
b3BVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9wVGl0bGUsIGNvbnN0IFN0cmluZyYgdG9wT3Jp
Z2luYWxVUkxTdHJpbmcsIERlY29kZXIqIGRlY29kZXIpCit7CisgICAgLy8gU2luY2UgdGhlIGRh
dGEgc3RyZWFtIGlzIG5vdCB0cnVzdGVkLCB0aGUgZGVjb2RlIGhhcyB0byBiZSBub24tcmVjdXJz
aXZlLgorICAgIC8vIFdlIGRvbid0IHdhbnQgYmFkIGRhdGEgdG8gY2F1c2UgYSBzdGFjayBvdmVy
Zmxvdy4KKworICAgIHVpbnQzMl90IHZlcnNpb247CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIodmVyc2lvbikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICh2ZXJzaW9uICE9IGJh
Y2tGb3J3YXJkVHJlZUVuY29kaW5nVmVyc2lvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBT
dHJpbmcgdXJsU3RyaW5nID0gdG9wVVJMU3RyaW5nOworICAgIFN0cmluZyB0aXRsZSA9IHRvcFRp
dGxlOworICAgIFN0cmluZyBvcmlnaW5hbFVSTFN0cmluZyA9IHRvcE9yaWdpbmFsVVJMU3RyaW5n
OworCisgICAgVmVjdG9yPERlY29kZVJlY3Vyc2lvblN0YWNrRWxlbWVudCwgMTY+IHJlY3Vyc2lv
blN0YWNrOworCityZWN1cnNlOgorICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbm9kZSA9IGNyZWF0
ZSh1cmxTdHJpbmcsIHRpdGxlLCAwKTsKKworICAgIG5vZGUtPnNldE9yaWdpbmFsVVJMU3RyaW5n
KG9yaWdpbmFsVVJMU3RyaW5nKTsKKworICAgIHRpdGxlID0gU3RyaW5nKCk7CisKKyAgICB1aW50
NjRfdCBzaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBzaXplX3QgaTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGNoaWxk
OworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVTdHJpbmcob3JpZ2luYWxVUkxTdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcodXJsU3RyaW5nKSkKKyAgICAg
ICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJlY3Vyc2lvblN0YWNrLmFwcGVuZChEZWNvZGVS
ZWN1cnNpb25TdGFja0VsZW1lbnQobm9kZS5yZWxlYXNlKCksIGksIHNpemUpKTsKKyAgICAgICAg
Z290byByZWN1cnNlOworCityZXN1bWU6CisgICAgICAgIG5vZGUtPm1fY2hpbGRyZW4uYXBwZW5k
KGNoaWxkLnJlbGVhc2UoKSk7CisgICAgfQorCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQ2
NChub2RlLT5tX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyBzdGF0ZTsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcoc3RhdGUpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIG5vZGUtPm1fZG9jdW1lbnRTdGF0ZS5hcHBlbmQoc3RhdGUpOwor
ICAgIH0KKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKG5vZGUtPm1fZm9ybUNvbnRl
bnRUeXBlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGhhc0Zvcm1EYXRhOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlQm9vbChoYXNGb3JtRGF0YSkpCisgICAgICAgIHJldHVybiAw
OworICAgIGlmIChoYXNGb3JtRGF0YSkgeworICAgICAgICBub2RlLT5tX2Zvcm1EYXRhID0gRm9y
bURhdGE6OmRlY29kZUZvckJhY2tGb3J3YXJkKGRlY29kZXIpOworICAgICAgICBpZiAoIW5vZGUt
Pm1fZm9ybURhdGEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZUludDY0KG5vZGUtPm1faXRlbVNlcXVlbmNlTnVtYmVyKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmluZyhub2RlLT5tX29yaWdp
bmFsVVJMU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZVN0cmluZyhub2RlLT5tX3JlZmVycmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
bnQzMl90IHg7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQzMih4KSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgaW50MzJfdCB5OworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoeSkp
CisgICAgICAgIHJldHVybiAwOworICAgIG5vZGUtPm1fc2Nyb2xsUG9pbnQgPSBJbnRQb2ludCh4
LCB5KTsKKworICAgIGJvb2wgaGFzU3RhdGVPYmplY3Q7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGVCb29sKGhhc1N0YXRlT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGhhc1N0
YXRlT2JqZWN0KSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBieXRlczsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVCeXRlcyhieXRlcykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgbm9kZS0+bV9zdGF0ZU9iamVjdCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
Ynl0ZXMpOworICAgIH0KKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKG5vZGUtPm1f
dGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBTaW11bGF0ZSByZWN1cnNpb24g
d2l0aCBvdXIgb3duIHN0YWNrLgorICAgIGlmICghcmVjdXJzaW9uU3RhY2suaXNFbXB0eSgpKSB7
CisgICAgICAgIERlY29kZVJlY3Vyc2lvblN0YWNrRWxlbWVudCYgZWxlbWVudCA9IHJlY3Vyc2lv
blN0YWNrLmxhc3QoKTsKKyAgICAgICAgY2hpbGQgPSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAg
bm9kZSA9IGVsZW1lbnQubm9kZS5yZWxlYXNlKCk7CisgICAgICAgIGkgPSBlbGVtZW50Lmk7Cisg
ICAgICAgIHNpemUgPSBlbGVtZW50LnNpemU7CisgICAgICAgIHJlY3Vyc2lvblN0YWNrLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgZ290byByZXN1bWU7CisgICAgfQorCisgICAgcmV0dXJuIG5vZGUu
cmVsZWFzZSgpOworfQorCiAjaWZuZGVmIE5ERUJVRwogCiBpbnQgSGlzdG9yeUl0ZW06OnNob3dU
cmVlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCShyZXZpc2lvbiA3NDk0OSkKKysr
IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04NSw5ICs4NSwxMiBAQCBwdWJsaWM6IAogICAgIH0KICAgICAKICAgICB+SGlzdG9yeUl0ZW0o
KTsKLSAgICAKKwogICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKLSAg
ICAKKworICAgIHZvaWQgZW5jb2RlQmFja0ZvcndhcmRUcmVlKEVuY29kZXIqKSBjb25zdDsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gZGVjb2RlQmFja0ZvcndhcmRUcmVlKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsVVJMU3RyaW5nLCBEZWNvZGVyKik7CisKICAgICBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVVJMU3RyaW5nKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcoKSBjb25z
dDsKICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3Q7CkBAIC0yMjMsNiArMjI2LDkgQEAg
cHJpdmF0ZToKIAogICAgIEhpc3RvcnlJdGVtKiBmaW5kVGFyZ2V0SXRlbSgpOwogCisgICAgdm9p
ZCBlbmNvZGVCYWNrRm9yd2FyZFRyZWVOb2RlKEVuY29kZXIqKSBjb25zdDsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gZGVjb2RlQmFja0ZvcndhcmRUcmVlTm9kZShjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFVSTFN0cmluZywgRGVjb2RlciopOworCiAgICAgLyogV2hlbiBhZGRpbmcgbmV3IG1lbWJl
ciB2YXJpYWJsZXMgdG8gdGhpcyBjbGFzcywgcGxlYXNlIG5vdGlmeSB0aGUgUXQgdGVhbS4KICAg
ICAgKiBxdC9IaXN0b3J5SXRlbVF0LmNwcCBjb250YWlucyBjb2RlIHRvIHNlcmlhbGl6ZSBoaXN0
b3J5IGl0ZW1zLgogICAgICAqLwpAQCAtMjUxLDExICsyNTcsMTEgQEAgcHJpdmF0ZToKIAogICAg
IE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fcmVkaXJlY3RVUkxzOwogCi0gICAgbG9uZyBsb25n
IG1faXRlbVNlcXVlbmNlTnVtYmVyOworICAgIGludDY0X3QgbV9pdGVtU2VxdWVuY2VOdW1iZXI7
CiAKICAgICAvLyBTdXBwb3J0IGZvciBIVE1MNSBIaXN0b3J5CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbV9zdGF0ZU9iamVjdDsKLSAgICBsb25nIGxvbmcgbV9kb2N1bWVudFNl
cXVlbmNlTnVtYmVyOworICAgIGludDY0X3QgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwogICAg
IAogICAgIC8vIGluZm8gdXNlZCB0byByZXBvc3QgZm9ybSBkYXRhCiAgICAgUmVmUHRyPEZvcm1E
YXRhPiBtX2Zvcm1EYXRhOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CShyZXZpc2lvbiA3NDk0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvRGVjb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9FbmNvZGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsNyArOTIsNyBAQCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBGb3JtRGF0YTo6Y3JlYXRlKGNvCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+
JiB2ZWN0b3IpCitQYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgdmVjdG9yKQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0g
Y3JlYXRlKCk7CiAgICAgcmVzdWx0LT5hcHBlbmREYXRhKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5z
aXplKCkpOwpAQCAtMjY3LDcgKzI2OSw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVl
UGFpckl0ZW1zKGMKICAgICBhcHBlbmREYXRhKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERh
dGEuc2l6ZSgpKTsKIH0KIAotdm9pZCBGb3JtRGF0YTo6ZmxhdHRlbihWZWN0b3I8Y2hhcj4mIGRh
dGEpIGNvbnN0Cit2b2lkIEZvcm1EYXRhOjpmbGF0dGVuKFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
Y29uc3QKIHsKICAgICAvLyBDb25jYXRlbmF0ZSBhbGwgdGhlIGJ5dGUgYXJyYXlzLCBidXQgb21p
dCBhbnkgZmlsZXMuCiAgICAgZGF0YS5jbGVhcigpOwpAQCAtMjgxLDkgKzI4Myw5IEBAIHZvaWQg
Rm9ybURhdGE6OmZsYXR0ZW4oVmVjdG9yPGNoYXI+JiBkYXQKIAogU3RyaW5nIEZvcm1EYXRhOjpm
bGF0dGVuVG9TdHJpbmcoKSBjb25zdAogewotICAgIFZlY3RvcjxjaGFyPiBieXRlczsKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnl0ZXM7CiAgICAgZmxhdHRlbihieXRlcyk7Ci0gICAgcmV0dXJuIExh
dGluMUVuY29kaW5nKCkuZGVjb2RlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICBy
ZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6Z2Vu
ZXJhdGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0zMjcsNCArMzI5LDEzNSBAQCB2b2lk
IEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlCiAgICAgbV9oYXNHZW5lcmF0ZWRG
aWxlcyA9IGZhbHNlOwogfQogCitzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQoreworICAgIGVuY29kZXItPmVuY29kZVVJ
bnQzMihlbGVtZW50Lm1fdHlwZSk7CisKKyAgICBzd2l0Y2ggKGVsZW1lbnQubV90eXBlKSB7Cisg
ICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGE6CisgICAgICAgIGVuY29kZXItPmVuY29kZUJ5
dGVzKGVsZW1lbnQubV9kYXRhLmRhdGEoKSwgZWxlbWVudC5tX2RhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOgorICAg
ICAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoZWxlbWVudC5tX2ZpbGVuYW1lKTsKKyAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlQm9vbChlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlKTsKKyNpZiBF
TkFCTEUoQkxPQikKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50NjQoZWxlbWVudC5tX2ZpbGVT
dGFydCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZUludDY0KGVsZW1lbnQubV9maWxlTGVuZ3Ro
KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKGVsZW1lbnQubV9leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKTsKKyNlbHNlCisgICAgICAgIGVuY29kZXItPmVuY29kZUludDY0KDAp
OworICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2NCgwKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlRG91YmxlKDApOworI2VuZGlmCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShCTE9C
KQorICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYjoKKyAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlU3RyaW5nKGVsZW1lbnQubV9ibG9iVVJMLnN0cmluZygpKTsKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyKiBkZWNvZGVyLCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgdWludDMyX3QgdHlwZSA9IGVsZW1lbnQubV90eXBlOworCisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGE6CisgICAgICAgIHJldHVy
biBkZWNvZGVyLT5kZWNvZGVCeXRlcyhlbGVtZW50Lm1fZGF0YSk7CisKKyAgICBjYXNlIEZvcm1E
YXRhRWxlbWVudDo6ZW5jb2RlZEZpbGU6IHsKKyAgICAgICAgZWxlbWVudC5tX3R5cGUgPSBGb3Jt
RGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0
cmluZyhlbGVtZW50Lm1fZmlsZW5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZUJvb2woZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmls
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludDY0X3QgZmlsZVN0YXJ0
OworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDY0KGZpbGVTdGFydCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChmaWxlU3RhcnQgPCAwKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnQ2NF90IGZpbGVMZW5ndGg7CisgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlSW50NjQoZmlsZUxlbmd0aCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChmaWxlTGVuZ3RoIDwgZmlsZVN0YXJ0KQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUoZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgRU5BQkxFKEJMT0Ip
CisgICAgICAgIGVsZW1lbnQubV9maWxlU3RhcnQgPSBmaWxlU3RhcnQ7CisgICAgICAgIGVsZW1l
bnQubV9maWxlTGVuZ3RoID0gZmlsZUxlbmd0aDsKKyAgICAgICAgZWxlbWVudC5tX2V4cGVjdGVk
RmlsZU1vZGlmaWNhdGlvblRpbWUgPSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworI2Vu
ZGlmCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworI2lmIEVOQUJMRShCTE9CKQorICAg
IGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYjoKKyAgICAgICAgZWxlbWVudC5tX3R5
cGUgPSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOworICAgICAgICBTdHJpbmcgYmxvYlVS
TFN0cmluZzsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0cmlu
ZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGVsZW1lbnQubV9ibG9iVVJM
ID0gS1VSTChLVVJMKCksIGJsb2JVUkxTdHJpbmcpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGb3JtRGF0YTo6ZW5j
b2RlRm9yQmFja0ZvcndhcmQoRW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
LT5lbmNvZGVCb29sKG1fYWx3YXlzU3RyZWFtKTsKKworICAgIGVuY29kZXItPmVuY29kZUJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYm91bmRhcnkuZGF0YSgpKSwgbV9i
b3VuZGFyeS5zaXplKCkpOworCisgICAgc2l6ZV90IHNpemUgPSBtX2VsZW1lbnRzLnNpemUoKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQoc2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgIGVuY29kZShlbmNvZGVyLCBtX2VsZW1lbnRzW2ldKTsK
KworICAgIGVuY29kZXItPmVuY29kZUJvb2wobV9oYXNHZW5lcmF0ZWRGaWxlcyk7CisKKyAgICBl
bmNvZGVyLT5lbmNvZGVCb29sKG1faWRlbnRpZmllcik7Cit9CisKK1Bhc3NSZWZQdHI8Rm9ybURh
dGE+IEZvcm1EYXRhOjpkZWNvZGVGb3JCYWNrRm9yd2FyZChEZWNvZGVyKiBkZWNvZGVyKQorewor
ICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKworICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlQm9vbChkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJvdW5kYXJ5OworICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlQnl0ZXMoYm91bmRhcnkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplX3Qg
c2l6ZSA9IGJvdW5kYXJ5LnNpemUoKTsKKyAgICBkYXRhLT5tX2JvdW5kYXJ5LnJlc2l6ZShzaXpl
KTsKKyAgICBtZW1jcHkoZGF0YS0+bV9ib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5LmRhdGEoKSwg
c2l6ZSk7CisKKyAgICB1aW50NjRfdCBlbGVtZW50c1NpemU7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVVSW50NjQoZWxlbWVudHNTaXplKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbGVtZW50c1NpemU7ICsraSkgeworICAgICAgICBGb3JtRGF0YUVs
ZW1lbnQgZWxlbWVudDsKKyAgICAgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZWxlbWVudCkpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoZWxl
bWVudCk7CisgICAgfQorCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCb29sKGRhdGEtPm1faGFz
R2VuZXJhdGVkRmlsZXMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlSW50NjQoZGF0YS0+bV9pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiA3NDk0OSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zNSwxMSArMzUsMTEgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogY2xhc3MgRm9ybURhdGFF
bGVtZW50IHsKIHB1YmxpYzoKICAgICBGb3JtRGF0YUVsZW1lbnQoKSA6IG1fdHlwZShkYXRhKSB7
IH0KLSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVmVjdG9yPGNoYXI+JiBhcnJheSkgOiBtX3R5
cGUoZGF0YSksIG1fZGF0YShhcnJheSkgeyB9CisgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXJyYXkpIDogbV90eXBlKGRhdGEpLCBtX2RhdGEoYXJy
YXkpIHsgfQogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3Ro
LCBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0
ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSksIG1fZmls
ZVN0YXJ0KGZpbGVTdGFydCksIG1fZmlsZUxlbmd0aChmaWxlTGVuZ3RoKSwgbV9leHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3Vs
ZEdlbmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVu
dChjb25zdCBLVVJMJiBibG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fYmxvYlVSTChi
bG9iVVJMKSB7IH0KKyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxv
YlVSTCkgOiBtX3R5cGUoZW5jb2RlZEJsb2IpLCBtX2Jsb2JVUkwoYmxvYlVSTCkgeyB9CiAjZWxz
ZQogICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3Vs
ZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1l
KSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgpA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgZW5jb2RlZEJsb2IKICNlbmRpZgog
ICAgIH0gbV90eXBlOwotICAgIFZlY3RvcjxjaGFyPiBtX2RhdGE7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9maWxlbmFtZTsKICNpZiBFTkFCTEUoQkxPQikKICAg
ICBsb25nIGxvbmcgbV9maWxlU3RhcnQ7CkBAIC05NCwxMyArOTQsMTYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IHZvaWQqLCBzaXplX3QpOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlz
dCYsIGNvbnN0IFRleHRFbmNvZGluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5n
JiwgRG9jdW1lbnQqKTsKICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGVlcENvcHkoKSBjb25zdDsKICAgICB+Rm9ybURhdGEo
KTsKIAorICAgIHZvaWQgZW5jb2RlRm9yQmFja0ZvcndhcmQoRW5jb2RlciopIGNvbnN0OworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGVGb3JCYWNrRm9yd2FyZChEZWNvZGVy
Kik7CisKICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KTsKICAg
ICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBzaG91bGRHZW5l
cmF0ZUZpbGUgPSBmYWxzZSk7CiAjaWYgRU5BQkxFKEJMT0IpCkBAIC0xMDgsNyArMTExLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiBibG9iVVJMKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBmbGF0dGVuKFZlY3RvcjxjaGFyPiYpIGNvbnN0OyAvLyBvbWl0cyBmaWxl
cworICAgIHZvaWQgZmxhdHRlbihWZWN0b3I8dWludDhfdD4mKSBjb25zdDsgLy8gb21pdHMgZmls
ZXMKICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzLmlzRW1wdHkoKTsg
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCShyZXZpc2lvbiA3NDk0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBA
QCBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgbG9uZyBs
b25nIGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aDsKICNlbmRpZgotICAgIGNoYXIqIGN1cnJlbnRE
YXRhOworICAgIHVpbnQ4X3QqIGN1cnJlbnREYXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3Jt
U3RyZWFtOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGg7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudDsKQEAgLTE3Miw4ICsxNzIsOCBAQCBzdGF0aWMgYm9vbCBh
ZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyCiAKICAgICBpZiAobmV4dElucHV0Lm1fdHlwZSA9
PSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGEpIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBuZXh0SW5w
dXQubV9kYXRhLnNpemUoKTsKLSAgICAgICAgY2hhciogZGF0YSA9IG5leHRJbnB1dC5tX2RhdGEu
cmVsZWFzZUJ1ZmZlcigpOwotICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gQ0ZSZWFkU3Ry
ZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihkYXRhKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAgICAgIHVpbnQ4X3QqIGRhdGEg
PSBuZXh0SW5wdXQubV9kYXRhLnJlbGVhc2VCdWZmZXIoKTsKKyAgICAgICAgZm9ybS0+Y3VycmVu
dFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weSgwLCBkYXRhLCBzaXpl
LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBkYXRhOwog
ICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEJMT0IpCg==
</data>
<flag name="review"
          id="69064"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>