<?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>75222</bug_id>
          
          <creation_ts>2011-12-25 21:42:55 -0800</creation_ts>
          <short_desc>Use unique_ptr for FillLayer::m_next</short_desc>
          <delta_ts>2014-04-13 21:28:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          
          <blocked>41321</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527136</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 21:42:55 -0800</bug_when>
    <thetext>Use OwnPtr for FillLayer::m_next</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527137</commentid>
    <comment_count>1</comment_count>
      <attachid>120525</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 21:45:44 -0800</bug_when>
    <thetext>Created attachment 120525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527138</commentid>
    <comment_count>2</comment_count>
      <attachid>120525</attachid>
    <who name="">mitz</who>
    <bug_when>2011-12-25 21:54:40 -0800</bug_when>
    <thetext>Comment on attachment 120525
Patch

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

r- because of a logic mistake I spotted in imagesAreLoaded().

&gt; Source/WebCore/rendering/style/FillLayer.cpp:80
&gt;  FillLayer::~FillLayer()
&gt;  {
&gt; -    delete m_next;
&gt;  }

Wouldn’t the compiler generate this destructor if you omitted it (and didn’t declare it)?

&gt; Source/WebCore/rendering/style/FillLayer.cpp:255
&gt; -            return false;
&gt; +    for (const FillLayer* layer = this; layer; layer = layer-&gt;m_next.get()) {
&gt; +        if (layer-&gt;m_image &amp;&amp; !layer-&gt;m_image-&gt;isLoaded())
&gt; +            return true;

Should return false here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527146</commentid>
    <comment_count>3</comment_count>
      <attachid>120525</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 22:24:31 -0800</bug_when>
    <thetext>Comment on attachment 120525
Patch

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

&gt;&gt; Source/WebCore/rendering/style/FillLayer.cpp:80
&gt;&gt;  }
&gt; 
&gt; Wouldn’t the compiler generate this destructor if you omitted it (and didn’t declare it)?

It would, but further, it would probably be inlined each place a FillLayer was destroyed. But I’ll do as you imply I should.

&gt;&gt; Source/WebCore/rendering/style/FillLayer.cpp:255
&gt;&gt; +            return true;
&gt; 
&gt; Should return false here.

Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527153</commentid>
    <comment_count>4</comment_count>
      <attachid>120529</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 23:10:25 -0800</bug_when>
    <thetext>Created attachment 120529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632938</commentid>
    <comment_count>5</comment_count>
      <attachid>120529</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-24 10:45:36 -0700</bug_when>
    <thetext>Comment on attachment 120529
Patch

Rejecting attachment 120529 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ss/CSSStyleApplyProperty.cpp.rej
patching file Source/WebCore/rendering/style/FillLayer.cpp
Hunk #2 succeeded at 40 with fuzz 1 (offset 15 lines).
Hunk #3 succeeded at 65 (offset 15 lines).
Hunk #4 succeeded at 90 (offset 15 lines).
Hunk #5 succeeded at 239 (offset 15 lines).
patching file Source/WebCore/rendering/style/FillLayer.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Dan Bernst...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12798232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632954</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-24 11:07:29 -0700</bug_when>
    <thetext>Guess I’ll have to rebase this myself. Not in front of a computer with a source tree at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856679</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-16 22:56:32 -0700</bug_when>
    <thetext>This hasn&apos;t been landed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000256</commentid>
    <comment_count>8</comment_count>
      <attachid>229219</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-12 22:58:13 -0700</bug_when>
    <thetext>Created attachment 229219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000257</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-12 23:06:54 -0700</bug_when>
    <thetext>Attachment 229219 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/FillLayer.cpp:76:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000375</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 21:28:49 -0700</bug_when>
    <thetext>Committed r167208: &lt;http://trac.webkit.org/changeset/167208&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120525</attachid>
            <date>2011-12-25 21:45:44 -0800</date>
            <delta_ts>2011-12-25 23:10:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75222-20111225214543.patch</filename>
            <type>text/plain</type>
            <size>12342</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzY3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTEyLTI1ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3duUHRyIGZvciBGaWxsTGF5
