<?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>142115</bug_id>
          
          <creation_ts>2015-02-27 16:01:23 -0800</creation_ts>
          <short_desc>Stale WeakGCMap entries are keeping tons of WeakBlocks alive unnecessarily.</short_desc>
          <delta_ts>2015-03-09 17:10:12 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142442</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072900</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-27 16:01:23 -0800</bug_when>
    <thetext>I&apos;ve noticed that it&apos;s very common for the two WeakGCMaps in VM::prototypeMap to have a large number of zombie Weaks that never get cleared due to the GC strategy of WeakGCMap.
Since Weak keeps its WeakBlock alive, which in turn keeps the MarkedBlock alive (if I understand correctly) these zombies end up holding on to a lot of memory that they&apos;re not even using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072902</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-27 16:02:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/19992268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073108</commentid>
    <comment_count>2</comment_count>
      <attachid>247617</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-28 16:19:11 -0800</bug_when>
    <thetext>Created attachment 247617
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073128</commentid>
    <comment_count>3</comment_count>
      <attachid>247617</attachid>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-02-28 18:17:45 -0800</bug_when>
    <thetext>Comment on attachment 247617
Proposed patch

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

I&apos;d be interested to see how this affects pause times, especially during EdenCollections. It seems like it might be easy to make this generational-friendly, but it also might not be a big contributor to pause times so maybe it&apos;s not worth the effort.

Overall, I sort of like the other solution you mentioned in the ChangeLog. Seems kinda hacky to just fix these two/three maps :-/

&gt; Source/JavaScriptCore/heap/Heap.cpp:1050
&gt; +    vm()-&gt;prototypeMap.gcMap();
&gt; +    vm()-&gt;stringCache.gcMap();

I see that WeakGCMap had a &quot;gcMap&quot; method before. I think that&apos;s an odd name for a method that removes stuff from something. When I first read it, gcMap looked like a noun rather than an action (e.g. a &quot;Weak GC Map&quot;). Maybe while we&apos;re here we could rename these? Some ideas: clearStaleValues, pruneStaleValues, pruneStaleEntries, pruneDeadValues, pruneReapedValues, or something else along those lines.

Also, if possible, could you factor these calls out into a separate helper method with its own GCPHASE? That way if we hit some pathological case w.r.t. collection times in the future, it will show up in the phase timings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073132</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-28 18:49:51 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 247617 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247617&amp;action=review
&gt; 
&gt; I&apos;d be interested to see how this affects pause times, especially during
&gt; EdenCollections. It seems like it might be easy to make this
&gt; generational-friendly, but it also might not be a big contributor to pause
&gt; times so maybe it&apos;s not worth the effort.

Sure, I&apos;ll get you some timings once I implement your other suggestions.

&gt; Overall, I sort of like the other solution you mentioned in the ChangeLog.
&gt; Seems kinda hacky to just fix these two/three maps :-/

Yeah, I know. This was rather gimped with good back:buck ratio. I&apos;ll put something together where maps register with the heap instead.

&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:1050
&gt; &gt; +    vm()-&gt;prototypeMap.gcMap();
&gt; &gt; +    vm()-&gt;stringCache.gcMap();
&gt; 
&gt; I see that WeakGCMap had a &quot;gcMap&quot; method before. I think that&apos;s an odd name
&gt; for a method that removes stuff from something. When I first read it, gcMap
&gt; looked like a noun rather than an action (e.g. a &quot;Weak GC Map&quot;). Maybe while
&gt; we&apos;re here we could rename these? Some ideas: clearStaleValues,
&gt; pruneStaleValues, pruneStaleEntries, pruneDeadValues, pruneReapedValues, or
&gt; something else along those lines.

Sure, those ideas are all nice!

&gt; Also, if possible, could you factor these calls out into a separate helper
&gt; method with its own GCPHASE? That way if we hit some pathological case
&gt; w.r.t. collection times in the future, it will show up in the phase timings.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073325</commentid>
    <comment_count>5</comment_count>
      <attachid>247673</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-02 08:58:20 -0800</bug_when>
    <thetext>Created attachment 247673
Proposed patch

Made it Better(tm) with Mark&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073352</commentid>
    <comment_count>6</comment_count>
      <attachid>247677</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-02 09:46:20 -0800</bug_when>
    <thetext>Created attachment 247677
Proposed patch

Now with more build juice for EFL and Windows: added WeakGCMapInlines.h to JSCInlines.h, hopefully that will get picked up where it was missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073453</commentid>
    <comment_count>7</comment_count>
      <attachid>247702</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-02 14:55:25 -0800</bug_when>
    <thetext>Created attachment 247702
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073503</commentid>
    <comment_count>8</comment_count>
      <attachid>247714</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-02 16:16:45 -0800</bug_when>
    <thetext>Created attachment 247714
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073507</commentid>
    <comment_count>9</comment_count>
      <attachid>247714</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-02 16:24:36 -0800</bug_when>
    <thetext>Comment on attachment 247714
Proposed patch

r=me

My one objection to this solution is that it&apos;s not terribly scalable to lots of maps. That&apos;s OK for now since we don&apos;t have lots of maps.

I think the best long-term solution is for a weak block to notice when it contains only dead entries, and to allow itself to be recycled (except for those dead entries) by another MarkedBlock. A WeakBlock only needs to be tied to a MarkedBlock so long as the WeakBlock actually contains at least one pointer into the MarkedBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074158</commentid>
    <comment_count>10</comment_count>
      <attachid>247714</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 12:00:24 -0800</bug_when>
    <thetext>Comment on attachment 247714
Proposed patch

Clearing flags on attachment: 247714

Committed r181010: &lt;http://trac.webkit.org/changeset/181010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074159</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 12:00:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075302</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-07 14:15:26 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 142442</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075787</commentid>
    <comment_count>13</comment_count>
      <attachid>248283</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-09 15:43:31 -0700</bug_when>
    <thetext>Created attachment 248283
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075798</commentid>
    <comment_count>14</comment_count>
      <attachid>248283</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-09 16:12:39 -0700</bug_when>
    <thetext>Comment on attachment 248283
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075801</commentid>
    <comment_count>15</comment_count>
      <attachid>248286</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-09 16:19:12 -0700</bug_when>
    <thetext>Created attachment 248286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075817</commentid>
    <comment_count>16</comment_count>
      <attachid>248286</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-09 17:10:07 -0700</bug_when>
    <thetext>Comment on attachment 248286
Patch

Clearing flags on attachment: 248286

Committed r181297: &lt;http://trac.webkit.org/changeset/181297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075818</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-09 17:10:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247617</attachid>
            <date>2015-02-28 16:19:11 -0800</date>
            <delta_ts>2015-03-02 08:58:20 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-142115.diff</filename>
            <type>text/plain</type>
            <size>4009</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcyYTY0ZDEuLmYxOGRmMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAyLTI4ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFsZSBlbnRyaWVzIGluIFdlYWtHQ01h
cHMgYXJlIGtlZXBpbmcgdG9ucyBvZiBXZWFrQmxvY2tzIGFsaXZlIHVubmVjZXNzYXJpbHkuCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDIxMTU+CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xOTk5MjI2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcnVuZSBzdGFsZSBlbnRyaWVzIGZyb20gdGhlIFZNJ3MgcHJvdG90eXBlIG1hcCAm
IHN0cmluZyBjYWNoZSBhcyBwYXJ0IG9mIG9yZGluYXJ5CisgICAgICAgIGdhcmJhZ2UgY29sbGVj
dGlvbi4gVGhpcyBmcmVlcyB1cCB0b25zIG9mIHByZXZpb3VzbHktc3R1Y2sgV2Vha0Jsb2NrcyB0
aGF0IHdlcmUKKyAgICAgICAgb25seSBzaXR0aW5nIGFyb3VuZCB3aXRoIGZpbmFsaXplZCBoYW5k
bGVzIHdhaXRpbmcgdG8gZGllLgorCisgICAgICAgIEEgcG9zc2libGUgZnV0dXJlIGltcHJvdmVt
ZW50IGNvdWxkIGJlIHRvIGhhdmUgV2Vha0dDTWFwcyByZWdpc3RlciB0aGVtc2VsdmVzIHdpdGgK
KyAgICAgICAgdGhlIEdDIGhlYXAgc28gdGhleSBjYW4gcmVjZWl2ZSBjYWxsYmFja3Mgd2hlbiBw
cnVuaW5nIGNvdWxkIGJlIHByb2ZpdGFibGUuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgor
ICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogR0MgdGhlIHRocmVlIGJpZ2dlc3QgV2Vha0dD
TWFwIG9mZmVuZGVycyBhZnRlciB0aGUgV2Vha1NldCByZWFwaW5nIHBoYXNlLgorCisgICAgICAg
ICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKEpTQzo6UHJvdG90eXBlTWFwOjpn
Y01hcCk6IEFkZGVkLCBjYWxscyBnY01hcCgpIG9uIGl0cyB0d28gaW50ZXJuYWwgbWFwcy4KKwor
ICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6
Z2NNYXApOiBNYWtlIGdjTWFwKCkgcHVibGljIGFuZCByZXdyaXRlIGl0IHRvIHVzZSBIYXNoTWFw
OjpyZW1vdmVJZigpIHdoaWNoCisgICAgICAgIGlzIGZhciBtb3JlIGVmZmljaWVudCBzaW5jZSBp
dCBvbmx5IHJlYWxsb2NhdGVzIG9uY2Ugb3Igbm90IGF0IGFsbC4KKwogMjAxNS0wMi0yNyAgQmVu
amFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2Ug
dGhlIHdheSBudW1iZXIgY29uc3RhbnRzIGFyZSB3cml0dGVuIHRvIGhlbHAgdHlwZSBzcGVjdWxh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA0ZmNjZTcwLi5kODQ3YzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTA0NSw2ICsxMDQ1LDEwIEBA
IHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogICAgICAg
ICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOwogCiAgICAg
cmVhcFdlYWtIYW5kbGVzKCk7CisKKyAgICB2bSgpLT5wcm90b3R5cGVNYXAuZ2NNYXAoKTsKKyAg
ICB2bSgpLT5zdHJpbmdDYWNoZS5nY01hcCgpOworCiAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsK
ICAgICBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlTWFwLmgKaW5kZXggOTc1MmNhNy4uMzE0MDYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKQEAgLTQyLDYgKzQyLDggQEAg
cHVibGljOgogICAgIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7CiAgICAgVHJpU3RhdGUg
aXNQcm90b3R5cGUoSlNPYmplY3QqKSBjb25zdDsgLy8gUmV0dXJucyBhIGNvbnNlcnZhdGl2ZSBl
c3RpbWF0ZS4KIAorICAgIHZvaWQgZ2NNYXAoKTsKKwogcHJpdmF0ZToKICAgICBXZWFrR0NNYXA8
SlNPYmplY3QqLCBKU09iamVjdD4gbV9wcm90b3R5cGVzOwogICAgIHR5cGVkZWYgV2Vha0dDTWFw
PHN0ZDo6cGFpcjxKU09iamVjdCosIHVuc2lnbmVkPiwgU3RydWN0dXJlPiBTdHJ1Y3R1cmVNYXA7
CkBAIC02MCw2ICs2MiwxMiBAQCBpbmxpbmUgVHJpU3RhdGUgUHJvdG90eXBlTWFwOjppc1Byb3Rv
dHlwZShKU09iamVjdCogb2JqZWN0KSBjb25zdAogICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwog
fQogCitpbmxpbmUgdm9pZCBQcm90b3R5cGVNYXA6OmdjTWFwKCkKK3sKKyAgICBtX3Byb3RvdHlw
ZXMuZ2NNYXAoKTsKKyAgICBtX3N0cnVjdHVyZXMuZ2NNYXAoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBQcm90b3R5cGVNYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaAppbmRleCBjYzBmYjhmLi41YTNiZWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAzLDIyICsxMDMsMTYgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZmluZChrZXkpICE9IG1fbWFwLmVuZCgpOwogICAgIH0KIAotcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3QgaW50IG1pbkdDVGhyZXNob2xkID0gMzsKLQogICAgIE5F
VkVSX0lOTElORSB2b2lkIGdjTWFwKCkKICAgICB7Ci0gICAgICAgIFZlY3RvcjxLZXlUeXBlLCA0
PiB6b21iaWVzOwotCi0gICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpLCBl
bmQgPSBtX21hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoIWl0
LT52YWx1ZSkKLSAgICAgICAgICAgICAgICB6b21iaWVzLmFwcGVuZChpdC0+a2V5KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgem9tYmllcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIG1fbWFwLnJlbW92ZSh6b21iaWVzW2ldKTsKKyAgICAgICAgbV9tYXAu
cmVtb3ZlSWYoW10odHlwZW5hbWUgSGFzaE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGUmIGVudHJ5
KSB7CisgICAgICAgICAgICByZXR1cm4gIWVudHJ5LnZhbHVlOworICAgICAgICB9KTsKICAgICB9
CiAKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludCBtaW5HQ1RocmVzaG9sZCA9IDM7CisK
ICAgICB2b2lkIGdjTWFwSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKG1fbWFwLnNpemUo
KSA8IG1fZ2NUaHJlc2hvbGQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247673</attachid>
            <date>2015-03-02 08:58:20 -0800</date>
            <delta_ts>2015-03-02 09:46:20 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-142115-2.diff</filename>
            <type>text/plain</type>
            <size>18200</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaAppbmRleCBmN2I5MWRhLi45MDM3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC00MSw5