ZXI6Om1fbmV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzUyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlJbmhlcml0VmFsdWUpOiBSZW5hbWVkIGN1cnJDaGls
ZCB0byBqdXN0CisgICAgICAgIGNoaWxkIGFuZCBwcmV2Q2hpbGQgdG8gcHJldmlvdXNDaGlsZC4g
Q2hhbmdlZCBjb2RlIHRvIHBhc3Mgb3duZXJzaGlwIG9mIHRoZSBuZXcKKyAgICAgICAgRmlsbExh
eWVyIGltbWVkaWF0ZWx5LiBDaGFuZ2VkIHNvbWUgbG9vcHMgdG8gYmUgZm9yIGxvb3BzLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlJbml0aWFsVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5
VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246
OmFwcGx5VmFsdWUpOiBGaXhlZCB0aGUgc3R5bGUgb2YgYSBjb21tZW50LgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVy
OjpGaWxsTGF5ZXIpOiBSZW1vdmVkIG1fbmV4dCBpbml0aWFsaXplciBzaW5jZSBpdCBpcyBub3cg
YW4KKyAgICAgICAgT3duUHRyIGFuZCBpbml0aWFsaXplcyBhdXRvbWF0aWNhbGx5LiBJbiBhIGNv
dXBsZSBvdGhlciBwbGFjZXMsIGNoYW5nZWQgbV9uZXh0CisgICAgICAgIGluaXRpYWxpemVyIHRv
IHVzZSBhZG9wdFB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6fkZpbGxMYXllcik6
IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgZGVsZXRpb24gb2YgbV9uZXh0LgorICAgICAgICAo
V2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbGxMYXllcjo6Y3VsbEVtcHR5TGF5ZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6OmNvbnRhaW5zSW1hZ2UpOiBSZXdyb3RlIHRvIHVzZSBhIGxvb3AgaW5zdGVhZCBv
ZiByZWN1cnNpb24uCisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRl
ZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogQ2hhbmdl
ZCBtX25leHQgdG8gYmUgT3duUHRyLgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNJ
bWFnZSk6IFJld3JvdGUgdG8gdXNlIGEgbG9vcCBpbnN0ZWFkIG9mIHJlY3Vyc2lvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzRml4ZWRJbWFnZSk6IERpdHRvLgorCiAyMDExLTEy
LTI1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZSBj
aGFuZ2VzIGZvcjogRmluZCBpbmRpY2F0b3JzIG92ZXJsYXAgd2hlbiBhIG1hdGNoIHNwYW5zIG11
bHRpcGxlIHRleHQgYm94ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFw
cGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiAxMDM2NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDYyICs0Mzks
NTcgQEAgY2xhc3MgQXBwbHlQcm9wZXJ0eUZpbGxMYXllciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCiAgICAg
ewotICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFj
Y2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7
Ci0gICAgICAgIGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9IChzZWxlY3Rvci0+cGFyZW50
U3R5bGUoKS0+KmxheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICB3aGlsZSAoY3VyclBhcmVudCAm
JiAoY3VyclBhcmVudC0+KnRlc3RGdW5jdGlvbikoKSkgewotICAgICAgICAgICAgaWYgKCFjdXJy
Q2hpbGQpIHsKLSAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8K
LSAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKGZpbGxMYXllclR5cGUp
OwotICAgICAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOworICAgICAg
ICBGaWxsTGF5ZXIqIGNoaWxkID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVu
Y3Rpb24pKCk7CisgICAgICAgIEZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IDA7CisgICAgICAg
IGNvbnN0IEZpbGxMYXllciogcGFyZW50ID0gKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT4qbGF5
ZXJzRnVuY3Rpb24pKCk7CisgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgKHBhcmVudC0+KnRlc3RG
dW5jdGlvbikoKSkgeworICAgICAgICAgICAgaWYgKCFjaGlsZCkgeworICAgICAgICAgICAgICAg
IHByZXZpb3VzQ2hpbGQtPnNldE5leHQoYWRvcHRQdHIobmV3IEZpbGxMYXllcihmaWxsTGF5ZXJU
eXBlKSkpOworICAgICAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgKGN1cnJDaGlsZC0+KnNldEZ1bmN0aW9uKSgoY3Vy
clBhcmVudC0+KmdldEZ1bmN0aW9uKSgpKTsKLSAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJD
aGlsZDsKLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOwotICAgICAg
ICAgICAgY3VyclBhcmVudCA9IGN1cnJQYXJlbnQtPm5leHQoKTsKKyAgICAgICAgICAgIChjaGls
ZC0+KnNldEZ1bmN0aW9uKSgocGFyZW50LT4qZ2V0RnVuY3Rpb24pKCkpOworICAgICAgICAgICAg
cHJldmlvdXNDaGlsZCA9IGNoaWxkOworICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxk
LT5uZXh0KCk7CisgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKTsKICAgICAgICAg
fQogCi0gICAgICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKLSAgICAgICAgICAgIC8qIFJlc2V0IGFu
eSByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovCi0gICAg
ICAgICAgICAoY3VyckNoaWxkLT4qY2xlYXJGdW5jdGlvbikoKTsKLSAgICAgICAgICAgIGN1cnJD
aGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOwotICAgICAgICB9CisgICAgICAgIC8vIFJlc2V0IGFu
eSByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuCisgICAgICAg
IGZvciAoOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dCgpKQorICAgICAgICAgICAgKGNoaWxk
LT4qY2xlYXJGdW5jdGlvbikoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRp
YWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKICAgICB7Ci0gICAgICAgIEZpbGxM
YXllciogY3VyckNoaWxkID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rp
b24pKCk7Ci0gICAgICAgIChjdXJyQ2hpbGQtPipzZXRGdW5jdGlvbikoKCppbml0aWFsRnVuY3Rp
b24pKGZpbGxMYXllclR5cGUpKTsKLSAgICAgICAgZm9yIChjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
Pm5leHQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKSkKLSAgICAg
ICAgICAgIChjdXJyQ2hpbGQtPipjbGVhckZ1bmN0aW9uKSgpOworICAgICAgICBGaWxsTGF5ZXIq
IGNoaWxkID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7Cisg
ICAgICAgIChjaGlsZC0+KnNldEZ1bmN0aW9uKSgoKmluaXRpYWxGdW5jdGlvbikoZmlsbExheWVy
VHlwZSkpOworICAgICAgICBmb3IgKGNoaWxkID0gY2hpbGQtPm5leHQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHQoKSkKKyAgICAgICAgICAgIChjaGlsZC0+KmNsZWFyRnVuY3Rpb24pKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgRmlsbExheWVyKiBjdXJy
Q2hpbGQgPSAoc2VsZWN0b3ItPnN0eWxlKCktPiphY2Nlc3NMYXllcnNGdW5jdGlvbikoKTsKLSAg
ICAgICAgRmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOworICAgICAgICBGaWxsTGF5ZXIqIGNoaWxk
ID0gKHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7CiAgICAgICAg
IGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgLyogV2FsayBlYWNoIHZh
bHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRl
ZC4gKi8KKyAgICAgICAgICAgIEZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IDA7CisgICAgICAg
ICAgICAvLyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5n
IG5ldyBsYXllcnMgYXMgbmVlZGVkLgogICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxp
c3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgewotICAg
ICAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5l
ZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBob2xkIHRoaXMgdmFsdWUgKi8KLSAgICAgICAgICAg
ICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihmaWxsTGF5ZXJUeXBlKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91
c0NoaWxkLT5zZXROZXh0KGFkb3B0UHRyKG5ldyBGaWxsTGF5ZXIoZmlsbExheWVyVHlwZSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIChzZWxlY3Rvci0+Km1hcEZpbGxGdW5jdGlv
bikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSkpOwotICAgICAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsKLSAgICAgICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKKyAgICAgICAgICAgICAgICAo
c2VsZWN0b3ItPiptYXBGaWxsRnVuY3Rpb24pKHByb3BlcnR5SWQsIGNoaWxkLCB2YWx1ZUxpc3Qt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOworICAgICAgICAgICAgICAgIHByZXZpb3VzQ2hp
bGQgPSBjaGlsZDsKKyAgICAgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIChzZWxlY3Rv
ci0+Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7Ci0gICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKLSAgICAgICAgfQotICAgICAg
ICB3aGlsZSAoY3VyckNoaWxkKSB7Ci0gICAgICAgICAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5n
IGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLwotICAgICAgICAgICAgKGN1
cnJDaGlsZC0+KmNsZWFyRnVuY3Rpb24pKCk7Ci0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJy
Q2hpbGQtPm5leHQoKTsKKyAgICAgICAgICAgIChzZWxlY3Rvci0+Km1hcEZpbGxGdW5jdGlvbiko
cHJvcGVydHlJZCwgY2hpbGQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5l
eHQoKTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFJlc2V0IGFsbCByZW1haW5pbmcgbGF5ZXJz
IHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuCisgICAgICAgIGZvciAoOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dCgpKQorICAgICAgICAgICAgKGNoaWxkLT4qY2xlYXJGdW5jdGlvbiko
KTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7
IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFs
VmFsdWUsICZhcHBseVZhbHVlKTsgfQpAQCAtMTI5Niw3ICsxMjkxLDcgQEAgcHVibGljOgogICAg
ICAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gYWNjZXNzQW5pbWF0aW9ucyhzZWxlY3Rvci0+c3R5
bGUoKSk7CiAgICAgICAgIHNpemVfdCBjaGlsZEluZGV4ID0gMDsKICAgICAgICAgaWYgKHZhbHVl
LT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1
dCBpdCBpbnRvIGFuIGFuaW1hdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1hdGlvbnMgYXMgbmVlZGVk
LiAqLworICAgICAgICAgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhbiBh
bmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4KICAgICAgICAgICAg
IGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZh
bmNlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkp
CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShy
ZXZpc2lvbiAxMDM2NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihFRmlsbExheWVyVHlwZSB0eXBlKQotICAgIDog
bV9uZXh0KDApCi0gICAgLCBtX2ltYWdlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZSh0eXBl
KSkKKyAgICA6IG1faW1hZ2UoRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlKHR5cGUpKQogICAg
ICwgbV94UG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbih0eXBlKSkKICAg
ICAsIG1feVBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24odHlwZSkpCiAg
ICAgLCBtX2F0dGFjaG1lbnQoRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQodHlwZSkp
CkBAIC01MSw3ICs1MCw3IEBAIEZpbGxMYXllcjo6RmlsbExheWVyKEVGaWxsTGF5ZXJUeXBlIHR5
cGUKIH0KIAogRmlsbExheWVyOjpGaWxsTGF5ZXIoY29uc3QgRmlsbExheWVyJiBvKQotICAgIDog
bV9uZXh0KG8ubV9uZXh0ID8gbmV3IEZpbGxMYXllcigqby5tX25leHQpIDogMCkKKyAgICA6IG1f
bmV4dChvLm1fbmV4dCA/IGFkb3B0UHRyKG5ldyBGaWxsTGF5ZXIoKm8ubV9uZXh0KSkgOiBudWxs
cHRyKQogICAgICwgbV9pbWFnZShvLm1faW1hZ2UpCiAgICAgLCBtX3hQb3NpdGlvbihvLm1feFBv
c2l0aW9uKQogICAgICwgbV95UG9zaXRpb24oby5tX3lQb3NpdGlvbikKQEAgLTc4LDE1ICs3Nywx
MSBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCiAKIEZpbGxMYXll
cjo6fkZpbGxMYXllcigpCiB7Ci0gICAgZGVsZXRlIG1fbmV4dDsKIH0KIAogRmlsbExheWVyJiBG
aWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAgaWYgKG1fbmV4
dCAhPSBvLm1fbmV4dCkgewotICAgICAgICBkZWxldGUgbV9uZXh0OwotICAgICAgICBtX25leHQg
PSBvLm1fbmV4dCA/IG5ldyBGaWxsTGF5ZXIoKm8ubV9uZXh0KSA6IDA7Ci0gICAgfQorICAgIG1f
bmV4dCA9IG8ubV9uZXh0ID8gYWRvcHRQdHIobmV3IEZpbGxMYXllcigqby5tX25leHQpKSA6IG51
bGxwdHI7CiAKICAgICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5t
X3hQb3NpdGlvbjsKQEAgLTIzNCwzNCArMjI5LDMxIEBAIHZvaWQgRmlsbExheWVyOjpjdWxsRW1w
dHlMYXllcnMoKQogewogICAgIEZpbGxMYXllciogbmV4dDsKICAgICBmb3IgKEZpbGxMYXllciog
cCA9IHRoaXM7IHA7IHAgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBwLT5tX25leHQ7CisgICAg
ICAgIG5leHQgPSBwLT5tX25leHQuZ2V0KCk7CiAgICAgICAgIGlmIChuZXh0ICYmICFuZXh0LT5p
c0ltYWdlU2V0KCkpIHsKLSAgICAgICAgICAgIGRlbGV0ZSBuZXh0OwotICAgICAgICAgICAgcC0+
bV9uZXh0ID0gMDsKKyAgICAgICAgICAgIHAtPm1fbmV4dCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KIAotYm9vbCBGaWxsTGF5ZXI6OmNvbnRhaW5z
SW1hZ2UoU3R5bGVJbWFnZSogcykgY29uc3QKK2Jvb2wgRmlsbExheWVyOjpjb250YWluc0ltYWdl
KFN0eWxlSW1hZ2UqIGltYWdlKSBjb25zdAogewotICAgIGlmICghcykKKyAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1faW1hZ2UgJiYgKnMgPT0gKm1faW1h
Z2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChtX25leHQpCi0gICAgICAgIHJldHVy
biBtX25leHQtPmNvbnRhaW5zSW1hZ2Uocyk7CisgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGxh
eWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAgICAg
ICBpZiAobGF5ZXItPm1faW1hZ2UgJiYgKmltYWdlID09ICpsYXllci0+bV9pbWFnZSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wg
RmlsbExheWVyOjppbWFnZXNBcmVMb2FkZWQoKSBjb25zdAogewotICAgIGNvbnN0IEZpbGxMYXll
ciogY3VycjsKLSAgICBmb3IgKGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dCgp
KSB7Ci0gICAgICAgIGlmIChjdXJyLT5tX2ltYWdlICYmICFjdXJyLT5tX2ltYWdlLT5pc0xvYWRl
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoY29uc3QgRmlsbExheWVy
KiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5tX25leHQuZ2V0KCkpIHsKKyAg
ICAgICAgaWYgKGxheWVyLT5tX2ltYWdlICYmICFsYXllci0+bV9pbWFnZS0+aXNMb2FkZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCShyZXZp
c2lvbiAxMDM2NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogICAgIEVGaWxsU2l6
ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFNpemVUeXBl
PihtX3NpemVUeXBlKTsgfQogICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBGaWxs
U2l6ZShzdGF0aWNfY2FzdDxFRmlsbFNpemVUeXBlPihtX3NpemVUeXBlKSwgbV9zaXplTGVuZ3Ro
KTsgfQogCi0gICAgY29uc3QgRmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0
OyB9Ci0gICAgRmlsbExheWVyKiBuZXh0KCkgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgY29uc3Qg
RmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CisgICAgRmls
bExheWVyKiBuZXh0KCkgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CiAKICAgICBib29sIGlzSW1h
Z2VTZXQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2V0OyB9CiAgICAgYm9vbCBpc1hQb3NpdGlv
blNldCgpIGNvbnN0IHsgcmV0dXJuIG1feFBvc1NldDsgfQpAQCAtMTE2LDEyICsxMTYsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJDb21wb3NpdGUoKSB7IG1fY29tcG9zaXRlU2V0ID0gZmFs
c2U7IH0KICAgICB2b2lkIGNsZWFyU2l6ZSgpIHsgbV9zaXplVHlwZSA9IFNpemVOb25lOyB9CiAK
LSAgICB2b2lkIHNldE5leHQoRmlsbExheWVyKiBuKSB7IGlmIChtX25leHQgIT0gbikgeyBkZWxl
dGUgbV9uZXh0OyBtX25leHQgPSBuOyB9IH0KKyAgICB2b2lkIHNldE5leHQoUGFzc093blB0cjxG
aWxsTGF5ZXI+IG5leHQpIHsgbV9uZXh0ID0gbmV4dDsgfQogCi0gICAgRmlsbExheWVyJiBvcGVy
YXRvcj0oY29uc3QgRmlsbExheWVyJiBvKTsgICAgCi0gICAgRmlsbExheWVyKGNvbnN0IEZpbGxM
YXllciYgbyk7CisgICAgRmlsbExheWVyJiBvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJik7Cisg
ICAgRmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbGxMYXllciYgbykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbGxM
YXllciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWxsTGF5ZXImIG8pIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKQEAgLTEzMiwxNiArMTMy
LDIwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgaWYgKG1faW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IG1fbmV4dCA/IG1fbmV4dC0+aGFzSW1hZ2UoKSA6IGZhbHNlOworICAgICAgICBmb3IgKGNvbnN0
IEZpbGxMYXllciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bV9uZXh0Lmdl
dCgpKSB7CisgICAgICAgICAgICBpZiAobGF5ZXItPm1faW1hZ2UpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGJvb2wgaGFzRml4ZWRJbWFnZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9pbWFn
ZSAmJiBtX2F0dGFjaG1lbnQgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0LT5oYXNGaXhl
ZEltYWdlKCkgOiBmYWxzZTsKKyAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGxheWVyID0g
dGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAgICAgICAgICAg
aWYgKGxheWVyLT5tX2ltYWdlICYmIGxheWVyLT5tX2F0dGFjaG1lbnQgPT0gRml4ZWRCYWNrZ3Jv
dW5kQXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgRUZpbGxMYXllclR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsTGF5ZXJUeXBlPihtX3R5cGUpOyB9CkBA
IC0xNjcsNyArMTcxLDcgQEAgcHJpdmF0ZToKIAogICAgIEZpbGxMYXllcigpIHsgfQogCi0gICAg
RmlsbExheWVyKiBtX25leHQ7CisgICAgT3duUHRyPEZpbGxMYXllcj4gbV9uZXh0OwogCiAgICAg
UmVmUHRyPFN0eWxlSW1hZ2U+IG1faW1hZ2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120529</attachid>
            <date>2011-12-25 23:10:25 -0800</date>
            <delta_ts>2014-04-12 22:58:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75222-20111225231024.patch</filename>
            <type>text/plain</type>
            <size>13032</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzY3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTEyLTI1ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3duUHRyIGZvciBGaWxsTGF5
ZXI6Om1fbmV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzUyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlJbmhlcml0VmFsdWUpOiBSZW5hbWVkIGN1cnJDaGls
ZCB0byBqdXN0CisgICAgICAgIGNoaWxkIGFuZCBwcmV2Q2hpbGQgdG8gcHJldmlvdXNDaGlsZC4g
Q2hhbmdlZCBjb2RlIHRvIHBhc3Mgb3duZXJzaGlwIG9mIHRoZSBuZXcKKyAgICAgICAgRmlsbExh
eWVyIGltbWVkaWF0ZWx5LiBDaGFuZ2VkIHNvbWUgbG9vcHMgdG8gYmUgZm9yIGxvb3BzLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlJbml0aWFsVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5
VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246
OmFwcGx5VmFsdWUpOiBGaXhlZCB0aGUgc3R5bGUgb2YgYSBjb21tZW50LgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVy
OjpGaWxsTGF5ZXIpOiBSZW1vdmVkIG1fbmV4dCBpbml0aWFsaXplciBzaW5jZSBpdCBpcyBub3cg
YW4KKyAgICAgICAgT3duUHRyIGFuZCBpbml0aWFsaXplcyBhdXRvbWF0aWNhbGx5LiBJbiBhIGNv
dXBsZSBvdGhlciBwbGFjZXMsIGNoYW5nZWQgbV9uZXh0CisgICAgICAgIGluaXRpYWxpemVyIHRv
IHVzZSBhZG9wdFB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6fkZpbGxMYXllcik6
IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgZGVsZXRpb24gb2YgbV9uZXh0LgorICAgICAgICAo
V2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbGxMYXllcjo6Y3VsbEVtcHR5TGF5ZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6OmNvbnRhaW5zSW1hZ2UpOiBSZXdyb3RlIHRvIHVzZSBhIGxvb3AgaW5zdGVhZCBv
ZiByZWN1cnNpb24uCisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRl
ZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogQ2hhbmdl
ZCBtX25leHQgdG8gYmUgT3duUHRyLgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNJ
bWFnZSk6IFJld3JvdGUgdG8gdXNlIGEgbG9vcCBpbnN0ZWFkIG9mIHJlY3Vyc2lvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzRml4ZWRJbWFnZSk6IERpdHRvLgorCiAyMDExLTEy
LTI1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIxMDI5ODcpOiBGaXggdGhlIGZpbGVuYW1lIHByZWZpeCBvZiB0aGUgZ2VuZXJhdGVk
IGVtcHR5IC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmNwcAkocmV2aXNpb24gMTAzNjY5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw2MiArNDM5LDU3IEBAIGNs
YXNzIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQogICAgIHsKLSAgICAg
ICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSAoc2VsZWN0b3ItPnN0eWxlKCktPiphY2Nlc3NMYXll
cnNGdW5jdGlvbikoKTsKLSAgICAgICAgRmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOwotICAgICAg
ICBjb25zdCBGaWxsTGF5ZXIqIGN1cnJQYXJlbnQgPSAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkt
PipsYXllcnNGdW5jdGlvbikoKTsKLSAgICAgICAgd2hpbGUgKGN1cnJQYXJlbnQgJiYgKGN1cnJQ
YXJlbnQtPip0ZXN0RnVuY3Rpb24pKCkpIHsKLSAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7
Ci0gICAgICAgICAgICAgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGxheWVyLiovCi0gICAgICAg
ICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihmaWxsTGF5ZXJUeXBlKTsKLSAgICAg
ICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsKKyAgICAgICAgRmlsbExh
eWVyKiBjaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgp
OworICAgICAgICBGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSAwOworICAgICAgICBjb25zdCBG
aWxsTGF5ZXIqIHBhcmVudCA9IChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+KmxheWVyc0Z1bmN0
aW9uKSgpOworICAgICAgICB3aGlsZSAocGFyZW50ICYmIChwYXJlbnQtPip0ZXN0RnVuY3Rpb24p
KCkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGQpIHsKKyAgICAgICAgICAgICAgICBwcmV2aW91
c0NoaWxkLT5zZXROZXh0KGFkb3B0UHRyKG5ldyBGaWxsTGF5ZXIoZmlsbExheWVyVHlwZSkpKTsK
KyAgICAgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIChjdXJyQ2hpbGQtPipzZXRGdW5jdGlvbikoKGN1cnJQYXJlbnQt
PipnZXRGdW5jdGlvbikoKSk7Ci0gICAgICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7Ci0g
ICAgICAgICAgICBjdXJyQ2hpbGQgPSBwcmV2Q2hpbGQtPm5leHQoKTsKLSAgICAgICAgICAgIGN1
cnJQYXJlbnQgPSBjdXJyUGFyZW50LT5uZXh0KCk7CisgICAgICAgICAgICAoY2hpbGQtPipzZXRG
dW5jdGlvbikoKHBhcmVudC0+KmdldEZ1bmN0aW9uKSgpKTsKKyAgICAgICAgICAgIHByZXZpb3Vz
Q2hpbGQgPSBjaGlsZDsKKyAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgp
OworICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5uZXh0KCk7CiAgICAgICAgIH0KIAotICAg
ICAgICB3aGlsZSAoY3VyckNoaWxkKSB7Ci0gICAgICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWlu
aW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLwotICAgICAgICAgICAg
KGN1cnJDaGlsZC0+KmNsZWFyRnVuY3Rpb24pKCk7Ci0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBj
dXJyQ2hpbGQtPm5leHQoKTsKLSAgICAgICAgfQorICAgICAgICAvLyBSZXNldCBhbnkgcmVtYWlu
aW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LgorICAgICAgICBmb3IgKDsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHQoKSkKKyAgICAgICAgICAgIChjaGlsZC0+KmNsZWFy
RnVuY3Rpb24pKCk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCiAgICAgewotICAgICAgICBGaWxsTGF5ZXIqIGN1
cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwot
ICAgICAgICAoY3VyckNoaWxkLT4qc2V0RnVuY3Rpb24pKCgqaW5pdGlhbEZ1bmN0aW9uKShmaWxs
TGF5ZXJUeXBlKSk7Ci0gICAgICAgIGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7
IGN1cnJDaGlsZDsgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCkpCi0gICAgICAgICAgICAo
Y3VyckNoaWxkLT4qY2xlYXJGdW5jdGlvbikoKTsKKyAgICAgICAgRmlsbExheWVyKiBjaGlsZCA9
IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOworICAgICAgICAo
Y2hpbGQtPipzZXRGdW5jdGlvbikoKCppbml0aWFsRnVuY3Rpb24pKGZpbGxMYXllclR5cGUpKTsK
KyAgICAgICAgZm9yIChjaGlsZCA9IGNoaWxkLT5uZXh0KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0KCkpCisgICAgICAgICAgICAoY2hpbGQtPipjbGVhckZ1bmN0aW9uKSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEZpbGxMYXllciogY3VyckNoaWxkID0g
KHNlbGVjdG9yLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7Ci0gICAgICAgIEZp
bGxMYXllciogcHJldkNoaWxkID0gMDsKKyAgICAgICAgRmlsbExheWVyKiBjaGlsZCA9IChzZWxl
Y3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwogICAgICAgICBpZiAodmFs
dWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQg
cHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuICovCisg
ICAgICAgICAgICBGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSAwOworICAgICAgICAgICAgLy8g
V2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5
ZXJzIGFzIG5lZWRlZC4KICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWN1cnJDaGlsZCkgewotICAgICAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1h
a2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVlICovCi0gICAgICAgICAgICAgICAgICAg
IGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoZmlsbExheWVyVHlwZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICAg
ICAgICAgIGlmICghY2hpbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+
c2V0TmV4dChhZG9wdFB0cihuZXcgRmlsbExheWVyKGZpbGxMYXllclR5cGUpKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAoc2VsZWN0b3ItPiptYXBGaWxsRnVuY3Rpb24pKHByb3Bl
cnR5SWQsIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsK
LSAgICAgICAgICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7Ci0gICAgICAgICAgICAgICAg
Y3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7CisgICAgICAgICAgICAgICAgKHNlbGVjdG9y
LT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hp
bGQ7CisgICAgICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAoc2VsZWN0b3ItPiptYXBG
aWxsRnVuY3Rpb24pKHByb3BlcnR5SWQsIGN1cnJDaGlsZCwgdmFsdWUpOwotICAgICAgICAgICAg
Y3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUg
KGN1cnJDaGlsZCkgewotICAgICAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBsYXllcnMg
dG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8KLSAgICAgICAgICAgIChjdXJyQ2hpbGQt
PipjbGVhckZ1bmN0aW9uKSgpOwotICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5u
ZXh0KCk7CisgICAgICAgICAgICAoc2VsZWN0b3ItPiptYXBGaWxsRnVuY3Rpb24pKHByb3BlcnR5
SWQsIGNoaWxkLCB2YWx1ZSk7CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0KCk7CiAg
ICAgICAgIH0KKworICAgICAgICAvLyBSZXNldCBhbGwgcmVtYWluaW5nIGxheWVycyB0byBub3Qg
aGF2ZSB0aGUgcHJvcGVydHkgc2V0LgorICAgICAgICBmb3IgKDsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHQoKSkKKyAgICAgICAgICAgIChjaGlsZC0+KmNsZWFyRnVuY3Rpb24pKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4g
UHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAm
YXBwbHlWYWx1ZSk7IH0KQEAgLTEyOTYsNyArMTI5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQW5p
bWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOwog
ICAgICAgICBzaXplX3QgY2hpbGRJbmRleCA9IDA7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1
ZUxpc3QoKSkgewotICAgICAgICAgICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50
byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8KKyAg
ICAgICAgICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYW4gYW5pbWF0aW9u
LCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuCiAgICAgICAgICAgICBmb3IgKENT
U1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKQogICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkocmV2aXNpb24g
MTAzNjY5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDgg
KzI1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmlsbExheWVyOjpGaWxsTGF5ZXIoRUZp
bGxMYXllclR5cGUgdHlwZSkKLSAgICA6IG1fbmV4dCgwKQotICAgICwgbV9pbWFnZShGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsSW1hZ2UodHlwZSkpCisgICAgOiBtX2ltYWdlKEZpbGxMYXllcjo6aW5p
dGlhbEZpbGxJbWFnZSh0eXBlKSkKICAgICAsIG1feFBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlh
bEZpbGxYUG9zaXRpb24odHlwZSkpCiAgICAgLCBtX3lQb3NpdGlvbihGaWxsTGF5ZXI6OmluaXRp
YWxGaWxsWVBvc2l0aW9uKHR5cGUpKQogICAgICwgbV9hdHRhY2htZW50KEZpbGxMYXllcjo6aW5p
dGlhbEZpbGxBdHRhY2htZW50KHR5cGUpKQpAQCAtNTEsNyArNTAsNyBAQCBGaWxsTGF5ZXI6OkZp
bGxMYXllcihFRmlsbExheWVyVHlwZSB0eXBlCiB9CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNv
bnN0IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IG5ldyBGaWxsTGF5ZXIo
Km8ubV9uZXh0KSA6IDApCisgICAgOiBtX25leHQoby5tX25leHQgPyBhZG9wdFB0cihuZXcgRmls
bExheWVyKCpvLm1fbmV4dCkpIDogbnVsbHB0cikKICAgICAsIG1faW1hZ2Uoby5tX2ltYWdlKQog
ICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikKICAgICAsIG1feVBvc2l0aW9uKG8ubV95
UG9zaXRpb24pCkBAIC03NiwxNyArNzUsOSBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBG
aWxsTGF5ZXImIG8pCiB7CiB9CiAKLUZpbGxMYXllcjo6fkZpbGxMYXllcigpCi17Ci0gICAgZGVs
ZXRlIG1fbmV4dDsKLX0KLQogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBG
aWxsTGF5ZXImIG8pCiB7Ci0gICAgaWYgKG1fbmV4dCAhPSBvLm1fbmV4dCkgewotICAgICAgICBk
ZWxldGUgbV9uZXh0OwotICAgICAgICBtX25leHQgPSBvLm1fbmV4dCA/IG5ldyBGaWxsTGF5ZXIo
Km8ubV9uZXh0KSA6IDA7Ci0gICAgfQorICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gYWRvcHRQdHIo
bmV3IEZpbGxMYXllcigqby5tX25leHQpKSA6IG51bGxwdHI7CiAKICAgICBtX2ltYWdlID0gby5t
X2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsKQEAgLTIzMywzNSArMjI0
LDMyIEBAIHZvaWQgRmlsbExheWVyOjpmaWxsVW5zZXRQcm9wZXJ0aWVzKCkKIHZvaWQgRmlsbExh
eWVyOjpjdWxsRW1wdHlMYXllcnMoKQogewogICAgIEZpbGxMYXllciogbmV4dDsKLSAgICBmb3Ig
KEZpbGxMYXllciogcCA9IHRoaXM7IHA7IHAgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBwLT5t
X25leHQ7CisgICAgZm9yIChGaWxsTGF5ZXIqIGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0g
bmV4dCkgeworICAgICAgICBuZXh0ID0gbGF5ZXItPm1fbmV4dC5nZXQoKTsKICAgICAgICAgaWYg
KG5leHQgJiYgIW5leHQtPmlzSW1hZ2VTZXQoKSkgewotICAgICAgICAgICAgZGVsZXRlIG5leHQ7
Ci0gICAgICAgICAgICBwLT5tX25leHQgPSAwOworICAgICAgICAgICAgbGF5ZXItPm1fbmV4dCA9
IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KIAotYm9v
bCBGaWxsTGF5ZXI6OmNvbnRhaW5zSW1hZ2UoU3R5bGVJbWFnZSogcykgY29uc3QKK2Jvb2wgRmls
bExheWVyOjpjb250YWluc0ltYWdlKFN0eWxlSW1hZ2UqIGltYWdlKSBjb25zdAogewotICAgIGlm
ICghcykKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
aW1hZ2UgJiYgKnMgPT0gKm1faW1hZ2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICht
X25leHQpCi0gICAgICAgIHJldHVybiBtX25leHQtPmNvbnRhaW5zSW1hZ2Uocyk7CisgICAgZm9y
IChjb25zdCBGaWxsTGF5ZXIqIGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1f
bmV4dC5nZXQoKSkgeworICAgICAgICBpZiAobGF5ZXItPm1faW1hZ2UgJiYgKmltYWdlID09ICps
YXllci0+bV9pbWFnZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVMb2FkZWQoKSBjb25zdAog
ewotICAgIGNvbnN0IEZpbGxMYXllciogY3VycjsKLSAgICBmb3IgKGN1cnIgPSB0aGlzOyBjdXJy
OyBjdXJyID0gY3Vyci0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5tX2ltYWdlICYmICFj
dXJyLT5tX2ltYWdlLT5pc0xvYWRlZCgpKQorICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBsYXll
ciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5tX25leHQuZ2V0KCkpIHsKKyAgICAgICAg
aWYgKGxheWVyLT5tX2ltYWdlICYmICFsYXllci0+bV9pbWFnZS0+aXNMb2FkZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAkocmV2aXNpb24g
MTAzNjY5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw2IEBAIGNsYXNzIEZpbGxMYXllciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmlsbExheWVyKEVGaWxsTGF5ZXJU
eXBlKTsKLSAgICB+RmlsbExheWVyKCk7CiAKICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICBMZW5ndGggeFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV94UG9zaXRpb247IH0KQEAgLTc4LDggKzc3LDggQEAgcHVibGljOgogICAgIEVG
aWxsU2l6ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbFNp
emVUeXBlPihtX3NpemVUeXBlKTsgfQogICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBGaWxsU2l6ZShzdGF0aWNfY2FzdDxFRmlsbFNpemVUeXBlPihtX3NpemVUeXBlKSwgbV9zaXpl
TGVuZ3RoKTsgfQogCi0gICAgY29uc3QgRmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9uZXh0OyB9Ci0gICAgRmlsbExheWVyKiBuZXh0KCkgeyByZXR1cm4gbV9uZXh0OyB9CisgICAg
Y29uc3QgRmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Cisg
ICAgRmlsbExheWVyKiBuZXh0KCkgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CiAKICAgICBib29s
IGlzSW1hZ2VTZXQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2V0OyB9CiAgICAgYm9vbCBpc1hQ
b3NpdGlvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1feFBvc1NldDsgfQpAQCAtMTE2LDEyICsxMTUs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDb21wb3NpdGUoKSB7IG1fY29tcG9zaXRlU2V0
ID0gZmFsc2U7IH0KICAgICB2b2lkIGNsZWFyU2l6ZSgpIHsgbV9zaXplVHlwZSA9IFNpemVOb25l
OyB9CiAKLSAgICB2b2lkIHNldE5leHQoRmlsbExheWVyKiBuKSB7IGlmIChtX25leHQgIT0gbikg
eyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSBuOyB9IH0KKyAgICB2b2lkIHNldE5leHQoUGFzc093
blB0cjxGaWxsTGF5ZXI+IG5leHQpIHsgbV9uZXh0ID0gbmV4dDsgfQogCi0gICAgRmlsbExheWVy
JiBvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKTsgICAgCi0gICAgRmlsbExheWVyKGNvbnN0
IEZpbGxMYXllciYgbyk7CisgICAgRmlsbExheWVyJiBvcGVyYXRvcj0oY29uc3QgRmlsbExheWVy
Jik7CisgICAgRmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYpOwogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbGxMYXllciYgbykgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZpbGxMYXllciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWxsTGF5ZXIm
IG8pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKQEAgLTEzMiwx
NiArMTMxLDIwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdAogICAgIHsK
LSAgICAgICAgaWYgKG1faW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuIG1fbmV4dCA/IG1fbmV4dC0+aGFzSW1hZ2UoKSA6IGZhbHNlOworICAgICAgICBmb3Ig
KGNvbnN0IEZpbGxMYXllciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bV9u
ZXh0LmdldCgpKSB7CisgICAgICAgICAgICBpZiAobGF5ZXItPm1faW1hZ2UpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGJvb2wgaGFzRml4ZWRJbWFnZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAo
bV9pbWFnZSAmJiBtX2F0dGFjaG1lbnQgPT0gRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0LT5o
YXNGaXhlZEltYWdlKCkgOiBmYWxzZTsKKyAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGxh
eWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAgICAg
ICAgICAgaWYgKGxheWVyLT5tX2ltYWdlICYmIGxheWVyLT5tX2F0dGFjaG1lbnQgPT0gRml4ZWRC
YWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgRUZpbGxMYXllclR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsTGF5ZXJUeXBlPihtX3R5cGUp
OyB9CkBAIC0xNjcsNyArMTcwLDcgQEAgcHJpdmF0ZToKIAogICAgIEZpbGxMYXllcigpIHsgfQog
Ci0gICAgRmlsbExheWVyKiBtX25leHQ7CisgICAgT3duUHRyPEZpbGxMYXllcj4gbV9uZXh0Owog
CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1faW1hZ2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229219</attachid>
            <date>2014-04-12 22:58:13 -0700</date>
            <delta_ts>2014-04-12 22:58:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75222-20140412225812.patch</filename>
            <type>text/plain</type>
            <size>26324</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZjYzFiODk5YzI1ZTI3