ICs0MSw5IEBAIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIEpTQzo6SlNPYmplY3Q+IFdl
YWtNYXBUeXBlOwogCiBzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0TWFwIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFrTWFw
RGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxPcGFxdWVKU1dlYWtP
YmplY3RNYXA+IGNyZWF0ZShKU0M6OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJv
eWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wYXF1ZUpTV2Vha09iamVjdE1hcChkYXRhLCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAodm0sIGRhdGEsIGNhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgV2Vha01hcFR5cGUmIG1hcCgpIHsgcmV0dXJuIG1fbWFwOyB9CkBAIC01
NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BhcXVlSlNXZWFr
T2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNr
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIE9wYXF1ZUpTV2Vha09iamVjdE1hcChKU0M6
OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgICAgIDogbV9tYXAodm0pCisgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKaW5kZXggNDQ2
Y2Y5MC4uOTI1YzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtNDYsNyArNDcsNyBAQCBKU1dlYWtPYmplY3RNYXBSZWYgSlNXZWFrT2JqZWN0TWFwQ3JlYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBwcml2YXRlRGF0YQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICBSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBtYXAgPSBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA6OmNyZWF0ZShwcml2YXRlRGF0YSwgY2FsbGJhY2spOworICAgIFJlZlB0cjxPcGFxdWVK
U1dlYWtPYmplY3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMDYy
N2EzLi4yNDUxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWFrR0NNYXAuaCIKKyNpbXBv
cnQgIldlYWtHQ01hcElubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvVENTcGluTG9jay5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQ2LDcgKzU0
Nyw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4g
Q29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBlck1hcCB7
CiAgICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9j
bGFzc01hcDsKLSAgICBKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4gbV9jYWNoZWRK
U1dyYXBwZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpK
U09iamVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKICAgICBOU01hcFRhYmxlICptX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIApAQCAtNTU5LDcgKzU2MCw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5Owog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owog
ICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtl
eU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBd
OwotICAgIAorCisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSktPnZtKCkpOworCiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NsYXNz
TWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTU5MCw3ICs1OTMsNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKIAogLSAoSlNWYWx1ZSAq
KWpzV3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpKU09iamVjdCoganNX
cmFwcGVyID0gbV9jYWNoZWRKU1dyYXBwZXJzLmdldChvYmplY3QpOworICAgIEpTQzo6SlNPYmpl
Y3QqIGpzV3JhcHBlciA9IG1fY2FjaGVkSlNXcmFwcGVycy0+Z2V0KG9iamVjdCk7CiAgICAgaWYg
KGpzV3JhcHBlcikKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYoanNXcmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIApAQCAtNjA2LDcgKzYwOSw3
IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29u
c3RydWN0b3JQcm90b3R5cGVQYWlyOwogICAgIC8vICgxKSBGb3IgaW1tb3J0YWwgb2JqZWN0cyBK
U1ZhbHVlcyB3aWxsIGVmZmVjdGl2ZWx5IGxlYWsgYW5kIHRoaXMgcmVzdWx0cyBpbiBlcnJvciBv
dXRwdXQgYmVpbmcgbG9nZ2VkIC0gd2Ugc2hvdWxkIGF2b2lkIGFkZGluZyBhc3NvY2lhdGVkIG9i
amVjdHMgdG8gaW1tb3J0YWwgb2JqZWN0cy4KICAgICAvLyAoMikgQSBsb25nIGxpdmVkIG9iamVj
dCBtYXkgcmFjayB1cCBtYW55IEpTVmFsdWVzLiBXaGVuIHRoZSBjb250ZXh0cyBhcmUgcmVsZWFz
ZWQgdGhlc2Ugd2lsbCB1bnByb3RlY3QgdGhlIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBvYmplY3Rz
LAogICAgIC8vICAgICBidXQgc3RpbGwsIHdvdWxkIHByb2JhYmx5IG5pY2VyIGlmIHdlIG1hZGUg
aXQgc28gdGhhdCBvbmx5IG9uZSBhc3NvY2lhdGVkIG9iamVjdCB3YXMgcmVxdWlyZWQsIGJyb2Fk
Y2FzdGluZyBvYmplY3QgZGVhbGxvYy4KLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMuc2V0KG9iamVj
dCwganNXcmFwcGVyKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMtPnNldChvYmplY3QsIGpzV3Jh
cHBlcik7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYoanNX
cmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNzJhNjRkMS4uODM3NGE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjYgQEAKKzIwMTUtMDMtMDEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWxlIGVudHJpZXMgaW4gV2Vha0dDTWFwcyBhcmUga2VlcGluZyB0b25zIG9m
IFdlYWtCbG9ja3MgYWxpdmUgdW5uZWNlc3NhcmlseS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjExNT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTkyMjY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBydW5lIHN0YWxlIGVu
dHJpZXMgZnJvbSBXZWFrR0NNYXBzIGFzIHBhcnQgb2YgZXZlcnkgZnVsbCBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisgICAgICAgIFRoaXMgZnJlZXMgdXAgdG9ucyBvZiBwcmV2aW91c2x5LXN0dWNrIFdl
YWtCbG9ja3MgdGhhdCB3ZXJlIG9ubHkgc2l0dGluZyBhcm91bmQKKyAgICAgICAgd2l0aCBmaW5h
bGl6ZWQgaGFuZGxlcyB3YWl0aW5nIHRvIGRpZS4KKworICAgICAgICBOb3RlIHRoYXQgV2Vha0dD
TWFwcyByZWdpc3Rlci91bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgR0MgaGVhcCBpbiB0
aGVpcgorICAgICAgICBjdG9yL2R0b3IsIHNvIGNyZWF0aW5nIG9uZSBub3cgcmVxdWlyZXMgcGFz
c2luZyB0aGUgVk0uCisKKyAgICAgICAgQXZlcmFnZSB0aW1lIHNwZW50IGluIHRoZSBQcnVuaW5n
U3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMgR0MgcGhhc2UgYXBwZWFycworICAgICAgICB0byBi
ZSBiZXR3ZWVuIDAuMDFtcyBhbmQgMC4zbXMsIHRob3VnaCBJJ3ZlIHNlZW4gYSBmZXcgbG9uZ2Vy
IG9uZXMgYXQgfjEuMm1zLgorICAgICAgICBJdCBzZWVtcyBzb21ld2hhdCBleGNlc3NpdmUgdG8g
ZG8gdGhpcyBvbiBldmVyeSBFZGVuIGNvbGxlY3Rpb24sIHNvIGl0J3Mgb25seQorICAgICAgICBk
b2luZyB3b3JrIGluIGZ1bGwgY29sbGVjdGlvbnMgZm9yIG5vdy4KKworICAgICAgICAqIEFQSS9K
U1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0
TWFwOjpjcmVhdGUpOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwOjpPcGFxdWVKU1dl
YWtPYmplY3RNYXApOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoLVtKU1dyYXBwZXJN
YXAgaW5pdFdpdGhDb250ZXh0Ol0pOgorICAgICAgICAoLVtKU1dyYXBwZXJNYXAganNXcmFwcGVy
Rm9yT2JqZWN0Ol0pOiBQYXNzIFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKTogQWRkZWQgYSBu
ZXcgR0MgcGhhc2UgZm9yIHBydW5pbmcKKyAgICAgICAgc3RhbGUgZW50cmllcyBmcm9tIFdlYWtH
Q01hcHMuIFRoaXMgaXMgb25seSBleGVjdXRlZCBkdXJpbmcgZnVsbCBjb2xsZWN0aW9ucy4KKwor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6cmVnaXN0ZXJXZWFrR0NNYXApOgorICAgICAgICAoSlNDOjpIZWFw
Ojp1bnJlZ2lzdGVyV2Vha0dDTWFwKTogQWRkZWQgYSBtZWNoYW5pc20gZm9yIFdlYWtHQ01hcHMg
dG8gcmVnaXN0ZXIKKyAgICAgICAgdGhlbXNlbHZlcyB3aXRoIHRoZSBIZWFwIGFuZCBwcm92aWRl
IGEgcHJ1bmluZyBjYWxsYmFjay4KKworICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFwLmg6
CisgICAgICAgIChKU0M6OlByb3RvdHlwZU1hcDo6UHJvdG90eXBlTWFwKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZTo6YWRkKTogUGFzcyBWTSB0byBXZWFrR0NNYXAgY29uc3RydWN0b3IuCisKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogSW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5o
IiBzbyB0aGlzIGJ1aWxkcy4KKworICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOiBQYXNzIFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAg
ICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6c2V0KToK
KyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjphZGQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6
OldlYWtHQ01hcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6Z2NNYXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmdjTWFwSWZOZWVkZWQpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6V2Vha0dDTWFwOjpXZWFrR0NNYXApOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6On5X
ZWFrR0NNYXApOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnBydW5lU3RhbGVFbnRyaWVzKTog
TW92ZWQgY3RvciwgZHRvciBhbmQgcHJ1bmluZyBjYWxsYmFjaworICAgICAgICB0byBXZWFrR0NN
YXBJbmxpbmVzLmggdG8gZml4IGludGVyZGVwZW5kZW50IGhlYWRlciBpc3N1ZXMuIFJlbW92ZWQg
Y29kZSB0aGF0CisgICAgICAgIHBydW5lcyBXZWFrR0NNYXAgYXQgY2VydGFpbiBncm93dGggbWls
ZXN0b25lcyBhbmQgaW5zdGVhZCByZWx5IG9uIHRoZSBHQworICAgICAgICBjYWxsYmFjayBmb3Ig
aG91c2VrZWVwaW5nLgorCiAyMDE1LTAyLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSB0aGUgd2F5IG51bWJlciBjb25zdGFudHMg
YXJlIHdyaXR0ZW4gdG8gaGVscCB0eXBlIHNwZWN1bGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCmluZGV4IDRmY2NlNzAuLjg2YWQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0xMDQ1LDYgKzEwNDUsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9w
ZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyKCktPmlu
dmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKIAogICAgIHJlYXBXZWFrSGFuZGxlcygpOworICAgIHBy
dW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBzd2VlcEFycmF5QnVmZmVycygp
OwogICAgIHNuYXBzaG90TWFya2VkU3BhY2UoKTsKIApAQCAtMTE1OCw2ICsxMTU5LDE1IEBAIHZv
aWQgSGVhcDo6cmVhcFdlYWtIYW5kbGVzKCkKICAgICBtX29iamVjdFNwYWNlLnJlYXBXZWFrU2V0
cygpOwogfQogCit2b2lkIEhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKQor
eworICAgIEdDUEhBU0UoUHJ1bmluZ1N0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKTsKKyAgICBp
ZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IEVkZW5Db2xsZWN0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNrIDogbV93ZWFrR0NNYXBzLnZhbHVlcygp
KQorICAgICAgICBwcnVuZUNhbGxiYWNrKCk7Cit9CisKIHZvaWQgSGVhcDo6c3dlZXBBcnJheUJ1
ZmZlcnMoKQogewogICAgIEdDUEhBU0UoU3dlZXBpbmdBcnJheUJ1ZmZlcnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCmluZGV4IGIyMjk5ZjAuLmUzODEyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKQEAgLTIyNyw2ICsyMjcsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9v
bCBpc1pvbWJpZmllZChKU0NlbGwqIGNlbGwpIHsgcmV0dXJuICoodm9pZCoqKWNlbGwgPT0gem9t
YmlmaWVkQml0czsgfQogCisgICAgdm9pZCByZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NN
YXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJhY2spOworICAgIHZvaWQgdW5y
ZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApOworCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIGNsYXNzIENvcGllZEJsb2NrOwpAQCAtMjk4
LDYgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldFZpc2l0b3JzKCk7CiAKICAgICB2
b2lkIHJlYXBXZWFrSGFuZGxlcygpOworICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vh
a0dDTWFwcygpOwogICAgIHZvaWQgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKICAgICB2b2lkIHNuYXBz
aG90TWFya2VkU3BhY2UoKTsKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7
CkBAIC0zOTEsNiArMzk1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmV0YWluUHRyPENGVHlw
ZVJlZj4+IG1fZGVsYXllZFJlbGVhc2VPYmplY3RzOwogICAgIHVuc2lnbmVkIG1fZGVsYXllZFJl
bGVhc2VSZWN1cnNpb25Db3VudDsKICNlbmRpZgorCisgICAgSGFzaE1hcDx2b2lkKiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+PiBtX3dlYWtHQ01hcHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCmluZGV4IDdmZmU2NzEuLjk4
MDUwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjg5
LDYgKzI4OSwxNiBAQCBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFw
OjptYXJrTGlzdFNldCgpCiAgICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKICAgICByZXR1cm4gKm1fbWFya0xp
c3RTZXQ7CiB9CisKK2lubGluZSB2b2lkIEhlYXA6OnJlZ2lzdGVyV2Vha0dDTWFwKHZvaWQqIHdl
YWtHQ01hcCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHBydW5pbmdDYWxsYmFjaykKK3sKKyAgICBt
X3dlYWtHQ01hcHMuYWRkKHdlYWtHQ01hcCwgV1RGOjptb3ZlKHBydW5pbmdDYWxsYmFjaykpOwor
fQorCitpbmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKHZvaWQqIHdlYWtHQ01h
cCkKK3sKKyAgICBtX3dlYWtHQ01hcHMucmVtb3ZlKHdlYWtHQ01hcCk7Cit9CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDZiYTkyMmYuLjBhY2YzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEyMCw2ICsxMjAs
NyBAQAogI2luY2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0SW5saW5lcy5oIgorI2lu
Y2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNsdWRlICJXZWFrTWFwQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKaW5kZXggOTc1MmNhNy4uNTA1ZTBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKQEAgLTMzLDEwICsz
MywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBTdHJ1Y3R1
cmU7CitjbGFzcyBWTTsKIAogLy8gVHJhY2tzIHRoZSBjYW5vbmljYWwgc3RydWN0dXJlIGFuIG9i
amVjdCBzaG91bGQgYmUgYWxsb2NhdGVkIHdpdGggd2hlbiBpbmhlcml0aW5nIGZyb20gYSBnaXZl
biBwcm90b3R5cGUuCiBjbGFzcyBQcm90b3R5cGVNYXAgewogcHVibGljOgorICAgIGV4cGxpY2l0
IFByb3RvdHlwZU1hcChWTSYgdm0pCisgICAgICAgIDogbV9wcm90b3R5cGVzKHZtKQorICAgICAg
ICAsIG1fc3RydWN0dXJlcyh2bSkKKyAgICB7CisgICAgfQorCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCos
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RTdHJ1
Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAg
ICAgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGM3NjkwNTEuLjg2OWNiYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKKyNpbmNsdWRlICJXZWFr
R0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUg
PHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+
CkBAIC05MCw3ICs5MSw3IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
YWRkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKICAgICAgICAgLy8gVGhpcyBoYW5k
bGVzIHRoZSBzZWNvbmQgdHJhbnNpdGlvbiBiZWluZyBhZGRlZAogICAgICAgICAvLyAob3IgdGhl
IGZpcnN0IHRyYW5zaXRpb24gYmVpbmcgZGVzcGVjaWZpZWQhKQotICAgICAgICBzZXRNYXAobmV3
IFRyYW5zaXRpb25NYXAoKSk7CisgICAgICAgIHNldE1hcChuZXcgVHJhbnNpdGlvbk1hcCh2bSkp
OwogICAgICAgICBhZGQodm0sIGV4aXN0aW5nVHJhbnNpdGlvbik7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGY3MzU0MC4uY2ViMDI5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJU
eXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xNTMsNiArMTU0LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUg
PT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0
b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1w
dHlMaXN0KG5ldyBNYXJrZWRBcmd1bWVudEJ1ZmZlcikKKyAgICAsIHN0cmluZ0NhY2hlKCp0aGlz
KQorICAgICwgcHJvdG90eXBlTWFwKCp0aGlzKQogICAgICwga2V5d29yZHMoc3RkOjptYWtlX3Vu
aXF1ZTxLZXl3b3Jkcz4oKnRoaXMpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGpzQXJy
YXlDbGFzc0luZm8oSlNBcnJheTo6aW5mbygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrR0NNYXAuaAppbmRleCBjYzBmYjhmLi5iMGM3OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMTAgKzQ3LDggQEAgcHVibGljOgogICAgIHR5
cGVkZWYgdHlwZW5hbWUgSGFzaE1hcFR5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgSGFzaE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwog
Ci0gICAgV2Vha0dDTWFwKCkKLSAgICAgICAgOiBtX2djVGhyZXNob2xkKG1pbkdDVGhyZXNob2xk
KQotICAgIHsKLSAgICB9CisgICAgZXhwbGljaXQgV2Vha0dDTWFwKFZNJik7CisgICAgfldlYWtH
Q01hcCgpOwogCiAgICAgVmFsdWVBcmcqIGdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CiAg
ICAgewpAQCAtNTksMTMgKzU3LDExIEBAIHB1YmxpYzoKIAogICAgIEFkZFJlc3VsdCBzZXQoY29u
c3QgS2V5VHlwZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBnY01hcElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBXVEY6Om1vdmUodmFsdWUp
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlw
ZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBnY01hcElmTmVlZGVkKCk7
CiAgICAgICAgIEFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX21hcC5mYXN0QWRkKGtleSwgbnVsbHB0
cik7CiAgICAgICAgIGlmICghYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkgeyAvLyBOZXcgdmFs
dWUgb3IgZm91bmQgYSB6b21iaWUgdmFsdWUuCiAgICAgICAgICAgICBhZGRSZXN1bHQuaXNOZXdF
bnRyeSA9IHRydWU7CkBAIC0xMDMsMzggKzk5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZpbmQoa2V5KSAhPSBtX21hcC5lbmQoKTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgc3RhdGlj
IGNvbnN0IGludCBtaW5HQ1RocmVzaG9sZCA9IDM7Ci0KLSAgICBORVZFUl9JTkxJTkUgdm9pZCBn
Y01hcCgpCi0gICAgewotICAgICAgICBWZWN0b3I8S2V5VHlwZSwgND4gem9tYmllczsKLQotICAg
ICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKCFpdC0+dmFsdWUpCi0gICAgICAg
ICAgICAgICAgem9tYmllcy5hcHBlbmQoaXQtPmtleSk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHpvbWJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBt
X21hcC5yZW1vdmUoem9tYmllc1tpXSk7Ci0gICAgfQotCi0gICAgdm9pZCBnY01hcElmTmVlZGVk
KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX21hcC5zaXplKCkgPCBtX2djVGhyZXNob2xkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGdjTWFwKCk7Ci0gICAgICAgIG1fZ2NUaHJlc2hv
bGQgPSBzdGQ6Om1heChtaW5HQ1RocmVzaG9sZCwgbV9tYXAuc2l6ZSgpICogMiAtIDEpOwotICAg
IH0KKyAgICB2b2lkIHBydW5lU3RhbGVFbnRyaWVzKCk7CiAKK3ByaXZhdGU6CiAgICAgSGFzaE1h
cFR5cGUgbV9tYXA7Ci0gICAgaW50IG1fZ2NUaHJlc2hvbGQ7CisgICAgVk0mIG1fdm07CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFJhd01hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgotY29uc3QgaW50IFdlYWtHQ01hcDxL
ZXlBcmcsIFJhd01hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6bWluR0NUaHJlc2hv
bGQ7Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gV2Vha0dDTWFwX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTBhY2MwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYWtHQ01hcElubGluZXNfaAorI2RlZmlu
ZSBXZWFrR0NNYXBJbmxpbmVzX2gKKworI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiV2Vha0dDTWFwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmc+CitpbmxpbmUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZz46OldlYWtHQ01hcChWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQoreworICAgIHZt
LmhlYXAucmVnaXN0ZXJXZWFrR0NNYXAodGhpcywgW3RoaXNdKCkgeworICAgICAgICBwcnVuZVN0
YWxlRW50cmllcygpOworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5
cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+
CitpbmxpbmUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0Fy
Zz46On5XZWFrR0NNYXAoKQoreworICAgIG1fdm0uaGVhcC51bnJlZ2lzdGVyV2Vha0dDTWFwKHRo
aXMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitORVZFUl9JTkxJTkUgdm9p
ZCBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6cHJ1
bmVTdGFsZUVudHJpZXMoKQoreworICAgIG1fbWFwLnJlbW92ZUlmKFtdKHR5cGVuYW1lIEhhc2hN
YXBUeXBlOjpLZXlWYWx1ZVBhaXJUeXBlJiBlbnRyeSkgeworICAgICAgICByZXR1cm4gIWVudHJ5
LnZhbHVlOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdl
YWtHQ01hcElubGluZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247677</attachid>
            <date>2015-03-02 09:46:20 -0800</date>
            <delta_ts>2015-03-02 14:55:25 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-142115-3.diff</filename>
            <type>text/plain</type>
            <size>22605</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaAppbmRleCBmN2I5MWRhLi45MDM3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC00MSw5
ICs0MSw5IEBAIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIEpTQzo6SlNPYmplY3Q+IFdl
YWtNYXBUeXBlOwogCiBzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0TWFwIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFrTWFw
RGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxPcGFxdWVKU1dlYWtP
YmplY3RNYXA+IGNyZWF0ZShKU0M6OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJv
eWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wYXF1ZUpTV2Vha09iamVjdE1hcChkYXRhLCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAodm0sIGRhdGEsIGNhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgV2Vha01hcFR5cGUmIG1hcCgpIHsgcmV0dXJuIG1fbWFwOyB9CkBAIC01
NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BhcXVlSlNXZWFr
T2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNr
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIE9wYXF1ZUpTV2Vha09iamVjdE1hcChKU0M6
OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgICAgIDogbV9tYXAodm0pCisgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKaW5kZXggNDQ2
Y2Y5MC4uOTI1YzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtNDYsNyArNDcsNyBAQCBKU1dlYWtPYmplY3RNYXBSZWYgSlNXZWFrT2JqZWN0TWFwQ3JlYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBwcml2YXRlRGF0YQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICBSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBtYXAgPSBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA6OmNyZWF0ZShwcml2YXRlRGF0YSwgY2FsbGJhY2spOworICAgIFJlZlB0cjxPcGFxdWVK
U1dlYWtPYmplY3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMDYy
N2EzLi4yNDUxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWFrR0NNYXAuaCIKKyNpbXBv
cnQgIldlYWtHQ01hcElubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvVENTcGluTG9jay5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQ2LDcgKzU0
Nyw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4g
Q29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBlck1hcCB7
CiAgICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9j
bGFzc01hcDsKLSAgICBKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4gbV9jYWNoZWRK
U1dyYXBwZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpK
U09iamVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKICAgICBOU01hcFRhYmxlICptX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIApAQCAtNTU5LDcgKzU2MCw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5Owog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owog
ICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtl
eU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBd
OwotICAgIAorCisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSktPnZtKCkpOworCiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NsYXNz
TWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTU5MCw3ICs1OTMsNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKIAogLSAoSlNWYWx1ZSAq
KWpzV3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpKU09iamVjdCoganNX
cmFwcGVyID0gbV9jYWNoZWRKU1dyYXBwZXJzLmdldChvYmplY3QpOworICAgIEpTQzo6SlNPYmpl
Y3QqIGpzV3JhcHBlciA9IG1fY2FjaGVkSlNXcmFwcGVycy0+Z2V0KG9iamVjdCk7CiAgICAgaWYg
KGpzV3JhcHBlcikKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYoanNXcmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIApAQCAtNjA2LDcgKzYwOSw3
IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29u
c3RydWN0b3JQcm90b3R5cGVQYWlyOwogICAgIC8vICgxKSBGb3IgaW1tb3J0YWwgb2JqZWN0cyBK
U1ZhbHVlcyB3aWxsIGVmZmVjdGl2ZWx5IGxlYWsgYW5kIHRoaXMgcmVzdWx0cyBpbiBlcnJvciBv
dXRwdXQgYmVpbmcgbG9nZ2VkIC0gd2Ugc2hvdWxkIGF2b2lkIGFkZGluZyBhc3NvY2lhdGVkIG9i
amVjdHMgdG8gaW1tb3J0YWwgb2JqZWN0cy4KICAgICAvLyAoMikgQSBsb25nIGxpdmVkIG9iamVj
dCBtYXkgcmFjayB1cCBtYW55IEpTVmFsdWVzLiBXaGVuIHRoZSBjb250ZXh0cyBhcmUgcmVsZWFz
ZWQgdGhlc2Ugd2lsbCB1bnByb3RlY3QgdGhlIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBvYmplY3Rz
LAogICAgIC8vICAgICBidXQgc3RpbGwsIHdvdWxkIHByb2JhYmx5IG5pY2VyIGlmIHdlIG1hZGUg
aXQgc28gdGhhdCBvbmx5IG9uZSBhc3NvY2lhdGVkIG9iamVjdCB3YXMgcmVxdWlyZWQsIGJyb2Fk
Y2FzdGluZyBvYmplY3QgZGVhbGxvYy4KLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMuc2V0KG9iamVj
dCwganNXcmFwcGVyKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMtPnNldChvYmplY3QsIGpzV3Jh
cHBlcik7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYoanNX
cmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNzJhNjRkMS4uMDY3NDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzEgQEAKKzIwMTUtMDMtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWxlIGVudHJpZXMgaW4gV2Vha0dDTWFwcyBhcmUga2VlcGluZyB0b25zIG9m
IFdlYWtCbG9ja3MgYWxpdmUgdW5uZWNlc3NhcmlseS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjExNT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTkyMjY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBydW5lIHN0YWxlIGVu
dHJpZXMgZnJvbSBXZWFrR0NNYXBzIGFzIHBhcnQgb2YgZXZlcnkgZnVsbCBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisgICAgICAgIFRoaXMgZnJlZXMgdXAgdG9ucyBvZiBwcmV2aW91c2x5LXN0dWNrIFdl
YWtCbG9ja3MgdGhhdCB3ZXJlIG9ubHkgc2l0dGluZyBhcm91bmQKKyAgICAgICAgd2l0aCBmaW5h
bGl6ZWQgaGFuZGxlcyB3YWl0aW5nIHRvIGRpZS4KKworICAgICAgICBOb3RlIHRoYXQgV2Vha0dD
TWFwcyByZWdpc3Rlci91bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgR0MgaGVhcCBpbiB0
aGVpcgorICAgICAgICBjdG9yL2R0b3IsIHNvIGNyZWF0aW5nIG9uZSBub3cgcmVxdWlyZXMgcGFz
c2luZyB0aGUgVk0uCisKKyAgICAgICAgQXZlcmFnZSB0aW1lIHNwZW50IGluIHRoZSBQcnVuaW5n
U3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMgR0MgcGhhc2UgYXBwZWFycworICAgICAgICB0byBi
ZSBiZXR3ZWVuIDAuMDFtcyBhbmQgMC4zbXMsIHRob3VnaCBJJ3ZlIHNlZW4gYSBmZXcgbG9uZ2Vy
IG9uZXMgYXQgfjEuMm1zLgorICAgICAgICBJdCBzZWVtcyBzb21ld2hhdCBleGNlc3NpdmUgdG8g
ZG8gdGhpcyBvbiBldmVyeSBFZGVuIGNvbGxlY3Rpb24sIHNvIGl0J3Mgb25seQorICAgICAgICBk
b2luZyB3b3JrIGluIGZ1bGwgY29sbGVjdGlvbnMgZm9yIG5vdy4KKworICAgICAgICAqIEFQSS9K
U1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0
TWFwOjpjcmVhdGUpOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwOjpPcGFxdWVKU1dl
YWtPYmplY3RNYXApOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoLVtKU1dyYXBwZXJN
YXAgaW5pdFdpdGhDb250ZXh0Ol0pOgorICAgICAgICAoLVtKU1dyYXBwZXJNYXAganNXcmFwcGVy
Rm9yT2JqZWN0Ol0pOiBQYXNzIFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBXZWFrR0NN
YXBJbmxpbmVzLmggYW5kIG1ha2UKKyAgICAgICAgaXQgcHJvamVjdC1wcml2YXRlIHNvIFdlYkNv
cmUgY2xpZW50cyBjYW4gYWNjZXNzIGl0LgorCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OnBydW5lU3Rh
bGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOiBBZGRlZCBhIG5ldyBHQyBwaGFzZSBmb3IgcHJ1bmlu
ZworICAgICAgICBzdGFsZSBlbnRyaWVzIGZyb20gV2Vha0dDTWFwcy4gVGhpcyBpcyBvbmx5IGV4
ZWN1dGVkIGR1cmluZyBmdWxsIGNvbGxlY3Rpb25zLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6
CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OnVucmVnaXN0ZXJXZWFrR0NNYXAp
OiBBZGRlZCBhIG1lY2hhbmlzbSBmb3IgV2Vha0dDTWFwcyB0byByZWdpc3RlcgorICAgICAgICB0
aGVtc2VsdmVzIHdpdGggdGhlIEhlYXAgYW5kIHByb3ZpZGUgYSBwcnVuaW5nIGNhbGxiYWNrLgor
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKEpTQzo6UHJvdG90
eXBlTWFwOjpQcm90b3R5cGVNYXApOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQpOiBQYXNzIFZNIHRv
IFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDSW5saW5lcy5o
OiBBZGQgIldlYWtHQ01hcElubGluZXMuaCIKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBJbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiIHNvIHRoaXMgYnVpbGRzLgor
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IFBhc3Mg
Vk0gdG8gV2Vha0dDTWFwIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogcnVudGltZS9XZWFrR0NN
YXAuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpXZWFr
R0NNYXA6OmFkZCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6V2Vha0dDTWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpnY01hcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldlYWtHQ01hcDo6Z2NNYXBJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXBJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6Oldl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6fldlYWtHQ01hcCk6CisgICAgICAg
IChKU0M6OldlYWtHQ01hcDo6cHJ1bmVTdGFsZUVudHJpZXMpOiBNb3ZlZCBjdG9yLCBkdG9yIGFu
ZCBwcnVuaW5nIGNhbGxiYWNrCisgICAgICAgIHRvIFdlYWtHQ01hcElubGluZXMuaCB0byBmaXgg
aW50ZXJkZXBlbmRlbnQgaGVhZGVyIGlzc3Vlcy4gUmVtb3ZlZCBjb2RlIHRoYXQKKyAgICAgICAg
cHJ1bmVzIFdlYWtHQ01hcCBhdCBjZXJ0YWluIGdyb3d0aCBtaWxlc3RvbmVzIGFuZCBpbnN0ZWFk
IHJlbHkgb24gdGhlIEdDCisgICAgICAgIGNhbGxiYWNrIGZvciBob3VzZWtlZXBpbmcuCisKIDIw
MTUtMDItMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gVXNlIHRoZSB3YXkgbnVtYmVyIGNvbnN0YW50cyBhcmUgd3JpdHRlbiB0byBoZWxw
IHR5cGUgc3BlY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE4NDU2
NS4uMjI0NzVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjYsNiArMTQy
Niw3IEBACiAJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkI2MDRC
MTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0ZDQzI2RDE3QTBCNkFBMDA3ODZE
MUEgLyogRlRMU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQ0MyNkMxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEE0NzQ4
RTE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzQ4RDE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RG
LmEgKi87IH07CisJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkz
RDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThB
OCAvKiBPcGFxdWVSb290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZG
MTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLzsgfTsKIAkJQjU5Rjg5MzkxODkxRjI5RjAwRDVDQ0RDIC8qIFVu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjU5Rjg5MzgxODkxQURCNTAwRDVDQ0RDIC8qIFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0uY3BwICovOyB9OwpAQCAtMzE0MSw2ICszMTQyLDcgQEAKIAkJQThFODk0
MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyog
SlNHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9i
YWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQxQ0YwNjgxNkRDQUIy
RDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJv
b3RTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlUm9vdFNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkzNzE4OTFBRDMzMDBENUNDREMg
LyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1OUY4OTM4MTg5MUFEQjUwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9u
U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua2Vk
SW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYy
MSw2ICs0NjIzLDcgQEAKIAkJCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCAqLywKIAkJCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
LAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKKwkJCQlB
RDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovLAogCQkJCUE3
Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovLAogCQkJ
CUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLywKIAkJ
CQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovLApAQCAtNTUx
Niw2ICs1NTE5LDcgQEAKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVV
c2VEZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdG
IC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIw
NUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUVGMTc5
ODdBQjYwMDI5OURCMiAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA0ZmNjZTcwLi44NmFkNGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTA0NSw2ICsxMDQ1LDcgQEAgdm9p
ZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCiAgICAgICAgIHZt
KCktPnR5cGVQcm9maWxlcigpLT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCk7CiAKICAgICByZWFw
V2Vha0hhbmRsZXMoKTsKKyAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAg
ICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKICAgICBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAKQEAg
LTExNTgsNiArMTE1OSwxNSBAQCB2b2lkIEhlYXA6OnJlYXBXZWFrSGFuZGxlcygpCiAgICAgbV9v
YmplY3RTcGFjZS5yZWFwV2Vha1NldHMoKTsKIH0KIAordm9pZCBIZWFwOjpwcnVuZVN0YWxlRW50
cmllc0Zyb21XZWFrR0NNYXBzKCkKK3sKKyAgICBHQ1BIQVNFKFBydW5pbmdTdGFsZUVudHJpZXNG
cm9tV2Vha0dDTWFwcyk7CisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBFZGVuQ29s
bGVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgcHJ1bmVDYWxsYmFjayA6
IG1fd2Vha0dDTWFwcy52YWx1ZXMoKSkKKyAgICAgICAgcHJ1bmVDYWxsYmFjaygpOworfQorCiB2
b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKIHsKICAgICBHQ1BIQVNFKFN3ZWVwaW5nQXJy
YXlCdWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBiMjI5OWYwLi5lMzgx
MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMjcsNiArMjI3LDkgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgaXNab21iaWZpZWQoSlNDZWxsKiBjZWxsKSB7IHJldHVy
biAqKHZvaWQqKiljZWxsID09IHpvbWJpZmllZEJpdHM7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJX
ZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1bmluZ0Nh
bGxiYWNrKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwKTsK
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBjbGFz
cyBDb3BpZWRCbG9jazsKQEAgLTI5OCw2ICszMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRWaXNpdG9ycygpOwogCiAgICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKKyAgICB2b2lkIHBy
dW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZm
ZXJzKCk7CiAgICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAgICAgdm9pZCBkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpOwpAQCAtMzkxLDYgKzM5NSw4IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJldGFpblB0cjxDRlR5cGVSZWY+PiBtX2RlbGF5ZWRSZWxlYXNlT2JqZWN0czsKICAg
ICB1bnNpZ25lZCBtX2RlbGF5ZWRSZWxlYXNlUmVjdXJzaW9uQ291bnQ7CiAjZW5kaWYKKworICAg
IEhhc2hNYXA8dm9pZCosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV93ZWFrR0NNYXBzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAppbmRleCA3ZmZlNjcxLi45ODA1MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKQEAgLTI4OSw2ICsyODksMTYgQEAgaW5saW5lIEhhc2hTZXQ8TWFya2Vk
QXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQogICAgICAgICBtX21hcmtMaXN0
U2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7
CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQorCitpbmxpbmUgdm9pZCBIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVu
aW5nQ2FsbGJhY2spCit7CisgICAgbV93ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIFdURjo6bW92
ZShwcnVuaW5nQ2FsbGJhY2spKTsKK30KKworaW5saW5lIHZvaWQgSGVhcDo6dW5yZWdpc3Rlcldl
YWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAgbV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFr
R0NNYXApOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAppbmRleCA5Y2Y3MDI4Li5lOWZhYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCkBAIC01MSw1ICs1MSw2IEBA
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxp
bmVzLmgiCiAKICNlbmRpZiAvLyBKU0NJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2YmE5MjJmLi4wYWNmMzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNl
dElubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCmluZGV4IDk3NTJjYTcu
LjUwNWUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCkBAIC0zMywxMCArMzMsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTT2JqZWN0
OwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgVk07CiAKIC8vIFRyYWNrcyB0aGUgY2Fub25pY2Fs
IHN0cnVjdHVyZSBhbiBvYmplY3Qgc2hvdWxkIGJlIGFsbG9jYXRlZCB3aXRoIHdoZW4gaW5oZXJp
dGluZyBmcm9tIGEgZ2l2ZW4gcHJvdG90eXBlLgogY2xhc3MgUHJvdG90eXBlTWFwIHsKIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBQcm90b3R5cGVNYXAoVk0mIHZtKQorICAgICAgICA6IG1fcHJvdG90
eXBlcyh2bSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZXModm0pCisgICAgeworICAgIH0KKwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90
b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgdm9pZCBjbGVh
ckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHkpOwogICAgIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBjNzY5MDUxLi44Njlj
YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgi
CisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgpAQCAtOTAsNyArOTEsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGU6OmFkZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiAgICAg
ICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgc2Vjb25kIHRyYW5zaXRpb24gYmVpbmcgYWRkZWQKICAg
ICAgICAgLy8gKG9yIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGJlaW5nIGRlc3BlY2lmaWVkISkKLSAg
ICAgICAgc2V0TWFwKG5ldyBUcmFuc2l0aW9uTWFwKCkpOworICAgICAgICBzZXRNYXAobmV3IFRy
YW5zaXRpb25NYXAodm0pKTsKICAgICAgICAgYWRkKHZtLCBleGlzdGluZ1RyYW5zaXRpb24pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBmNzM1NDAuLmNl
YjAyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04Myw2ICs4Myw3
IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTUzLDYgKzE1NCw4IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYXRvbWljU3Ry
aW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVs
bHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCisgICAgLCBz
dHJpbmdDYWNoZSgqdGhpcykKKyAgICAsIHByb3RvdHlwZU1hcCgqdGhpcykKICAgICAsIGtleXdv
cmRzKHN0ZDo6bWFrZV91bmlxdWU8S2V5d29yZHM+KCp0aGlzKSkKICAgICAsIGludGVycHJldGVy
KDApCiAgICAgLCBqc0FycmF5Q2xhc3NJbmZvKEpTQXJyYXk6OmluZm8oKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggY2MwZmI4Zi4uYjBjNzkyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDEwICs0Nyw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjppdGVyYXRvciBpdGVy
YXRvcjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBj
b25zdF9pdGVyYXRvcjsKIAotICAgIFdlYWtHQ01hcCgpCi0gICAgICAgIDogbV9nY1RocmVzaG9s
ZChtaW5HQ1RocmVzaG9sZCkKLSAgICB7Ci0gICAgfQorICAgIGV4cGxpY2l0IFdlYWtHQ01hcChW
TSYpOworICAgIH5XZWFrR0NNYXAoKTsKIAogICAgIFZhbHVlQXJnKiBnZXQoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdAogICAgIHsKQEAgLTU5LDEzICs1NywxMSBAQCBwdWJsaWM6CiAKICAgICBB
ZGRSZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgZ2NNYXBJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwg
V1RGOjptb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBBZGRSZXN1bHQg
YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
Z2NNYXBJZk5lZWRlZCgpOwogICAgICAgICBBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuZmFz
dEFkZChrZXksIG51bGxwdHIpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpIHsgLy8gTmV3IHZhbHVlIG9yIGZvdW5kIGEgem9tYmllIHZhbHVlLgogICAgICAgICAgICAg
YWRkUmVzdWx0LmlzTmV3RW50cnkgPSB0cnVlOwpAQCAtMTAzLDM4ICs5OSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7CiAgICAgfQogCi1wcml2
YXRlOgotICAgIHN0YXRpYyBjb25zdCBpbnQgbWluR0NUaHJlc2hvbGQgPSAzOwotCi0gICAgTkVW
RVJfSU5MSU5FIHZvaWQgZ2NNYXAoKQotICAgIHsKLSAgICAgICAgVmVjdG9yPEtleVR5cGUsIDQ+
IHpvbWJpZXM7Ci0KLSAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCksIGVu
ZCA9IG1fbWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghaXQt
PnZhbHVlKQotICAgICAgICAgICAgICAgIHpvbWJpZXMuYXBwZW5kKGl0LT5rZXkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB6b21iaWVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbV9tYXAucmVtb3ZlKHpvbWJpZXNbaV0pOwotICAgIH0KLQotICAgIHZv
aWQgZ2NNYXBJZk5lZWRlZCgpCi0gICAgewotICAgICAgICBpZiAobV9tYXAuc2l6ZSgpIDwgbV9n
Y1RocmVzaG9sZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBnY01hcCgpOwotICAg
ICAgICBtX2djVGhyZXNob2xkID0gc3RkOjptYXgobWluR0NUaHJlc2hvbGQsIG1fbWFwLnNpemUo
KSAqIDIgLSAxKTsKLSAgICB9CisgICAgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwogCitwcml2
YXRlOgogICAgIEhhc2hNYXBUeXBlIG1fbWFwOwotICAgIGludCBtX2djVGhyZXNob2xkOworICAg
IFZNJiBtX3ZtOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBSYXdN
YXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KLWNvbnN0
IGludCBXZWFrR0NNYXA8S2V5QXJnLCBSYXdNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0Fy
Zz46Om1pbkdDVGhyZXNob2xkOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFdl
YWtHQ01hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJ
bmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYWNjMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElu
bGluZXMuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWFrR0NNYXBJ
bmxpbmVzX2gKKyNkZWZpbmUgV2Vha0dDTWFwSW5saW5lc19oCisKKyNpbmNsdWRlICJIZWFwSW5s
aW5lcy5oIgorI2luY2x1ZGUgIldlYWtHQ01hcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVl
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpXZWFrR0NNYXAoVk0mIHZtKQorICAgIDogbV92
bSh2bSkKK3sKKyAgICB2bS5oZWFwLnJlZ2lzdGVyV2Vha0dDTWFwKHRoaXMsIFt0aGlzXSgpIHsK
KyAgICAgICAgcHJ1bmVTdGFsZUVudHJpZXMoKTsKKyAgICB9KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmc+Ojp+V2Vha0dDTWFwKCkKK3sKKyAgICBtX3ZtLmhlYXAudW5yZWdp
c3RlcldlYWtHQ01hcCh0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBl
bmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgor
TkVWRVJfSU5MSU5FIHZvaWQgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZz46OnBydW5lU3RhbGVFbnRyaWVzKCkKK3sKKyAgICBtX21hcC5yZW1vdmVJZihb
XSh0eXBlbmFtZSBIYXNoTWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsKKyAgICAg
ICAgcmV0dXJuICFlbnRyeS52YWx1ZTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBXZWFrR0NNYXBJbmxpbmVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247702</attachid>
            <date>2015-03-02 14:55:25 -0800</date>
            <delta_ts>2015-03-02 16:16:45 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-142115-4.diff</filename>
            <type>text/plain</type>
            <size>23598</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaAppbmRleCBmN2I5MWRhLi45MDM3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC00MSw5