NzQyMmQzZjZjMzlmYjBlZmQzMmZiODc1MC4uYTg2MWUwYjQzYWRiN2YxZmMxM2NiMTA0MDU2MjBi
NmZhY2MxYTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE0LTA0LTEyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBmb3Ig
RmlsbExheWVyOjptX25leHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1MjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KKwor
ICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAg
UmVuYW1lZCBjdXJyQ2hpbGQgdG8ganVzdCBjaGlsZCBhbmQgcHJldkNoaWxkIHRvIHByZXZpb3Vz
Q2hpbGQuCisgICAgICAgIENoYW5nZWQgY29kZSB0byBwYXNzIG93bmVyc2hpcCBvZiB0aGUgbmV3
IEZpbGxMYXllciBpbW1lZGlhdGVseS4KKyAgICAgICAgQ2hhbmdlZCBzb21lIGxvb3BzIHRvIGJl
IGZvciBsb29wcy4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFw
cGx5SW5pdGlhbFZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
RmlsbExheWVyOjphcHBseVZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YmFja2dyb3VuZEhhc09w
YXF1ZVRvcExheWVyKTogVXNlIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFkIG9mIHBvaW50ZXIu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6IERpdHRvLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6IERp
dHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6IFJlbW92ZWQgbV9uZXh0IGluaXRpYWxp
emVyIHNpbmNlIGl0IGlzIG5vdyBhbgorICAgICAgICBPd25QdHIgYW5kIGluaXRpYWxpemVzIGF1
dG9tYXRpY2FsbHkuIEluIGEgY291cGxlIG90aGVyIHBsYWNlcywgY2hhbmdlZCBtX25leHQKKyAg
ICAgICAgaW5pdGlhbGl6ZXIgdG8gdXNlIG1ha2VfdW5pcXVlLgorICAgICAgICAoV2ViQ29yZTo6
RmlsbExheWVyOjp+RmlsbExheWVyKTogV3JvdGUgbG9vcCBmb3IgZGVsZXRpb24gb2YgbV9uZXh0
LgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOiBSZW1vdmVkIHVubmVl
ZGVkIGV4cGxpY2l0IGRlbGV0aW9uIG9mIG1fbmV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGxM
YXllcjo6Y3VsbEVtcHR5TGF5ZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjbGlwTWF4
KTogTWFya2VkIGlubGluZS4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6Y29tcHV0ZUNs
aXBNYXgpOiBSZXdyb3RlIHRvIHVzZSBhIGxvb3AgaW5zdGVhZCBvZiByZWN1cnNpb24uCisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmNvbnRhaW5zSW1hZ2UpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZpbGxMYXllcjo6aW1hZ2VzQXJlTG9hZGVkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKTogUmV3cm90ZSB0byB1c2UgJiYgaW5z
dGVhZCBvZiBtdWx0aXBsZSBpZi4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzSW1h
Z2UpOiBSZXdyb3RlIHRvIHVzZSBhIGxvb3AgaW5zdGVhZCBvZiByZWN1cnNpb24uCisgICAgICAg
IChXZWJDb3JlOjpGaWxsTGF5ZXI6Omhhc0ZpeGVkSW1hZ2UpOiBEaXR0by4KKworICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDogQ2hhbmdlZCBtX25leHQgdG8gYmUgYSB1bmlx
dWVfcHRyLgorCiAyMDE0LTA0LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTb21lIHNtYWxsIGxvYWRlciByZWZpbmVtZW50cyBhbmQgcmVmYWN0b3JpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAppbmRleCA5NTRi
MTU5NjAzNzI4ZTViYTIxMTQ2NmJjYTg3NGQwY2NiYTBlNjdmLi4wYWMzOWQxZmYyZmFjYTExOThj
ZGUyNjhkMGU2MGIxNGNmZjRhYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0
ZWRTdHlsZUJ1aWxkZXIuY3BwCkBAIC01MjAsNzIgKzUyMCw2MCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICgqKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPipsYXllcnNGdW5jdGlvbikoKSA9
PSAqKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPipsYXllcnNGdW5jdGlvbikoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT4qYWNjZXNzTGF5ZXJzRnVuY3Rpb24pKCk7Ci0gICAgICAgIEZpbGxMYXll
ciogcHJldkNoaWxkID0gMDsKLSAgICAgICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFyZW50ID0g
KHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPipsYXllcnNGdW5jdGlvbikoKTsKLSAgICAg
ICAgd2hpbGUgKGN1cnJQYXJlbnQgJiYgKGN1cnJQYXJlbnQtPip0ZXN0RnVuY3Rpb24pKCkpIHsK
LSAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7Ci0gICAgICAgICAgICAgICAgLyogTmVlZCB0
byBtYWtlIGEgbmV3IGxheWVyLiovCi0gICAgICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZp
bGxMYXllcihmaWxsTGF5ZXJUeXBlKTsKLSAgICAgICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5l
eHQoY3VyckNoaWxkKTsKKyAgICAgICAgYXV0byogY2hpbGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5
bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOworICAgICAgICBGaWxsTGF5ZXIqIHByZXZp
b3VzQ2hpbGQgPSBudWxscHRyOworICAgICAgICBmb3IgKGF1dG8qIHBhcmVudCA9IChzdHlsZVJl
c29sdmVyLT5wYXJlbnRTdHlsZSgpLT4qbGF5ZXJzRnVuY3Rpb24pKCk7IHBhcmVudCAmJiAocGFy
ZW50LT4qdGVzdEZ1bmN0aW9uKSgpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkgeworICAgICAg
ICAgICAgaWYgKCFjaGlsZCkgeworICAgICAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5l
eHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KGZpbGxMYXllclR5cGUpKTsKKyAgICAgICAg
ICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIChjdXJyQ2hpbGQtPipzZXRGdW5jdGlvbikoKGN1cnJQYXJlbnQtPipnZXRGdW5j
dGlvbikoKSk7Ci0gICAgICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7Ci0gICAgICAgICAg
ICBjdXJyQ2hpbGQgPSBwcmV2Q2hpbGQtPm5leHQoKTsKLSAgICAgICAgICAgIGN1cnJQYXJlbnQg
PSBjdXJyUGFyZW50LT5uZXh0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB3aGlsZSAoY3VyckNo
aWxkKSB7Ci0gICAgICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGxheWVycyB0byBub3Qg
aGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLwotICAgICAgICAgICAgKGN1cnJDaGlsZC0+KmNsZWFy
RnVuY3Rpb24pKCk7Ci0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsK
KyAgICAgICAgICAgIChjaGlsZC0+KnNldEZ1bmN0aW9uKSgocGFyZW50LT4qZ2V0RnVuY3Rpb24p
KCkpOworICAgICAgICAgICAgcHJldmlvdXNDaGlsZCA9IGNoaWxkOworICAgICAgICAgICAgY2hp
bGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7CiAgICAgICAgIH0KKyAgICAgICAgZm9yICg7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpCisgICAgICAgICAgICAoY2hpbGQtPipjbGVhckZ1
bmN0aW9uKSgpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENT
U1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiAgICAgewogICAgICAg
ICAvLyBDaGVjayBmb3IgKHNpbmdsZS1sYXllcikgbm8tb3AgYmVmb3JlIGNsZWFyaW5nIGFueXRo
aW5nLgogICAgICAgICBjb25zdCBGaWxsTGF5ZXImIGxheWVycyA9ICooc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+KmxheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICBib29sIGZpcnN0TGF5ZXJIYXNW
YWx1ZSA9IChsYXllcnMuKnRlc3RGdW5jdGlvbikoKTsKLSAgICAgICAgaWYgKCFsYXllcnMubmV4
dCgpICYmICghZmlyc3RMYXllckhhc1ZhbHVlIHx8IChsYXllcnMuKmdldEZ1bmN0aW9uKSgpID09
ICgqaW5pdGlhbEZ1bmN0aW9uKShmaWxsTGF5ZXJUeXBlKSkpCisgICAgICAgIGlmICghbGF5ZXJz
Lm5leHQoKSAmJiAoIShsYXllcnMuKnRlc3RGdW5jdGlvbikoKSB8fCAobGF5ZXJzLipnZXRGdW5j
dGlvbikoKSA9PSAoKmluaXRpYWxGdW5jdGlvbikoZmlsbExheWVyVHlwZSkpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gKHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCktPiphY2Nlc3NMYXllcnNGdW5jdGlvbikoKTsKLSAgICAgICAgKGN1cnJDaGls
ZC0+KnNldEZ1bmN0aW9uKSgoKmluaXRpYWxGdW5jdGlvbikoZmlsbExheWVyVHlwZSkpOwotICAg
ICAgICBmb3IgKGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBjdXJyQ2hpbGQ7IGN1cnJD
aGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpKQotICAgICAgICAgICAgKGN1cnJDaGlsZC0+KmNsZWFy
RnVuY3Rpb24pKCk7CisgICAgICAgIEZpbGxMYXllciogY2hpbGQgPSAoc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOworICAgICAgICAoY2hpbGQtPipzZXRG
dW5jdGlvbikoKCppbml0aWFsRnVuY3Rpb24pKGZpbGxMYXllclR5cGUpKTsKKyAgICAgICAgZm9y
IChjaGlsZCA9IGNoaWxkLT5uZXh0KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpCisg
ICAgICAgICAgICAoY2hpbGQtPipjbGVhckZ1bmN0aW9uKSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgRmlsbExheWVyKiBjdXJyQ2hp
bGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwot
ICAgICAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7CisgICAgICAgIEZpbGxMYXllciogY2hp
bGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwor
ICAgICAgICBGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyOwogICAgICAgICBpZiAo
dmFsdWUtPmlzVmFsdWVMaXN0KCkKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKICAgICAgICAg
JiYgIXZhbHVlLT5pc0ltYWdlU2V0VmFsdWUoKQogI2VuZGlmCiAgICAgICAgICkgewotICAgICAg
ICAgICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGlu
ZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC4gKi8KLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFs
dWVMaXN0ID0gdG9DU1NWYWx1ZUxpc3QodmFsdWUpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIWN1cnJDaGlsZCkgewotICAgICAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1h
a2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVlICovCi0gICAgICAgICAgICAgICAgICAg
IGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoZmlsbExheWVyVHlwZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOworICAgICAgICAgICAgLy8gV2Fs
ayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJz
IGFzIG5lZWRlZC4KKyAgICAgICAgICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gdG9DU1NW
YWx1ZUxpc3QoKnZhbHVlKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
YWx1ZUxpc3QubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghY2hpbGQpIHsK
KyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5p
cXVlPEZpbGxMYXllcj4oZmlsbExheWVyVHlwZSkpOworICAgICAgICAgICAgICAgICAgICBjaGls
ZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgKHN0eWxlUmVzb2x2ZXItPnN0eWxlTWFwKCktPiptYXBGaWxsRnVuY3Rpb24pKHByb3Bl
cnR5SWQsIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsK
LSAgICAgICAgICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7Ci0gICAgICAgICAgICAgICAg
Y3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7CisgICAgICAgICAgICAgICAgKHN0eWxlUmVz
b2x2ZXItPnN0eWxlTWFwKCktPiptYXBGaWxsRnVuY3Rpb24pKHByb3BlcnR5SWQsIGNoaWxkLCB2
YWx1ZUxpc3QuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAgICAgICAgICAgcHJl
dmlvdXNDaGlsZCA9IGNoaWxkOworICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIChzdHlsZVJl
c29sdmVyLT5zdHlsZU1hcCgpLT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hp
bGQsIHZhbHVlKTsKLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOwot
ICAgICAgICB9Ci0gICAgICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKLSAgICAgICAgICAgIC8qIFJl
c2V0IGFsbCByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICov
Ci0gICAgICAgICAgICAoY3VyckNoaWxkLT4qY2xlYXJGdW5jdGlvbikoKTsKLSAgICAgICAgICAg
IGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOworICAgICAgICAgICAgKHN0eWxlUmVzb2x2
ZXItPnN0eWxlTWFwKCktPiptYXBGaWxsRnVuY3Rpb24pKHByb3BlcnR5SWQsIGNoaWxkLCB2YWx1
ZSk7CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0KCk7CiAgICAgICAgIH0KKyAgICAg
ICAgZm9yICg7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpCisgICAgICAgICAgICAoY2hp
bGQtPipjbGVhckZ1bmN0aW9uKSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRs
ZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0
VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9CkBAIC0yNDk5LDkgKzI0
ODcsOSBAQCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVyKCkK
ICNlbmRpZgogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVj
dGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveERpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjpi
b3hEaXJlY3Rpb24sIEVCb3hEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0Qm94RGlyZWN0aW9u
LCBFQm94RGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hEaXJlY3Rpb24+OjpjcmVh
dGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJv
eEZsZXgsIEFwcGx5UHJvcGVydHlEZWZhdWx0PGZsb2F0LCAmUmVuZGVyU3R5bGU6OmJveEZsZXgs
IGZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldEJveEZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hGbGV4Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXAsIEFwcGx5UHJvcGVydHlEZWZhdWx0PHVuc2ln
bmVkIGludCwgJlJlbmRlclN0eWxlOjpib3hGbGV4R3JvdXAsIHVuc2lnbmVkIGludCwgJlJlbmRl
clN0eWxlOjpzZXRCb3hGbGV4R3JvdXAsIHVuc2lnbmVkIGludCwgJlJlbmRlclN0eWxlOjppbml0
aWFsQm94RmxleEdyb3VwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXAsIEFwcGx5UHJvcGVydHlEZWZhdWx0PHVu
c2lnbmVkLCAmUmVuZGVyU3R5bGU6OmJveEZsZXhHcm91cCwgdW5zaWduZWQsICZSZW5kZXJTdHls
ZTo6c2V0Qm94RmxleEdyb3VwLCB1bnNpZ25lZCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm94Rmxl
eEdyb3VwPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRCb3hMaW5lcywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveExpbmVzLCAmUmVu
ZGVyU3R5bGU6OmJveExpbmVzLCBFQm94TGluZXMsICZSZW5kZXJTdHlsZTo6c2V0Qm94TGluZXMs
IEVCb3hMaW5lcywgJlJlbmRlclN0eWxlOjppbml0aWFsQm94TGluZXM+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxH
cm91cCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8dW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OmJv
eE9yZGluYWxHcm91cCwgdW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OnNldEJveE9yZGluYWxH
cm91cCwgdW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmRpbmFsR3JvdXA+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEJveE9yZGluYWxHcm91cCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8dW5zaWduZWQsICZSZW5k
ZXJTdHlsZTo6Ym94T3JkaW5hbEdyb3VwLCB1bnNpZ25lZCwgJlJlbmRlclN0eWxlOjpzZXRCb3hP
cmRpbmFsR3JvdXAsIHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmRpbmFsR3Jv
dXA+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveE9yaWVudCwgJlJlbmRl
clN0eWxlOjpib3hPcmllbnQsIEVCb3hPcmllbnQsICZSZW5kZXJTdHlsZTo6c2V0Qm94T3JpZW50
LCBFQm94T3JpZW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmllbnQ+OjpjcmVhdGVIYW5k
bGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2ss
IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3hQYWNrLCAmUmVuZGVyU3R5bGU6OmJveFBhY2ssIEVC
b3hQYWNrLCAmUmVuZGVyU3R5bGU6OnNldEJveFBhY2ssIEVCb3hQYWNrLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3hQYWNrPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24sIEFwcGx5UHJvcGVydHlEZWZhdWx0
PENvbG9yU3BhY2UsICZSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSwgQ29sb3JTcGFjZSwgJlJlbmRl
clN0eWxlOjpzZXRDb2xvclNwYWNlLCBDb2xvclNwYWNlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxD
b2xvclNwYWNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggMjdlOTE3N2Y1ZGYzZWQ1YjQ3ODEyYWY0MWFiNjI3ODdmY2Y2MjlkOS4u
NGJmNDg5MTk5MWY1M2UzMTNhMWI1NmI5NzdmNWQzZWM1NWZjZDg5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE0MDksNyArMTQwOSw3IEBAIGJvb2wgUmVuZGVy
Qm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogICAgIGlmIChoYXNPdmVy
Zmxvd0NsaXAoKSAmJiBmaWxsTGF5ZXItPmF0dGFjaG1lbnQoKSA9PSBMb2NhbEJhY2tncm91bmRB
dHRhY2htZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZmlsbExheWVyLT5o
YXNPcGFxdWVJbWFnZSh0aGlzKSAmJiBmaWxsTGF5ZXItPmhhc1JlcGVhdFhZKCkgJiYgZmlsbExh
eWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKQor
ICAgIGlmIChmaWxsTGF5ZXItPmhhc09wYXF1ZUltYWdlKCp0aGlzKSAmJiBmaWxsTGF5ZXItPmhh
c1JlcGVhdFhZKCkgJiYgZmlsbExheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUo
KS5lZmZlY3RpdmVab29tKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRo
ZXJlIGlzIG9ubHkgb25lIGxheWVyIGFuZCBubyBpbWFnZSwgY2hlY2sgd2hldGhlciB0aGUgYmFj
a2dyb3VuZCBjb2xvciBpcyBvcGFxdWUKQEAgLTE1MTEsNyArMTUxMSw3IEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjLCBjb25zCiAgICAgICAgICAgICBzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVC
dWZmZXIgPSB0cnVlOwogCiAgICAgICAgIC8vIFRoZSBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJzIGNv
bmRpdGlvbiBtdXN0IGJlIGV2YWx1YXRlZCBmaXJzdCB0byBhdm9pZCBzaG9ydC1jaXJjdWl0aW5n
LgotICAgICAgICBpZiAoY3VyTGF5ZXItPmNsaXBPY2NsdWRlc05leHRMYXllcnMoY3VyTGF5ZXIg
PT0gZmlsbExheWVyKSAmJiBjdXJMYXllci0+aGFzT3BhcXVlSW1hZ2UodGhpcykgJiYgY3VyTGF5
ZXItPmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkgJiYg
Y3VyTGF5ZXItPmhhc1JlcGVhdFhZKCkgJiYgY3VyTGF5ZXItPmJsZW5kTW9kZSgpID09IEJsZW5k
TW9kZU5vcm1hbCkKKyAgICAgICAgaWYgKGN1ckxheWVyLT5jbGlwT2NjbHVkZXNOZXh0TGF5ZXJz
KGN1ckxheWVyID09IGZpbGxMYXllcikgJiYgY3VyTGF5ZXItPmhhc09wYXF1ZUltYWdlKCp0aGlz
KSAmJiBjdXJMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKSAmJiBjdXJMYXllci0+aGFzUmVwZWF0WFkoKSAmJiBjdXJMYXllci0+YmxlbmRNb2Rl
KCkgPT0gQmxlbmRNb2RlTm9ybWFsKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1ckxh
eWVyID0gY3VyTGF5ZXItPm5leHQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA5MzA2OGYxOWUyM2RhMGE4ZWM4
YTUwMzVlODQzZGE0Mzg3ZjA4NTZkLi5kNjljNTI4MTg3NDg3MmRhZGZmZTc5OTRhMzNhZjBjM2Vi
ZmUzZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgIGlmICghYmdMYXllci0+bmV4dCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgYmFja2dyb3Vu
ZFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QpOwogICAgICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJl
QXBwbGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFj
a2dyb3VuZChibGVlZEF2b2lkYW5jZSwgYm94KTsKLSAgICAgICAgaWYgKGJveFNoYWRvd1Nob3Vs
ZEJlQXBwbGllZFRvQmFja2dyb3VuZCB8fCAhc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgfHwg
IWJnTGF5ZXItPmhhc09wYXF1ZUltYWdlKHRoaXMpIHx8ICFiZ0xheWVyLT5oYXNSZXBlYXRYWSgp
KSB7CisgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgfHwg
IXNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8ICFiZ0xheWVyLT5oYXNPcGFxdWVJbWFnZSgq
dGhpcykgfHwgIWJnTGF5ZXItPmhhc1JlcGVhdFhZKCkpIHsKICAgICAgICAgICAgIGlmICghYm94
U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGJhY2tn
cm91bmRSZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggM2M1NjNiMjc4ZGZkNDZkNmQwMDk3
NDRkYzdhODYwZWQyZDkzMzJhYS4uN2ZiYTU2MjEyODQ1MDI1NDcyNjExNmZlOTczNzA0ZGNmNjMy
YmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDI0ICsyNSwyMyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0ZpbGxMYXllciB7Ci0gICAgRmls
bExheWVyKiBtX25leHQ7CisgICAgRmlsbExheWVyKiBuZXh0OwogCi0gICAgUmVmUHRyPFN0eWxl
SW1hZ2U+IG1faW1hZ2U7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlOwogCi0gICAgTGVu
Z3RoIG1feFBvc2l0aW9uOwotICAgIExlbmd0aCBtX3lQb3NpdGlvbjsKKyAgICBMZW5ndGggeDsK
KyAgICBMZW5ndGggeTsKIAotICAgIExlbmd0aFNpemUgbV9zaXplTGVuZ3RoOworICAgIExlbmd0
aFNpemUgc2l6ZUxlbmd0aDsKIAotICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzOiAzMjsKLSAgICB1
bnNpZ25lZCBtX2JpdGZpZWxkczI6IDE7CisgICAgdW5zaWduZWQgYml0ZmllbGRzIDogMzI7Cisg
ICAgdW5zaWduZWQgYml0ZmllbGRzMiA6IDExOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KEZpbGxMYXllcikgPT0gc2l6ZW9mKFNhbWVTaXplQXNGaWxsTGF5ZXIpLCBGaWxsTGF5ZXJfc2hv
dWxkX3N0YXlfc21hbGwpOwogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihFRmlsbExheWVyVHlwZSB0
eXBlKQotICAgIDogbV9uZXh0KDApCi0gICAgLCBtX2ltYWdlKEZpbGxMYXllcjo6aW5pdGlhbEZp
bGxJbWFnZSh0eXBlKSkKKyAgICA6IG1faW1hZ2UoRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdl
KHR5cGUpKQogICAgICwgbV94UG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFhQb3NpdGlv
bih0eXBlKSkKICAgICAsIG1feVBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRp
b24odHlwZSkpCiAgICAgLCBtX3NpemVMZW5ndGgoRmlsbExheWVyOjppbml0aWFsRmlsbFNpemVM
ZW5ndGgodHlwZSkpCkBAIC03NCw3ICs3Myw3IEBAIEZpbGxMYXllcjo6RmlsbExheWVyKEVGaWxs
TGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXll
ciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IG5ldyBGaWxsTGF5ZXIoKm8ubV9uZXh0KSA6
IDApCisgICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4o
Km8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1f
eFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9u
KQpAQCAtMTA4LDE1ICsxMDcsMTMgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoY29uc3QgRmlsbExh
eWVyJiBvKQogCiBGaWxsTGF5ZXI6On5GaWxsTGF5ZXIoKQogewotICAgIGRlbGV0ZSBtX25leHQ7
CisgICAgLy8gRGVsZXRlIHRoZSBsYXllcnMgaW4gYSBsb29wIHJhdGhlciB0aGFuIGFsbG93aW5n
IHJlY3Vyc2l2ZSBjYWxscyB0byB0aGUgZGVzdHJ1Y3RvcnMuCisgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8RmlsbExheWVyPiBuZXh0ID0gc3RkOjptb3ZlKG1fbmV4dCk7IG5leHQ7IG5leHQgPSBz
dGQ6Om1vdmUobmV4dC0+bV9uZXh0KSkgeyB9CiB9CiAKIEZpbGxMYXllciYgRmlsbExheWVyOjpv
cGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAgIGlmIChtX25leHQgIT0gby5tX25l
eHQpIHsKLSAgICAgICAgZGVsZXRlIG1fbmV4dDsKLSAgICAgICAgbV9uZXh0ID0gby5tX25leHQg
PyBuZXcgRmlsbExheWVyKCpvLm1fbmV4dCkgOiAwOwotICAgIH0KKyAgICBtX25leHQgPSBvLm1f
bmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cjsK
IAogICAgIG1faW1hZ2UgPSBvLm1faW1hZ2U7CiAgICAgbV94UG9zaXRpb24gPSBvLm1feFBvc2l0
aW9uOwpAQCAtMTU1LDE0ICsxNTIsMTQgQEAgRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9y
PShjb25zdCBGaWxsTGF5ZXImIG8pCiBib29sIEZpbGxMYXllcjo6b3BlcmF0b3I9PShjb25zdCBG
aWxsTGF5ZXImIG8pIGNvbnN0CiB7CiAgICAgLy8gV2UgZG8gbm90IGNoZWNrIHRoZSAiaXNTZXQi
IGJvb2xlYW5zIGZvciBlYWNoIHByb3BlcnR5LCBzaW5jZSB0aG9zZSBhcmUgb25seSB1c2VkIGR1
cmluZyBpbml0aWFsIGNvbnN0cnVjdGlvbgotICAgIC8vIHRvIHByb3BhZ2F0ZSBwYXR0ZXJucyBp
bnRvIGxheWVycy4gIEFsbCBsYXllciBjb21wYXJpc29ucyBoYXBwZW4gYWZ0ZXIgdmFsdWVzIGhh
dmUgYWxsIGJlZW4gZmlsbGVkIGluIGFueXdheS4KKyAgICAvLyB0byBwcm9wYWdhdGUgcGF0dGVy
bnMgaW50byBsYXllcnMuIEFsbCBsYXllciBjb21wYXJpc29ucyBoYXBwZW4gYWZ0ZXIgdmFsdWVz
IGhhdmUgYWxsIGJlZW4gZmlsbGVkIGluIGFueXdheS4KICAgICByZXR1cm4gU3R5bGVJbWFnZTo6
aW1hZ2VzRXF1aXZhbGVudChtX2ltYWdlLmdldCgpLCBvLm1faW1hZ2UuZ2V0KCkpICYmIG1feFBv
c2l0aW9uID09IG8ubV94UG9zaXRpb24gJiYgbV95UG9zaXRpb24gPT0gby5tX3lQb3NpdGlvbgot
ICAgICAgICAgICAgJiYgbV9iYWNrZ3JvdW5kWE9yaWdpbiA9PSBvLm1fYmFja2dyb3VuZFhPcmln
aW4gJiYgbV9iYWNrZ3JvdW5kWU9yaWdpbiA9PSBvLm1fYmFja2dyb3VuZFlPcmlnaW4KLSAgICAg
ICAgICAgICYmIG1fYXR0YWNobWVudCA9PSBvLm1fYXR0YWNobWVudCAmJiBtX2NsaXAgPT0gby5t
X2NsaXAgJiYgbV9jb21wb3NpdGUgPT0gby5tX2NvbXBvc2l0ZQotICAgICAgICAgICAgJiYgbV9i
bGVuZE1vZGUgPT0gby5tX2JsZW5kTW9kZSAmJiBtX29yaWdpbiA9PSBvLm1fb3JpZ2luICYmIG1f
cmVwZWF0WCA9PSBvLm1fcmVwZWF0WAotICAgICAgICAgICAgJiYgbV9yZXBlYXRZID09IG8ubV9y
ZXBlYXRZICYmIG1fc2l6ZVR5cGUgPT0gby5tX3NpemVUeXBlICYmIG1fbWFza1NvdXJjZVR5cGUg
PT0gby5tX21hc2tTb3VyY2VUeXBlCi0gICAgICAgICAgICAmJiBtX3NpemVMZW5ndGggPT0gby5t
X3NpemVMZW5ndGggJiYgbV90eXBlID09IG8ubV90eXBlCi0gICAgICAgICAgICAmJiAoKG1fbmV4
dCAmJiBvLm1fbmV4dCkgPyAqbV9uZXh0ID09ICpvLm1fbmV4dCA6IG1fbmV4dCA9PSBvLm1fbmV4
dCk7CisgICAgICAgICYmIG1fYmFja2dyb3VuZFhPcmlnaW4gPT0gby5tX2JhY2tncm91bmRYT3Jp
Z2luICYmIG1fYmFja2dyb3VuZFlPcmlnaW4gPT0gby5tX2JhY2tncm91bmRZT3JpZ2luCisgICAg
ICAgICYmIG1fYXR0YWNobWVudCA9PSBvLm1fYXR0YWNobWVudCAmJiBtX2NsaXAgPT0gby5tX2Ns
aXAgJiYgbV9jb21wb3NpdGUgPT0gby5tX2NvbXBvc2l0ZQorICAgICAgICAmJiBtX2JsZW5kTW9k
ZSA9PSBvLm1fYmxlbmRNb2RlICYmIG1fb3JpZ2luID09IG8ubV9vcmlnaW4gJiYgbV9yZXBlYXRY
ID09IG8ubV9yZXBlYXRYCisgICAgICAgICYmIG1fcmVwZWF0WSA9PSBvLm1fcmVwZWF0WSAmJiBt
X3NpemVUeXBlID09IG8ubV9zaXplVHlwZSAmJiBtX21hc2tTb3VyY2VUeXBlID09IG8ubV9tYXNr
U291cmNlVHlwZQorICAgICAgICAmJiBtX3NpemVMZW5ndGggPT0gby5tX3NpemVMZW5ndGggJiYg
bV90eXBlID09IG8ubV90eXBlCisgICAgICAgICYmICgobV9uZXh0ICYmIG8ubV9uZXh0KSA/ICpt
X25leHQgPT0gKm8ubV9uZXh0IDogbV9uZXh0ID09IG8ubV9uZXh0KTsKIH0KIAogdm9pZCBGaWxs
TGF5ZXI6OmZpbGxVbnNldFByb3BlcnRpZXMoKQpAQCAtMjkwLDE4ICsyODcsMTUgQEAgdm9pZCBG
aWxsTGF5ZXI6OmZpbGxVbnNldFByb3BlcnRpZXMoKQogCiB2b2lkIEZpbGxMYXllcjo6Y3VsbEVt
cHR5TGF5ZXJzKCkKIHsKLSAgICBGaWxsTGF5ZXIqIG5leHQ7Ci0gICAgZm9yIChGaWxsTGF5ZXIq
IHAgPSB0aGlzOyBwOyBwID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gcC0+bV9uZXh0OwotICAg
ICAgICBpZiAobmV4dCAmJiAhbmV4dC0+aXNJbWFnZVNldCgpKSB7Ci0gICAgICAgICAgICBkZWxl
dGUgbmV4dDsKLSAgICAgICAgICAgIHAtPm1fbmV4dCA9IDA7CisgICAgZm9yIChGaWxsTGF5ZXIq
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAg
ICAgICBpZiAobGF5ZXItPm1fbmV4dCAmJiAhbGF5ZXItPm1fbmV4dC0+aXNJbWFnZVNldCgpKSB7
CisgICAgICAgICAgICBsYXllci0+bV9uZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgRUZpbGxCb3ggY2xpcE1heChFRmlsbEJv
eCBjbGlwQSwgRUZpbGxCb3ggY2xpcEIpCitzdGF0aWMgaW5saW5lIEVGaWxsQm94IGNsaXBNYXgo
RUZpbGxCb3ggY2xpcEEsIEVGaWxsQm94IGNsaXBCKQogewogICAgIGlmIChjbGlwQSA9PSBCb3Jk
ZXJGaWxsQm94IHx8IGNsaXBCID09IEJvcmRlckZpbGxCb3gpCiAgICAgICAgIHJldHVybiBCb3Jk
ZXJGaWxsQm94OwpAQCAtMzE0LDExICszMDgsMTUgQEAgc3RhdGljIEVGaWxsQm94IGNsaXBNYXgo
RUZpbGxCb3ggY2xpcEEsIEVGaWxsQm94IGNsaXBCKQogCiB2b2lkIEZpbGxMYXllcjo6Y29tcHV0
ZUNsaXBNYXgoKSBjb25zdAogewotICAgIGlmIChtX25leHQpIHsKLSAgICAgICAgbV9uZXh0LT5j
b21wdXRlQ2xpcE1heCgpOwotICAgICAgICBtX2NsaXBNYXggPSBjbGlwTWF4KGNsaXAoKSwgbV9u
ZXh0LT5jbGlwKCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NsaXBNYXggPSBtX2NsaXA7Cisg
ICAgVmVjdG9yPGNvbnN0IEZpbGxMYXllciosIDQ+IGxheWVyczsKKyAgICBmb3IgKGF1dG8qIGxh
eWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkKKyAgICAgICAg
bGF5ZXJzLmFwcGVuZChsYXllcik7CisgICAgRUZpbGxCb3ggY29tcHV0ZWRDbGlwTWF4ID0gVGV4
dEZpbGxCb3g7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGF5ZXJzLnNpemUoKTsgaTsgLS1pKSB7
CisgICAgICAgIGF1dG8mIGxheWVyID0gKmxheWVyc1tpIC0gMV07CisgICAgICAgIGNvbXB1dGVk
Q2xpcE1heCA9IGNsaXBNYXgoY29tcHV0ZWRDbGlwTWF4LCBsYXllci5jbGlwKCkpOworICAgICAg
ICBsYXllci5tX2NsaXBNYXggPSBjb21wdXRlZENsaXBNYXg7CisgICAgfQogfQogCiBib29sIEZp
bGxMYXllcjo6Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhib29sIGZpcnN0TGF5ZXIpIGNvbnN0CkBA
IC0zMjgsMjkgKzMyNiwyNSBAQCBib29sIEZpbGxMYXllcjo6Y2xpcE9jY2x1ZGVzTmV4dExheWVy
cyhib29sIGZpcnN0TGF5ZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpcCA9PSBtX2NsaXBNYXg7
CiB9CiAKLWJvb2wgRmlsbExheWVyOjpjb250YWluc0ltYWdlKFN0eWxlSW1hZ2UqIHMpIGNvbnN0
Citib29sIEZpbGxMYXllcjo6Y29udGFpbnNJbWFnZShTdHlsZUltYWdlJiBpbWFnZSkgY29uc3QK
IHsKLSAgICBpZiAoIXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9pbWFnZSAm
JiAqcyA9PSAqbV9pbWFnZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1fbmV4dCkK
LSAgICAgICAgcmV0dXJuIG1fbmV4dC0+Y29udGFpbnNJbWFnZShzKTsKKyAgICBmb3IgKGF1dG8q
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAg
ICAgICBpZiAobGF5ZXItPm1faW1hZ2UgJiYgaW1hZ2UgPT0gKmxheWVyLT5tX2ltYWdlKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRlZCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgRmlsbExh
eWVyKiBjdXJyOwotICAgIGZvciAoY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKGN1cnItPm1faW1hZ2UgJiYgIWN1cnItPm1faW1hZ2UtPmlzTG9h
ZGVkKCkpCisgICAgZm9yIChhdXRvKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVy
LT5tX25leHQuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5tX2ltYWdlICYmICFsYXllci0+
bV9pbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBGaWxsTGF5ZXI6Omhhc09w
YXF1ZUltYWdlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKSBjb25zdAogewogICAgIGlm
ICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDE4ICszNTIsMzAgQEAg
Ym9vbCBGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKSBjb25zdAogICAgIGlmIChtX2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVDbGVhciB8fCBtX2Nv
bXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChtX2JsZW5kTW9kZSAhPSBCbGVuZE1vZGVOb3JtYWwpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9ibGVuZE1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsICYmIG1fY29tcG9zaXRl
ID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKCZyZW5k
ZXJlcik7Cit9CiAKLSAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlU291cmNlT3ZlcikK
LSAgICAgICAgcmV0dXJuIG1faW1hZ2UtPmtub3duVG9CZU9wYXF1ZShyZW5kZXJlcik7Citib29s
IEZpbGxMYXllcjo6aGFzUmVwZWF0WFkoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlcGVhdFgg
PT0gUmVwZWF0RmlsbCAmJiBtX3JlcGVhdFkgPT0gUmVwZWF0RmlsbDsKK30KIAorYm9vbCBGaWxs
TGF5ZXI6Omhhc0ltYWdlKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gdGhpczsg
bGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAgICAgICBpZiAobGF5ZXIt
Pm1faW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIEZpbGxMYXllcjo6aGFzUmVwZWF0WFkoKSBjb25zdAorYm9vbCBGaWxs
TGF5ZXI6Omhhc0ZpeGVkSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX3JlcGVhdFggPT0g
UmVwZWF0RmlsbCAmJiBtX3JlcGVhdFkgPT0gUmVwZWF0RmlsbDsKKyAgICBmb3IgKGF1dG8qIGxh
eWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgeworICAgICAg
ICBpZiAobGF5ZXItPm1faW1hZ2UgJiYgbGF5ZXItPm1fYXR0YWNobWVudCA9PSBGaXhlZEJhY2tn
cm91bmRBdHRhY2htZW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IGQ0OWE1YzJjNzY3MDNmZmU2ODUzOTA3
NTI4YzJhNDc0YmU1Y2UxNjguLmNlNGI0ZjMzNzUwOWYzMjRlMzAzZTlmY2UwNDk3MjA2NjQyYWNh
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTI2LDcgKzI2LDYgQEAKICNkZWZpbmUgRmlsbExheWVyX2gKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKLSNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJM
ZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRl
ICJTdHlsZUltYWdlLmgiCkBAIC00MiwyOSArNDEsMzAgQEAgc3RydWN0IEZpbGxTaXplIHsKICAg
ICB7CiAgICAgfQogCi0gICAgRmlsbFNpemUoRUZpbGxTaXplVHlwZSB0LCBMZW5ndGhTaXplIHNp
emUpCi0gICAgICAgIDogdHlwZSh0KQotICAgICAgICAsIHNpemUoc3RkOjptb3ZlKHNpemUpKQor
ICAgIEZpbGxTaXplKEVGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkK
KyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgc2l6ZShzaXplKQogICAgIHsKICAgICB9
CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsbFNpemUmIG8pIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gdHlwZSA9PSBvLnR5cGUgJiYgc2l6ZSA9PSBvLnNpemU7Ci0gICAgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWxsU2l6ZSYgbykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLQogICAgIEVGaWxsU2l6ZVR5cGUgdHlw
ZTsKICAgICBMZW5ndGhTaXplIHNpemU7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbGxTaXplJiBhLCBjb25zdCBGaWxsU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gYS50eXBl
ID09IGIudHlwZSAmJiBhLnNpemUgPT0gYi5zaXplOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEZpbGxTaXplJiBhLCBjb25zdCBGaWxsU2l6ZSYgYikKK3sKKyAgICByZXR1cm4g
IShhID09IGIpOworfQorCiBjbGFzcyBGaWxsTGF5ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEZpbGxMYXllcihFRmlsbExheWVyVHlwZSk7CisgICAgZXhw
bGljaXQgRmlsbExheWVyKEVGaWxsTGF5ZXJUeXBlKTsKICAgICB+RmlsbExheWVyKCk7CiAKICAg
ICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBGaWxsU2l6ZShzdGF0aWNfY2FzdDxFRmlsbFNpemVUeXBlPihtX3NpemVUeXBlKSwgbV9zaXpl
TGVuZ3RoKTsgfQogICAgIEVNYXNrU291cmNlVHlwZSBtYXNrU291cmNlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVNYXNrU291cmNlVHlwZT4obV9tYXNrU291cmNlVHlwZSk7IH0K
IAotICAgIGNvbnN0IEZpbGxMYXllciogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQot
ICAgIEZpbGxMYXllciogbmV4dCgpIHsgcmV0dXJuIG1fbmV4dDsgfQorICAgIGNvbnN0IEZpbGxM
YXllciogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQorICAgIEZpbGxMYXll
ciogbmV4dCgpIHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQogCiAgICAgYm9vbCBpc0ltYWdlU2V0
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNldDsgfQogICAgIGJvb2wgaXNYUG9zaXRpb25TZXQo
KSBjb25zdCB7IHJldHVybiBtX3hQb3NTZXQ7IH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1NpemVTZXQoKSBjb25zdCB7IHJldHVybiBtX3NpemVUeXBlICE9IFNpemVO
b25lOyB9CiAgICAgYm9vbCBpc01hc2tTb3VyY2VUeXBlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9t
YXNrU291cmNlVHlwZVNldDsgfQogCi0gICAgdm9pZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IGkpIHsgbV9pbWFnZSA9IGk7IG1faW1hZ2VTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBz
ZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsg
bV9pbWFnZVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldFhQb3NpdGlvbihMZW5ndGggbGVuZ3Ro
KSB7IG1feFBvc2l0aW9uID0gc3RkOjptb3ZlKGxlbmd0aCk7IG1feFBvc1NldCA9IHRydWU7IH0K
ICAgICB2b2lkIHNldFlQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IG1feVBvc2l0aW9uID0gc3Rk
Ojptb3ZlKGxlbmd0aCk7IG1feVBvc1NldCA9IHRydWU7IH0KICAgICB2b2lkIHNldEJhY2tncm91
bmRYT3JpZ2luKEJhY2tncm91bmRFZGdlT3JpZ2luIG8pIHsgbV9iYWNrZ3JvdW5kWE9yaWdpbiA9
IG87IG1fYmFja2dyb3VuZE9yaWdpblNldCA9IHRydWU7IH0KQEAgLTExOSwxNiArMTE5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0TWFza1NvdXJjZVR5cGUoRU1hc2tTb3VyY2VUeXBlIG0pIHsg
bV9tYXNrU291cmNlVHlwZSA9IG07IG1fbWFza1NvdXJjZVR5cGVTZXQgPSB0cnVlOyB9CiAKICAg
ICB2b2lkIGNsZWFySW1hZ2UoKSB7IG1faW1hZ2UuY2xlYXIoKTsgbV9pbWFnZVNldCA9IGZhbHNl
OyB9Ci0gICAgdm9pZCBjbGVhclhQb3NpdGlvbigpCi0gICAgewotICAgICAgICBtX3hQb3NTZXQg
PSBmYWxzZTsKLSAgICAgICAgbV9iYWNrZ3JvdW5kT3JpZ2luU2V0ID0gZmFsc2U7Ci0gICAgfQot
ICAgIHZvaWQgY2xlYXJZUG9zaXRpb24oKQotICAgIHsKLSAgICAgICAgbV95UG9zU2V0ID0gZmFs
c2U7Ci0gICAgICAgIG1fYmFja2dyb3VuZE9yaWdpblNldCA9IGZhbHNlOwotICAgIH0KKyAgICB2
b2lkIGNsZWFyWFBvc2l0aW9uKCkgeyBtX3hQb3NTZXQgPSBmYWxzZTsgbV9iYWNrZ3JvdW5kT3Jp
Z2luU2V0ID0gZmFsc2U7IH0KKyAgICB2b2lkIGNsZWFyWVBvc2l0aW9uKCkgeyBtX3lQb3NTZXQg
PSBmYWxzZTsgbV9iYWNrZ3JvdW5kT3JpZ2luU2V0ID0gZmFsc2U7IH0KIAogICAgIHZvaWQgY2xl
YXJBdHRhY2htZW50KCkgeyBtX2F0dGFjaG1lbnRTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xl
YXJDbGlwKCkgeyBtX2NsaXBTZXQgPSBmYWxzZTsgfQpAQCAtMTQwLDM1ICsxMzIsMTkgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJTaXplKCkgeyBtX3NpemVUeXBlID0gU2l6ZU5vbmU7IH0KICAg
ICB2b2lkIGNsZWFyTWFza1NvdXJjZVR5cGUoKSB7IG1fbWFza1NvdXJjZVR5cGVTZXQgPSBmYWxz
ZTsgfQogCi0gICAgdm9pZCBzZXROZXh0KEZpbGxMYXllciogbikgeyBpZiAobV9uZXh0ICE9IG4p
IHsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gbjsgfSB9CisgICAgdm9pZCBzZXROZXh0KHN0ZDo6
dW5pcXVlX3B0cjxGaWxsTGF5ZXI+IG5leHQpIHsgbV9uZXh0ID0gc3RkOjptb3ZlKG5leHQpOyB9
CiAKLSAgICBGaWxsTGF5ZXImIG9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8pOyAgICAKLSAg
ICBGaWxsTGF5ZXIoY29uc3QgRmlsbExheWVyJiBvKTsKKyAgICBGaWxsTGF5ZXImIG9wZXJhdG9y
PShjb25zdCBGaWxsTGF5ZXImKTsKKyAgICBGaWxsTGF5ZXIoY29uc3QgRmlsbExheWVyJik7CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsbExheWVyJiBvKSBjb25zdDsKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgRmlsbExheWVyJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWxs
TGF5ZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsbExheWVyJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgIGJvb2wgY29udGFp
bnNJbWFnZShTdHlsZUltYWdlKikgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0ltYWdlKFN0eWxl
SW1hZ2UmKSBjb25zdDsKICAgICBib29sIGltYWdlc0FyZUxvYWRlZCgpIGNvbnN0OwotCi0gICAg
Ym9vbCBoYXNJbWFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9pbWFnZSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0LT5oYXNJ
bWFnZSgpIDogZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNGaXhlZEltYWdlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmIChtX2ltYWdlICYmIG1fYXR0YWNobWVudCA9PSBGaXhlZEJhY2tn
cm91bmRBdHRhY2htZW50KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVy
biBtX25leHQgPyBtX25leHQtPmhhc0ZpeGVkSW1hZ2UoKSA6IGZhbHNlOwotICAgIH0KLQotICAg
IGJvb2wgaGFzT3BhcXVlSW1hZ2UoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIGJv
b2wgaGFzSW1hZ2UoKSBjb25zdDsKKyAgICBib29sIGhhc0ZpeGVkSW1hZ2UoKSBjb25zdDsKKyAg
ICBib29sIGhhc09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKICAgICBi
b29sIGhhc1JlcGVhdFhZKCkgY29uc3Q7CiAgICAgYm9vbCBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJz
KGJvb2wgZmlyc3RMYXllcikgY29uc3Q7CiAKQEAgLTE5Nyw5ICsxNzMsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBjb21wdXRlQ2xpcE1heCgpIGNvbnN0OwogCi0gICAgRmlsbExheWVyKCkgeyB9
Ci0KLSAgICBGaWxsTGF5ZXIqIG1fbmV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsbExheWVy
PiBtX25leHQ7CiAKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9pbWFnZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>