ICs0MSw5IEBAIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIEpTQzo6SlNPYmplY3Q+IFdl
YWtNYXBUeXBlOwogCiBzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0TWFwIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFrTWFw
RGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxPcGFxdWVKU1dlYWtP
YmplY3RNYXA+IGNyZWF0ZShKU0M6OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJv
eWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wYXF1ZUpTV2Vha09iamVjdE1hcChkYXRhLCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAodm0sIGRhdGEsIGNhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgV2Vha01hcFR5cGUmIG1hcCgpIHsgcmV0dXJuIG1fbWFwOyB9CkBAIC01
NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BhcXVlSlNXZWFr
T2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNr
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIE9wYXF1ZUpTV2Vha09iamVjdE1hcChKU0M6
OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgICAgIDogbV9tYXAodm0pCisgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKaW5kZXggNDQ2
Y2Y5MC4uOTI1YzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtNDYsNyArNDcsNyBAQCBKU1dlYWtPYmplY3RNYXBSZWYgSlNXZWFrT2JqZWN0TWFwQ3JlYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBwcml2YXRlRGF0YQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICBSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBtYXAgPSBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA6OmNyZWF0ZShwcml2YXRlRGF0YSwgY2FsbGJhY2spOworICAgIFJlZlB0cjxPcGFxdWVK
U1dlYWtPYmplY3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMDYy
N2EzLi4yNDUxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWFrR0NNYXAuaCIKKyNpbXBv
cnQgIldlYWtHQ01hcElubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvVENTcGluTG9jay5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQ2LDcgKzU0
Nyw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4g
Q29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBlck1hcCB7
CiAgICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9j
bGFzc01hcDsKLSAgICBKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4gbV9jYWNoZWRK
U1dyYXBwZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpK
U09iamVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKICAgICBOU01hcFRhYmxlICptX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIApAQCAtNTU5LDcgKzU2MCw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5Owog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owog
ICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtl
eU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBd
OwotICAgIAorCisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSktPnZtKCkpOworCiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NsYXNz
TWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTU5MCw3ICs1OTMsNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKIAogLSAoSlNWYWx1ZSAq
KWpzV3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpKU09iamVjdCoganNX
cmFwcGVyID0gbV9jYWNoZWRKU1dyYXBwZXJzLmdldChvYmplY3QpOworICAgIEpTQzo6SlNPYmpl
Y3QqIGpzV3JhcHBlciA9IG1fY2FjaGVkSlNXcmFwcGVycy0+Z2V0KG9iamVjdCk7CiAgICAgaWYg
KGpzV3JhcHBlcikKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYoanNXcmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIApAQCAtNjA2LDcgKzYwOSw3
IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29u
c3RydWN0b3JQcm90b3R5cGVQYWlyOwogICAgIC8vICgxKSBGb3IgaW1tb3J0YWwgb2JqZWN0cyBK
U1ZhbHVlcyB3aWxsIGVmZmVjdGl2ZWx5IGxlYWsgYW5kIHRoaXMgcmVzdWx0cyBpbiBlcnJvciBv
dXRwdXQgYmVpbmcgbG9nZ2VkIC0gd2Ugc2hvdWxkIGF2b2lkIGFkZGluZyBhc3NvY2lhdGVkIG9i
amVjdHMgdG8gaW1tb3J0YWwgb2JqZWN0cy4KICAgICAvLyAoMikgQSBsb25nIGxpdmVkIG9iamVj
dCBtYXkgcmFjayB1cCBtYW55IEpTVmFsdWVzLiBXaGVuIHRoZSBjb250ZXh0cyBhcmUgcmVsZWFz
ZWQgdGhlc2Ugd2lsbCB1bnByb3RlY3QgdGhlIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBvYmplY3Rz
LAogICAgIC8vICAgICBidXQgc3RpbGwsIHdvdWxkIHByb2JhYmx5IG5pY2VyIGlmIHdlIG1hZGUg
aXQgc28gdGhhdCBvbmx5IG9uZSBhc3NvY2lhdGVkIG9iamVjdCB3YXMgcmVxdWlyZWQsIGJyb2Fk
Y2FzdGluZyBvYmplY3QgZGVhbGxvYy4KLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMuc2V0KG9iamVj
dCwganNXcmFwcGVyKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMtPnNldChvYmplY3QsIGpzV3Jh
cHBlcik7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYoanNX
cmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNzJhNjRkMS4uMDY3NDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzEgQEAKKzIwMTUtMDMtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWxlIGVudHJpZXMgaW4gV2Vha0dDTWFwcyBhcmUga2VlcGluZyB0b25zIG9m
IFdlYWtCbG9ja3MgYWxpdmUgdW5uZWNlc3NhcmlseS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjExNT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTkyMjY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBydW5lIHN0YWxlIGVu
dHJpZXMgZnJvbSBXZWFrR0NNYXBzIGFzIHBhcnQgb2YgZXZlcnkgZnVsbCBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisgICAgICAgIFRoaXMgZnJlZXMgdXAgdG9ucyBvZiBwcmV2aW91c2x5LXN0dWNrIFdl
YWtCbG9ja3MgdGhhdCB3ZXJlIG9ubHkgc2l0dGluZyBhcm91bmQKKyAgICAgICAgd2l0aCBmaW5h
bGl6ZWQgaGFuZGxlcyB3YWl0aW5nIHRvIGRpZS4KKworICAgICAgICBOb3RlIHRoYXQgV2Vha0dD
TWFwcyByZWdpc3Rlci91bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgR0MgaGVhcCBpbiB0
aGVpcgorICAgICAgICBjdG9yL2R0b3IsIHNvIGNyZWF0aW5nIG9uZSBub3cgcmVxdWlyZXMgcGFz
c2luZyB0aGUgVk0uCisKKyAgICAgICAgQXZlcmFnZSB0aW1lIHNwZW50IGluIHRoZSBQcnVuaW5n
U3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMgR0MgcGhhc2UgYXBwZWFycworICAgICAgICB0byBi
ZSBiZXR3ZWVuIDAuMDFtcyBhbmQgMC4zbXMsIHRob3VnaCBJJ3ZlIHNlZW4gYSBmZXcgbG9uZ2Vy
IG9uZXMgYXQgfjEuMm1zLgorICAgICAgICBJdCBzZWVtcyBzb21ld2hhdCBleGNlc3NpdmUgdG8g
ZG8gdGhpcyBvbiBldmVyeSBFZGVuIGNvbGxlY3Rpb24sIHNvIGl0J3Mgb25seQorICAgICAgICBk
b2luZyB3b3JrIGluIGZ1bGwgY29sbGVjdGlvbnMgZm9yIG5vdy4KKworICAgICAgICAqIEFQSS9K
U1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0
TWFwOjpjcmVhdGUpOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwOjpPcGFxdWVKU1dl
YWtPYmplY3RNYXApOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoLVtKU1dyYXBwZXJN
YXAgaW5pdFdpdGhDb250ZXh0Ol0pOgorICAgICAgICAoLVtKU1dyYXBwZXJNYXAganNXcmFwcGVy
Rm9yT2JqZWN0Ol0pOiBQYXNzIFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBXZWFrR0NN
YXBJbmxpbmVzLmggYW5kIG1ha2UKKyAgICAgICAgaXQgcHJvamVjdC1wcml2YXRlIHNvIFdlYkNv
cmUgY2xpZW50cyBjYW4gYWNjZXNzIGl0LgorCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OnBydW5lU3Rh
bGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOiBBZGRlZCBhIG5ldyBHQyBwaGFzZSBmb3IgcHJ1bmlu
ZworICAgICAgICBzdGFsZSBlbnRyaWVzIGZyb20gV2Vha0dDTWFwcy4gVGhpcyBpcyBvbmx5IGV4
ZWN1dGVkIGR1cmluZyBmdWxsIGNvbGxlY3Rpb25zLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6
CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OnVucmVnaXN0ZXJXZWFrR0NNYXAp
OiBBZGRlZCBhIG1lY2hhbmlzbSBmb3IgV2Vha0dDTWFwcyB0byByZWdpc3RlcgorICAgICAgICB0
aGVtc2VsdmVzIHdpdGggdGhlIEhlYXAgYW5kIHByb3ZpZGUgYSBwcnVuaW5nIGNhbGxiYWNrLgor
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKEpTQzo6UHJvdG90
eXBlTWFwOjpQcm90b3R5cGVNYXApOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQpOiBQYXNzIFZNIHRv
IFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDSW5saW5lcy5o
OiBBZGQgIldlYWtHQ01hcElubGluZXMuaCIKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBJbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiIHNvIHRoaXMgYnVpbGRzLgor
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IFBhc3Mg
Vk0gdG8gV2Vha0dDTWFwIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogcnVudGltZS9XZWFrR0NN
YXAuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpXZWFr
R0NNYXA6OmFkZCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6V2Vha0dDTWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpnY01hcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldlYWtHQ01hcDo6Z2NNYXBJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXBJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6Oldl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6fldlYWtHQ01hcCk6CisgICAgICAg
IChKU0M6OldlYWtHQ01hcDo6cHJ1bmVTdGFsZUVudHJpZXMpOiBNb3ZlZCBjdG9yLCBkdG9yIGFu
ZCBwcnVuaW5nIGNhbGxiYWNrCisgICAgICAgIHRvIFdlYWtHQ01hcElubGluZXMuaCB0byBmaXgg
aW50ZXJkZXBlbmRlbnQgaGVhZGVyIGlzc3Vlcy4gUmVtb3ZlZCBjb2RlIHRoYXQKKyAgICAgICAg
cHJ1bmVzIFdlYWtHQ01hcCBhdCBjZXJ0YWluIGdyb3d0aCBtaWxlc3RvbmVzIGFuZCBpbnN0ZWFk
IHJlbHkgb24gdGhlIEdDCisgICAgICAgIGNhbGxiYWNrIGZvciBob3VzZWtlZXBpbmcuCisKIDIw
MTUtMDItMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gVXNlIHRoZSB3YXkgbnVtYmVyIGNvbnN0YW50cyBhcmUgd3JpdHRlbiB0byBoZWxw
IHR5cGUgc3BlY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE4NDU2
NS4uMjI0NzVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjYsNiArMTQy
Niw3IEBACiAJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkI2MDRC
MTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0ZDQzI2RDE3QTBCNkFBMDA3ODZE
MUEgLyogRlRMU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQ0MyNkMxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEE0NzQ4
RTE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzQ4RDE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RG
LmEgKi87IH07CisJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkz
RDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThB
OCAvKiBPcGFxdWVSb290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZG
MTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLzsgfTsKIAkJQjU5Rjg5MzkxODkxRjI5RjAwRDVDQ0RDIC8qIFVu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjU5Rjg5MzgxODkxQURCNTAwRDVDQ0RDIC8qIFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0uY3BwICovOyB9OwpAQCAtMzE0MSw2ICszMTQyLDcgQEAKIAkJQThFODk0
MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyog
SlNHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9i
YWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQxQ0YwNjgxNkRDQUIy
RDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJv
b3RTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlUm9vdFNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkzNzE4OTFBRDMzMDBENUNDREMg
LyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1OUY4OTM4MTg5MUFEQjUwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9u
U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua2Vk
SW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYy
MSw2ICs0NjIzLDcgQEAKIAkJCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCAqLywKIAkJCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
LAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKKwkJCQlB
RDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovLAogCQkJCUE3
Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovLAogCQkJ
CUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLywKIAkJ
CQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovLApAQCAtNTUx
Niw2ICs1NTE5LDcgQEAKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVV
c2VEZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdG
IC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIw
NUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUVGMTc5
ODdBQjYwMDI5OURCMiAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA0ZmNjZTcwLi44NmFkNGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTA0NSw2ICsxMDQ1LDcgQEAgdm9p
ZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCiAgICAgICAgIHZt
KCktPnR5cGVQcm9maWxlcigpLT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCk7CiAKICAgICByZWFw
V2Vha0hhbmRsZXMoKTsKKyAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAg
ICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKICAgICBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAKQEAg
LTExNTgsNiArMTE1OSwxNSBAQCB2b2lkIEhlYXA6OnJlYXBXZWFrSGFuZGxlcygpCiAgICAgbV9v
YmplY3RTcGFjZS5yZWFwV2Vha1NldHMoKTsKIH0KIAordm9pZCBIZWFwOjpwcnVuZVN0YWxlRW50
cmllc0Zyb21XZWFrR0NNYXBzKCkKK3sKKyAgICBHQ1BIQVNFKFBydW5pbmdTdGFsZUVudHJpZXNG
cm9tV2Vha0dDTWFwcyk7CisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBFZGVuQ29s
bGVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgcHJ1bmVDYWxsYmFjayA6
IG1fd2Vha0dDTWFwcy52YWx1ZXMoKSkKKyAgICAgICAgcHJ1bmVDYWxsYmFjaygpOworfQorCiB2
b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKIHsKICAgICBHQ1BIQVNFKFN3ZWVwaW5nQXJy
YXlCdWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBiMjI5OWYwLi5lMzgx
MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMjcsNiArMjI3LDkgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgaXNab21iaWZpZWQoSlNDZWxsKiBjZWxsKSB7IHJldHVy
biAqKHZvaWQqKiljZWxsID09IHpvbWJpZmllZEJpdHM7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJX
ZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1bmluZ0Nh
bGxiYWNrKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwKTsK
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBjbGFz
cyBDb3BpZWRCbG9jazsKQEAgLTI5OCw2ICszMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRWaXNpdG9ycygpOwogCiAgICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKKyAgICB2b2lkIHBy
dW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZm
ZXJzKCk7CiAgICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAgICAgdm9pZCBkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpOwpAQCAtMzkxLDYgKzM5NSw4IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJldGFpblB0cjxDRlR5cGVSZWY+PiBtX2RlbGF5ZWRSZWxlYXNlT2JqZWN0czsKICAg
ICB1bnNpZ25lZCBtX2RlbGF5ZWRSZWxlYXNlUmVjdXJzaW9uQ291bnQ7CiAjZW5kaWYKKworICAg
IEhhc2hNYXA8dm9pZCosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV93ZWFrR0NNYXBzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAppbmRleCA3ZmZlNjcxLi45ODA1MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKQEAgLTI4OSw2ICsyODksMTYgQEAgaW5saW5lIEhhc2hTZXQ8TWFya2Vk
QXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQogICAgICAgICBtX21hcmtMaXN0
U2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7
CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQorCitpbmxpbmUgdm9pZCBIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVu
aW5nQ2FsbGJhY2spCit7CisgICAgbV93ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIFdURjo6bW92
ZShwcnVuaW5nQ2FsbGJhY2spKTsKK30KKworaW5saW5lIHZvaWQgSGVhcDo6dW5yZWdpc3Rlcldl
YWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAgbV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFr
R0NNYXApOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAppbmRleCA5Y2Y3MDI4Li5lOWZhYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCkBAIC01MSw1ICs1MSw2IEBA
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxp
bmVzLmgiCiAKICNlbmRpZiAvLyBKU0NJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2YmE5MjJmLi4wYWNmMzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNl
dElubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCmluZGV4IDk3NTJjYTcu
LjUwNWUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCkBAIC0zMywxMCArMzMsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTT2JqZWN0
OwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgVk07CiAKIC8vIFRyYWNrcyB0aGUgY2Fub25pY2Fs
IHN0cnVjdHVyZSBhbiBvYmplY3Qgc2hvdWxkIGJlIGFsbG9jYXRlZCB3aXRoIHdoZW4gaW5oZXJp
dGluZyBmcm9tIGEgZ2l2ZW4gcHJvdG90eXBlLgogY2xhc3MgUHJvdG90eXBlTWFwIHsKIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBQcm90b3R5cGVNYXAoVk0mIHZtKQorICAgICAgICA6IG1fcHJvdG90
eXBlcyh2bSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZXModm0pCisgICAgeworICAgIH0KKwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90
b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgdm9pZCBjbGVh
ckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHkpOwogICAgIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBjNzY5MDUxLi44Njlj
YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgi
CisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgpAQCAtOTAsNyArOTEsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGU6OmFkZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiAgICAg
ICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgc2Vjb25kIHRyYW5zaXRpb24gYmVpbmcgYWRkZWQKICAg
ICAgICAgLy8gKG9yIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGJlaW5nIGRlc3BlY2lmaWVkISkKLSAg
ICAgICAgc2V0TWFwKG5ldyBUcmFuc2l0aW9uTWFwKCkpOworICAgICAgICBzZXRNYXAobmV3IFRy
YW5zaXRpb25NYXAodm0pKTsKICAgICAgICAgYWRkKHZtLCBleGlzdGluZ1RyYW5zaXRpb24pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBmNzM1NDAuLmNl
YjAyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04Myw2ICs4Myw3
IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTUzLDYgKzE1NCw4IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYXRvbWljU3Ry
aW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVs
bHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCisgICAgLCBz
dHJpbmdDYWNoZSgqdGhpcykKKyAgICAsIHByb3RvdHlwZU1hcCgqdGhpcykKICAgICAsIGtleXdv
cmRzKHN0ZDo6bWFrZV91bmlxdWU8S2V5d29yZHM+KCp0aGlzKSkKICAgICAsIGludGVycHJldGVy
KDApCiAgICAgLCBqc0FycmF5Q2xhc3NJbmZvKEpTQXJyYXk6OmluZm8oKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggY2MwZmI4Zi4uYjBjNzkyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDEwICs0Nyw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjppdGVyYXRvciBpdGVy
YXRvcjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBj
b25zdF9pdGVyYXRvcjsKIAotICAgIFdlYWtHQ01hcCgpCi0gICAgICAgIDogbV9nY1RocmVzaG9s
ZChtaW5HQ1RocmVzaG9sZCkKLSAgICB7Ci0gICAgfQorICAgIGV4cGxpY2l0IFdlYWtHQ01hcChW
TSYpOworICAgIH5XZWFrR0NNYXAoKTsKIAogICAgIFZhbHVlQXJnKiBnZXQoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdAogICAgIHsKQEAgLTU5LDEzICs1NywxMSBAQCBwdWJsaWM6CiAKICAgICBB
ZGRSZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgZ2NNYXBJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwg
V1RGOjptb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBBZGRSZXN1bHQg
YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
Z2NNYXBJZk5lZWRlZCgpOwogICAgICAgICBBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuZmFz
dEFkZChrZXksIG51bGxwdHIpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpIHsgLy8gTmV3IHZhbHVlIG9yIGZvdW5kIGEgem9tYmllIHZhbHVlLgogICAgICAgICAgICAg
YWRkUmVzdWx0LmlzTmV3RW50cnkgPSB0cnVlOwpAQCAtMTAzLDM4ICs5OSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7CiAgICAgfQogCi1wcml2
YXRlOgotICAgIHN0YXRpYyBjb25zdCBpbnQgbWluR0NUaHJlc2hvbGQgPSAzOwotCi0gICAgTkVW
RVJfSU5MSU5FIHZvaWQgZ2NNYXAoKQotICAgIHsKLSAgICAgICAgVmVjdG9yPEtleVR5cGUsIDQ+
IHpvbWJpZXM7Ci0KLSAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCksIGVu
ZCA9IG1fbWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghaXQt
PnZhbHVlKQotICAgICAgICAgICAgICAgIHpvbWJpZXMuYXBwZW5kKGl0LT5rZXkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB6b21iaWVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbV9tYXAucmVtb3ZlKHpvbWJpZXNbaV0pOwotICAgIH0KLQotICAgIHZv
aWQgZ2NNYXBJZk5lZWRlZCgpCi0gICAgewotICAgICAgICBpZiAobV9tYXAuc2l6ZSgpIDwgbV9n
Y1RocmVzaG9sZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBnY01hcCgpOwotICAg
ICAgICBtX2djVGhyZXNob2xkID0gc3RkOjptYXgobWluR0NUaHJlc2hvbGQsIG1fbWFwLnNpemUo
KSAqIDIgLSAxKTsKLSAgICB9CisgICAgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwogCitwcml2
YXRlOgogICAgIEhhc2hNYXBUeXBlIG1fbWFwOwotICAgIGludCBtX2djVGhyZXNob2xkOworICAg
IFZNJiBtX3ZtOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBSYXdN
YXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KLWNvbnN0
IGludCBXZWFrR0NNYXA8S2V5QXJnLCBSYXdNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0Fy
Zz46Om1pbkdDVGhyZXNob2xkOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFdl
YWtHQ01hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJ
bmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYWNjMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElu
bGluZXMuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWFrR0NNYXBJ
bmxpbmVzX2gKKyNkZWZpbmUgV2Vha0dDTWFwSW5saW5lc19oCisKKyNpbmNsdWRlICJIZWFwSW5s
aW5lcy5oIgorI2luY2x1ZGUgIldlYWtHQ01hcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVl
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpXZWFrR0NNYXAoVk0mIHZtKQorICAgIDogbV92
bSh2bSkKK3sKKyAgICB2bS5oZWFwLnJlZ2lzdGVyV2Vha0dDTWFwKHRoaXMsIFt0aGlzXSgpIHsK
KyAgICAgICAgcHJ1bmVTdGFsZUVudHJpZXMoKTsKKyAgICB9KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmc+Ojp+V2Vha0dDTWFwKCkKK3sKKyAgICBtX3ZtLmhlYXAudW5yZWdp
c3RlcldlYWtHQ01hcCh0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBl
bmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgor
TkVWRVJfSU5MSU5FIHZvaWQgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZz46OnBydW5lU3RhbGVFbnRyaWVzKCkKK3sKKyAgICBtX21hcC5yZW1vdmVJZihb
XSh0eXBlbmFtZSBIYXNoTWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsKKyAgICAg
ICAgcmV0dXJuICFlbnRyeS52YWx1ZTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBXZWFrR0NNYXBJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0NTk4YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvV2Vha0dDTWFwSW5s
aW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9XZWFrR0NNYXBJbmxp
bmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV2Vha0dDTWFwSW5saW5lc19oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAx
Y2U4OWRkLi4zYjFlODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTM4LDEwICszOCwxMSBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxoZWFwL1N0
cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSA8cnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247714</attachid>
            <date>2015-03-02 16:16:45 -0800</date>
            <delta_ts>2015-03-09 15:43:31 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-142115-5.diff</filename>
            <type>text/plain</type>
            <size>23598</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaAppbmRleCBmN2I5MWRhLi45MDM3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC00MSw5
ICs0MSw5IEBAIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIEpTQzo6SlNPYmplY3Q+IFdl
YWtNYXBUeXBlOwogCiBzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0TWFwIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFrTWFw
RGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxPcGFxdWVKU1dlYWtP
YmplY3RNYXA+IGNyZWF0ZShKU0M6OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJv
eWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wYXF1ZUpTV2Vha09iamVjdE1hcChkYXRhLCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAodm0sIGRhdGEsIGNhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgV2Vha01hcFR5cGUmIG1hcCgpIHsgcmV0dXJuIG1fbWFwOyB9CkBAIC01
NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BhcXVlSlNXZWFr
T2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNr
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIE9wYXF1ZUpTV2Vha09iamVjdE1hcChKU0M6
OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgICAgIDogbV9tYXAodm0pCisgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKaW5kZXggNDQ2
Y2Y5MC4uOTI1YzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtNDYsNyArNDcsNyBAQCBKU1dlYWtPYmplY3RNYXBSZWYgSlNXZWFrT2JqZWN0TWFwQ3JlYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBwcml2YXRlRGF0YQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICBSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBtYXAgPSBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA6OmNyZWF0ZShwcml2YXRlRGF0YSwgY2FsbGJhY2spOworICAgIFJlZlB0cjxPcGFxdWVK
U1dlYWtPYmplY3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMDYy
N2EzLi4yNDUxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWFrR0NNYXAuaCIKKyNpbXBv
cnQgIldlYWtHQ01hcElubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvVENTcGluTG9jay5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQ2LDcgKzU0
Nyw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4g
Q29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBlck1hcCB7
CiAgICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9j
bGFzc01hcDsKLSAgICBKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4gbV9jYWNoZWRK
U1dyYXBwZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpK
U09iamVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKICAgICBOU01hcFRhYmxlICptX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIApAQCAtNTU5LDcgKzU2MCw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5Owog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owog
ICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtl
eU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBd
OwotICAgIAorCisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSktPnZtKCkpOworCiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NsYXNz
TWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTU5MCw3ICs1OTMsNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKIAogLSAoSlNWYWx1ZSAq
KWpzV3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpKU09iamVjdCoganNX
cmFwcGVyID0gbV9jYWNoZWRKU1dyYXBwZXJzLmdldChvYmplY3QpOworICAgIEpTQzo6SlNPYmpl
Y3QqIGpzV3JhcHBlciA9IG1fY2FjaGVkSlNXcmFwcGVycy0+Z2V0KG9iamVjdCk7CiAgICAgaWYg
KGpzV3JhcHBlcikKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYoanNXcmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIApAQCAtNjA2LDcgKzYwOSw3
IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29u
c3RydWN0b3JQcm90b3R5cGVQYWlyOwogICAgIC8vICgxKSBGb3IgaW1tb3J0YWwgb2JqZWN0cyBK
U1ZhbHVlcyB3aWxsIGVmZmVjdGl2ZWx5IGxlYWsgYW5kIHRoaXMgcmVzdWx0cyBpbiBlcnJvciBv
dXRwdXQgYmVpbmcgbG9nZ2VkIC0gd2Ugc2hvdWxkIGF2b2lkIGFkZGluZyBhc3NvY2lhdGVkIG9i
amVjdHMgdG8gaW1tb3J0YWwgb2JqZWN0cy4KICAgICAvLyAoMikgQSBsb25nIGxpdmVkIG9iamVj
dCBtYXkgcmFjayB1cCBtYW55IEpTVmFsdWVzLiBXaGVuIHRoZSBjb250ZXh0cyBhcmUgcmVsZWFz
ZWQgdGhlc2Ugd2lsbCB1bnByb3RlY3QgdGhlIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBvYmplY3Rz
LAogICAgIC8vICAgICBidXQgc3RpbGwsIHdvdWxkIHByb2JhYmx5IG5pY2VyIGlmIHdlIG1hZGUg
aXQgc28gdGhhdCBvbmx5IG9uZSBhc3NvY2lhdGVkIG9iamVjdCB3YXMgcmVxdWlyZWQsIGJyb2Fk
Y2FzdGluZyBvYmplY3QgZGVhbGxvYy4KLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMuc2V0KG9iamVj
dCwganNXcmFwcGVyKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMtPnNldChvYmplY3QsIGpzV3Jh
cHBlcik7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYoanNX
cmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNzJhNjRkMS4uMDY3NDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzEgQEAKKzIwMTUtMDMtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWxlIGVudHJpZXMgaW4gV2Vha0dDTWFwcyBhcmUga2VlcGluZyB0b25zIG9m
IFdlYWtCbG9ja3MgYWxpdmUgdW5uZWNlc3NhcmlseS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjExNT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTkyMjY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBydW5lIHN0YWxlIGVu
dHJpZXMgZnJvbSBXZWFrR0NNYXBzIGFzIHBhcnQgb2YgZXZlcnkgZnVsbCBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisgICAgICAgIFRoaXMgZnJlZXMgdXAgdG9ucyBvZiBwcmV2aW91c2x5LXN0dWNrIFdl
YWtCbG9ja3MgdGhhdCB3ZXJlIG9ubHkgc2l0dGluZyBhcm91bmQKKyAgICAgICAgd2l0aCBmaW5h
bGl6ZWQgaGFuZGxlcyB3YWl0aW5nIHRvIGRpZS4KKworICAgICAgICBOb3RlIHRoYXQgV2Vha0dD
TWFwcyByZWdpc3Rlci91bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgR0MgaGVhcCBpbiB0
aGVpcgorICAgICAgICBjdG9yL2R0b3IsIHNvIGNyZWF0aW5nIG9uZSBub3cgcmVxdWlyZXMgcGFz
c2luZyB0aGUgVk0uCisKKyAgICAgICAgQXZlcmFnZSB0aW1lIHNwZW50IGluIHRoZSBQcnVuaW5n
U3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMgR0MgcGhhc2UgYXBwZWFycworICAgICAgICB0byBi
ZSBiZXR3ZWVuIDAuMDFtcyBhbmQgMC4zbXMsIHRob3VnaCBJJ3ZlIHNlZW4gYSBmZXcgbG9uZ2Vy
IG9uZXMgYXQgfjEuMm1zLgorICAgICAgICBJdCBzZWVtcyBzb21ld2hhdCBleGNlc3NpdmUgdG8g
ZG8gdGhpcyBvbiBldmVyeSBFZGVuIGNvbGxlY3Rpb24sIHNvIGl0J3Mgb25seQorICAgICAgICBk
b2luZyB3b3JrIGluIGZ1bGwgY29sbGVjdGlvbnMgZm9yIG5vdy4KKworICAgICAgICAqIEFQSS9K
U1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0
TWFwOjpjcmVhdGUpOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwOjpPcGFxdWVKU1dl
YWtPYmplY3RNYXApOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoLVtKU1dyYXBwZXJN
YXAgaW5pdFdpdGhDb250ZXh0Ol0pOgorICAgICAgICAoLVtKU1dyYXBwZXJNYXAganNXcmFwcGVy
Rm9yT2JqZWN0Ol0pOiBQYXNzIFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBXZWFrR0NN
YXBJbmxpbmVzLmggYW5kIG1ha2UKKyAgICAgICAgaXQgcHJvamVjdC1wcml2YXRlIHNvIFdlYkNv
cmUgY2xpZW50cyBjYW4gYWNjZXNzIGl0LgorCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OnBydW5lU3Rh
bGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOiBBZGRlZCBhIG5ldyBHQyBwaGFzZSBmb3IgcHJ1bmlu
ZworICAgICAgICBzdGFsZSBlbnRyaWVzIGZyb20gV2Vha0dDTWFwcy4gVGhpcyBpcyBvbmx5IGV4
ZWN1dGVkIGR1cmluZyBmdWxsIGNvbGxlY3Rpb25zLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6
CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OnVucmVnaXN0ZXJXZWFrR0NNYXAp
OiBBZGRlZCBhIG1lY2hhbmlzbSBmb3IgV2Vha0dDTWFwcyB0byByZWdpc3RlcgorICAgICAgICB0
aGVtc2VsdmVzIHdpdGggdGhlIEhlYXAgYW5kIHByb3ZpZGUgYSBwcnVuaW5nIGNhbGxiYWNrLgor
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKEpTQzo6UHJvdG90
eXBlTWFwOjpQcm90b3R5cGVNYXApOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQpOiBQYXNzIFZNIHRv
IFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDSW5saW5lcy5o
OiBBZGQgIldlYWtHQ01hcElubGluZXMuaCIKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOiBJbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiIHNvIHRoaXMgYnVpbGRzLgor
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IFBhc3Mg
Vk0gdG8gV2Vha0dDTWFwIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogcnVudGltZS9XZWFrR0NN
YXAuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpXZWFr
R0NNYXA6OmFkZCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6V2Vha0dDTWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpnY01hcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldlYWtHQ01hcDo6Z2NNYXBJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXBJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6Oldl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6fldlYWtHQ01hcCk6CisgICAgICAg
IChKU0M6OldlYWtHQ01hcDo6cHJ1bmVTdGFsZUVudHJpZXMpOiBNb3ZlZCBjdG9yLCBkdG9yIGFu
ZCBwcnVuaW5nIGNhbGxiYWNrCisgICAgICAgIHRvIFdlYWtHQ01hcElubGluZXMuaCB0byBmaXgg
aW50ZXJkZXBlbmRlbnQgaGVhZGVyIGlzc3Vlcy4gUmVtb3ZlZCBjb2RlIHRoYXQKKyAgICAgICAg
cHJ1bmVzIFdlYWtHQ01hcCBhdCBjZXJ0YWluIGdyb3d0aCBtaWxlc3RvbmVzIGFuZCBpbnN0ZWFk
IHJlbHkgb24gdGhlIEdDCisgICAgICAgIGNhbGxiYWNrIGZvciBob3VzZWtlZXBpbmcuCisKIDIw
MTUtMDItMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gVXNlIHRoZSB3YXkgbnVtYmVyIGNvbnN0YW50cyBhcmUgd3JpdHRlbiB0byBoZWxw
IHR5cGUgc3BlY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE4NDU2
NS4uMjI0NzVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjYsNiArMTQy
Niw3IEBACiAJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkI2MDRC
MTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0ZDQzI2RDE3QTBCNkFBMDA3ODZE
MUEgLyogRlRMU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQ0MyNkMxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEE0NzQ4
RTE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzQ4RDE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RG
LmEgKi87IH07CisJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkz
RDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThB
OCAvKiBPcGFxdWVSb290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZG
MTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLzsgfTsKIAkJQjU5Rjg5MzkxODkxRjI5RjAwRDVDQ0RDIC8qIFVu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjU5Rjg5MzgxODkxQURCNTAwRDVDQ0RDIC8qIFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0uY3BwICovOyB9OwpAQCAtMzE0MSw2ICszMTQyLDcgQEAKIAkJQThFODk0
MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyog
SlNHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9i
YWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQxQ0YwNjgxNkRDQUIy
RDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJv
b3RTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlUm9vdFNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkzNzE4OTFBRDMzMDBENUNDREMg
LyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1OUY4OTM4MTg5MUFEQjUwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9u
U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua2Vk
SW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYy
MSw2ICs0NjIzLDcgQEAKIAkJCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCAqLywKIAkJCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
LAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKKwkJCQlB
RDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovLAogCQkJCUE3
Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovLAogCQkJ
CUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLywKIAkJ
CQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovLApAQCAtNTUx
Niw2ICs1NTE5LDcgQEAKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVV
c2VEZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdG
IC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIw
NUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUVGMTc5
ODdBQjYwMDI5OURCMiAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA0ZmNjZTcwLi44NmFkNGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTA0NSw2ICsxMDQ1LDcgQEAgdm9p
ZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCiAgICAgICAgIHZt
KCktPnR5cGVQcm9maWxlcigpLT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCk7CiAKICAgICByZWFw
V2Vha0hhbmRsZXMoKTsKKyAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAg
ICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKICAgICBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAKQEAg
LTExNTgsNiArMTE1OSwxNSBAQCB2b2lkIEhlYXA6OnJlYXBXZWFrSGFuZGxlcygpCiAgICAgbV9v
YmplY3RTcGFjZS5yZWFwV2Vha1NldHMoKTsKIH0KIAordm9pZCBIZWFwOjpwcnVuZVN0YWxlRW50
cmllc0Zyb21XZWFrR0NNYXBzKCkKK3sKKyAgICBHQ1BIQVNFKFBydW5pbmdTdGFsZUVudHJpZXNG
cm9tV2Vha0dDTWFwcyk7CisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgcHJ1bmVDYWxsYmFjayA6
IG1fd2Vha0dDTWFwcy52YWx1ZXMoKSkKKyAgICAgICAgcHJ1bmVDYWxsYmFjaygpOworfQorCiB2
b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKIHsKICAgICBHQ1BIQVNFKFN3ZWVwaW5nQXJy
YXlCdWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBiMjI5OWYwLi5lMzgx
MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMjcsNiArMjI3LDkgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgaXNab21iaWZpZWQoSlNDZWxsKiBjZWxsKSB7IHJldHVy
biAqKHZvaWQqKiljZWxsID09IHpvbWJpZmllZEJpdHM7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJX
ZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1bmluZ0Nh
bGxiYWNrKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwKTsK
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBjbGFz
cyBDb3BpZWRCbG9jazsKQEAgLTI5OCw2ICszMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRWaXNpdG9ycygpOwogCiAgICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKKyAgICB2b2lkIHBy
dW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZm
ZXJzKCk7CiAgICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAgICAgdm9pZCBkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpOwpAQCAtMzkxLDYgKzM5NSw4IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJldGFpblB0cjxDRlR5cGVSZWY+PiBtX2RlbGF5ZWRSZWxlYXNlT2JqZWN0czsKICAg
ICB1bnNpZ25lZCBtX2RlbGF5ZWRSZWxlYXNlUmVjdXJzaW9uQ291bnQ7CiAjZW5kaWYKKworICAg
IEhhc2hNYXA8dm9pZCosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV93ZWFrR0NNYXBzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAppbmRleCA3ZmZlNjcxLi45ODA1MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKQEAgLTI4OSw2ICsyODksMTYgQEAgaW5saW5lIEhhc2hTZXQ8TWFya2Vk
QXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQogICAgICAgICBtX21hcmtMaXN0
U2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7
CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQorCitpbmxpbmUgdm9pZCBIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVu
aW5nQ2FsbGJhY2spCit7CisgICAgbV93ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIFdURjo6bW92
ZShwcnVuaW5nQ2FsbGJhY2spKTsKK30KKworaW5saW5lIHZvaWQgSGVhcDo6dW5yZWdpc3Rlcldl
YWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAgbV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFr
R0NNYXApOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAppbmRleCA5Y2Y3MDI4Li5lOWZhYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCkBAIC01MSw1ICs1MSw2IEBA
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxp
bmVzLmgiCiAKICNlbmRpZiAvLyBKU0NJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2YmE5MjJmLi4wYWNmMzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNl
dElubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCmluZGV4IDk3NTJjYTcu
LjUwNWUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCkBAIC0zMywxMCArMzMsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTT2JqZWN0
OwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgVk07CiAKIC8vIFRyYWNrcyB0aGUgY2Fub25pY2Fs
IHN0cnVjdHVyZSBhbiBvYmplY3Qgc2hvdWxkIGJlIGFsbG9jYXRlZCB3aXRoIHdoZW4gaW5oZXJp
dGluZyBmcm9tIGEgZ2l2ZW4gcHJvdG90eXBlLgogY2xhc3MgUHJvdG90eXBlTWFwIHsKIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBQcm90b3R5cGVNYXAoVk0mIHZtKQorICAgICAgICA6IG1fcHJvdG90
eXBlcyh2bSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZXModm0pCisgICAgeworICAgIH0KKwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90
b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgdm9pZCBjbGVh
ckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHkpOwogICAgIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBjNzY5MDUxLi44Njlj
YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgi
CisjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgpAQCAtOTAsNyArOTEsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGU6OmFkZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiAgICAg
ICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgc2Vjb25kIHRyYW5zaXRpb24gYmVpbmcgYWRkZWQKICAg
ICAgICAgLy8gKG9yIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGJlaW5nIGRlc3BlY2lmaWVkISkKLSAg
ICAgICAgc2V0TWFwKG5ldyBUcmFuc2l0aW9uTWFwKCkpOworICAgICAgICBzZXRNYXAobmV3IFRy
YW5zaXRpb25NYXAodm0pKTsKICAgICAgICAgYWRkKHZtLCBleGlzdGluZ1RyYW5zaXRpb24pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBmNzM1NDAuLmNl
YjAyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04Myw2ICs4Myw3
IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTUzLDYgKzE1NCw4IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYXRvbWljU3Ry
aW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVs
bHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCisgICAgLCBz
dHJpbmdDYWNoZSgqdGhpcykKKyAgICAsIHByb3RvdHlwZU1hcCgqdGhpcykKICAgICAsIGtleXdv
cmRzKHN0ZDo6bWFrZV91bmlxdWU8S2V5d29yZHM+KCp0aGlzKSkKICAgICAsIGludGVycHJldGVy
KDApCiAgICAgLCBqc0FycmF5Q2xhc3NJbmZvKEpTQXJyYXk6OmluZm8oKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggY2MwZmI4Zi4uYjBjNzkyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDEwICs0Nyw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjppdGVyYXRvciBpdGVy
YXRvcjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBj
b25zdF9pdGVyYXRvcjsKIAotICAgIFdlYWtHQ01hcCgpCi0gICAgICAgIDogbV9nY1RocmVzaG9s
ZChtaW5HQ1RocmVzaG9sZCkKLSAgICB7Ci0gICAgfQorICAgIGV4cGxpY2l0IFdlYWtHQ01hcChW
TSYpOworICAgIH5XZWFrR0NNYXAoKTsKIAogICAgIFZhbHVlQXJnKiBnZXQoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdAogICAgIHsKQEAgLTU5LDEzICs1NywxMSBAQCBwdWJsaWM6CiAKICAgICBB
ZGRSZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgZ2NNYXBJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwg
V1RGOjptb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBBZGRSZXN1bHQg
YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
Z2NNYXBJZk5lZWRlZCgpOwogICAgICAgICBBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuZmFz
dEFkZChrZXksIG51bGxwdHIpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpIHsgLy8gTmV3IHZhbHVlIG9yIGZvdW5kIGEgem9tYmllIHZhbHVlLgogICAgICAgICAgICAg
YWRkUmVzdWx0LmlzTmV3RW50cnkgPSB0cnVlOwpAQCAtMTAzLDM4ICs5OSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7CiAgICAgfQogCi1wcml2
YXRlOgotICAgIHN0YXRpYyBjb25zdCBpbnQgbWluR0NUaHJlc2hvbGQgPSAzOwotCi0gICAgTkVW
RVJfSU5MSU5FIHZvaWQgZ2NNYXAoKQotICAgIHsKLSAgICAgICAgVmVjdG9yPEtleVR5cGUsIDQ+
IHpvbWJpZXM7Ci0KLSAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCksIGVu
ZCA9IG1fbWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghaXQt
PnZhbHVlKQotICAgICAgICAgICAgICAgIHpvbWJpZXMuYXBwZW5kKGl0LT5rZXkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB6b21iaWVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbV9tYXAucmVtb3ZlKHpvbWJpZXNbaV0pOwotICAgIH0KLQotICAgIHZv
aWQgZ2NNYXBJZk5lZWRlZCgpCi0gICAgewotICAgICAgICBpZiAobV9tYXAuc2l6ZSgpIDwgbV9n
Y1RocmVzaG9sZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBnY01hcCgpOwotICAg
ICAgICBtX2djVGhyZXNob2xkID0gc3RkOjptYXgobWluR0NUaHJlc2hvbGQsIG1fbWFwLnNpemUo
KSAqIDIgLSAxKTsKLSAgICB9CisgICAgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwogCitwcml2
YXRlOgogICAgIEhhc2hNYXBUeXBlIG1fbWFwOwotICAgIGludCBtX2djVGhyZXNob2xkOworICAg
IFZNJiBtX3ZtOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBSYXdN
YXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KLWNvbnN0
IGludCBXZWFrR0NNYXA8S2V5QXJnLCBSYXdNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0Fy
Zz46Om1pbkdDVGhyZXNob2xkOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFdl
YWtHQ01hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXBJ
bmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYWNjMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcElu
bGluZXMuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWFrR0NNYXBJ
bmxpbmVzX2gKKyNkZWZpbmUgV2Vha0dDTWFwSW5saW5lc19oCisKKyNpbmNsdWRlICJIZWFwSW5s
aW5lcy5oIgorI2luY2x1ZGUgIldlYWtHQ01hcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVl
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpXZWFrR0NNYXAoVk0mIHZtKQorICAgIDogbV92
bSh2bSkKK3sKKyAgICB2bS5oZWFwLnJlZ2lzdGVyV2Vha0dDTWFwKHRoaXMsIFt0aGlzXSgpIHsK
KyAgICAgICAgcHJ1bmVTdGFsZUVudHJpZXMoKTsKKyAgICB9KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaXRzQXJnPgoraW5saW5lIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmc+Ojp+V2Vha0dDTWFwKCkKK3sKKyAgICBtX3ZtLmhlYXAudW5yZWdp
c3RlcldlYWtHQ01hcCh0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBl
bmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPgor
TkVWRVJfSU5MSU5FIHZvaWQgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZz46OnBydW5lU3RhbGVFbnRyaWVzKCkKK3sKKyAgICBtX21hcC5yZW1vdmVJZihb
XSh0eXBlbmFtZSBIYXNoTWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsKKyAgICAg
ICAgcmV0dXJuICFlbnRyeS52YWx1ZTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBXZWFrR0NNYXBJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0NTk4YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvV2Vha0dDTWFwSW5s
aW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9XZWFrR0NNYXBJbmxp
bmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV2Vha0dDTWFwSW5saW5lc19oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCAx
Y2U4OWRkLi4zYjFlODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTM4LDEwICszOCwxMSBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxoZWFwL1N0
cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSA8cnVudGltZS9XZWFrR0NNYXBJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248283</attachid>
            <date>2015-03-09 15:43:31 -0700</date>
            <delta_ts>2015-03-09 16:19:12 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-142115-6.diff</filename>
            <type>text/plain</type>
            <size>26515</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaAppbmRleCBmN2I5MWRhLi45MDM3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC00MSw5
ICs0MSw5IEBAIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIEpTQzo6SlNPYmplY3Q+IFdl
YWtNYXBUeXBlOwogCiBzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0TWFwIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFrTWFw
RGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxPcGFxdWVKU1dlYWtP
YmplY3RNYXA+IGNyZWF0ZShKU0M6OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJv
eWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wYXF1ZUpTV2Vha09iamVjdE1hcChkYXRhLCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAodm0sIGRhdGEsIGNhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgV2Vha01hcFR5cGUmIG1hcCgpIHsgcmV0dXJuIG1fbWFwOyB9CkBAIC01
NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BhcXVlSlNXZWFr
T2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNr
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIE9wYXF1ZUpTV2Vha09iamVjdE1hcChKU0M6
OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgICAgIDogbV9tYXAodm0pCisgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKaW5kZXggNDQ2
Y2Y5MC4uOTI1YzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtNDYsNyArNDcsNyBAQCBKU1dlYWtPYmplY3RNYXBSZWYgSlNXZWFrT2JqZWN0TWFwQ3JlYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBwcml2YXRlRGF0YQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICBSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBtYXAgPSBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA6OmNyZWF0ZShwcml2YXRlRGF0YSwgY2FsbGJhY2spOworICAgIFJlZlB0cjxPcGFxdWVK
U1dlYWtPYmplY3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMDYy
N2EzLi4yNDUxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWFrR0NNYXAuaCIKKyNpbXBv
cnQgIldlYWtHQ01hcElubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvVENTcGluTG9jay5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQ2LDcgKzU0
Nyw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4g
Q29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBlck1hcCB7
CiAgICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9j
bGFzc01hcDsKLSAgICBKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4gbV9jYWNoZWRK
U1dyYXBwZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpK
U09iamVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKICAgICBOU01hcFRhYmxlICptX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIApAQCAtNTU5LDcgKzU2MCw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5Owog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owog
ICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtl
eU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBd
OwotICAgIAorCisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSktPnZtKCkpOworCiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NsYXNz
TWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTU5MCw3ICs1OTMsNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKIAogLSAoSlNWYWx1ZSAq
KWpzV3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpKU09iamVjdCoganNX
cmFwcGVyID0gbV9jYWNoZWRKU1dyYXBwZXJzLmdldChvYmplY3QpOworICAgIEpTQzo6SlNPYmpl
Y3QqIGpzV3JhcHBlciA9IG1fY2FjaGVkSlNXcmFwcGVycy0+Z2V0KG9iamVjdCk7CiAgICAgaWYg
KGpzV3JhcHBlcikKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYoanNXcmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIApAQCAtNjA2LDcgKzYwOSw3
IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29u
c3RydWN0b3JQcm90b3R5cGVQYWlyOwogICAgIC8vICgxKSBGb3IgaW1tb3J0YWwgb2JqZWN0cyBK
U1ZhbHVlcyB3aWxsIGVmZmVjdGl2ZWx5IGxlYWsgYW5kIHRoaXMgcmVzdWx0cyBpbiBlcnJvciBv
dXRwdXQgYmVpbmcgbG9nZ2VkIC0gd2Ugc2hvdWxkIGF2b2lkIGFkZGluZyBhc3NvY2lhdGVkIG9i
amVjdHMgdG8gaW1tb3J0YWwgb2JqZWN0cy4KICAgICAvLyAoMikgQSBsb25nIGxpdmVkIG9iamVj
dCBtYXkgcmFjayB1cCBtYW55IEpTVmFsdWVzLiBXaGVuIHRoZSBjb250ZXh0cyBhcmUgcmVsZWFz
ZWQgdGhlc2Ugd2lsbCB1bnByb3RlY3QgdGhlIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBvYmplY3Rz
LAogICAgIC8vICAgICBidXQgc3RpbGwsIHdvdWxkIHByb2JhYmx5IG5pY2VyIGlmIHdlIG1hZGUg
aXQgc28gdGhhdCBvbmx5IG9uZSBhc3NvY2lhdGVkIG9iamVjdCB3YXMgcmVxdWlyZWQsIGJyb2Fk
Y2FzdGluZyBvYmplY3QgZGVhbGxvYy4KLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMuc2V0KG9iamVj
dCwganNXcmFwcGVyKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMtPnNldChvYmplY3QsIGpzV3Jh
cHBlcik7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYoanNX
cmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNGY2NDA4ZS4uNzU1MzBiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzggQEAKKzIwMTUtMDMtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWxlIGVudHJpZXMgaW4gV2Vha0dDTWFwcyBhcmUga2VlcGluZyB0b25zIG9m
IFdlYWtCbG9ja3MgYWxpdmUgdW5uZWNlc3NhcmlseS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjExNT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTkyMjY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgUHJ1bmUgc3RhbGUgZW50
cmllcyBmcm9tIFdlYWtHQ01hcHMgYXMgcGFydCBvZiBldmVyeSBmdWxsIGdhcmJhZ2UgY29sbGVj
dGlvbi4KKyAgICAgICAgVGhpcyBmcmVlcyB1cCB0b25zIG9mIHByZXZpb3VzbHktc3R1Y2sgV2Vh
a0Jsb2NrcyB0aGF0IHdlcmUgb25seSBzaXR0aW5nIGFyb3VuZAorICAgICAgICB3aXRoIGZpbmFs
aXplZCBoYW5kbGVzIHdhaXRpbmcgdG8gZGllLgorCisgICAgICAgIE5vdGUgdGhhdCBXZWFrR0NN
YXBzIHJlZ2lzdGVyL3VucmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIHRoZSBHQyBoZWFwIGluIHRo
ZWlyCisgICAgICAgIGN0b3IvZHRvciwgc28gY3JlYXRpbmcgb25lIG5vdyByZXF1aXJlcyBwYXNz
aW5nIHRoZSBWTS4KKworICAgICAgICBBdmVyYWdlIHRpbWUgc3BlbnQgaW4gdGhlIFBydW5pbmdT
dGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcyBHQyBwaGFzZSBhcHBlYXJzCisgICAgICAgIHRvIGJl
IGJldHdlZW4gMC4wMW1zIGFuZCAwLjNtcywgdGhvdWdoIEkndmUgc2VlbiBhIGZldyBsb25nZXIg
b25lcyBhdCB+MS4ybXMuCisgICAgICAgIEl0IHNlZW1zIHNvbWV3aGF0IGV4Y2Vzc2l2ZSB0byBk
byB0aGlzIG9uIGV2ZXJ5IEVkZW4gY29sbGVjdGlvbiwgc28gaXQncyBvbmx5CisgICAgICAgIGRv
aW5nIHdvcmsgaW4gZnVsbCBjb2xsZWN0aW9ucyBmb3Igbm93LgorCisgICAgICAgICogQVBJL0pT
V2Vha09iamVjdE1hcFJlZkludGVybmFsLmg6CisgICAgICAgIChPcGFxdWVKU1dlYWtPYmplY3RN
YXA6OmNyZWF0ZSk6CisgICAgICAgIChPcGFxdWVKU1dlYWtPYmplY3RNYXA6Ok9wYXF1ZUpTV2Vh
a09iamVjdE1hcCk6CisgICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3Bw
OgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3JhcHBlck1h
cCBpbml0V2l0aENvbnRleHQ6XSk6CisgICAgICAgICgtW0pTV3JhcHBlck1hcCBqc1dyYXBwZXJG
b3JPYmplY3Q6XSk6IFBhc3MgVk0gdG8gV2Vha0dDTWFwIGNvbnN0cnVjdG9yLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFdlYWtHQ01h
cElubGluZXMuaCBhbmQgbWFrZQorICAgICAgICBpdCBwcm9qZWN0LXByaXZhdGUgc28gV2ViQ29y
ZSBjbGllbnRzIGNhbiBhY2Nlc3MgaXQuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJ1bmVTdGFs
ZUVudHJpZXNGcm9tV2Vha0dDTWFwcyk6IEFkZGVkIGEgbmV3IEdDIHBoYXNlIGZvciBwcnVuaW5n
CisgICAgICAgIHN0YWxlIGVudHJpZXMgZnJvbSBXZWFrR0NNYXBzLiBUaGlzIGlzIG9ubHkgZXhl
Y3V0ZWQgZHVyaW5nIGZ1bGwgY29sbGVjdGlvbnMuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoK
KyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnJlZ2lz
dGVyV2Vha0dDTWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dW5yZWdpc3RlcldlYWtHQ01hcCk6
IEFkZGVkIGEgbWVjaGFuaXNtIGZvciBXZWFrR0NNYXBzIHRvIHJlZ2lzdGVyCisgICAgICAgIHRo
ZW1zZWx2ZXMgd2l0aCB0aGUgSGVhcCBhbmQgcHJvdmlkZSBhIHBydW5pbmcgY2FsbGJhY2suCisK
KyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1hcC5oOgorICAgICAgICAoSlNDOjpQcm90b3R5
cGVNYXA6OlByb3RvdHlwZU1hcCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6IFBhc3MgVk0gdG8g
V2Vha0dDTWFwIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogcnVudGltZS9KU0NJbmxpbmVzLmg6
IEFkZCAiV2Vha0dDTWFwSW5saW5lcy5oIgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6IEluY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIgc28gdGhpcyBidWlsZHMuCisK
KyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdX
aXRoQ2FjaGVTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwOgor
ICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmFkZFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OlByb3RvdHlwZU1hcDo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUpOiBSZW1vdmUg
SGFzaE1hcCBhZGQoKQorICAgICAgICBvcHRpbWl6YXRpb24gc2luY2UgaXQncyBub3Qgc2FmZSBp
biB0aGUgR0MtbWFuYWdlZCBXZWFrR0NNYXAgd29ybGQuCisKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogUGFzcyBWTSB0byBXZWFrR0NNYXAgY29uc3Ry
dWN0b3IuCisKKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAoSlNDOjpX
ZWFrR0NNYXA6OnNldCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAg
KEpTQzo6V2Vha0dDTWFwOjpXZWFrR0NNYXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXZWFr
R0NNYXA6OmdjTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpnY01hcElm
TmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1dlYWtHQ01hcElubGluZXMuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6V2Vha0dDTWFwKToKKyAgICAgICAgKEpT
Qzo6V2Vha0dDTWFwOjp+V2Vha0dDTWFwKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpwcnVu
ZVN0YWxlRW50cmllcyk6IE1vdmVkIGN0b3IsIGR0b3IgYW5kIHBydW5pbmcgY2FsbGJhY2sKKyAg
ICAgICAgdG8gV2Vha0dDTWFwSW5saW5lcy5oIHRvIGZpeCBpbnRlcmRlcGVuZGVudCBoZWFkZXIg
aXNzdWVzLiBSZW1vdmVkIGNvZGUgdGhhdAorICAgICAgICBwcnVuZXMgV2Vha0dDTWFwIGF0IGNl
cnRhaW4gZ3Jvd3RoIG1pbGVzdG9uZXMgYW5kIGluc3RlYWQgcmVseSBvbiB0aGUgR0MKKyAgICAg
ICAgY2FsbGJhY2sgZm9yIGhvdXNla2VlcGluZy4KKwogMjAxNS0wMy0wOCAgQW5kcmVhcyBLbGlu
ZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSklUVGh1bmtzIGtlZXBzIGZpbmFsaXpl
ZCBXZWFrcyBhcm91bmQsIHBpbm5pbmcgV2Vha0Jsb2Nrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNjBkN2JjNS4uYWIxM2Y3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE0MzMsNiArMTQzMyw3IEBACiAJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQ
cm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0ZD
QzI2RDE3QTBCNkFBMDA3ODZEMUEgLyogRlRMU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGQ0MyNkMxN0EwQjZBQTAwNzg2RDFBIC8q
IEZUTFN3aXRjaENhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBOEE0NzQ4RTE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RGLmEgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzQ4RDE1MUE4MzA2
MDA0MTIzRkYgLyogbGliV1RGLmEgKi87IH07CisJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAv
KiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEREIx
RjYzMThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyog
T3BhcXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZE
Q0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxlLmNwcCAqLzsgfTsKIAkJQjU5Rjg5MzkxODkx
RjI5RjAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5Rjg5MzgxODkxQURCNTAwRDVD
Q0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovOyB9OwpAQCAtMzE1Myw2ICsz
MTU0LDcgQEAKIAkJQThFODk0MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEU4OTQzMzBD
RDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NN
YXBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUREQjFGNjIxOEQ3N0RCNzAw
OUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3BhcXVlUm9vdFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkz
NzE4OTFBRDMzMDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUY4OTM4MTg5MUFEQjUwMEQ1Q0NEQyAvKiBV
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDYzNSw2ICs0NjM3LDcgQEAKIAkJCQlGRUQ5NEYyQzE3MUUzRTIzMDBC
RTc3QTQgLyogV2F0Y2hkb2cuaCAqLywKIAkJCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyog
V2F0Y2hkb2dNYWMuY3BwICovLAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFr
R0NNYXAuaCAqLywKKwkJCQlBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5s
aW5lcy5oICovLAogCQkJCUE3Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3Ry
dWN0b3IuY3BwICovLAogCQkJCUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29u
c3RydWN0b3IuaCAqLywKIAkJCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERh
dGEuY3BwICovLApAQCAtNTUyOSw2ICs1NTMyLDcgQEAKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBG
MUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODAyM0VBMTYx
MzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VE
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQ4NkE5
M0UxQUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3QzFFQUVGMTc5ODdBQjYwMDI5OURCMiAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAy
ODNmNDdmLi5lNDA1ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTA2
NSw2ICsxMDY1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcE9w
ZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSwgdm9pZCogc3RhY2tPcmkKICAgICAgICAgdm0oKS0+dHlw
ZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKIAogICAgIHJlYXBXZWFrSGFu
ZGxlcygpOworICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBzd2Vl
cEFycmF5QnVmZmVycygpOwogICAgIHNuYXBzaG90TWFya2VkU3BhY2UoKTsKIApAQCAtMTE3OCw2
ICsxMTc5LDE1IEBAIHZvaWQgSGVhcDo6cmVhcFdlYWtIYW5kbGVzKCkKICAgICBtX29iamVjdFNw
YWNlLnJlYXBXZWFrU2V0cygpOwogfQogCit2b2lkIEhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJv
bVdlYWtHQ01hcHMoKQoreworICAgIEdDUEhBU0UoUHJ1bmluZ1N0YWxlRW50cmllc0Zyb21XZWFr
R0NNYXBzKTsKKyAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IEZ1bGxDb2xsZWN0aW9u
KQorICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNrIDogbV93ZWFr
R0NNYXBzLnZhbHVlcygpKQorICAgICAgICBwcnVuZUNhbGxiYWNrKCk7Cit9CisKIHZvaWQgSGVh
cDo6c3dlZXBBcnJheUJ1ZmZlcnMoKQogewogICAgIEdDUEhBU0UoU3dlZXBpbmdBcnJheUJ1ZmZl
cnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGVmNzY1N2UuLmU1ODllYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTIyNyw2ICsyMjcsOSBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgYm9vbCBpc1pvbWJpZmllZChKU0NlbGwqIGNlbGwpIHsgcmV0dXJuICoodm9p
ZCoqKWNlbGwgPT0gem9tYmlmaWVkQml0czsgfQogCisgICAgdm9pZCByZWdpc3RlcldlYWtHQ01h
cCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJhY2sp
OworICAgIHZvaWQgdW5yZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApOworCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIGNsYXNzIENvcGll
ZEJsb2NrOwpAQCAtMzAxLDYgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldFZpc2l0
b3JzKCk7CiAKICAgICB2b2lkIHJlYXBXZWFrSGFuZGxlcygpOworICAgIHZvaWQgcHJ1bmVTdGFs
ZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOwogICAgIHZvaWQgc3dlZXBBcnJheUJ1ZmZlcnMoKTsK
ICAgICB2b2lkIHNuYXBzaG90TWFya2VkU3BhY2UoKTsKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7CkBAIC0zOTMsNiArMzk3LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
UmV0YWluUHRyPENGVHlwZVJlZj4+IG1fZGVsYXllZFJlbGVhc2VPYmplY3RzOwogICAgIHVuc2ln
bmVkIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNpb25Db3VudDsKICNlbmRpZgorCisgICAgSGFzaE1h
cDx2b2lkKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX3dlYWtHQ01hcHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCmlu
ZGV4IDc3OTIyYjMuLjU4ZTkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElu
bGluZXMuaApAQCAtMzE0LDYgKzMxNCwxNiBAQCBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVu
dEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlzdFNldCgpCiAgICAgICAgIG1fbWFya0xpc3RTZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKICAgICBy
ZXR1cm4gKm1fbWFya0xpc3RTZXQ7CiB9CisKK2lubGluZSB2b2lkIEhlYXA6OnJlZ2lzdGVyV2Vh
a0dDTWFwKHZvaWQqIHdlYWtHQ01hcCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHBydW5pbmdDYWxs
YmFjaykKK3sKKyAgICBtX3dlYWtHQ01hcHMuYWRkKHdlYWtHQ01hcCwgV1RGOjptb3ZlKHBydW5p
bmdDYWxsYmFjaykpOworfQorCitpbmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFw
KHZvaWQqIHdlYWtHQ01hcCkKK3sKKyAgICBtX3dlYWtHQ01hcHMucmVtb3ZlKHdlYWtHQ01hcCk7
Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSW5saW5lcy5oCmluZGV4IDljZjcwMjguLmU5ZmFiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKQEAgLTUxLDUgKzUxLDYgQEAKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIK
IAogI2VuZGlmIC8vIEpTQ0lubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGQ4ZDMwNjkuLjdhMGI3NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEy
Myw2ICsxMjMsNyBAQAogI2luY2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
U3ltYm9sUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0SW5saW5l
cy5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNsdWRlICJXZWFrTWFwQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCAzZWEyYjdlLi5lZGQxY2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MzcsMTEg
KzQzNywxMiBAQCBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogCiBKU1N0cmluZyoganNTdHJpbmdX
aXRoQ2FjaGVTbG93Q2FzZShWTSYgdm0sIFN0cmluZ0ltcGwmIHN0cmluZ0ltcGwpCiB7Ci0gICAg
YXV0byBhZGRSZXN1bHQgPSB2bS5zdHJpbmdDYWNoZS5hZGQoJnN0cmluZ0ltcGwsIG51bGxwdHIp
OwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IGpzU3RyaW5nKCZ2bSwgU3RyaW5nKHN0cmluZ0ltcGwpKTsKLSAgICB2bS5s
YXN0Q2FjaGVkU3RyaW5nLnNldCh2bSwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
Ci0gICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgaWYgKEpT
U3RyaW5nKiBzdHJpbmcgPSB2bS5zdHJpbmdDYWNoZS5nZXQoJnN0cmluZ0ltcGwpKQorICAgICAg
ICByZXR1cm4gc3RyaW5nOworCisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzU3RyaW5nKCZ2bSwg
U3RyaW5nKHN0cmluZ0ltcGwpKTsKKyAgICB2bS5sYXN0Q2FjaGVkU3RyaW5nLnNldCh2bSwgc3Ry
aW5nKTsKKyAgICByZXR1cm4gc3RyaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCmluZGV4IGE3YTQx
N2YuLjQzZjAzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZU1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlTWFwLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBQcm90
b3R5cGVNYXA6OmFkZFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0KQogewotICAgIG1fcHJvdG90
eXBlcy5hZGQob2JqZWN0LCBvYmplY3QpOworICAgIG1fcHJvdG90eXBlcy5zZXQob2JqZWN0LCBv
YmplY3QpOwogCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIG1ha2VzIHRoZSBzb21ld2hh
dCBvZGQgZGVjaXNpb24gdG8gbm90IGNoZWNrIGlmIHRoaXMKICAgICAvLyBvYmplY3QgY3VycmVu
dGx5IGhhcyBpbmRleGVkIGFjY2Vzc29ycy4gV2UgY291bGQgZG8gdGhhdCBjaGVjayBoZXJlLCBh
bmQgaWYKQEAgLTU0LDE2ICs1NCwxNiBAQCB2b2lkIFByb3RvdHlwZU1hcDo6YWRkUHJvdG90eXBl
KEpTT2JqZWN0KiBvYmplY3QpCiAKIFN0cnVjdHVyZSogUHJvdG90eXBlTWFwOjplbXB0eU9iamVj
dFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxp
bmVDYXBhY2l0eSkKIHsKLSAgICBTdHJ1Y3R1cmVNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBt
X3N0cnVjdHVyZXMuYWRkKHN0ZDo6bWFrZV9wYWlyKHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkp
LCBudWxscHRyKTsKLSAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgYXV0byBr
ZXkgPSBzdGQ6Om1ha2VfcGFpcihwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKKyAgICBpZiAo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX3N0cnVjdHVyZXMuZ2V0KGtleSkpIHsKICAgICAgICAg
QVNTRVJUKGlzUHJvdG90eXBlKHByb3RvdHlwZSkpOwotICAgICAgICByZXR1cm4gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICB9
CiAKICAgICBhZGRQcm90b3R5cGUocHJvdG90eXBlKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgKICAgICAgICAgcHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKS0+dm0oKSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSwgcHJvdG90eXBl
LCBpbmxpbmVDYXBhY2l0eSk7Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdlYWs8
U3RydWN0dXJlPihzdHJ1Y3R1cmUpOworICAgIG1fc3RydWN0dXJlcy5zZXQoa2V5LCBXZWFrPFN0
cnVjdHVyZT4oc3RydWN0dXJlKSk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAppbmRleCA5NzUyY2E3Li41
MDVlMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAu
aApAQCAtMzMsMTAgKzMzLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU09iamVjdDsK
IGNsYXNzIFN0cnVjdHVyZTsKK2NsYXNzIFZNOwogCiAvLyBUcmFja3MgdGhlIGNhbm9uaWNhbCBz
dHJ1Y3R1cmUgYW4gb2JqZWN0IHNob3VsZCBiZSBhbGxvY2F0ZWQgd2l0aCB3aGVuIGluaGVyaXRp
bmcgZnJvbSBhIGdpdmVuIHByb3RvdHlwZS4KIGNsYXNzIFByb3RvdHlwZU1hcCB7CiBwdWJsaWM6
CisgICAgZXhwbGljaXQgUHJvdG90eXBlTWFwKFZNJiB2bSkKKyAgICAgICAgOiBtX3Byb3RvdHlw
ZXModm0pCisgICAgICAgICwgbV9zdHJ1Y3R1cmVzKHZtKQorICAgIHsKKyAgICB9CisKICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90
eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIHZvaWQgY2xlYXJF
bXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCosIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5KTsKICAgICB2b2lkIGFkZFByb3RvdHlwZShKU09iamVjdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggYzc2OTA1MS4uODY5Y2Jj
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgor
I2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KQEAgLTkwLDcgKzkxLDcgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlOjphZGQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAogICAgICAg
ICAvLyBUaGlzIGhhbmRsZXMgdGhlIHNlY29uZCB0cmFuc2l0aW9uIGJlaW5nIGFkZGVkCiAgICAg
ICAgIC8vIChvciB0aGUgZmlyc3QgdHJhbnNpdGlvbiBiZWluZyBkZXNwZWNpZmllZCEpCi0gICAg
ICAgIHNldE1hcChuZXcgVHJhbnNpdGlvbk1hcCgpKTsKKyAgICAgICAgc2V0TWFwKG5ldyBUcmFu
c2l0aW9uTWFwKHZtKSk7CiAgICAgICAgIGFkZCh2bSwgZXhpc3RpbmdUcmFuc2l0aW9uKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0ZTcyNTk5Li5hNzMy
NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04Myw2ICs4Myw3IEBA
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgi
CiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lE
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTUzLDYgKzE1NCw4IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYXRvbWljU3RyaW5n
VGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0
cikKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCisgICAgLCBzdHJp
bmdDYWNoZSgqdGhpcykKKyAgICAsIHByb3RvdHlwZU1hcCgqdGhpcykKICAgICAsIGtleXdvcmRz
KHN0ZDo6bWFrZV91bmlxdWU8S2V5d29yZHM+KCp0aGlzKSkKICAgICAsIGludGVycHJldGVyKDAp
CiAgICAgLCBqc0FycmF5Q2xhc3NJbmZvKEpTQXJyYXk6OmluZm8oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5kZXggY2MwZmI4Zi4uZmQxZmE2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDEwICs0Nyw4IEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBjb25z
dF9pdGVyYXRvcjsKIAotICAgIFdlYWtHQ01hcCgpCi0gICAgICAgIDogbV9nY1RocmVzaG9sZCht
aW5HQ1RocmVzaG9sZCkKLSAgICB7Ci0gICAgfQorICAgIGV4cGxpY2l0IFdlYWtHQ01hcChWTSYp
OworICAgIH5XZWFrR0NNYXAoKTsKIAogICAgIFZhbHVlQXJnKiBnZXQoY29uc3QgS2V5VHlwZSYg
a2V5KSBjb25zdAogICAgIHsKQEAgLTU5LDIxICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIEFkZFJl
c3VsdCBzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpCiAgICAgewotICAg
ICAgICBnY01hcElmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBXVEY6
Om1vdmUodmFsdWUpKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIEFkZFJlc3VsdCBhZGQo
Y29uc3QgS2V5VHlwZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpCi0gICAgewotICAgICAgICBnY01h
cElmTmVlZGVkKCk7Ci0gICAgICAgIEFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX21hcC5mYXN0QWRk
KGtleSwgbnVsbHB0cik7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkg
eyAvLyBOZXcgdmFsdWUgb3IgZm91bmQgYSB6b21iaWUgdmFsdWUuCi0gICAgICAgICAgICBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSA9IHRydWU7Ci0gICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gV1RGOjptb3ZlKHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYWRk
UmVzdWx0OwotICAgIH0KLQogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21hcC5yZW1vdmUoa2V5KTsKQEAgLTEwMywzOCArODksMTMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmluZChrZXkpICE9IG1fbWFwLmVuZCgpOwogICAg
IH0KIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgaW50IG1pbkdDVGhyZXNob2xkID0gMzsK
LQotICAgIE5FVkVSX0lOTElORSB2b2lkIGdjTWFwKCkKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxL
ZXlUeXBlLCA0PiB6b21iaWVzOwotCi0gICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBtX21hcC5i
ZWdpbigpLCBlbmQgPSBtX21hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBpZiAoIWl0LT52YWx1ZSkKLSAgICAgICAgICAgICAgICB6b21iaWVzLmFwcGVuZChpdC0+a2V5
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgem9tYmllcy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fbWFwLnJlbW92ZSh6b21iaWVzW2ldKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGdjTWFwSWZOZWVkZWQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fbWFwLnNp
emUoKSA8IG1fZ2NUaHJlc2hvbGQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZ2NN
YXAoKTsKLSAgICAgICAgbV9nY1RocmVzaG9sZCA9IHN0ZDo6bWF4KG1pbkdDVGhyZXNob2xkLCBt
X21hcC5zaXplKCkgKiAyIC0gMSk7Ci0gICAgfQorICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMo
KTsKIAorcHJpdmF0ZToKICAgICBIYXNoTWFwVHlwZSBtX21hcDsKLSAgICBpbnQgbV9nY1RocmVz
aG9sZDsKKyAgICBWTSYgbV92bTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgUmF3TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNB
cmc+Ci1jb25zdCBpbnQgV2Vha0dDTWFwPEtleUFyZywgUmF3TWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmc+OjptaW5HQ1RocmVzaG9sZDsKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBXZWFrR0NNYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha0dDTWFwSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5
MGFjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrR0NNYXBJbmxpbmVzLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2Vha0dDTWFwSW5saW5lc19oCisjZGVmaW5lIFdlYWtHQ01hcElubGluZXNfaAorCisjaW5jbHVk
ZSAiSGVhcElubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXAuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVu
YW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSBXZWFrR0NNYXA8S2V5
QXJnLCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6V2Vha0dDTWFwKFZNJiB2bSkK
KyAgICA6IG1fdm0odm0pCit7CisgICAgdm0uaGVhcC5yZWdpc3RlcldlYWtHQ01hcCh0aGlzLCBb
dGhpc10oKSB7CisgICAgICAgIHBydW5lU3RhbGVFbnRyaWVzKCk7CisgICAgfSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hB
cmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4KK2lubGluZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1
ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6fldlYWtHQ01hcCgpCit7CisgICAgbV92bS5o
ZWFwLnVucmVnaXN0ZXJXZWFrR0NNYXAodGhpcyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZz4KK05FVkVSX0lOTElORSB2b2lkIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmc+OjpwcnVuZVN0YWxlRW50cmllcygpCit7CisgICAgbV9tYXAu
cmVtb3ZlSWYoW10odHlwZW5hbWUgSGFzaE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGUmIGVudHJ5
KSB7CisgICAgICAgIHJldHVybiAhZW50cnkudmFsdWU7CisgICAgfSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV2Vha0dDTWFwSW5saW5lc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dlYWtHQ01hcElubGluZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvV2Vha0dDTWFwSW5s
aW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NDU5OGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dl
YWtHQ01hcElubGluZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfV2Vh
a0dDTWFwSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX1dlYWtHQ01hcElubGluZXNfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5j
cHAKaW5kZXggMWNlODlkZC4uM2IxZTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCkBAIC0zOCwxMCArMzgsMTEgQEAK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCg==
</data>
<flag name="review"
          id="273185"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248286</attachid>
            <date>2015-03-09 16:19:12 -0700</date>
            <delta_ts>2015-03-09 17:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>land-142115.diff</filename>
            <type>text/plain</type>
            <size>26921</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
SW50ZXJuYWwuaAppbmRleCBmN2I5MWRhLi45MDM3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oCkBAIC00MSw5
ICs0MSw5IEBAIHR5cGVkZWYgSlNDOjpXZWFrR0NNYXA8dm9pZCosIEpTQzo6SlNPYmplY3Q+IFdl
YWtNYXBUeXBlOwogCiBzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0TWFwIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUodm9pZCogZGF0YSwgSlNXZWFrTWFw
RGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxPcGFxdWVKU1dlYWtP
YmplY3RNYXA+IGNyZWF0ZShKU0M6OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJv
eWVkQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE9wYXF1ZUpTV2Vha09iamVjdE1hcChkYXRhLCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPcGFxdWVKU1dlYWtPYmplY3RNYXAodm0sIGRhdGEsIGNhbGxiYWNrKSk7
CiAgICAgfQogCiAgICAgV2Vha01hcFR5cGUmIG1hcCgpIHsgcmV0dXJuIG1fbWFwOyB9CkBAIC01
NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BhcXVlSlNXZWFr
T2JqZWN0TWFwKHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNr
KQotICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIE9wYXF1ZUpTV2Vha09iamVjdE1hcChKU0M6
OlZNJiB2bSwgdm9pZCogZGF0YSwgSlNXZWFrTWFwRGVzdHJveWVkQ2FsbGJhY2sgY2FsbGJhY2sp
CisgICAgICAgIDogbV9tYXAodm0pCisgICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKaW5kZXggNDQ2
Y2Y5MC4uOTI1YzAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApA
QCAtNDYsNyArNDcsNyBAQCBKU1dlYWtPYmplY3RNYXBSZWYgSlNXZWFrT2JqZWN0TWFwQ3JlYXRl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBwcml2YXRlRGF0YQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICBSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBtYXAgPSBPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA6OmNyZWF0ZShwcml2YXRlRGF0YSwgY2FsbGJhY2spOworICAgIFJlZlB0cjxPcGFxdWVK
U1dlYWtPYmplY3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMDYy
N2EzLi4yNDUxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNp
bXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWFrR0NNYXAuaCIKKyNpbXBv
cnQgIldlYWtHQ01hcElubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvVENTcGluTG9jay5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQ2LDcgKzU0
Nyw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4g
Q29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBlck1hcCB7
CiAgICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9j
bGFzc01hcDsKLSAgICBKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4gbV9jYWNoZWRK
U1dyYXBwZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OldlYWtHQ01hcDxpZCwgSlNDOjpK
U09iamVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKICAgICBOU01hcFRhYmxlICptX2NhY2hlZE9i
akNXcmFwcGVyczsKIH0KIApAQCAtNTU5LDcgKzU2MCw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3RydWN0b3JQcm90b3R5cGVQYWlyOwog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5Owog
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owog
ICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtl
eU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBd
OwotICAgIAorCisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
OldlYWtHQ01hcDxpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSktPnZtKCkpOworCiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NsYXNz
TWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2Vs
ZjsKQEAgLTU5MCw3ICs1OTMsNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKIAogLSAoSlNWYWx1ZSAq
KWpzV3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpKU09iamVjdCoganNX
cmFwcGVyID0gbV9jYWNoZWRKU1dyYXBwZXJzLmdldChvYmplY3QpOworICAgIEpTQzo6SlNPYmpl
Y3QqIGpzV3JhcHBlciA9IG1fY2FjaGVkSlNXcmFwcGVycy0+Z2V0KG9iamVjdCk7CiAgICAgaWYg
KGpzV3JhcHBlcikKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6
dG9SZWYoanNXcmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIApAQCAtNjA2LDcgKzYwOSw3
IEBAIHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29u
c3RydWN0b3JQcm90b3R5cGVQYWlyOwogICAgIC8vICgxKSBGb3IgaW1tb3J0YWwgb2JqZWN0cyBK
U1ZhbHVlcyB3aWxsIGVmZmVjdGl2ZWx5IGxlYWsgYW5kIHRoaXMgcmVzdWx0cyBpbiBlcnJvciBv
dXRwdXQgYmVpbmcgbG9nZ2VkIC0gd2Ugc2hvdWxkIGF2b2lkIGFkZGluZyBhc3NvY2lhdGVkIG9i
amVjdHMgdG8gaW1tb3J0YWwgb2JqZWN0cy4KICAgICAvLyAoMikgQSBsb25nIGxpdmVkIG9iamVj
dCBtYXkgcmFjayB1cCBtYW55IEpTVmFsdWVzLiBXaGVuIHRoZSBjb250ZXh0cyBhcmUgcmVsZWFz
ZWQgdGhlc2Ugd2lsbCB1bnByb3RlY3QgdGhlIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBvYmplY3Rz
LAogICAgIC8vICAgICBidXQgc3RpbGwsIHdvdWxkIHByb2JhYmx5IG5pY2VyIGlmIHdlIG1hZGUg
aXQgc28gdGhhdCBvbmx5IG9uZSBhc3NvY2lhdGVkIG9iamVjdCB3YXMgcmVxdWlyZWQsIGJyb2Fk
Y2FzdGluZyBvYmplY3QgZGVhbGxvYy4KLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMuc2V0KG9iamVj
dCwganNXcmFwcGVyKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMtPnNldChvYmplY3QsIGpzV3Jh
cHBlcik7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYoanNX
cmFwcGVyKSBpbkNvbnRleHQ6bV9jb250ZXh0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNGY2NDA4ZS4uMTdmNjZkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODQgQEAKKzIwMTUtMDMtMDkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YWxlIGVudHJpZXMgaW4gV2Vha0dDTWFwcyBhcmUga2VlcGluZyB0b25zIG9m
IFdlYWtCbG9ja3MgYWxpdmUgdW5uZWNlc3NhcmlseS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE0MjExNT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTkyMjY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFBydW5lIHN0YWxlIGVu
dHJpZXMgZnJvbSBXZWFrR0NNYXBzIGFzIHBhcnQgb2YgZXZlcnkgZnVsbCBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisgICAgICAgIFRoaXMgZnJlZXMgdXAgdG9ucyBvZiBwcmV2aW91c2x5LXN0dWNrIFdl
YWtCbG9ja3MgdGhhdCB3ZXJlIG9ubHkgc2l0dGluZyBhcm91bmQKKyAgICAgICAgd2l0aCBmaW5h
bGl6ZWQgaGFuZGxlcyB3YWl0aW5nIHRvIGRpZS4KKworICAgICAgICBOb3RlIHRoYXQgV2Vha0dD
TWFwcyByZWdpc3Rlci91bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCB0aGUgR0MgaGVhcCBpbiB0
aGVpcgorICAgICAgICBjdG9yL2R0b3IsIHNvIGNyZWF0aW5nIG9uZSBub3cgcmVxdWlyZXMgcGFz
c2luZyB0aGUgVk0uCisKKyAgICAgICAgQXZlcmFnZSB0aW1lIHNwZW50IGluIHRoZSBQcnVuaW5n
U3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMgR0MgcGhhc2UgYXBwZWFycworICAgICAgICB0byBi
ZSBiZXR3ZWVuIDAuMDFtcyBhbmQgMC4zbXMsIHRob3VnaCBJJ3ZlIHNlZW4gYSBmZXcgbG9uZ2Vy
IG9uZXMgYXQgfjEuMm1zLgorICAgICAgICBJdCBzZWVtcyBzb21ld2hhdCBleGNlc3NpdmUgdG8g
ZG8gdGhpcyBvbiBldmVyeSBFZGVuIGNvbGxlY3Rpb24sIHNvIGl0J3Mgb25seQorICAgICAgICBk
b2luZyB3b3JrIGluIGZ1bGwgY29sbGVjdGlvbnMgZm9yIG5vdy4KKworICAgICAgICBCZWNhdXNl
IHRoZSBHQyBtYXkgbm93IG11dGF0ZSBXZWFrR0NNYXAgYmVsb3cgb2JqZWN0IGFsbG9jYXRpb24s
IEkndmUgbWFkZSBpdAorICAgICAgICBzbyB0aGF0IHRoZSBjbGFzc2ljIEhhc2hNYXA6OmFkZCgp
IG9wdGltaXphdGlvbiBjYW4ndCBiZSB1c2VkIHdpdGggV2Vha0dDTWFwLgorICAgICAgICBUaGlz
IGNhdXNlZCBpbnRlcm1pdHRlbnQgdGVzdCBmYWlsdXJlcyB3aGVuIG9yaWdpbmFsbHkgbGFuZGVk
IGR1ZSB0byBoYXZpbmcKKyAgICAgICAgYW4gaW52YWxpZCBpdGVyYXRvciBvbiB0aGUgc3RhY2sg
YWZ0ZXIgYWRkKCkgaW5zZXJ0ZWQgYSBuZXcgZW50cnkgYW5kIHdlCisgICAgICAgIHByb2NlZWRl
ZCB0byBhbGxvY2F0ZSB0aGUgbmV3IG9iamVjdCwgdHJpZ2dlcmluZyBHQy4KKworICAgICAgICAq
IEFQSS9KU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oOgorICAgICAgICAoT3BhcXVlSlNXZWFr
T2JqZWN0TWFwOjpjcmVhdGUpOgorICAgICAgICAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwOjpPcGFx
dWVKU1dlYWtPYmplY3RNYXApOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2
YXRlLmNwcDoKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoLVtKU1dy
YXBwZXJNYXAgaW5pdFdpdGhDb250ZXh0Ol0pOgorICAgICAgICAoLVtKU1dyYXBwZXJNYXAganNX
cmFwcGVyRm9yT2JqZWN0Ol0pOiBQYXNzIFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBX
ZWFrR0NNYXBJbmxpbmVzLmggYW5kIG1ha2UKKyAgICAgICAgaXQgcHJvamVjdC1wcml2YXRlIHNv
IFdlYkNvcmUgY2xpZW50cyBjYW4gYWNjZXNzIGl0LgorCisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OnBy
dW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOiBBZGRlZCBhIG5ldyBHQyBwaGFzZSBmb3Ig
cHJ1bmluZworICAgICAgICBzdGFsZSBlbnRyaWVzIGZyb20gV2Vha0dDTWFwcy4gVGhpcyBpcyBv
bmx5IGV4ZWN1dGVkIGR1cmluZyBmdWxsIGNvbGxlY3Rpb25zLgorCisgICAgICAgICogaGVhcC9I
ZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZWdpc3RlcldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OnVucmVnaXN0ZXJXZWFr
R0NNYXApOiBBZGRlZCBhIG1lY2hhbmlzbSBmb3IgV2Vha0dDTWFwcyB0byByZWdpc3RlcgorICAg
ICAgICB0aGVtc2VsdmVzIHdpdGggdGhlIEhlYXAgYW5kIHByb3ZpZGUgYSBwcnVuaW5nIGNhbGxi
YWNrLgorCisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAuaDoKKyAgICAgICAgKEpTQzo6
UHJvdG90eXBlTWFwOjpQcm90b3R5cGVNYXApOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQpOiBQYXNz
IFZNIHRvIFdlYWtHQ01hcCBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDSW5s
aW5lcy5oOiBBZGQgIldlYWtHQ01hcElubGluZXMuaCIKKworICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOiBJbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiIHNvIHRoaXMgYnVp
bGRzLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6Ompz
U3RyaW5nV2l0aENhY2hlU2xvd0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpQcm90b3R5cGVNYXA6OmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKTog
UmVtb3ZlIEhhc2hNYXAgYWRkKCkKKyAgICAgICAgb3B0aW1pemF0aW9uIHNpbmNlIGl0J3Mgbm90
IHNhZmUgaW4gdGhlIEdDLW1hbmFnZWQgV2Vha0dDTWFwIHdvcmxkLgorCisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IFBhc3MgVk0gdG8gV2Vha0dDTWFw
IGNvbnN0cnVjdG9yLgorCisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAg
KEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmFkZCk6Cisg
ICAgICAgIChKU0M6OldlYWtHQ01hcDo6V2Vha0dDTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2Vha0dDTWFwOjpnY01hcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6
Z2NNYXBJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXBJbmxp
bmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OldlYWtHQ01hcCk6CisgICAg
ICAgIChKU0M6OldlYWtHQ01hcDo6fldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01h
cDo6cHJ1bmVTdGFsZUVudHJpZXMpOiBNb3ZlZCBjdG9yLCBkdG9yIGFuZCBwcnVuaW5nIGNhbGxi
YWNrCisgICAgICAgIHRvIFdlYWtHQ01hcElubGluZXMuaCB0byBmaXggaW50ZXJkZXBlbmRlbnQg
aGVhZGVyIGlzc3Vlcy4gUmVtb3ZlZCBjb2RlIHRoYXQKKyAgICAgICAgcHJ1bmVzIFdlYWtHQ01h
cCBhdCBjZXJ0YWluIGdyb3d0aCBtaWxlc3RvbmVzIGFuZCBpbnN0ZWFkIHJlbHkgb24gdGhlIEdD
CisgICAgICAgIGNhbGxiYWNrIGZvciBob3VzZWtlZXBpbmcuCisKIDIwMTUtMDMtMDggIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpJVFRodW5rcyBrZWVwcyBm
aW5hbGl6ZWQgV2Vha3MgYXJvdW5kLCBwaW5uaW5nIFdlYWtCbG9ja3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDYwZDdiYzUuLmFiMTNmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDMzLDYgKzE0MzMsNyBAQAogCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0Ey
ODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0ZCNjA0QjEwM0Y1RUFCMDAxN0EyODYgLyogUHJvcGVydHlEZXNj
cmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTdGQ0MyNkQxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkNDMjZDMTdBMEI2QUEwMDc4
NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQThBNDc0OEUxNTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEQx
NTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hICovOyB9OworCQlBRDg2QTkzRTFBQTREODhEMDAy
RkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQ4NkE5M0QxQUE0RDg3QzAwMkZFNzdGIC8qIFdlYWtHQ01hcElu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRERCMUY2MzE4RDc3REJFMDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUREQjFGNjIxOEQ3N0RCNzAwOUI1
OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBREUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDFD
RjA2ODE2RENBQjJEMDBCOTcxMjMgLyogUHJvcGVydHlUYWJsZS5jcHAgKi87IH07CiAJCUI1OUY4
OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OUY4OTM4MTg5MUFE
QjUwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLzsgfTsKQEAgLTMx
NTMsNiArMzE1NCw3IEBACiAJCUE4RTg5NDMxMENEMDYwMjQwMDM2NzE3OSAvKiBKU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThF
ODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5VGFibGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyog
V2Vha0dDTWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFr
R0NNYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREIxRjYyMThE
NzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wYXF1ZVJvb3RTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkzODE4OTFBREI1MDBENUND
REMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MzUsNiArNDYzNyw3IEBACiAJCQkJRkVEOTRGMkMxNzFF
M0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi8sCiAJCQkJRkVEOTRGMkQxNzFFM0UyMzAwQkU3
N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0Ug
LyogV2Vha0dDTWFwLmggKi8sCisJCQkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZFNzdGIC8qIFdlYWtH
Q01hcElubGluZXMuaCAqLywKIAkJCQlBN0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01h
cENvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlBN0NBM0FERTE3REE0MUFFMDA2NTM4QUYgLyogV2Vh
a01hcENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmNwcCAqLywKQEAgLTU1MjksNiArNTUzMiw3IEBACiAJCQkJMEY4ODVFMTExODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgw
MjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzNFRDBFMTZGNUNEMDBCMzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0MxRUFFRjE3OTg3QUI2MDAyOTlEQjIgLyogQ2FsbEZyYW1lSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
aW5kZXggMjgzZjQ3Zi4uZTQwNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
QEAgLTEwNjUsNiArMTA2NSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBs
KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpCiAgICAgICAgIHZt
KCktPnR5cGVQcm9maWxlcigpLT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCk7CiAKICAgICByZWFw
V2Vha0hhbmRsZXMoKTsKKyAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAg
ICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKICAgICBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAKQEAg
LTExNzgsNiArMTE3OSwxNSBAQCB2b2lkIEhlYXA6OnJlYXBXZWFrSGFuZGxlcygpCiAgICAgbV9v
YmplY3RTcGFjZS5yZWFwV2Vha1NldHMoKTsKIH0KIAordm9pZCBIZWFwOjpwcnVuZVN0YWxlRW50
cmllc0Zyb21XZWFrR0NNYXBzKCkKK3sKKyAgICBHQ1BIQVNFKFBydW5pbmdTdGFsZUVudHJpZXNG
cm9tV2Vha0dDTWFwcyk7CisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgcHJ1bmVDYWxsYmFjayA6
IG1fd2Vha0dDTWFwcy52YWx1ZXMoKSkKKyAgICAgICAgcHJ1bmVDYWxsYmFjaygpOworfQorCiB2
b2lkIEhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKIHsKICAgICBHQ1BIQVNFKFN3ZWVwaW5nQXJy
YXlCdWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBlZjc2NTdlLi5lNTg5
ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMjcsNiArMjI3LDkgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgaXNab21iaWZpZWQoSlNDZWxsKiBjZWxsKSB7IHJldHVy
biAqKHZvaWQqKiljZWxsID09IHpvbWJpZmllZEJpdHM7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJX
ZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1bmluZ0Nh
bGxiYWNrKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwKTsK
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBjbGFz
cyBDb3BpZWRCbG9jazsKQEAgLTMwMSw2ICszMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRWaXNpdG9ycygpOwogCiAgICAgdm9pZCByZWFwV2Vha0hhbmRsZXMoKTsKKyAgICB2b2lkIHBy
dW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICB2b2lkIHN3ZWVwQXJyYXlCdWZm
ZXJzKCk7CiAgICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CiAgICAgdm9pZCBkZWxldGVT
b3VyY2VQcm92aWRlckNhY2hlcygpOwpAQCAtMzkzLDYgKzM5Nyw4IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJldGFpblB0cjxDRlR5cGVSZWY+PiBtX2RlbGF5ZWRSZWxlYXNlT2JqZWN0czsKICAg
ICB1bnNpZ25lZCBtX2RlbGF5ZWRSZWxlYXNlUmVjdXJzaW9uQ291bnQ7CiAjZW5kaWYKKworICAg
IEhhc2hNYXA8dm9pZCosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV93ZWFrR0NNYXBzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAppbmRleCA3NzkyMmIzLi41OGU5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKQEAgLTMxNCw2ICszMTQsMTYgQEAgaW5saW5lIEhhc2hTZXQ8TWFya2Vk
QXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQogICAgICAgICBtX21hcmtMaXN0
U2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7
CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQorCitpbmxpbmUgdm9pZCBIZWFwOjpyZWdp
c3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVu
aW5nQ2FsbGJhY2spCit7CisgICAgbV93ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIFdURjo6bW92
ZShwcnVuaW5nQ2FsbGJhY2spKTsKK30KKworaW5saW5lIHZvaWQgSGVhcDo6dW5yZWdpc3Rlcldl
YWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAgbV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFr
R0NNYXApOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAppbmRleCA5Y2Y3MDI4Li5lOWZhYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCkBAIC01MSw1ICs1MSw2IEBA
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxp
bmVzLmgiCiAKICNlbmRpZiAvLyBKU0NJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBkOGQzMDY5Li43YTBiNzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xMjMsNiArMTIzLDcgQEAKICNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNl
dElubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggM2VhMmI3ZS4uZWRk
MWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAt
NDM3LDExICs0MzcsMTIgQEAgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnQKIAogSlNTdHJpbmcqIGpz
U3RyaW5nV2l0aENhY2hlU2xvd0Nhc2UoVk0mIHZtLCBTdHJpbmdJbXBsJiBzdHJpbmdJbXBsKQog
ewotICAgIGF1dG8gYWRkUmVzdWx0ID0gdm0uc3RyaW5nQ2FjaGUuYWRkKCZzdHJpbmdJbXBsLCBu
dWxscHRyKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBqc1N0cmluZygmdm0sIFN0cmluZyhzdHJpbmdJbXBsKSk7Ci0g
ICAgdm0ubGFzdENhY2hlZFN0cmluZy5zZXQodm0sIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCkpOwotICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAg
IGlmIChKU1N0cmluZyogc3RyaW5nID0gdm0uc3RyaW5nQ2FjaGUuZ2V0KCZzdHJpbmdJbXBsKSkK
KyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc1N0cmlu
Zygmdm0sIFN0cmluZyhzdHJpbmdJbXBsKSk7CisgICAgdm0ubGFzdENhY2hlZFN0cmluZy5zZXQo
dm0sIHN0cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAppbmRl
eCBhN2E0MTdmLi40M2YwMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm90b3R5cGVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3RvdHlwZU1hcC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHZv
aWQgUHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkKIHsKLSAgICBt
X3Byb3RvdHlwZXMuYWRkKG9iamVjdCwgb2JqZWN0KTsKKyAgICBtX3Byb3RvdHlwZXMuc2V0KG9i
amVjdCwgb2JqZWN0KTsKIAogICAgIC8vIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBtYWtlcyB0aGUg
c29tZXdoYXQgb2RkIGRlY2lzaW9uIHRvIG5vdCBjaGVjayBpZiB0aGlzCiAgICAgLy8gb2JqZWN0
IGN1cnJlbnRseSBoYXMgaW5kZXhlZCBhY2Nlc3NvcnMuIFdlIGNvdWxkIGRvIHRoYXQgY2hlY2sg
aGVyZSwgYW5kIGlmCkBAIC01NCwxNiArNTQsMTYgQEAgdm9pZCBQcm90b3R5cGVNYXA6OmFkZFBy
b3RvdHlwZShKU09iamVjdCogb2JqZWN0KQogCiBTdHJ1Y3R1cmUqIFByb3RvdHlwZU1hcDo6ZW1w
dHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWdu
ZWQgaW5saW5lQ2FwYWNpdHkpCiB7Ci0gICAgU3RydWN0dXJlTWFwOjpBZGRSZXN1bHQgYWRkUmVz
dWx0ID0gbV9zdHJ1Y3R1cmVzLmFkZChzdGQ6Om1ha2VfcGFpcihwcm90b3R5cGUsIGlubGluZUNh
cGFjaXR5KSwgbnVsbHB0cik7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAg
IGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIocHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7Cisg
ICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9zdHJ1Y3R1cmVzLmdldChrZXkpKSB7CiAg
ICAgICAgIEFTU0VSVChpc1Byb3RvdHlwZShwcm90b3R5cGUpKTsKLSAgICAgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiAgICAgfQogCiAgICAgYWRkUHJvdG90eXBlKHByb3RvdHlwZSk7CiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoCiAgICAgICAgIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCktPnZtKCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIHBy
b3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOwotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBXZWFrPFN0cnVjdHVyZT4oc3RydWN0dXJlKTsKKyAgICBtX3N0cnVjdHVyZXMuc2V0KGtleSwg
V2VhazxTdHJ1Y3R1cmU+KHN0cnVjdHVyZSkpOwogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKaW5kZXggOTc1
MmNhNy4uNTA1ZTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvdG90eXBlTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlTWFwLmgKQEAgLTMzLDEwICszMywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNP
YmplY3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7CitjbGFzcyBWTTsKIAogLy8gVHJhY2tzIHRoZSBjYW5v
bmljYWwgc3RydWN0dXJlIGFuIG9iamVjdCBzaG91bGQgYmUgYWxsb2NhdGVkIHdpdGggd2hlbiBp
bmhlcml0aW5nIGZyb20gYSBnaXZlbiBwcm90b3R5cGUuCiBjbGFzcyBQcm90b3R5cGVNYXAgewog
cHVibGljOgorICAgIGV4cGxpY2l0IFByb3RvdHlwZU1hcChWTSYgdm0pCisgICAgICAgIDogbV9w
cm90b3R5cGVzKHZtKQorICAgICAgICAsIG1fc3RydWN0dXJlcyh2bSkKKyAgICB7CisgICAgfQor
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZUZv
clByb3RvdHlwZShKU09iamVjdCosIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICB2b2lk
IGNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25l
ZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmplY3QqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGM3NjkwNTEu
Ljg2OWNiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1h
UHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CkBAIC05MCw3ICs5MSw3IEBAIGlubGluZSB2b2lkIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAK
ICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBzZWNvbmQgdHJhbnNpdGlvbiBiZWluZyBhZGRl
ZAogICAgICAgICAvLyAob3IgdGhlIGZpcnN0IHRyYW5zaXRpb24gYmVpbmcgZGVzcGVjaWZpZWQh
KQotICAgICAgICBzZXRNYXAobmV3IFRyYW5zaXRpb25NYXAoKSk7CisgICAgICAgIHNldE1hcChu
ZXcgVHJhbnNpdGlvbk1hcCh2bSkpOwogICAgICAgICBhZGQodm0sIGV4aXN0aW5nVHJhbnNpdGlv
bik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNGU3MjU5
OS4uYTczMjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODMsNiAr
ODMsNyBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxl
ckxvZy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiV2Vha0dD
TWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1By
b2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTE1Myw2ICsxNTQsOCBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2F0b21p
Y1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVz
KG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IE1hcmtlZEFyZ3VtZW50QnVmZmVyKQorICAg
ICwgc3RyaW5nQ2FjaGUoKnRoaXMpCisgICAgLCBwcm90b3R5cGVNYXAoKnRoaXMpCiAgICAgLCBr
ZXl3b3JkcyhzdGQ6Om1ha2VfdW5pcXVlPEtleXdvcmRzPigqdGhpcykpCiAgICAgLCBpbnRlcnBy
ZXRlcigwKQogICAgICwganNBcnJheUNsYXNzSW5mbyhKU0FycmF5OjppbmZvKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCmluZGV4IGNjMGZiOGYuLmZkMWZhNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywxMCArNDcs
OCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwVHlwZTo6aXRlcmF0b3Ig
aXRlcmF0b3I7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICBXZWFrR0NNYXAoKQotICAgICAgICA6IG1fZ2NUaHJl
c2hvbGQobWluR0NUaHJlc2hvbGQpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNpdCBXZWFrR0NN
YXAoVk0mKTsKKyAgICB+V2Vha0dDTWFwKCk7CiAKICAgICBWYWx1ZUFyZyogZ2V0KGNvbnN0IEtl
eVR5cGUmIGtleSkgY29uc3QKICAgICB7CkBAIC01OSwyMSArNTcsOSBAQCBwdWJsaWM6CiAKICAg
ICBBZGRSZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQogICAg
IHsKLSAgICAgICAgZ2NNYXBJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtl
eSwgV1RGOjptb3ZlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBBZGRSZXN1
bHQgYWRkKGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgZ2NNYXBJZk5lZWRlZCgpOwotICAgICAgICBBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAu
ZmFzdEFkZChrZXksIG51bGxwdHIpOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUpIHsgLy8gTmV3IHZhbHVlIG9yIGZvdW5kIGEgem9tYmllIHZhbHVlLgotICAgICAgICAg
ICAgYWRkUmVzdWx0LmlzTmV3RW50cnkgPSB0cnVlOwotICAgICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IFdURjo6bW92ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGFkZFJlc3VsdDsKLSAgICB9Ci0KICAgICBib29sIHJlbW92ZShjb25zdCBLZXlUeXBlJiBr
ZXkpCiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXAucmVtb3ZlKGtleSk7CkBAIC0xMDMsMzgg
Kzg5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBtX21hcC5lbmQo
KTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IGludCBtaW5HQ1RocmVzaG9s
ZCA9IDM7Ci0KLSAgICBORVZFUl9JTkxJTkUgdm9pZCBnY01hcCgpCi0gICAgewotICAgICAgICBW
ZWN0b3I8S2V5VHlwZSwgND4gem9tYmllczsKLQotICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0g
bV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgaWYgKCFpdC0+dmFsdWUpCi0gICAgICAgICAgICAgICAgem9tYmllcy5hcHBlbmQo
aXQtPmtleSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHpv
bWJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX21hcC5yZW1vdmUoem9tYmllc1tpXSk7
Ci0gICAgfQotCi0gICAgdm9pZCBnY01hcElmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIGlmICht
X21hcC5zaXplKCkgPCBtX2djVGhyZXNob2xkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGdjTWFwKCk7Ci0gICAgICAgIG1fZ2NUaHJlc2hvbGQgPSBzdGQ6Om1heChtaW5HQ1RocmVz
aG9sZCwgbV9tYXAuc2l6ZSgpICogMiAtIDEpOwotICAgIH0KKyAgICB2b2lkIHBydW5lU3RhbGVF
bnRyaWVzKCk7CiAKK3ByaXZhdGU6CiAgICAgSGFzaE1hcFR5cGUgbV9tYXA7Ci0gICAgaW50IG1f
Z2NUaHJlc2hvbGQ7CisgICAgVk0mIG1fdm07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIFJhd01hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnPgotY29uc3QgaW50IFdlYWtHQ01hcDxLZXlBcmcsIFJhd01hcHBlZEFyZywgSGFz
aEFyZywgS2V5VHJhaXRzQXJnPjo6bWluR0NUaHJlc2hvbGQ7Ci0KIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gV2Vha0dDTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtHQ01hcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcElubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iOTBhY2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwSW5saW5lcy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYWtHQ01hcElubGluZXNfaAorI2RlZmluZSBXZWFrR0NNYXBJbmxpbmVzX2gKKwor
I2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgV2Vha0dD
TWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OldlYWtHQ01hcChW
TSYgdm0pCisgICAgOiBtX3ZtKHZtKQoreworICAgIHZtLmhlYXAucmVnaXN0ZXJXZWFrR0NNYXAo
dGhpcywgW3RoaXNdKCkgeworICAgICAgICBwcnVuZVN0YWxlRW50cmllcygpOworICAgIH0pOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+CitpbmxpbmUgV2Vha0dDTWFwPEtleUFy
ZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46On5XZWFrR0NNYXAoKQoreworICAg
IG1fdm0uaGVhcC51bnJlZ2lzdGVyV2Vha0dDTWFwKHRoaXMpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmc+CitORVZFUl9JTkxJTkUgdm9pZCBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1
ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6cHJ1bmVTdGFsZUVudHJpZXMoKQoreworICAg
IG1fbWFwLnJlbW92ZUlmKFtdKHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpLZXlWYWx1ZVBhaXJUeXBl
JiBlbnRyeSkgeworICAgICAgICByZXR1cm4gIWVudHJ5LnZhbHVlOworICAgIH0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdlYWtHQ01hcElubGluZXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9XZWFrR0NNYXBJ
bmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1dlYWtH
Q01hcElubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTQ1OThi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9XZWFrR0NNYXBJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVf
RldEX1dlYWtHQ01hcElubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9XZWFrR0NNYXBJbmxp
bmVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwCmluZGV4IDFjZTg5ZGQuLjNiMWU4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcApAQCAtMzgsMTAgKzM4
LDExIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2Zp
bGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL1dlYWtHQ01hcElubGluZXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>